TheBlackPlague / StockNemo

A C# Chess Engine Finding Good Moves.
GNU Lesser General Public License v3.0
62 stars 7 forks source link

Implement QSearch. #8

Closed TheBlackPlague closed 2 years ago

TheBlackPlague commented 2 years ago

Current Problem

As of now, StockNemo searches to a depth X within a certain time Y. However, past that certain time Y, StockNemo cannot search more and is limited to depth X. At depth X, a move is found that is evaluated to be stronger for StockNemo, but it's entirely possible that at depth X + 1 or X + 2 or some X + Z depth after that, is worse for StockNemo. This is regarded as the Horizon Effect where the engine cannot see past the horizon, potentially trapping itself.

Solution - QSearch

QSearch aims to solve the problem by glancing over the horizon. It will only look for moves that can significantly damage the evaluation (Capture Moves for now, but may be worth including promotions). It will search far beyond the normal limit, and thus be able to significantly improve search reliability.

ELO Difference

TC: 10s + 1s

Using popularpos_lichess.epd:

Score of StockNemo vs StockNemo-OLD: 47 - 3 - 30 [0.775]
...      StockNemo playing White: 25 - 0 - 15  [0.813] 40
...      StockNemo playing Black: 22 - 3 - 15  [0.738] 40
...      White vs Black: 28 - 22 - 30  [0.537] 80
Elo difference: 214.8 +/- 63.2, LOS: 100.0 %, DrawRatio: 37.5 %
80 of 80 games finished.

Using UHO_XXL_+0.90_+1.19.epd:

Score of StockNemo vs StockNemo-OLD: 47 - 4 - 29 [0.769]
...      StockNemo playing White: 27 - 1 - 12  [0.825] 40
...      StockNemo playing Black: 20 - 3 - 17  [0.713] 40
...      White vs Black: 30 - 21 - 29  [0.556] 80
Elo difference: 208.7 +/- 64.5, LOS: 100.0 %, DrawRatio: 36.3 %
80 of 80 games finished.

TC: 10s + 0.1s

Using UHO_XXL_+0.90_+1.19.epd:

Score of StockNemo vs StockNemo-OLD: 52 - 2 - 26 [0.813]
...      StockNemo playing White: 28 - 0 - 12  [0.850] 40
...      StockNemo playing Black: 24 - 2 - 14  [0.775] 40
...      White vs Black: 30 - 24 - 26  [0.537] 80
Elo difference: 254.7 +/- 68.4, LOS: 100.0 %, DrawRatio: 32.5 %
80 of 80 games finished.