Null move question

Programming Topics (Computer Chess) and technical aspects as test techniques, book building, program tuning etc

Moderator: Andres Valverde

Null move question

Postby Fermin Serrano » 30 Jun 2008, 21:56

Me again asking about what I am facing programming my engine.
In this position:
r1bq4/1p4kp/3p1n2/p4pB1/2pQ4/8/1P4PP/4RRK1 w - - bm Re8
I am having a issue that I don't know if it is normal. I put my engine in two tests, one with Null-Move turned on and other with Null-Move turned off. The result is that no-null-move-version is retrieving the correct move faster than null-move-version. This sound strange to me, because the no-null-move-version take less time and less ply to reach the correct result.
does this sound normal to you?

Null Move version:
Code: Select all
ply score   time     nodes  pv
--- ----- ------ --------- -------------------------------------------------
 1    221      0       144  1. Qxc4
 2    178      0       306  1. Qxc4 Qb6+ 2. Rf2
 3    165      0      2130  1. Qxc4 Bd7 2. h4
 4    175      8     29060  1. Qxc4 Qb6+ 2. Rf2 Ne4 3. Be3
 5    158     16     53160  1. Qxc4 Qb6+ 2. Rf2 Ne4 3. Be3 Qb4
 5    184     87    291212  1. Rf3 Kf7 2. Qxc4+ Kg7 3. Bxf6+ Qxf6 4. Qd5 Qxb2 5. Qxd6
 6    281    109    365908  1. Rf3 Kf7 2. Qxc4+ d5 3. Bxf6 Qxf6 4. Qxd5+ Kg7 5. b3
 7    291    261    902833  1. Rf3 Kf7 2. Rfe3 d5 3. Re7+ Qxe7 4. Rxe7+ Kxe7 5. Qxf6+ Kd7 6. Qe5
 8    400   1203   3821874  1. Rf3 Kf7 2. Rfe3 d5 3. Re8 Qd6 4. Bxf6 b5
 8    865   2427   8243776  1. Re8 Qxe8 2. Qxf6+ Kg8 3. Bh6 Qe3+ 4. Bxe3 d5 5. Qd8+ Kf7 6. Qxd5+ Kf6 7. Qxc4


Version without Null Move
Code: Select all
ply score   time     nodes  pv
--- ----- ------ --------- -------------------------------------------------
 1    221      0       144  1. Qxc4
 2    178      0       320  1. Qxc4 Qb6+ 2. Rf2
 3    167      0      2105  1. Qxc4 Qb6+ 2. Rf2 Ne4
 4    175      7     27602  1. Qxc4 Qb6+ 2. Rf2 Ne4 3. Be3
 5    158     28     96093  1. Qxc4 Qb6+ 2. Rf2 Ne4 3. Be3 Qb4
 5    183    106    373719  1. Rf3 Kf7 2. Qxc4+ Kg6 3. Bxf6 Qxf6 4. Qd5 Qxb2 5. Qxd6+
 6    281    217    803202  1. Rf3 Kf7 2. Qxc4+ d5 3. Bxf6 Qxf6 4. Qxd5+ Kg7 5. b3
 6    423    815   2958933  1. Re8


Regards,
Fermin
User avatar
Fermin Serrano
 
Posts: 72
Joined: 10 Apr 2008, 18:20
Location: Madrid (Spain)

Re: Null move question

Postby Teemu Pudas » 30 Jun 2008, 22:44

What's your R? After 3..null, the mate will be missed if you're in quiescence.

Consider generating quiet checks in QS, especially in response to nullmove.
Teemu Pudas
 
Posts: 124
Joined: 16 Apr 2007, 14:03

Re: Null move question

Postby Fermin Serrano » 01 Jul 2008, 08:22

Teemu Pudas wrote:What's your R? After 3..null, the mate will be missed if you're in quiescence.

Consider generating quiet checks in QS, especially in response to nullmove.


Making tests, it seems that R is not the problem. Even your suggestion of generating quit checks in QS in response to nullmove does not work also. What I have modified is don't allow null move if current_depth <=2 and this show the expected move in ply 6 and 700.000 nodes, which is less than no-null-move version.
User avatar
Fermin Serrano
 
Posts: 72
Joined: 10 Apr 2008, 18:20
Location: Madrid (Spain)

Re: Null move question

Postby Harald Johnsen » 01 Jul 2008, 08:26

It's normal.
The null move search is a boolean function that tells you if your opponent has a threat.
You cut the branch when there is none. You cut the branch but that branch could lead to a better variation than what you'll get in other branch.
You just can't know because :
1) you passed your turn so you did not play the most threatening move
2) you searched with a lower depth so you missed some tactics
3) your lower search depth lead you in quiescent search while the good move is perhaps not a capture.

HJ.
User avatar
Harald Johnsen
 
Posts: 43
Joined: 20 Aug 2007, 17:01
Location: France


Return to Programming and Technical Discussions

Who is online

Users browsing this forum: No registered users and 33 guests