Author: Steffen Basting
Date: 06:29:20 08/01/04
Hi! After a short chess programming break, I decided to write a new chess engine. It currently includes: * Alphabeta / PVS * Nullmove heuristic (R=3) * Check / recapture extension * Hashtable (always replace-scheme), but only used for move-ordering * MVV/LVA move ordering, with following stages: - hash move - killer move (2 killers per ply) - capturing pieces (undefended), highest MVV/LVA ratio - capturing pieces (even captures) - quiet moves (sorted by history heuristic) - capturing pieces (defended by a less valuable defender) Everything seems to work ok (stability), but in some positions, often quiet ones, it doesn't get a reasonable depth in a reasonable time. However, when it has got a "plan", it does ok: 2krr3/2pb2pp/1p1p1p2/p2P4/P1P2PP1/1P2R2P/3B4/2KR4 w - - 0 1 time depth nodes value 0.00s 1= 68 -16 c1b1 0.00s 2= 279 -16 c1b1 e8e3 0.01s 3= 2839 -38 d1e1 e8e3 d2e3 0.01s 4= 7242 -7 d1e1 e8e3 d2e3 d8e8 f4f5 0.03s 5= 15231 -16 d1e1 e8e3 d2e3 d8e8 c1c2 e8e7 0.20s 6= 128815 -13 c1b2 e8e3 d2e3 h7h5 f4f5 h5g4 h3g4 d8h8 0.32s 7= 211419 1 d1e1 e8e3 e1e3 h7h5 g4h5 d8e8 e3g3 e8e7 0.41s 8= 282284 1 d1e1 e8e3 e1e3 h7h5 g4h5 d8e8 e3g3 e8e7 0.89s 9= 644743 9 d1e1 h7h5 e3e8 d8e8 e1e8 d7e8 c1c2 e8d7 f4f5 h5g 4 h3g4 g7g5 1.61s 10= 1204507 12 d1e1 e8e3 e1e3 h7h5 g4h5 d8h8 c1c2 h8h5 e3e7 d7h 3 3.64s 11= 2807740 12 d1e1 e8e3 e1e3 h7h5 g4h5 d8h8 c1c2 h8h5 e3e7 d7h 3 e7g7 9.34s 12= 6952541 18 d1e1 e8e3 e1e3 h7h5 g4h5 d8h8 e3e7 d7h3 e7g7 h8h 5 d2c3 h5h4 g7g8 c8b7 17.08s 13= 13068681 14 d1e1 e8e3 e1e3 h7h5 g4h5 d8h8 e3e7 h8h5 e7g7 h5h3 c1b2 h3h2 g7g8 c8b7 51.39s 14= 39623522 21 d1e1 e8e3 e1e3 h7h5 g4h5 d8h8 e3e7 h8h5 e7g7 h5h3 g7g8 c8b7 g8g7 h3h1 c1c2 b7c8 Nodes: 39623522 ( 770 Knps ) Beta-Cut: 1037047 Move ordering: 90% QNodes: 18416056 (046%) Hash_Reads: 6974256 Or on the initial position: time depth nodes value 0.00s 1= 43 82 b1c3 0.00s 2= 116 32 b1c3 0.00s 2- 328 0 b1c3 b8c6 0.00s 3= 407 50 b1c3 b8c6 0.00s 3+ 690 82 b1c3 b8c6 g1f3 0.01s 4= 1784 32 b1c3 b8c6 g1f3 0.01s 4- 3742 0 b1c3 b8c6 g1f3 g8f6 0.01s 5= 4360 50 b1c3 b8c6 g1f3 g8f6 0.01s 5+ 5636 52 b1c3 b8c6 g1f3 g8f6 d2d4 0.10s 6= 47834 2 b1c3 b8c6 g1f3 g8f6 d2d4 0.17s 6- 87571 0 g1f3 g8f6 b1c3 b8c6 d2d4 d7d5 0.24s 7= 119097 50 g1f3 g8f6 b1c3 b8c6 d2d4 d7d5 0.32s 7+ 160418 68 g1f3 d7d5 d2d4 c8g4 c1g5 g4f3 e2f3 1.56s 8= 887545 18 g1f3 d7d5 d2d4 c8g4 c1g5 g4f3 e2f3 2.51s 8- 1434570 3 b1c3 g8f6 d2d4 d7d5 c1g5 c8g4 h2h3 g4f5 3.46s 9= 2003135 42 b1c3 g8f6 d2d4 e7e6 g1f3 f8b4 a2a3 b4c3 b2c3 b8c 6 c1g5 18.69s 10= 10996986 19 g1f3 d7d5 b1c3 g8f6 d2d4 c8f5 c1f4 b8d7 c3b5 c7c6 37.81s 11= 22320187 43 g1f3 d7d6 b1c3 c8g4 e2e3 b8c6 f1b5 g8f6 e1g1 a7a6 b5c4 Nodes: 22320187 ( 590 Knps ) Beta-Cut: 592321 Move ordering: 88% QNodes: 10401919 (046%) Hash_Reads: 3485598 But in some positions, like this one from WAC, it needs a lot of time to reach reasonable depths (until it finds a "good" move etc.): r3r1k1/pp1q1pp1/4b1p1/3p2B1/3Q1R2/8/PPP3PP/4R1K1 w - - bm d4g7 time depth nodes value 0.00s 1= 441 169 c2c3 0.00s 2= 2200 128 f4f3 d7c7 0.03s 3= 18839 134 f4f2 f7f6 g5f4 0.14s 4= 95429 91 e1d1 f7f6 g5h4 g6g5 0.48s 5= 358029 84 f4f2 e6g4 e1f1 f7f6 h2h3 1.94s 6= 1415925 82 f4f1 e6f5 c2c3 f7f6 e1e8 a8e8 g5f4 g6g5 5.05s 7= 3774377 73 f4f1 e6f5 c2c3 e8e1 f1e1 a8e8 e1d1 e8e2 6.88s 8= 5123222 123 f4f1 e6f5 c2c3 e8e1 f1e1 a8e8 e1d1 e8e2 d4a7 6.96s 8+ 5185695 373 f4f1 e6f5 c2c3 e8e1 f1e1 a8e8 e1d1 e8e2 d4a7 7.04s 8+ 5239025 873 f4f1 e6f5 c2c3 e8e1 f1e1 a8e8 e1d1 e8e2 d4a7 7.18s 8++ 5354025 20003 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 h4h8 f5c 2 7.52s 9= 5617411 20005 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 f5c2 8.01s 10= 6009016 20006 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 f5c2 f5c 2 9.75s 11= 7795582 20007 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 f5c2 f5c 2 16.13s 12= 13731228 20008 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 f5c2 f5c2 f5c2 27.66s 13= 23962221 20009 d4g7 g8g7 g5f6 g7f8 f4h4 e6f5 h4h8 f5c2 f5c2 f5c2 f5c2 48.22s 14= 41643137 20010 d4g7 g8g7 g5f6 g7f8 f4h4 f8g8 h4h8 e6f5 e6f5 e6f5 e6f5 Nodes: 41643137 ( 863 Knps ) Beta-Cut: 777088 Move ordering: 98% QNodes: 16198399 (038%) Hash_Reads: 9662266 There are also a lot of positions where it doesn't find a winning move and then needs too much time to reach reasonable depths (although the move ordering is ok (fail high on first move about 85%)). Any ideas what the problem might be? Regards, Steffen
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.