Great work ! congrats.
You say you have tuned your little eval with texel method, how did you tuned the search ?
New uci engine: Rofchade
Moderators: hgm, Rebel, chrisw
-
- Posts: 1871
- Joined: Sat Nov 25, 2017 2:28 pm
- Location: France
-
- Posts: 267
- Joined: Fri Mar 17, 2006 8:01 am
- Location: Russia
- Full name: Vladimir Medvedev
Re: New uci engine: Rofchade
Do you have different tables for different stages of game, or just 6x64 universal values?
-
- Posts: 160
- Joined: Sat Jan 28, 2017 1:29 pm
- Location: The Netherlands
Re: New uci engine: Rofchade
There it is!
Cool that the Texel's tuning method also worked for your engine.
This evening I'll have a look at your website and download the binary to see how it does against my engine.
Btw, do you know how good your SMP scaling is when using a lot of threads?
Cool that the Texel's tuning method also worked for your engine.
This evening I'll have a look at your website and download the binary to see how it does against my engine.
Btw, do you know how good your SMP scaling is when using a lot of threads?
-
- Posts: 160
- Joined: Tue Jan 23, 2018 10:18 am
- Location: Rotterdam
- Full name: Ronald Friederich
Re: New uci engine: Rofchade
Thanks for all the positive reactions!
To answer some questions. I started experimenting with Texel tuning after a talk with chess22K's author Sander at the CSVN programmer tournament. He told Texel tuning was a good and fast method to improve chess22K (I believe over 100 Elo). Before that I had been experimenting with PST a little bit and used a set from some a PST contest done at talkchess some time agoviewtopic.php?f=7&t=50840#p551966(btw interesting topic). I noticed that different PST's could already make a big difference in strength.
Before using Texel's method I had mostly been busy with hand tuning the different search parameters in the engine. Only after not getting any gain in search anymore I started to play with Texel's tuning. First with the material values and taper parameters only, which already gave some results. When I started tuning the PST tables also I got some little bit strange, asymmetrical tables but one of those tables performed significantly better then tho others. Later I tried to get symmetrical tables but they all performed worse then my current favourite.
After that I tried to play with the search parameters again but I couldn't get better results at all. What I do with Texel tuning is evaluate the quiet-labeled.epd positions with a call to the eval function only, so it has nothing to do with search. So it seems that the search parameters are not influenced by the evaluation values and is pretty much independent of it for now (except if I would multiply each element by a constant thus changing the base value of a pawn). Hopefully it will stay that way after adding different evaluation elements.
One of the reasons why asymmetrical tables seem to work best (for now?) probably is more short castling, but I think chess is not symmetric at all, due to the fact that we have 1 queen and king, and we have alternating colors for the squares (so bishop 1 can not reach square C1 for instance and bishop 2 van not reach C8). Also the testset used for tuning will have influence on how asymmetrical the tables will be, because that will also be asymmetric.
If someone is interested in the PST tables I use now, let me know, I can post them here on talkchess.
So I have asymmetrical PST's for each piece for MG and EG. I use tapering based on total MG material value that's still on the board.
To answer some questions. I started experimenting with Texel tuning after a talk with chess22K's author Sander at the CSVN programmer tournament. He told Texel tuning was a good and fast method to improve chess22K (I believe over 100 Elo). Before that I had been experimenting with PST a little bit and used a set from some a PST contest done at talkchess some time agoviewtopic.php?f=7&t=50840#p551966(btw interesting topic). I noticed that different PST's could already make a big difference in strength.
Before using Texel's method I had mostly been busy with hand tuning the different search parameters in the engine. Only after not getting any gain in search anymore I started to play with Texel's tuning. First with the material values and taper parameters only, which already gave some results. When I started tuning the PST tables also I got some little bit strange, asymmetrical tables but one of those tables performed significantly better then tho others. Later I tried to get symmetrical tables but they all performed worse then my current favourite.
After that I tried to play with the search parameters again but I couldn't get better results at all. What I do with Texel tuning is evaluate the quiet-labeled.epd positions with a call to the eval function only, so it has nothing to do with search. So it seems that the search parameters are not influenced by the evaluation values and is pretty much independent of it for now (except if I would multiply each element by a constant thus changing the base value of a pawn). Hopefully it will stay that way after adding different evaluation elements.
One of the reasons why asymmetrical tables seem to work best (for now?) probably is more short castling, but I think chess is not symmetric at all, due to the fact that we have 1 queen and king, and we have alternating colors for the squares (so bishop 1 can not reach square C1 for instance and bishop 2 van not reach C8). Also the testset used for tuning will have influence on how asymmetrical the tables will be, because that will also be asymmetric.
If someone is interested in the PST tables I use now, let me know, I can post them here on talkchess.
So I have asymmetrical PST's for each piece for MG and EG. I use tapering based on total MG material value that's still on the board.
-
- Posts: 1871
- Joined: Sat Nov 25, 2017 2:28 pm
- Location: France
Re: New uci engine: Rofchade
Yes i'd love to make a quick test with your pst values. They are MG/EG style ?
Can you also give your formula for game_phase and the relation to the coef for MG/EG scaling please ?
Can you also give your formula for game_phase and the relation to the coef for MG/EG scaling please ?
-
- Posts: 160
- Joined: Tue Jan 23, 2018 10:18 am
- Location: Rotterdam
- Full name: Ronald Friederich
Re: New uci engine: Rofchade
@Sander: I did some serious testing for 4 threads, with 4 threads I got a gain of around 115 Elo, for more threads I haven't done serious testing. The difference between 16 and 30 threads seemed low, but that was on te 16 core threadripper. I did some testing with 30 threads, based on that with 16 threads I think the gain maybe double, say around 230.
@xr_a_y Nice.. Currently I'm not able to post the PST tables, so I will do that late in the evening, or tomorrow morning.
@xr_a_y Nice.. Currently I'm not able to post the PST tables, so I will do that late in the evening, or tomorrow morning.
-
- Posts: 1221
- Joined: Wed Mar 08, 2006 8:28 pm
- Location: Florida, USA
Re: New uci engine: Rofchade
Nice - big congrats!
It's impressive that you've got so far with only PSTs.
One super-small point: I notice that Rofchad will return a best move if it finds a mate in analysis mode. Strictly speaking this shouldn't be the case for a UCI compliant engine, although it is really a few flaws of the UCI protocol.
Steve
It's impressive that you've got so far with only PSTs.
One super-small point: I notice that Rofchad will return a best move if it finds a mate in analysis mode. Strictly speaking this shouldn't be the case for a UCI compliant engine, although it is really a few flaws of the UCI protocol.
Steve
http://www.chessprogramming.net - Maverick Chess Engine
-
- Posts: 381
- Joined: Thu Nov 22, 2012 12:20 am
- Location: New Hampshire
Re: New uci engine: Rofchade
Just curious, what does the name mean?
-
- Posts: 160
- Joined: Tue Jan 23, 2018 10:18 am
- Location: Rotterdam
- Full name: Ronald Friederich
Re: New uci engine: Rofchade
Rofchade is the concatenation of the abbreviation of my name "Rof", which is my email/userid for as long as I can remember and the dutch word for castling "rochade". I came up with that name 25 years ago (or more) when I made my first attempt at developping a chess engine, so I thought it would by nice to use the same name for my second attempt.
Good suggestion. Now the search is stopped as soon as the searchdepth is GE the "matedepth". I will disable this when in infinite mode so the engine can continue to search for a shorter mate.Steve Maughan wrote: ↑Tue Aug 28, 2018 3:49 pm One super-small point: I notice that Rofchad will return a best move if it finds a mate in analysis mode. Strictly speaking this shouldn't be the case for a UCI compliant engine, although it is really a few flaws of the UCI protocol.
Steve
-
- Posts: 160
- Joined: Tue Jan 23, 2018 10:18 am
- Location: Rotterdam
- Full name: Ronald Friederich
Re: New uci engine: Rofchade
Below are the PST values which work best for rofchade. As you can see very asymmetric. They are defined as if looking to the board from white (so I can understand them better..). The first square in the table [0] is square A8 and the last square [63] is H1. This means that it can be used directly for black, for white you have flip it vertically so you cant take the square XOR 56 for white.
So if you want to calculate the MG PST value of a rook on square 'sq', if the rook is WHITE you take value pieceSquareScore[MG][ROOK][sq ^ 56], if the rook is BLACK you take pieceSquareScore[MG][ROOK][sq].
I'm interested in how well they perform in other engines with full evaluation compared to your own PST and if possible stand alone without further eval elements compared to the regular version. Because all rofchade's evaluation elements are inside the PST maybe some evaluation parts are more emphasized when used together (like rook on 7th rank bonus which also shows a little bit in the PST).
Here they are:
So if you want to calculate the MG PST value of a rook on square 'sq', if the rook is WHITE you take value pieceSquareScore[MG][ROOK][sq ^ 56], if the rook is BLACK you take pieceSquareScore[MG][ROOK][sq].
I'm interested in how well they perform in other engines with full evaluation compared to your own PST and if possible stand alone without further eval elements compared to the regular version. Because all rofchade's evaluation elements are inside the PST maybe some evaluation parts are more emphasized when used together (like rook on 7th rank bonus which also shows a little bit in the PST).
Here they are:
Code: Select all
const eval pieceValue[2][6] =
{ 82, 337, 365, 477, 1025, 12000,
94, 281, 297, 512, 936, 12000 };
const eval GAMEPHASEMINEG = 518;
const eval GAMEPHASEMAXMG = 6192;
const eval GAMEPHASERANGE = GAMEPHASEMAXMG - GAMEPHASEMINEG;
// factorMG and factorEG are calculated based on the sum of the MG values of all the pieces except pawns (pos->gamePhase)
// a sum above GAMEPHASEMAXMG is fully MG, a sum below GAMEPHASEMINEG is fully EG, the rest is interpolated:
//const eval gamePhase = std::max(GAMEPHASEMINEG, std::min(GAMEPHASEMAXMG, pos->gamePhase));
//const double factorMG = (gamePhase - GAMEPHASEMINEG) / GAMEPHASERANGE;
//const double factorEG = 1 - factorMG;
const sptScore pieceSquareScore[2][6][64] =
// MG values
{
//pawn
0, 0, 0, 0, 0, 0, 0, 0,
98, 134, 61, 95, 68, 126, 34, -11,
-6, 7, 26, 31, 65, 56, 25, -20,
-14, 13, 6, 21, 23, 12, 17, -23,
-27, -2, -5, 12, 17, 6, 10, -25,
-26, -4, -4, -10, 3, 3, 33, -12,
-35, -1, -20, -23, -15, 24, 38, -22,
0, 0, 0, 0, 0, 0, 0, 0,
//knight
-167, -89, -34, -49, 61, -97, -15, -107,
-73, -41, 72, 36, 23, 62, 7, -17,
-47, 60, 37, 65, 84, 129, 73, 44,
-9, 17, 19, 53, 37, 69, 18, 22,
-13, 4, 16, 13, 28, 19, 21, -8,
-23, -9, 12, 10, 19, 17, 25, -16,
-29, -53, -12, -3, -1, 18, -14, -19,
-105, -21, -58, -33, -17, -28, -19, -23,
//bishop
-29, 4, -82, -37, -25, -42, 7, -8,
-26, 16, -18, -13, 30, 59, 18, -47,
-16, 37, 43, 40, 35, 50, 37, -2,
-4, 5, 19, 50, 37, 37, 7, -2,
-6, 13, 13, 26, 34, 12, 10, 4,
0, 15, 15, 15, 14, 27, 18, 10,
4, 15, 16, 0, 7, 21, 33, 1,
-33, -3, -14, -21, -13, -12, -39, -21,
//rook
32, 42, 32, 51, 63, 9, 31, 43,
27, 32, 58, 62, 80, 67, 26, 44,
-5, 19, 26, 36, 17, 45, 61, 16,
-24, -11, 7, 26, 24, 35, -8, -20,
-36, -26, -12, -1, 9, -7, 6, -23,
-45, -25, -16, -17, 3, 0, -5, -33,
-44, -16, -20, -9, -1, 11, -6, -71,
-19, -13, 1, 17, 16, 7, -37, -26,
//queen
-28, 0, 29, 12, 59, 44, 43, 45,
-24, -39, -5, 1, -16, 57, 28, 54,
-13, -17, 7, 8, 29, 56, 47, 57,
-27, -27, -16, -16, -1, 17, -2, 1,
-9, -26, -9, -10, -2, -4, 3, -3,
-14, 2, -11, -2, -5, 2, 14, 5,
-35, -8, 11, 2, 8, 15, -3, 1,
-1, -18, -9, 10, -15, -25, -31, -50,
//king
-65, 23, 16, -15, -56, -34, 2, 13,
29, -1, -20, -7, -8, -4, -38, -29,
-9, 24, 2, -16, -20, 6, 22, -22,
-17, -20, -12, -27, -30, -25, -14, -36,
-49, -1, -27, -39, -46, -44, -33, -51,
-14, -14, -22, -46, -44, -30, -15, -27,
1, 7, -8, -64, -43, -16, 9, 8,
-15, 36, 12, -54, 8, -28, 24, 14,
// EG values
//pawn
0, 0, 0, 0, 0, 0, 0, 0,
178, 173, 158, 134, 147, 132, 165, 187,
94, 100, 85, 67, 56, 53, 82, 84,
32, 24, 13, 5, -2, 4, 17, 17,
13, 9, -3, -7, -7, -8, 3, -1,
4, 7, -6, 1, 0, -5, -1, -8,
13, 8, 8, 10, 13, 0, 2, -7,
0, 0, 0, 0, 0, 0, 0, 0,
//knight
-58, -38, -13, -28, -31, -27, -63, -99,
-25, -8, -25, -2, -9, -25, -24, -52,
-24, -20, 10, 9, -1, -9, -19, -41,
-17, 3, 22, 22, 22, 11, 8, -18,
-18, -6, 16, 25, 16, 17, 4, -18,
-23, -3, -1, 15, 10, -3, -20, -22,
-42, -20, -10, -5, -2, -20, -23, -44,
-29, -51, -23, -15, -22, -18, -50, -64,
//bishop
-14, -21, -11, -8, -7, -9, -17, -24,
-8, -4, 7, -12, -3, -13, -4, -14,
2, -8, 0, -1, -2, 6, 0, 4,
-3, 9, 12, 9, 14, 10, 3, 2,
-6, 3, 13, 19, 7, 10, -3, -9,
-12, -3, 8, 10, 13, 3, -7, -15,
-14, -18, -7, -1, 4, -9, -15, -27,
-23, -9, -23, -5, -9, -16, -5, -17,
//rook
13, 10, 18, 15, 12, 12, 8, 5,
11, 13, 13, 11, -3, 3, 8, 3,
7, 7, 7, 5, 4, -3, -5, -3,
4, 3, 13, 1, 2, 1, -1, 2,
3, 5, 8, 4, -5, -6, -8, -11,
-4, 0, -5, -1, -7, -12, -8, -16,
-6, -6, 0, 2, -9, -9, -11, -3,
-9, 2, 3, -1, -5, -13, 4, -20,
//queen
-9, 22, 22, 27, 27, 19, 10, 20,
-17, 20, 32, 41, 58, 25, 30, 0,
-20, 6, 9, 49, 47, 35, 19, 9,
3, 22, 24, 45, 57, 40, 57, 36,
-18, 28, 19, 47, 31, 34, 39, 23,
-16, -27, 15, 6, 9, 17, 10, 5,
-22, -23, -30, -16, -16, -23, -36, -32,
-33, -28, -22, -43, -5, -32, -20, -41,
//king
-74, -35, -18, -18, -11, 15, 4, -17,
-12, 17, 14, 17, 17, 38, 23, 11,
10, 17, 23, 15, 20, 45, 44, 13,
-8, 22, 24, 27, 26, 33, 26, 3,
-18, -4, 21, 24, 27, 23, 9, -11,
-19, -3, 11, 21, 23, 16, 7, -9,
-27, -11, 4, 13, 14, 4, -5, -17,
-53, -34, -21, -11, -28, -14, -24, -43
};