Technical details

First of all thank the many people who publish information on programming modules for analysis of chess on the Internet, especially,! It also made special mention of open source modules that are very instructive, as Stockfish, Crafty, Protector, Discocheck, Gull...

This program is original and not based on any other, although obviously using known techniques other than their own. It uses an algorithm alpha-beta with all improvements to accelerate performance. He is able to use the capacity of multiprocessor pc.

Non-exhaustive list with no specific order of these techniques:

Aspiration window

Weighted average ratings between different game and final.

Extension to check.

* Various threads -  Multi-threading.

* Simultaneously analyze several alternatives (multi pv).


Adaptive null move pruning.

Principal variation search.

Killer moves.

LMR late move reduction  and other reductions.

Internal iterative deepening.

Hash with age.

SEE Static exchange evaluation  (with xray).

Movements that refute  with [piece][destination].

* Hash refute sequence of two movements.

Syzygy final tables.

* Parameter "Contempt"  to try to avoid tables.

Generate movement phases (hash catches, no catches). Use bitboards and magic bitboards to accelerate all calculations. For example maintains a list of attacks each piece to make faster assessments.

For evaluation static takes into account many parameters, which can be summarized as follows:

Values of pieces according to the square cover  differentiated by the endgame.

Security king.

* Assessment of parts according to a number of different types of positions (open positions, attack, weak squares, etc.).

* Different types of mobility pieces

Imbalance of material.

* Evaluation of passed pawn for different situations.

* Bonus of initiative.

Use hash tables storage variants, information pawn structure and values of the positions to avoid having to repeat work. It has many areas of improvement still to explore both new techniques to apply as optimization of the parameters and algorithms used.

If you have any ideas or comments, please contact cdani @