I've generated a dataset for Texel's tuning purposes for my engine.
I've used gm2600.pgn:
4818922 positions:
1000000 positions: https://github.com/maksimKorzh/wukongJS ... itions.txt
Data sample (inspired by datasets from Ethereal data dump thread):
Code: Select all
8/p5p1/1pnnkp2/4p2p/4P3/P2K1P2/1PN3PP/4B3 b - - 0 37 [0.5]
8/4k3/7R/7p/p6P/1bK5/8/8 b - - 40 60 [0.5]
8/8/5n2/5p2/3N2k1/6P1/6K1/8 w - - 12 120 [0.5]
rn1qk2r/pb2bppp/1pp2n2/3pN3/B2P4/2N1P3/PP3PPP/R1BQK2R b KQkq - 1 9 [0.0]
r1bqr1k1/1p3pp1/3p1n1p/2p5/2Pp4/PQ1P2PP/3NPPB1/R3R1K1 b - - 1 17 [0.5]
1q1r1rk1/pb1pbppp/1p2p3/8/2PnPBn1/P1N2N2/1P1QBPPP/2R2RK1 b - - 11 15 [1.0]
5rk1/r2nbppp/pqp1p3/1p1n4/3PP3/2N2BP1/PP1B1P1P/R1QR2K1 b - - 0 17 [0.5]
8/6k1/3p1np1/b3pP1p/6P1/P3BK1P/8/2N5 b - - 2 43 [1.0]
4r1k1/r4p1p/2p1b1p1/3pP3/1p2nP2/5N1P/1PP3P1/3RRBK1 w - - 0 30 [0.5]
rn1qk2b/pb3p2/2p1pn2/4N1p1/2pPP3/2N3B1/PP3PP1/R2QK3 w Qq - 0 14 [0.0]
8/8/6kP/1pp5/4K1n1/1P6/P2B4/8 b - - 10 50 [1.0]
2Q5/4q1pk/7p/5p2/8/6R1/6KP/4r3 b - - 13 52 [0.0]
8/p2r1pk1/1np1b1p1/2p1p1b1/2P1P2p/qP3B1P/2R1NPP1/2NQ2K1 w - - 2 48 [0.0]
2kr1b2/p1q2p1p/4RQrp/2pp2N1/5p2/3P4/PPPN1P2/5K1R w - - 2 20 [0.5]
2r2rk1/4q1pp/p2n1pn1/3p3N/1p1Pp1PP/4P2B/PPP2QR1/5R1K w - - 1 26 [0.5]
1n1q1r1k/pp4pp/4Q2n/1B1p4/3P2P1/8/1R4KP/6B1 w - - 3 32 [0.0]
7k/6b1/4B2p/r7/1p2KP2/1P5P/P5R1/8 b - - 2 56 [1.0]
1r1q1r1k/1p4bp/p1npb3/3Npp2/P1N5/2P3P1/1P3PBP/R2QK2R w KQ - 0 19 [0.5]
2r5/4k3/5b1p/pp1R1Pp1/2n5/2P5/P3BPPP/2R3K1 b - - 1 32 [1.0]
3q2k1/5pp1/1b1r4/p1N5/PpQnp3/4B1P1/1P3PKP/R7 w - - 0 37 [1.0]
2r4k/1p1R2p1/p7/4p1rp/5n2/2P3NP/PP3PP1/5RK1 w - - 0 28 [1.0]
6k1/pp2Q3/2p1P2p/3p3P/3P2r1/8/P4rPK/8 w - - 3 44 [1.0]
8/5Qpk/1p5p/5p2/4q3/6P1/P4PKP/8 w - - 3 35 [0.5]
r5k1/2R2p1p/4p1pB/p1P1P3/6P1/8/2n2P1P/6K1 w - - 1 37 [0.5]
r4rk1/p2n2p1/1p2p2p/2qb3n/2N1B3/P4N2/1P3PPP/R2Q1RK1 w - - 4 20 [0.0]
r2q1rk1/pb3ppp/1pn1pn2/6B1/3P4/P2B1N2/1P3PPP/R2Q1RK1 w - - 2 19 [0.5]
4k3/p4pp1/4p2p/4P3/P3B3/1N5P/5KP1/7r w - - 1 32 [1.0]
Data is already randomized.
First 5 moves in the opening and checkmate positions are skipped.
Only those positions are picked where eval() == quiescence() so that use eval() for faster tuning.
Details of data generation: https://github.com/maksimKorzh/wukongJS ... l_tuner.py
Tune material + PST assuming tapered eval independent from an engine: https://github.com/maksimKorzh/wukongJS ... eval_tuner
I'm still debugging it, readme is about to come later.
This is my very first attempt)
Criticism is highly appreciated!
P.S. I know about gradient decent but yet too dumb to implement it)