generating EPD strings with quiesce positions

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
flok
Posts: 558
Joined: Tue Jul 03, 2018 10:19 am
Full name: Folkert van Heusden

generating EPD strings with quiesce positions

Post by flok »

Hello,

I'm trying to generate large amounts of random quiesce chess positions (for tuning).
For that I created a python-script: https://vanheusden.com/permshare/rq.py
Unfortunately it is very slow (also compiled).
Not the part where it searches for the best move, but the generation of the board.
Any ideas how to improve this? Or are there existing programs which do so that my google search did not show up?
dangi12012
Posts: 1062
Joined: Tue Apr 28, 2020 10:03 pm
Full name: Daniel Infuehr

Re: generating EPD strings with quiesce positions

Post by dangi12012 »

I recommend you just use this:

https://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/

together with one of these:
https://database.lichess.org/

Then pipe the fens into a C++ compiled piece of software the reads stdin and outputs those position that pass your predicate.
You can literally have one unix pipe from the tar.bz2 -> fen stream -> your software -> file
Worlds-fastest-Bitboard-Chess-Movegenerator
Daniel Inführ - Software Developer
expositor
Posts: 60
Joined: Sat Dec 11, 2021 5:03 am
Full name: expositor

Re: generating EPD strings with quiesce positions

Post by expositor »

To generate quiet positions, I run game positions through a modified version of Expositor's quiescing search which prints the leaves – positions that she considers to be tactically quiet enough to stop at. This happens here.

Alternatively, if I don't want to generate new positions but simply filter existing features, I compare the static evaluation of each position with the score from quiescing search, and reject the position if the two differ by more than some amount. This happens here.
jdart
Posts: 4398
Joined: Fri Mar 10, 2006 5:23 am
Location: http://www.arasanchess.org

Re: generating EPD strings with quiesce positions

Post by jdart »

If this is for Texel (i.e. logistic regression) tuning, you can just use non-quiescent positions. What I do in my tuner is, every 20 iterations or so, search each position and extract the position at the end of the PV. Then store those derived quiet positions internally and use for the next 20 iterations. (This idea was used in the MMTO algorithm https://www.semanticscholar.org/paper/L ... 2d77f1dc19 for computer go). It is not too inefficient, but I have a big multi-core machine to run it on.