Alf Version Historics:
- 1.09
Changed move representation from classes to ints => move files are gone.
New opening book - larger and tuned to match Alf's evaluation better.
Book builder included.
Hashtable changed yet again to static array with 2 entries per bucket - no clearing of hashtable between iterations.
Maximum length of game expanded from 200 moves to 400 moves.
Fixed wrong draw claim for K vs KBN.
Better evaluation of drawish pawnless endgames.
New piece values and value of bishop pair increased and other small eval tweaks.
Enhanced transposition cutoff implemented.
Refined time management - Alf will now use slightly more/less time depending upon the stability of the best move found.
Various minor optimizations and tweaking of pruning options.
- 1.08
Divided eval into: 1) pawn structure, 2) king safety and 3) the rest. Used for lazy evaluation.
Adaptive lazy boundaries by sampling error rate and the distribution of the margin.
Small QS hashtable with always replace added.
Pawn structure hash added. Pawn structure not hashed though, but hash values used to tell if update is nescesarry.
Some small changes in search and added adaptive null move reduction.
Singular reply extensions added.
Hashtable only cleared when more than 60% full at the beginning of the new iteration.
Evaluation: connected passed pawns, passed pawns, endgames, some trapped pieces, and other small changes/bugfixes.
Enhancements to the move sorting scheme, and re-optimization of sorting constants using simulated annealing.
Some protocol enhancements/fixes (1.08 now also tested with Xboard, 1.07 had problems there.)
Small improvement of the from-to click function in the GUI, bar plot of eval removed.
- 1.07
Optional graphical user interface added.
New Hashtable using linked lists instead of ArrayLists - faster.
New Book class, now the book is not loaded into memory. Better book included.
Added extended futility pruning.
Added principal variation search.
Less restrictive null move pruning.
Small extensions to evaluation function (king safety and fianchetto bishops).
Also other minor changes and bugfixes.
- 1.06a
Added time check after each recursive call, now Alf should not lose on time at tournament time control any more!.
Added optional resign and possibility of changing output scores between absolute (White's point of view) and engine's point of view.
- 1.06
Added futility pruning, history statistics and late move reductions.
Optimized sorting constants. Added recapture extensions.
Added checkmate detection in leaf nodes. Fixed bug in hashtable scheme.
All old attack maps are now stored for faster undo.
New opening book (larger and better). Book can now be disabled.
- 1.05
Added Null Move pruning.
Rewritten Alpha-Beta algorithm, much better quiescence search.
Added settings file.
ArrayLists of moves replaced by arrays.
Implemented QuickSort sorting function for sorting moves,
because Java's sort routines are bad with many small arrays.
Changed 3-fold rep to 2-fold in Alpha-Beta. Also other minor changes/bugfixes.
- 1.04
Output of thinking lines added, revised timecontrol: now all time-controls are implemented.
Contempt for draw added.
Inclination to transpose back to book added (disabled in later versions).
New hashtable scheme. Fixed some protocol errors.
- 1.03
First WinBoard/Xboard release.
Fixed bug that only allowed one en
passsant move pr turn. Switched alphabeta < and <= criteria for better
move/cutoff, helped a lot!
Fixed timecontrols/management introduced. Some
other minor changes.
- 1.02
Vectorized evaluation constants, better handling of hanging/threatened
pieces.
Fixed bug i alphabeta algorithm.
Improved move sorting algorithm.
Use of hashtable to try the best move from last search to make a cutoff
without generating all the moves.
- 1.01
Implemented own hashtable with 64-bits Zobrist keys.
Bigger book with
choice of variant connected to number of entries.
- 1.00
Introduced static movepool to reduce the use of "new", less
memory is now needed and Alf is much faster.
Introduced CastleStatus class.
Faster generation of threats by skipping generation of player-to-move's
threats in certain situations.
- 0.99
Performance improvement by skipping move generation at bottom of tree
when not needed.
Improved endgame play, especially for pawn endgames with
passed pawns.
- 0.98
First release.