Q search explosion

Discussion of chess software programming and technical issues.

Moderator: Ras

flok

Re: Q search explosion

Post by flok »

Embla:

go
info depth 1 seldepth 28 score cp 9999 time 33925 nodes 13386853 pv b8b1
info depth 2 seldepth 27 score cp 9999 time 41964 nodes 15953363 pv b8b1
info score cp 9999
bestmove b8b1
tttony
Posts: 276
Joined: Sun Apr 24, 2011 12:33 am

Re: Q search explosion

Post by tttony »

My engine took 50sec to show the move

Code: Select all

FEN: 1QqQqQq1/r6Q/Q6q/q6Q/B2q4/q6Q/k6K/1qQ1QqRb w - - 0 1 

Skiull 0.1 x64 popcnt:
   1	00:50	  421.241.466	8.396.282	+M1	Qc1xb1+
   2	02:24	1.254.264.577	8.694.834	+M1	Qc1xb1+
   3	04:41	2.464.164.196	8.749.216	+M1	Qc1xb1+
User avatar
hgm
Posts: 28458
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Q search explosion

Post by hgm »

I had expected micro-Max 1.6w to solve this very quickly. Because it does not have a real QS, and relies on a recapture (= capture last mover) extension to converge the search results. But to my dismay it did not get a mate score, although it did prefer a mating move! :shock:

Turns out the WinBoard interface I had added to allow testing of the AI under WinBoard had swapped the codes for Knight and King in the position setup code! The fact that it also could not find a mate-in-2 in KRK, and started complaniing about illegal moves when I played out the mate by hand, made me suspicious. But if you are playing without King, you can of course never be checkmated...

So position setup has never worked in micro-Max 1.6w. When I fixed this, I get the following result:

Code: Select all

 97	+79.99 	26247  	0:00.03	h3a3
  1	+8.95 	167      	0:00.00	a4e8
  0	  0.00 	1          	0:00.00	a8a8
Because micro-Max is a King-capture engine, it needs 2 ply to see mate in 1. The King is really captured on ply 3, but this is always detected (also for a non-movig King) when in a horizon node it attempts to generate captures on the last mover.
op12no2
Posts: 558
Joined: Tue Feb 04, 2014 12:25 pm
Location: Gower, Wales
Full name: Colin Jenkins

Re: Q search explosion

Post by op12no2 »

JVMerlino wrote: 2) Once the qsearch has gone 4 plies deep (again, an arbitrary number) I only allow the qsearch to do recaptures on the previous capture's square. This code was eventually commented out.
jm
Thanks John, I'll try it.
op12no2
Posts: 558
Joined: Tue Feb 04, 2014 12:25 pm
Location: Gower, Wales
Full name: Colin Jenkins

Re: Q search explosion

Post by op12no2 »

mar wrote: Exactly what I do in Cheng, except I do this: minqsdepth = -3*rootdepth; no elo regression.
Interesting thanks - looks like *2 is going to lose ~10-20 ELO - I'll try *3 afterwards.
User avatar
lantonov
Posts: 216
Joined: Sun Apr 13, 2014 5:19 pm

Re: Q search explosion

Post by lantonov »

No problem for SF under Winboard

Code: Select all

127	    #1 	62827  	0:00.08	Qhxb1#
126	    #1 	62671  	0:00.08	Qhxb1#
125	    #1 	62515  	0:00.08	Qhxb1#
124	    #1 	62359  	0:00.08	Qhxb1#
123	    #1 	62203  	0:00.08	Qhxb1#
122	    #1 	62047  	0:00.08	Qhxb1#
121	    #1 	61891  	0:00.08	Qhxb1#
120	    #1 	61735  	0:00.08	Qhxb1#
119	    #1 	61579  	0:00.08	Qhxb1#
118	    #1 	61423  	0:00.08	Qhxb1#
117	    #1 	61267  	0:00.08	Qhxb1#
116	    #1 	61111  	0:00.08	Qhxb1#
115	    #1 	60955  	0:00.08	Qhxb1#
114	    #1 	60799  	0:00.08	Qhxb1#
113	    #1 	60643  	0:00.08	Qhxb1#
112	    #1 	60487  	0:00.08	Qhxb1#
111	    #1 	60331  	0:00.08	Qhxb1#
110	    #1 	60175  	0:00.08	Qhxb1#
109	    #1 	60019  	0:00.08	Qhxb1#
108	    #1 	59863  	0:00.08	Qhxb1#
107	    #1 	59707  	0:00.08	Qhxb1#
106	    #1 	59551  	0:00.07	Qhxb1#
105	    #1 	59395  	0:00.07	Qhxb1#
104	    #1 	59239  	0:00.07	Qhxb1#
103	    #1 	59083  	0:00.07	Qhxb1#
102	    #1 	58927  	0:00.07	Qhxb1#
101	    #1 	58771  	0:00.07	Qhxb1#
100	    #1 	58615  	0:00.07	Qhxb1#
 99	    #1 	58459  	0:00.07	Qhxb1#
 98	    #1 	58303  	0:00.07	Qhxb1#
 97	    #1 	58147  	0:00.07	Qhxb1#
 96	    #1 	57991  	0:00.07	Qhxb1#
 95	    #1 	57835  	0:00.07	Qhxb1#
 94	    #1 	57679  	0:00.07	Qhxb1#
 93	    #1 	57523  	0:00.07	Qhxb1#
 92	    #1 	57367  	0:00.07	Qhxb1#
 91	    #1 	57211  	0:00.07	Qhxb1#
 90	    #1 	57055  	0:00.07	Qhxb1#
 89	    #1 	56899  	0:00.07	Qhxb1#
 88	    #1 	56743  	0:00.07	Qhxb1#
 87	    #1 	56587  	0:00.07	Qhxb1#
 86	    #1 	56431  	0:00.07	Qhxb1#
 85	    #1 	56275  	0:00.07	Qhxb1#
 84	    #1 	56119  	0:00.07	Qhxb1#
 83	    #1 	55963  	0:00.07	Qhxb1#
 82	    #1 	55807  	0:00.07	Qhxb1#
 81	    #1 	55651  	0:00.07	Qhxb1#
 80	    #1 	55495  	0:00.07	Qhxb1#
 79	    #1 	55339  	0:00.07	Qhxb1#
 78	    #1 	55183  	0:00.07	Qhxb1#
 77	    #1 	55027  	0:00.07	Qhxb1#
 76	    #1 	54871  	0:00.07	Qhxb1#
 75	    #1 	54715  	0:00.07	Qhxb1#
 74	    #1 	54559  	0:00.07	Qhxb1#
 73	    #1 	54403  	0:00.07	Qhxb1#
 72	    #1 	54247  	0:00.07	Qhxb1#
 71	    #1 	54091  	0:00.07	Qhxb1#
 70	    #1 	53935  	0:00.07	Qhxb1#
 69	    #1 	53779  	0:00.06	Qhxb1#
 68	    #1 	53623  	0:00.06	Qhxb1#
 67	    #1 	53467  	0:00.06	Qhxb1#
 66	    #1 	53311  	0:00.06	Qhxb1#
 65	    #1 	53155  	0:00.06	Qhxb1#
 64	    #1 	52999  	0:00.06	Qhxb1#
 63	    #1 	52843  	0:00.06	Qhxb1#
 62	    #1 	52687  	0:00.06	Qhxb1#
 61	    #1 	52531  	0:00.06	Qhxb1#
 60	    #1 	52375  	0:00.06	Qhxb1#
 59	    #1 	52219  	0:00.06	Qhxb1#
 58	    #1 	52063  	0:00.06	Qhxb1#
 57	    #1 	51907  	0:00.06	Qhxb1#
 56	    #1 	51751  	0:00.06	Qhxb1#
 55	    #1 	51595  	0:00.06	Qhxb1#
 54	    #1 	51439  	0:00.06	Qhxb1#
 53	    #1 	51283  	0:00.06	Qhxb1#
 52	    #1 	51127  	0:00.06	Qhxb1#
 51	    #1 	50971  	0:00.06	Qhxb1#
 50	    #1 	50815  	0:00.06	Qhxb1#
 49	    #1 	50659  	0:00.06	Qhxb1#
 48	    #1 	50503  	0:00.06	Qhxb1#
 47	    #1 	50347  	0:00.06	Qhxb1#
 46	    #1 	50191  	0:00.06	Qhxb1#
 45	    #1 	50035  	0:00.06	Qhxb1#
 44	    #1 	49879  	0:00.06	Qhxb1#
 43	    #1 	49723  	0:00.06	Qhxb1#
 42	    #1 	49567  	0:00.06	Qhxb1#
 41	    #1 	49411  	0:00.06	Qhxb1#
 40	    #1 	49255  	0:00.06	Qhxb1#
 39	    #1 	49099  	0:00.06	Qhxb1#
 38	    #1 	48943  	0:00.06	Qhxb1#
 37	    #1 	48787  	0:00.05	Qhxb1#
 36	    #1 	48631  	0:00.05	Qhxb1#
 35	    #1 	48475  	0:00.05	Qhxb1#
 34	    #1 	48319  	0:00.05	Qhxb1#
 33	    #1 	48163  	0:00.05	Qhxb1#
 32	    #1 	48007  	0:00.05	Qhxb1#
 31	    #1 	47851  	0:00.05	Qhxb1#
 30	    #1 	47695  	0:00.05	Qhxb1#
 29	    #1 	47539  	0:00.05	Qhxb1#
 28	    #1 	47383  	0:00.05	Qhxb1#
 27	    #1 	47227  	0:00.05	Qhxb1#
 26	    #1 	47071  	0:00.05	Qhxb1#
 25	    #1 	46915  	0:00.05	Qhxb1#
 24	    #1 	46759  	0:00.05	Qhxb1#
 23	    #1 	46603  	0:00.05	Qhxb1#
 22	    #1 	46447  	0:00.05	Qhxb1#
 21	    #1 	46291  	0:00.05	Qhxb1#
 20	    #1 	46135  	0:00.05	Qhxb1#
 19	    #1 	45979  	0:00.05	Qhxb1#
 18	    #1 	45823  	0:00.05	Qhxb1#
 17	    #1 	45667  	0:00.05	Qhxb1#
 16	    #1 	45511  	0:00.05	Qhxb1#
 15	    #1 	45355  	0:00.05	Qhxb1#
 14	    #1 	45199  	0:00.05	Qhxb1#
 13	    #1 	45043  	0:00.05	Qhxb1#
 12	    #1 	44887  	0:00.05	Qhxb1#
 11	    #1 	44731  	0:00.05	Qhxb1#
 10	    #1 	44575  	0:00.05	Qhxb1#
  9	    #1 	44419  	0:00.05	Qhxb1#
  8	    #1 	44263  	0:00.05	Qhxb1#
  7	    #1 	44107  	0:00.05	Qhxb1#
  6	    #1 	43951  	0:00.05	Qhxb1#
  5	    #1 	43795  	0:00.05	Qhxb1#
  4	    #1 	43639  	0:00.05	Qhxb1#
  3	    #1 	43483  	0:00.05	Qhxb1#
  2	    #1 	43327  	0:00.05	Qhxb1#
  1	    #1 	42387  	0:00.04	Qhxb1#
  0	#
Qbxb1 # is another possible solution
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Q search explosion

Post by Evert »

The more I look into this, the less I understand why SjaakII does so well on this position. It has a few things to limit quiescence search in games that are prone to QS explosions, but none of those activate here.
As far as I can tell, it just happens to pick a mating move as one of its first choices, and never even enters quiescence search as a result. You'd think that would be very easy to break, but so far it hasn't.

Weird.
D Sceviour
Posts: 570
Joined: Mon Jul 20, 2015 5:06 pm

Re: Q search explosion

Post by D Sceviour »

Evert wrote: As far as I can tell, it just happens to pick a mating move as one of its first choices....
Correct. Sort the move list so checks are searched early and without reduction. There are 156 moves in the root move list, and good sorting is important.
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Q search explosion

Post by Evert »

D Sceviour wrote:
Evert wrote: As far as I can tell, it just happens to pick a mating move as one of its first choices....
Correct. Sort the move list so checks are searched early and without reduction. There are 156 moves in the root move list, and good sorting is important.
Yeah, thing is: I'm not doing that. I generate all moves up front and it's too expensive to test all of them for being checking moves.
User avatar
hgm
Posts: 28458
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Q search explosion

Post by hgm »

If you extend checks it is questionable whether it is a good idea to search them first anyway. It would be much preferable to get a cutoff by a cheaper move.