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:
* Pondera puntuacions diferents entre mig joc i final.
* Varis fils d'execució - Multi-threading.
* Analitzar varies alternatives simultàniament (multi pv).
* LMR late move reduction i altres reduccions.
* Internal iterative deepening.
* SEE Static exchange evaluation (amb xray).
* Moviments que refuten amb [peça][destí].
* Hash de refutació de seqüència de dos moviments.
* 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.
* 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
* 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.