Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Strange behaviour of my new engine

Author: Gerd Isenberg

Date: 07:00:21 08/01/04

Go up one level in this thread


On August 01, 2004 at 09:29:20, Steffen Basting wrote:

>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

Mate in 4 should be independent from search depth.
Isn't the game over after Rh8#?
Seems that you don't terminate your PVs correctly.
How to translate your mate scores?


>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?
>

1.bugs
2.better eval
3.carefull with R==3 near the leaves, checks in qsearch?
4.SEE or more sophisticated move ordering, checks, putting pieces enprise,
  at interior nodes one may use more expensive move scoring/sorting.
5.hashing score and bounds or flags as well.
6.fractional extension/reductions.
7.tuning.

Gerd

>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.