MadChess 2.0 Beta Build 027 (Draw By Repetition Bug)

Yes! I found and exterminated the bug I mentioned in my previous post. I corrected a bug that caused MadChess to play a losing move in a drawn by repetition position. MadChess evaluates the first repetition of a position as drawn, even though the rules of chess state the second repetition is drawn. This search optimization avoids wasting a ply to determine the position is drawn by repetition. MadChess’ recursive search method checks if a position is repeated before searching any moves. If the position is a repeat of an earlier position, the search returns a zero score. I forgot… Continue Reading

MadChess 2.0 Beta Build 026 (Passed Pawns)

I added passed pawn evaluation to MadChess 2.0 Beta. No sophisticated evaluation of free (unimpeded) or unstoppable passed pawns. Just a simple tapered evaluation of passed pawns, with a score based on the pawn’s rank. This added 72 ELO to the playing strength of MadChess 2.0 Beta. Bug While watching one of the games, I observed MadChess play a losing move in a drawn by repetition position. It gave a score of mate in zero (which is nonsense), searched to the max depth of 100 plies. I need to hunt down this bug, which likely is robbing MadChess of significant… Continue Reading

MadChess 2.0 Beta Build 025 (Time Management)

I added code to measure the time taken to search each ply and calculate if enough time remains to search the next ply. This lessens the number of searches that must be abandoned in the middle of a ply, and the best move from the prior ply played. These abandoned searches waste time. This added 24 ELO to the playing strength of MadChess 2.0 Beta. I believe improved time management will pay greater dividends once I add search reductions and pruning of moves. MadChess 2.0 1694 : 800 (+101,=54,-645), 16.0 % vs. : games ( +, =, -), (%) :… Continue Reading

MadChess 2.0 Beta Build 023 (Delay Move Generation)

I added code to delay move generation if a cached position specifies a best move. The best move is played first. If it causes a beta cutoff, the expense of generating moves is avoided. If not, moves are generated and searched, skipping the best move, which has already been searched. Also, I corrected a bug that caused all searches to use an infinite aspiration window.  The corrected code will search the first ply using an infinite aspiration window, then search subsequent plies with a narrow window around the first ply’s score.  If the score of subsequent searches lies on an… Continue Reading

MadChess 2.0 Beta Build 022 (MVV / LVA Move Order)

I corrected a bug in move order. Moves mistakenly were ordered by most valuable victim, then most valuable attacker (MVV / MVA). I changed the order to most valuable victim, then least valuable attacker (MVV / LVA), so pawn takes queen captures are ordered before queen takes queen captures. In addition, I added code to recognize draws by insufficient material. And I corrected an index out of bounds bug involving move arrays. This added 30 ELO to the playing strength of MadChess 2.0 Beta. MadChess 2.0 1626 : 800 (+51,=79,-670), 11.3 % vs. : games ( +, =, -), (%)… Continue Reading