Perhaps a simple csv format will do.AndrewGrant wrote: ↑Tue May 24, 2022 4:41 am I would like to generate // mine from existing games, a list of a few million positions with an associated move. Each entry into this big list will have the following: <fen> <some_move> <expected_see_score>. (What about <fen> <square> <score>?) The score will follow the normal conventions, where the pieces are { +1, +3, +3, +5, +9 }. These SEE scores that get computed need to be "perfect". They should be the scores that any of our engines would return, if no one was concerned about the run-time cost of the SEE() functions.
A few topics:
1. How to generate such a list? How to select from existing PGNs?
2. What does "perfect" really mean for SEE? Blockers? Pinners? Checks?
3. What is the interface for this via UCI?
4. Engines don't use 1/3/3/5/9. What do do about that?
Would be nice to know "what % of SEE positions do you compute correctly", with various amounts of effort.
Code: Select all
epd,square,score,pv
Code: Select all
epd: The position based on EPD format, we don't need the hmvc and fmvn.
square: The capture begins on this square, at least 1 capture should be done.
score: This is the material count based on piece values [p=1, n=3, b=3, r=5, q=9] after a move or sequence of moves.
It starts at zero even if the initial position has material imbalance. The score point of view is the side to move
from the initial position.
pv: The principal variation or best sequence of moves, can be a single move. Use uci move format.
Code: Select all
5rk1/5pp1/2r4p/5b2/2R5/6Q1/R1P1qPP1/5NK1 b - -,c2,-1,f5c2 a2c2 e2c2 c4c2 c6c2
Code: Select all
Black gains: 1+5+5 = 11
White gains: 3+9 = 12
stm: black
score = 11 - 12 = -1
For uci engines:
position fen <fen>
go see c2
The engine is told to do SEE calculation on square c2.
Example:
Code: Select all
position fen 5rk1/5pp1/2r4p/5b2/2R5/6Q1/R1P1qPP1/5NK1 b - - 0 1
go see c2
Code: Select all
score -1 pv f5c2 a2c2 e2c2 c4c2 c6c2
Code: Select all
score -1
The engine can be revised to output such a list, Source of positions can be anything. More variety is better, from a simple 1 or 2 plies solutions to a more deeper plies.1. How to generate such a list? How to select from existing PGNs?
Moves should be legal.2. What does "perfect" really mean for SEE? Blockers? Pinners? Checks?
A new test set can be created for other piece values.4. Engines don't use 1/3/3/5/9. What to do about that?