hanging piece at starting quiescence search - how to handle?

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
SMIRF
Posts: 91
Joined: Wed Mar 26, 2014 4:29 pm
Location: Buettelborn/Hessen/Germany

Re: hanging piece at starting quiescence search - how to han

Post by SMIRF »

Well, I may be old fashioned, but I prefer to learn from human readable sources. I refute to look into other program sources. Thus it for sure will take much longer until my new program will play acceptably.

I like to understand, why some approaches are bad by experiencing bad results myself. My first program SMIRF gave a sort of discouraging experience. It understandably was nearly ignored. But now after deciding to make a tabula rasa approach for a new engine, I profit a lot of noticed weaknesses inside of SMIRF. As for now I am in a good state with my move generator and specialized Zobrist keys hashing, it performs well for 8x8 and 10x8. But there still is a lot to do ...
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: hanging piece at starting quiescence search - how to han

Post by Dann Corbit »

SMIRF wrote:During quiescence search there when not in check - as far as I have understood - only captures should be investigated. But there could be a hanging piece, which asks for a defending or covering move. How should this situation be handled?
Here is an alternative you might like to try:
I call it BMOBUNT (best move only, back up N times).

Try an alternative quiescent search that makes the estimated best move and does not consider any alternative branches, so the branching factor is 1.
However, you can clearly get fail lows, so now what? When you have a fail low, you back up, try the next best alternative, and decrement N (your parameter for how many times you are allowed to back up).

It reduces weird moves a lot better, but it does not find quiescent positions nearly as well. On the other hand, it will create a pv that is more realistic. I never got anything great from it, but it was an interesting exercise. I think a better implementation might be a win.
User avatar
SMIRF
Posts: 91
Joined: Wed Mar 26, 2014 4:29 pm
Location: Buettelborn/Hessen/Germany

Re: hanging piece at starting quiescence search - how to han

Post by SMIRF »

I hesitate from level bounded modifications of the quiescence search routine. But I am about to test some other modifications. First I separate into zugzwang (beeing in check) or non zugzwang mode. As usual in zugzwang everything is evaluated. In non zugzwang only (capturing end special) moves which promise to probably reach the alpha barrier or are establishing a check threat themselves will be executed.

Moreover I miss an option to skip the possible alpha lifting regarding the stand pat evaluation, when there is no quiet move at all at hands, because the nullmove assumption there has no base. I will try to handle those situations as zugzwang. Unfortunately this would raise a demand for to preevaluate and inspect the generated moves.
User avatar
SMIRF
Posts: 91
Joined: Wed Mar 26, 2014 4:29 pm
Location: Buettelborn/Hessen/Germany

Re: hanging piece at starting quiescence search - how to han

Post by SMIRF »

Up to now I added an unlimited mate detection on check threats to my quiescence search but without a global check extension.

And I changed my view to quiescence search: I think, it will be used rather as a move verification tool than as an absolute precise evaluation routine. Maybe I had awaited more from it than it might be designed for.
Dann Corbit
Posts: 12537
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: hanging piece at starting quiescence search - how to han

Post by Dann Corbit »

SMIRF wrote:Up to now I added an unlimited mate detection on check threats to my quiescence search but without a global check extension.

And I changed my view to quiescence search: I think, it will be used rather as a move verification tool than as an absolute precise evaluation routine. Maybe I had awaited more from it than it might be designed for.
The normal use for qsearch is just a sanity check. IOW, if all the pending possible captures and forced moves are executed, does my eval fall off a cliff?