Previous   Next

Micro-Max 4: Quiescence Search

Static Exchange Evaluation

In micro-Max 3.2 the only moves considered in Quiescence Search were recaptures, i.e. capture of the piece that last moved. This effectively plays out the entire exchange sequence that was going on on a particular square when the horizon was crossed. The argument z of the search routine D() tells on which square the captures can take place.

The outcome of such an exchange is conventionally called the Static Exchange Evaluation. It is called that way because it can be calcuated from the moves generate in a single position, without updating the board or recursive search, because moves to the same square never make each other imposible. The 'Quiescence search' of micro-Max 3.2 is actually a recursive implementation of such a SEE.

The disadvantage of a SEE is that it is quite unreliable. It completely ignores any side-effect that the moves in the exchange might have. And there are may such effects: the squares evacuated by the participating pieces might allow passage of own or enemy pieces, which allows important captures. In other words, the SEE ignores if participating pieces are pinned, ore produce discovered threats. In addition, it ignores overloads: If one of the participating pieces was essential for the defence of another piece on the board, which is lost as a consequence, the SEE will not notice.

Search Explosion

Because of the many side effects that chess moves typically have, it is much better to consider all capture moves in QS. The problem is that in a tense situation, this causes an explosion of the search. Not only can all captures possible in the given position be performed in any order, many captures create new captures. In particular, a Queen penetrating in the enemy position by a ridiculous (losing) capture of a defended Pawn can from its new position usually wreck enormous havoc after any reply that does not recapture it. If both Queens embark on a plunder raid, they can go on untill the board is neary empty, in zillions of ways.

To contain the search explosion, it is important that losing captures are immediately refuted by the suitable recapture. This will then cause a beta cutoff, before time can be wasted on all other nonsense.

Implementation

Previous   Next