Exacto


Exacto is a chess application that I develop for fun. Before exacto, I worked on some chess programs called "Dopey." I started in VB and have recently started working on these programs in C++. I use the Borland BCC55 free compiler to compile this program.

Versions:
0.d - Download - 8/25/2006.
0.c - Download - 8/19/2006.
0.b - Download - 8/16/2006.
0.a - Download - 8/13/2006.
Features:


0.d

Tourny 0d

RankEngineScoreCeExRoEdMuExS-B
1Cefap 7.0/10· ·=0==11111= 31.00 
2Exacto 5.5/10=1· ·101=100= 28.75 
3Roce345 5.0/10==01· ·010101 25.00 
4Eden_0.0.105.0/10000=10· ·111= 21.00 
5Murderhole 4.0/1000011000· ·11 17.50 
6Exacto-0.c 3.5/100=1=100=00· · 19.25 


30 games played / Tournament is finished

Tournament start: 2006.08.25, 01:00:58
Latest update: 2006.08.25, 07:24:25
Site/ Country: KIT, United States
Level: Blitz 2/6
Hardware: Intel(R) Celeron(R) M processor 1.30GHz with 480 MB Memory
Operating system: Microsoft Windows XP Professional Service Pack 2 (Build 2600)

-Will not use more than 1/5th of it's time no matter what
-Will not trust the hash table in ID if making the move creates a draw, in this case, it will start over at depth = 1
-New commands:
     null - toggles null-move pruning (default on)
     iid - toggles iid (default on)
     posonly - toggles searching of positive captures only in qsearch (default off)
     fp - toggles futility pruning (default off)
     pfnfp - toggles pre-frontier node futility pruning (default off)
     razor - toggles razoring (default off)
     razorverify N - verifies razor depth reductions with a q_search at DEPTH >= N (default 4)
     razorcondition N - number of pawns below alpha for which to razor (default 3)
-Switched to verified null-move pruning (R = 3)
-New command "hash x" redimensions hash table to occupy x megabytes of ram (same as "dimtable x")
-Revised move ordering (large performance increase)
-Debugged futility pruning, off by default
-Debugged pre-frontier node futility pruning, off by default
-Somewhat debugged razoring, off by default
-Fixed divide by 0 bug (I think)
-Fixed a bug after ECM142 when searching ECM143
-Crashed on ECM 629, but I can't seem to reproduce the crash
-Increased penalty for advanced queen
-Tweaked move ordering to discourage queen movements also
-Added open-file and advanced-rank bonuses for rooks
-Changed center-of-mass to recognize rank of CM instead of ev_square_val[CM]
-Altered attack-on-king penelty formula, now capped at 4/5 a pawn (was causing problems)
-Default hash size is now 10 megabytes instead of 1 megabyte

0.c

Tourny 0c

RankEngineScoreShCeEdBrMuExRoExS-B
1Sharper 14.0/14· ·11111111111111 84.00 
2Cefap 8.5/1400· ·=111==1==011 47.00 
3Eden_0.0.107.0/1400=0· ·101=1==110 39.25 
4Braincrack 7.0/14000001· ·10111011 35.00 
5Murderhole 6.0/1400==0=01· ·00=111 31.50 
6Exacto 6.0/14000=0=0011· ·1==1 31.00 
7Roce345 5.0/1400=1=001=00=· ·01 31.75 
8Exacto-0.a 2.5/140000010000=010· · 15.00 


56 games played / Tournament is finished

Tournament start: 2006.08.18, 20:19:25
Latest update: 2006.08.19, 10:31:45
Site/ Country: KIT, United States
Level: Blitz 2/6
Hardware: Intel(R) Celeron(R) M processor 1.30GHz with 480 MB Memory
Operating system: Microsoft Windows XP Professional Service Pack 2 (Build 2600)

-Added new command: dimtable x, where x is the desired size of the hash table in megabytes
-Debugged setboard 'FEN' command
-Division by zero
-Does not recognize draws by insufficiant material
-Removed hash table suggestion storage on UPPERBOUND nodes
-Upgraded passed pawn handling (higher value closer to promotion)
-Fixed a catastrophic bug in zobrist key generation, this should:
     -Fix false-positive draw detection
     -Debug hash table based pruning
     -Improve move ordering
-Pruning based on hash table
-Moves immediately if there is only one legal move
-Time management tweaks:
     -Break the ID loop if time left is less than 80% of (average branching factor in this position times previous time)
     -Use TIME/30 instead of TIME/25 for time limit of search
     -Finish an iteration if the root ply is more than 80% complete
     -This should result, in most positions, in less occurances of starting but not finishing a search
-Added single response to check extensions
-Added recapture extensions
0.b
-Fixed a bug which caused crashes after a Winboard game
-Moves immediately if a forced mate variation is found
-Fatal position: 8/p1R3p1/8/3ppk2/3p3p/3P1P1P/5P2/1r3K2 w - - 0 0
     This may be related to false-positive draw detection

-I think I fixed it
-Tweaked time management:
     - If time_left < (3/2)*time_last_it, break inside of ID.
     - Fixed a bug (continues if > 80% instead of < 80% on ply 0)
-Extreme makeover: Eval edition
     - Cut all current bonuses in half
     - Square values are cut in half again if they obstruct a pawn
     - Queen movement discouraged
     - Tweaked king safety bonus for pawn shields
     - Recognize who has the passed pawn nearest promotion
     - Decreased minor piece center of mass bonus (now 1/4 of former)
     - Other tweaks to pawn structure eval
0.a
-Better time management:
     - If time left < time for last iteration, break inside of ID.
     - If time runs out, & 80% through the moves on ply 0 (with >= 1m initial time on this search), finishes searching.
-Legal move generation with perft and divide
-Returns principle variation
-PVS algorithm
-Q_Search, for tactical strength
-Crude support of the Winbord 2.0 protocal
-Hash tables for move ordering, but no pruning
-Null move forward pruning, futility pruning
-Internal iterative deepening