Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Mobility in Chess Evaluation Function at terminal-nodes

Author: Stuart Cracraft

Date: 21:58:17 12/28/05

Go up one level in this thread


On December 28, 2005 at 22:22:57, Stuart Cracraft wrote:

>On December 28, 2005 at 16:30:26, Will Singleton wrote:
>
>>On December 28, 2005 at 16:04:28, Tord Romstad wrote:
>>
>>>On December 28, 2005 at 15:31:55, Roman Hartmann wrote:
>>>
>>>>On December 28, 2005 at 15:27:34, Dann Corbit wrote:
>>>>
>>>>>How are you calculating mobility?
>>>>>A 10:1 loss in speed is very traumatic.
>>>>>Unless you are only counting wood in your evaluation, you should not see that
>>>>>traumatic of a degradation.
>>>>
>>>>Several problems:
>>>>-outdated board design 10x12
>>>
>>>16x12 may be slightly more convenient, but 10x12 isn't outdated
>>>at all.  There is no reason why mobility evaluation should be expensive
>>>on a 10x12 board.
>>>
>>>>-legal move generator instead of pseudo legal
>>>
>>>You shouldn't generate moves at all when evaluating mobility.  This
>>>is almost certainly the main reason why you see such a big slowdown.
>>>When you generate moves, you do a lot of work which is not necessary
>>>when you just want to evaluate mobility.  You don't need the moves
>>>at all, just the number of moves.
>>
>>Could you clarify?  In my program, I have to gen the moves in order to count
>>them.  Do you mean that your mobility doesn't consider legality or viability?
>>
>>Will
>
>Here is an example. The first 10 ply search (opening position) is using
>the standard move generator to generate moves for both sides and then
>count them used in the mobility determination at terminal nodes in the
>tree.
>
>The second 10 ply search (opening position) does not generate moves. It
>just counts them.
>
>It represents a very significant improvement.
>
>It took me 5 minutes to implement it. No problem.
>
>Stuart
>
>Generating moves for move generator in mobility counter
>.go
>Alpha=-387 Beta=413 Maxdepth=10 MaxTime=9999999
>Ply/Max Mv   Time   Score Nodes PV
> 1/ 1 e2e4 88  0.00       21 e2e4
> 2/ 3 e2e4 88  0.00      100 e2e4 e7e5
> 3/ 4 e2e4 136  0.00      279 e2e4 e7e5 d2d3
> 4/ 8 e2e4 119  0.00     1518 e2e4 d7d5 d2d3 d5e4
> 5/11 e2e4 118  0.07     8374 e2e4 d7d5 e4d5 d8d5 d2d4 e7e5
> 6/11 d2d4 126  0.26    35116 d2d4 b8c6 e2e4 d7d5 e4d5 c6d4
> 7/15 d2d4 147  0.72   104287 d2d4 f7f5 e2e3 c7c5 b1c3 c5d4 e3d4 b8c6
> 8/17 d2d4 145  1.76   256157 d2d4 e7e6 e2e4 c7c5 g1f3 c5d4 f3d4 f8d6 d4f3
> 9/20 d2d4 141  5.16   744426 d2d4 c7c5 d4c5 d8a5 b1c3 f7f5 g1f3 a5c5 e2e4 f5e4
>c3e4
>10/26 b1c3 148 37.38  5140175 b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4
>b1c3  37.38 148  5140175 b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4
>nps=137530 ha=15.00% q=63.0% bc=54% br=1.94% mp=0<>1080852480
>pawnx=185 recapx=20644 qcheckx=0 checkx=71598 qfutilx=1220147 onereplyx=4437
>mthrx=0 futilx=0 bmx=11546
>b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4 move b1c3
>1. b1c3
>
>Not generating moves for move generator in mobility counter
>
>.go
>Alpha=-387 Beta=413 Maxdepth=10 MaxTime=9999999
>Ply/Max Mv   Time   Score Nodes PV
> 1/ 1 e2e4 88  0.00       21 e2e4
> 2/ 3 e2e4 88  0.00      100 e2e4 e7e5
> 3/ 4 e2e4 136  0.00      279 e2e4 e7e5 d2d3
> 4/ 8 e2e4 119  0.04     1518 e2e4 d7d5 d2d3 d5e4
> 5/11 e2e4 118  0.05     8374 e2e4 d7d5 e4d5 d8d5 d2d4 e7e5
> 6/11 d2d4 126  0.12    35116 d2d4 b8c6 e2e4 d7d5 e4d5 c6d4
> 7/15 d2d4 147  0.33   104287 d2d4 f7f5 e2e3 c7c5 b1c3 c5d4 e3d4 b8c6
> 8/17 d2d4 145  0.76   256157 d2d4 e7e6 e2e4 c7c5 g1f3 c5d4 f3d4 f8d6 d4f3
> 9/20 d2d4 141  2.18   744426 d2d4 c7c5 d4c5 d8a5 b1c3 f7f5 g1f3 a5c5 e2e4 f5e4
>c3e4
>10/26 b1c3 148 15.65  5140175 b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4
>b1c3  15.65 148  5140175 b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4
>nps=328530 ha=15.00% q=63.0% bc=54% br=2.22% mp=0<>1080852480
>pawnx=185 recapx=20644 qcheckx=0 checkx=71598 qfutilx=1220147 onereplyx=4437
>mthrx=0 futilx=0 bmx=11546
>b1c3 f7f5 d2d4 c7c6 e2e3 b7b5 g1f3 b5b4 move b1c3
>1. b1c3

Additionally I ran the new version with mobility and the efficient legal
move counter for mobility at terminal nodes against the testsuite and it
scored the same score as the old version that had no mobility at endpoints.

Since it is clear that mobility at terminal nodes is a good thing and since
there is no loss of testsuite, I am keeping it as the default for the program
to have mobility at terminal nodes, which has been long-needed.

Stuart



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.