MadChess 3.0 Beta Build 075 (Eval Param Tuning)

I ported my particle swarm tuning code from MadChess 2.x to MadChess 3.0 Beta, then simplified and improved it. My code uses the Texel tuning technique described by Peter Österlund in a TalkChess forum post. I improved my particle swarm algorithm in the following manner. Simplified update of evaluation parameters via EvaluationConfig class. Run the Iterate method of each ParticleSwarm on the .NET Core threadpool instead of using dedicated threads. Locate global best particle (among all particle swarms) and update particle velocities after all Iterate methods have completed. This eliminates need to synchronize reads and writes of global state via… Continue Reading

MadChess 3.0 Beta Build 058 (Baseline)

I’ve reached an important milestone in the development of my new chess engine. MadChess 3.0 Beta can play a timed game of chess. I copied the search function from MadChess 2.0 but implemented an evaluation function from scratch. The search function is rather sophisticated. Alpha / beta negamax PVS with aspiration windows MVV / LVA move order MultiPV with tracking of all principal variations (in search, not in hash table) Hashtable with score, bounds, and best move Delayed move generation (play best move from hashtable before generating moves) Null move pruning Killer moves Move history with aging (used to sort… Continue Reading

Banks 71st Amateur Series Division 7

MadChess 2.2 participated in Graham Banks’ 71st amateur tournament in division 7. Orio Bets Topp Lozz Jumb Rook MadC Talt Dros Jone Romi Ares 1. Orion 0.5 64-bit #### 11=0 =1== 000= 1011 0=1= 1=11 0==1 ==11 111= =1=1 =11= 65% 28.5 ( 942.0, 594.0) 2. Betsabe II 1.84 00=1 #### 10=1 1==0 =110 ===1 011= 1=1= 0101 11=1 0111 10== 61% 27.0 ( 948.0, 573.0) 3. Topple 0.2.1 =0== 01=0 #### 11=1 0=10 =000 ==01 0111 0011 011= 1=11 1111 58% 25.5 ( 954.0, 520.0) 4. Lozza 1.18 64-bit 111= 0==1 00=0 #### 0=0= ==11 0=1= 0111 1011 11=1… Continue Reading

MadChess 3.0 Beta Build 039 (Bitboards)

For the last month or so, in the evenings and on the weekends, I’ve been writing a new version of MadChess. For this 3.0 version, I’m writing code using bitboards instead of the mailbox board representation I used in MadChess 1.x and 2.x. I considered using C++ and even went as far as purchasing Bjarne Stroustrup’s The C++ Programming Language book and reading the first four chapters. But in the end I decided to stick with C#, the programming language with which I’m most familiar, for a few reasons. Microsoft has been adding high-performance features to C# in recent editions,… Continue Reading

Banks 70th Amateur Series Division 7

MadChess 2.2 participated in Graham Banks’ 70th amateur tournament in division 7. 1 2 3 4 5 6 7 8 9 0 1 2 1 Bagatur 1.5e 64-bit **** 11½½ 0½½½ ½½11 0½½1 1011 ½1½½ 01½½ ½001 01½1 ½110 1½1½ 26.5/44 574.00 2 MadChess 2.2 64-bit 00½½ **** ½½00 1½1½ ½0½1 1011 1½0½ 1½½1 111½ 1½1½ ½½½1 110½ 26.5/44 554.25 3 Drosophila 1.5.1 64-bit 1½½½ ½½11 **** 1000 ½100 ½½0½ ½½10 01½½ 111½ 0½11 ½110 ½½11 25.0/44 4 Lozza 1.18 64-bit ½½00 0½0½ 0111 **** 1011 101½ 10½½ ½0½1 1½½1 00½1 11½½ ½0½1 24.0/44 515.75 5 Shallow r694 64-bit 1½½0… Continue Reading