Detalls tècnics


Primer de tot agrair la molta gent que publica informació sobre programació de mòduls d'anàlisi d'escacs a internet, especialment http://chessprogramming.wikispaces.com/, http://talkchess.com! També fer menció especial a mòduls de codi obert que son molt instructius, com Stockfish, Crafty, Protector, Discocheck, Gull...

Aquest programa és original i no està basat en cap altre, encara que òbviament usa tècniques conegudes a part de pròpies. Usa un algoritme alpha-beta amb tot de millores per accelerar-ne el rendiment. És capaç de usar la capacitat multiprocessador del pc.


Llistat no exhaustiu i sense cap ordre determinat d'aquestes tècniques:

Aspiration window

Pondera puntuacions diferents entre mig joc i final.

Extensió per escac.

* Varis fils d'execució -  Multi-threading.

* Analitzar varies alternatives simultàniament (multi pv).

Razoring.

Adaptive null move pruning.

Principal variation search.

Killer moves.

LMR late move reduction  i altres reduccions.

Internal iterative deepening.

Hash amb edat.

SEE Static exchange evaluation  (amb xray).

Moviments que refuten  amb [peça][destí].

* Hash de refutació de seqüència de dos moviments.

Taules de finals Syzygy.

* Paràmetre "Contempt"  per intentar evitar taules.


Genera els moviments per fases (hash, captures, no captures). Usa bitboards i magic bitboards per accelerar tot de càlculs. Per exemple manté la llista d'atacs de cada peça per poder fer avaluacions més ràpides.

Per l'avaluació estàtica es tenen en compte molts paràmetres, que es podrien resumir en:

Valors de peces segons la casella que ocupen  diferenciades pel final.

Seguretat del rei.

* Valoració de peces segons un gran nombre de tipus de posicions diferents (posicions obertes, d'atac, caselles dèbils, etc.).

* Diferents tipus de mobilitat de peces

Imbalanç de material.

* Valoració de peons passats per diferents situacions.

* Bonus d'iniciativa.

Utilitza taules hash per guardar les variants, informació d'estructura de peons i els valors de les posicions per no haver de repetir feina. Té moltíssimes àrees de millora encara per explorar, tant de noves tècniques per aplicar-hi com d'optimització dels paràmetres i algoritmes usats.

Si teniu qualsevol idea o comentari, podeu contactar a cdani @ yahoo.com.