MadChess 2.0 Beta Build 038 (Killer Moves)

I added killer moves to MadChess 2.0 Beta. Killer moves are quiet moves (not captures or pawn promotions) that cause a beta cutoff. Two killer moves are saved for each ply. They are searched immediately after captures and pawn promotions. This added 61 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 2065 : 800 (+396,=136,-268), 58.0 % vs. : games ( +, =, -), (%) : Diff, SD, CFS (%) BikJump v2.01 : 100 ( 36, 21, 43), 46.5 : -26, 11, 0.8 Matheus-2.3 : 100 ( 40, 20, 40), 50.0 : -7, 11, 27.3 Monarch 1.7… Continue Reading

MadChess 2.0 Beta Build 037 (Futility Pruning)

I added futility pruning to MadChess 2.0 Beta. In the main search, for non-capture moves, if the static score plus the futility margin is less than alpha, the move is considered too weak and is skipped. In the quiescence search, for capture moves, if the static score plus the material value of the captured piece plus the futility margin is less than alpha, the move is considered too weak and is skipped. The futility margin depends on the distance to the horizon, and is subject to other constraints, illustrated in the code below. To Horizon Futility Margin (centipawns) <1 (Quiescence… Continue Reading

MadChess 2.0 Beta Build 034 (Null Move)

I added null move search to MadChess 2.0 Beta. In addition, I limited the quiescence search to recaptures if the distance from the horizon is four or more moves. If the king is in check, all moves are searched. If not, and the distance from the horizon is four or more moves, only recaptures are searched (captures of the last piece that moved). These enhancements added 46 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1950 : 800 (+271,=150,-379), 43.3 % vs. : games ( +, =, -), (%) : Diff, SD, CFS (%) BikJump v2.01 : 100… Continue Reading

MadChess 2.0 Beta Build 032 (King Safety)

I added king safety evaluation to MadChess 2.0 Beta. Defects in king protection (missing pawn shield, semi-open files adjacent to king, squares near king attacked by enemy pieces) are counted, then used as an index into a non-linear piece coordination table. It took me several attempts to calibrate the weights and the non-linear penalty, but eventually I found an improvement. This added 27 Elo to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1904 : 800 (+233,=127,-440), 37.1 % vs. : games ( +, =, -), (%) : Diff, SD, CFS (%) BikJump v2.01 : 100 ( 6, 18,… Continue Reading

MadChess 2.0 Beta Build 029 (Piece Mobility)

I added piece mobility evaluation to MadChess 2.0 Beta. The candidate moves of each piece are counted (move legality is not tested) and a non-linear bonus is assigned. Pieces with few moves are penalized. Pieces with many moves are awarded. Assigning a non-linear bonus encourages MadChess to develop all of its pieces, as opposed to maximizing the candidate moves of a few pieces. For example, more centipawns are awarded for increasing the candidate moves of a knight from three to six moves than for increasing the candidate moves of a queen from 14 to 20. This added 64 Elo to… Continue Reading