Beware! The latest Prédateur just escaped and seemed to be in a playfull mood last time I met him...
This update is quite a major one. Maybe not in the playing strength (test will tell) but certainly from a user point of view. The code has been seriously cleaned up too and made ready for future improvements. I decided to postpone its translation to bitboards, as I could triple its speed by improving the current move generator. Here comes a summary of changes and improvements :
New functionalities :
- takeback implemented
- Prédateur now polls the console during its search and reacts to "stop" and "quit"
- Prédateur now handles FEN strings, though only allowing legal positions (Predateur can thus now be used as an analyse tool)
- UCI options uci Main_Hash added, allowing the user to set the main hash table size, and the uci option Quiesce_Hash that does the same for the quiescence search hash table
- Search extension for forced moves (that way Prédateur sometimes find deeper mate sequences)
- Algorythm to checkmate the naked king.
- perft tests implemented : Prédateur passes it successfully for all the test positions I tried (command : "perft x", x being the depth)
- a readme file
- The quiescence search hash table is back (small speed improvement)
- Evaluation function modified and speeded up :
-> penalty for isolated pawns
-> towers on (semi-)opened columns
-> pieces-square tables
-> attempt to develope minor pieces in the opening
- Check test and move generator partly rewrote.
Result : >+100% nps compared with Prédateur v0.1.3b2!
- Moves lists now sorted with quicksort instead of bubble sort. (+15% nps!)
- Better move ordering (Prédateur plays around 1.1 moves out of 30!)
- Time use slightly improved (?)
Corrected bugs :
- Yet another mate bug fixing attempt (the ultimate one?)
- bugs removed from the Restaure() function (castle flags might got lost)
- Another big bug eradicated from the Restaure() routine : Non initialized to zero, it made Prédateur compute lots of useless stuff.
- perft allowed me to correct several bugs :
-> the check test only took into account original knights, not pawns turned into knights - fixed
-> en passant capture broken - fixed