Moderator: Andres Valverde
If you allow "attacking the queen", do you also allow moving the queen away ? If you don't, and queen doesn't have a check or a good capture it will appear lost.
These additional moves only seem to work if you add them to the first ply of quiescence, but then it's still questionable if it works better than just searching a little deeper with normal search.
Daniel Shawul wrote:Yes it could be time consuming especially if tried everywhere in quiescence. The reason why i generate all attacks of a piece is because i can do this easily with my data structure. Moves like checks, forks, and attacks on pinned pieces are all subsets of this, and i dont need separate functions.
I haven't tried hard to decrease the amount of moves tried. but i intend to do a SEE on all of the side to move's pieces before applying null move.
This requres some serious change in my qsearch like removing lazy eval and eval cache. so finally there may be nothing to gain but i think for a serious tactical improvement i need to try this in the whole of qsearch rather than first 3 plies.
I experimented with null move in QS, to use the null-move score rather than the static evaluation if no other QS-allowed move beat it, but allowing the moves to solve the identified threat Tony talks about as well.
(E.g., if the opponent's last move threatens my Queen with a Bishop through a discovered threat, I would allow moves with the Queen and captures of this Bishop.) As soon as I find a single move that beats the static evaluation, I disable the search of such moves again. This was very similar to the check test, except that it would also work for other pieces than a King. And it decreased the result in self-play even more...
Part of what makes it so expensive is that in the old scheme the static score can be used in QS to cause an immediate beta cutoff before generating any moves, while in this scheme either the initial QS or the null-move search will be an all-node (as far as generating the moves is concerned). So I still have not abandoned this idea in the context of separate accounting of ply depth for each side. If one of the sides is in QS but the other still has plies to burn, the null-move search in QS would not be a QS extension but would be regularly paid for. In that case allowing defensive moves in QS if the opponent can effect threats within his regular ply budget would not be that expensive: the nature of full-width is such that this opponent would attempt nonsense in most cases anyway, to which the null-move would already be satisfactory defense, with (re)capture of the piece he moves as a good 'plan B'.
You said that your result was a 2 ply reduction in search depth, for a small improvent in tactics.
What do you mean by small improvement.
Do you mean that it did only slightly better at the same depth in tactical test suites or do you mean that it did only slightly better at the same time in tactical test suites?
Daniel Shawul wrote: Do you do a non-zero depth null move in qsearch? I only do a zero depth IE eval() null move.
Since i search all non-losing captures in qsearch what i need to consider is only taking my queen to a safe square. I guess in your case you only do recaptures of the last moved piece.
I think that you can't easily detect hung pieces once you start considering threats on pieces other than (king , queen) , and hidden attacks (not just by the last moved piece).
I do it with 0x88 style but it is still very expensive. Especially generation of moves that take a hung piece to a safe square asks for a lot of effort.
This sounds interesting. I never tried different search depths for different sides. How does this interact with alpha-beta? The reason why i ask is that alpha - beta assumes what is good for us is equally bad for opponent.
But if the search depths are different , this may not hold true any more.
Daniel Shawul wrote:Hi
i recently tried searching more non-capture moves (other than checks)
in qsearch in the first 3 plies.
1. moves that attack any piece and SEE(move) >= 0
2. moves that take a hung piece to a safe square
Daniel Shawul wrote:Hi
i recently tried searching more non-capture moves (other than checks)
in qsearch in the first 3 plies.
1. moves that attack any piece and SEE(move) >= 0
2. moves that take a hung piece to a safe square
The result was a 2 ply reduction in search depth, for a small improvent in tactics. I guess that the reason it did not work could be
1) that i am trying too many moves (may be i should try only forking moves)
2) I still apply the null move criteria in qsearch. I think that i should skip this when two of the side to move's pieces are "enprise" ,even though score >= beta.
Any thoughts appreciated
daniel
I haven't tried this. Sounds very expensive.
Return to Programming and Technical Discussions
Users browsing this forum: No registered users and 27 guests