Author: Vincent Diepeveen
Date: 11:25:21 10/05/03
Go up one level in this thread
On October 05, 2003 at 14:21:54, Vincent Diepeveen wrote:
>On October 04, 2003 at 22:22:33, Omid David Tabibi wrote:
>
>>On October 04, 2003 at 18:57:18, Vincent Diepeveen wrote:
>>
>>>On October 04, 2003 at 18:40:08, Russell Reagan wrote:
>>>
>>>Just put next in your engine:
>>> - checks in qsearch at the first ply (or when you already did them
>>> just stick to what you did now; in diep i do them at any ply in qsearch
>>> btw, but most have problems controlling that so i do not mind it if you
>>> just try 1 ply)
>>> - nullmove search with window alfa,beta = -mate+1000,
>>> so you'll find 100% sure a mate threat
>>>
>>> - if you see a mate threat you extend that position by 1 ply and store
>>> in hashtable this position got a mate extension.
>>>
>>> - now you extend moves double sometimes. So recapture that gives extension,
>>> you extend. If the same move also gives opponent a check, another extension.
>>> So you can extend 2 plies then.
>>
>>2 plies extension at once? What if you detected a mate threat and played a move
>>which is a recapture and also checks the opponent? Extend by 3 plies?!
>
>right, works tactical very well. of course not so easy to tune.
>of course you won't end up searching veyr deep. 9 to 10 ply will be
>already a major depth :)
>
>But it solves tactical anything.
>
>>Seems a little frightening! But will try it tonight...
>>
>>Looking at Fritz's parameters, the default values are selectivity=2, and
>>futility pruning activated. So, we can assume that Fritz is using R=2. However,
>>looking at its analysis it rapidly reaches very deep while not ignoring any
>>significant tactical threats. That's also the case with Shredder, which uses
>>selectivity=-1 (it is not a typo, -1 ?!) and futility=2.
>>
>>Falcon's tactical strength is somewhat superior to that of Crafty, but comparing
>>it to other null-movers, Fritz and Shredder, it is way behind in tactics...
>
>>BTW, when in quiescence you detect that one side is in check, do you do the
>>following:
>
>>int quiesce(int alpha, int beta) {
>> ...
>> if (checked)
>> return search(alpha, beta, 1);
>
>that would be pretty pricey as that can add another 7 plies of selectivity to
>the search :)
>
>No i just generate all moves and search all of 'em.
>
>> ...
>>}
>>
>>
>>I haven't implemented checks in quiescence yet, but it seems inevitable...
>
>when it works well it is great to do so, when you don't manage to limit it, it's
>hell.
>
>>>>I don't think Christophe uses null move. At least, if he does, I don't think
>>>>it's the "main algorithm" contributing to Chess Tiger's strength. I remember
>>>
>>>May i beg your pardon?
>>>
>>>Without nullmove you can go home.
>
>>Junior and Rebel are good examples of non null-mover successful programs. And
>
>Really junior is searching a way which is nullmoving at any positional move
>already more or less.
>
>I guess they use some sort of principle like this:
>
>int alfabeta(depth,alfa,beta,side .. ) {
> if( depth == 0 ) {
> if( side )
> evalscore = -INCSCORE;
> else
> evalscore = INCSCORE;
> if( evalscore >= beta )
> return evalscore;
> score = SEE(side,evalscore); /* static exchange evaluation,
> so an evaluation
> that guesses whether side can win something without too much risk,
> that gets added to the evalscore then simply and returned
> */
> return score;
> }
> generatemoves();
> for all moves ( ;; ) {
>
> if( movelosesmaterial(move) > 0 ) {
> if( tacticalmove() )
> units = 1;
> else if( verydumbmove() )
> units = 3;
> else
> units = 2;
>
> }
> else {
> if( verytacticalmove() )
> units = 2;
> else
> units = 3;
> }
> tempscore = -alfabeta(depth-1-units,-beta,-alfa,side^1, ... );
small correction:
tempscore = -alfabeta(depth-units,-beta,-alfa,side^1, ... );
> }
> ...
>}
>
>So the effect of nullmove is already very limited thanks to major reductions.
>Still it will help to use nullmove so i guess they nowadays use it. Alternative
>is of course using units = 4 ;)
>
>I know what Ed is doing, if you're already doing dubious reductions like at his
>homepage and more of that similar stuff then of course your positional search
>depth is already just half of the total search depth more or less. So additional
>nullmoves to that are pretty dangerous to do, but they can be done.
>
>In fact the assumptions made by junior and Rebel are basically that searching
>positional deeper is not the most important thing. Their assumption, derived
>from their search is that you only need to search tactical deeper and not
>positional. Both are just extending captures, checks and such moves bigtime.
>
>Shredder and DIEP are the opposite of that. If they throw something away then
>they throw basically tactical stuff away and try to search positional deeper.
>
>Then there are a lot of program forward pruning in different ways but vaste
>majority is just busy searching tactics deeper. Hiarcs i do not know, never
>chatted with Uniacke about it.
>
>Considering that both Shredder and junior ended at 7.5 out of 9 last world
>championship, the most important thing in computerchess is your weakest chain.
>Far more than the above difference.
>
>Personally i prefer however to search positional deeper. If tricks get found
>then i consider that as a side effect from the search depth reached.
>
>>there are some strange programs like Hiarcs; I don't think it is using null-move
>>pruning, at least not anything with R > 1.
>
>You should not confuse extensions and the last few plies pruning with nullmove.
>Many extensions and pruning rules can render confusion there. I would be amazed
>actually if Hiarcs doesn't use nullmove.
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.