MadChess 2.0 Beta Build 059 (Free Passed Pawns)

I added free passed pawn evaluation to MadChess 2.0 Beta. Unobstructed passed pawns on the sixth or seventh rank are awarded a bonus if they may advance to the next square without material loss. The square must be unoccupied and the score after exchanging pieces on the advance square must not be negative. In addition, I simplified the move ordering code. I felt the GetNextMove() method required too much external bookkeeping (to mark played moves, illegal moves, update local move variable, save move back to array, etc) and therefore was too prone to bugs. I replaced it with a two… Continue Reading

MadChess 2.0 Beta Build 052 (Unstoppable Pawns, Draws, Material Trades)

I added code to detect unstoppable passed pawns and drawn endgames, and code to evaluate material trades. The code that evaluates material trades implements the age old advice, “When ahead trade pieces. When behind trade pawns.” A greater bonus is giving for trading pawns, since in many endgames the side with a material advantage cannot win without promoting a pawn. This added 39 ELO to the playing strength of MadChess 2.0 Beta. MadChess 2.0 2193 : 800 (+399,=168,-233), 60.4 % vs. : games ( +, =, -), (%) : Diff, SD, CFS (%) Glass 1.6 : 50 ( 4, 7,… Continue Reading

MadChess 2.0 Beta Build 044 (Late Move Pruning)

I added late move pruning to MadChess 2.0 Beta. Moves are sorted according to the history heuristic. If a quiet move qualifies for the largest late move reduction, but is less than or equal to four moves from the search horizon, it is skipped. The move is very unlikely to cause a beta cutoff and no time is wasted searching it. This added 39 ELO to the playing strength of MadChess 2.0 Beta. MadChess 2.0 Beta is now stronger than MadChess 1.4. MadChess 2.0 2154 : 800 (+347,=162,-291), 53.5 % vs. : games ( +, =, -), (%) : Diff,… Continue Reading

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