MadChess 2.0 Beta Build 040 (History Heuristic + Late Move Reductions)

I added a history heuristic and late move reductions to MadChess 2.0 Beta. When a move causes a beta cutoff, the move’s history value is incremented by the distance to the horizon squared. (Distance to the horizon squared is used to prevent moves deep in the search tree from having too much influence over move order.) A history value is saved for each combination of piece type and move destination square. Moves are ordered by their history values descending (after cached best move, capture victim, capture attacker, promoted piece, and killer moves). The search horizon is reduced for moves that… Continue Reading

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

Banks 50th Amateur Series Division 7

MadChess 1.4 participated in Graham Banks’ 50th amateur tournament in division 7. 1 2 3 4 5 6 7 8 9 0 1 2 1 Gibbon 2.60a 64-bit **** 0001 0½½0 1½1½ 1½01 ½01½ 011½ 1111 ½111 1110 ½111 1½½1 29.0/44 2 FireFly 2.7.0 64-bit 1110 **** 0011 0½½½ ½0½1 01½½ 1111 101½ 1011 ½111 0½1½ 1½10 28.0/44 3 Fischerle 0.9.60 64-bit 1½½1 1100 **** ½1½½ ½0½1 1010 1010 ½110 ½011 ½00½ ½101 11½1 25.5/44 551.50 4 Orion 0.2 64-bit 0½0½ 1½½½ ½0½½ **** 01½0 0110 0½½0 ½½1½ 1011 1½1½ 11½1 1111 25.5/44 517.25 5 EveAnn 1.71a 0½10 ½1½0 ½1½0… 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