MEA and temere.epd

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Werner
Posts: 2877
Joined: Wed Mar 08, 2006 10:09 pm
Location: Germany
Full name: Werner Schüle

Re: MEA and temere.epd

Post by Werner »

Hi,
is it possible to get these corrected 34798 positions in the format for mea for download?
e.g. EPD: 1r6/5pkp/3p4/3Pn3/P2r4/1BR3PP/6K1/5R2 w - - bm Ra1; c0 "Ra1=10, Kg1=3, g4=0, Rf4=0"
Thanks
Werner
Dann Corbit
Posts: 12573
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: MEA and temere.epd

Post by Dann Corbit »

Rebel wrote: Tue Apr 28, 2020 5:51 am
MEA creates perfect EPD'S in the "epd_out" folder, example.

Code: Select all

1b1qrr2/1p4pk/1np4p/p3Np1B/Pn1P4/R1N3B1/1Pb2PPP/2Q1R1K1 b - - bm Bxe5; ce 203; acd 12;
1k1r2r1/1b4p1/p4n1p/1pq1pPn1/2p1P3/P1N2N2/1PB1Q1PP/3R1R1K b - - bm Nxf3; ce 124; acd 13;
1k1r3r/pb1q2p1/B4p2/2p4p/Pp1bPPn1/7P/1P2Q1P1/R1BN1R1K b - - bm Bxa6; ce 178; acd 14;
BTW, you must have noticed by now that many positions come from your 110 million EPD database, excellent to create random sets.
I gave you data that was only 14 plies deep? How embarrassing.
I guess that shows you how fast technology moves.
The data in the archive I posted has a minimum depth of 30.
I wonder if your data set and the data set I provided can be merged?
I would also be curious to see what the effect would be of using only the positions where both sets are in agreement.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12573
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: MEA and temere.epd

Post by Dann Corbit »

Werner wrote: Tue Apr 28, 2020 10:46 am Hi,
is it possible to get these corrected 34798 positions in the format for mea for download?
e.g. EPD: 1r6/5pkp/3p4/3Pn3/P2r4/1BR3PP/6K1/5R2 w - - bm Ra1; c0 "Ra1=10, Kg1=3, g4=0, Rf4=0"
Thanks
The data set I provided was not analyzed multi-pv. There will be some percentage where I have multiple evaluations, but it would be somewhat incomplete in that regard.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
User avatar
Rebel
Posts: 7026
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: MEA and temere.epd

Post by Rebel »

Dann Corbit wrote: Tue Apr 28, 2020 12:06 pm
Rebel wrote: Tue Apr 28, 2020 5:51 am
MEA creates perfect EPD'S in the "epd_out" folder, example.

Code: Select all

1b1qrr2/1p4pk/1np4p/p3Np1B/Pn1P4/R1N3B1/1Pb2PPP/2Q1R1K1 b - - bm Bxe5; ce 203; acd 12;
1k1r2r1/1b4p1/p4n1p/1pq1pPn1/2p1P3/P1N2N2/1PB1Q1PP/3R1R1K b - - bm Nxf3; ce 124; acd 13;
1k1r3r/pb1q2p1/B4p2/2p4p/Pp1bPPn1/7P/1P2Q1P1/R1BN1R1K b - - bm Bxa6; ce 178; acd 14;
BTW, you must have noticed by now that many positions come from your 110 million EPD database, excellent to create random sets.
I gave you data that was only 14 plies deep? How embarrassing.
I guess that shows you how fast technology moves.
The data in the archive I posted has a minimum depth of 30.
I wonder if your data set and the data set I provided can be merged?
I would also be curious to see what the effect would be of using only the positions where both sets are in agreement.
No worries, for the purpose I use it positions need to be re-analyzed with MultiPV=4 or higher to create a STS like set.
90% of coding is debugging, the other 10% is writing bugs.
abulmo2
Posts: 434
Joined: Fri Dec 16, 2016 11:04 am
Location: France
Full name: Richard Delorme

Re: MEA and temere.epd

Post by abulmo2 »

xr_a_y wrote: Tue Apr 07, 2020 12:09 pm
abulmo2 wrote: Tue Apr 07, 2020 10:36 am I guess many active chesss engine developers use linux instead of windows here. Is there a linux port of this software suite?
As the .edp is given in the zip file, it is easy to run it by yourself in your own tool.
OK, Amoeba internal's epd parser now parses the c0 comment but I am puzzled in front of the list of moves and scores. What to do with it ?
The highest score is usually 10, but it can be higher, 15, 11, 13 or whatever. Such a higher score is usually found on the second move. Why is it so?
How to score a move outside the list. Zero ? But some moves inside the list are also already scored 0. It looks like the c0 comment just contain an array of 4 "best" moves. Why does the array keep the bad moves (scored 0) ? What about positions having more than 4 best moves?
On the examples given the max score is 30 x the number of position of the epd files. How it is gotten? The best score of the list is rescaled to 30 or the test is run 3 times and the score of the first move of the list (10) is retained as the max score; although some other moves are scored higher ?
Richard Delorme
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: MEA and temere.epd

Post by xr_a_y »

abulmo2 wrote: Thu Apr 30, 2020 10:12 am
xr_a_y wrote: Tue Apr 07, 2020 12:09 pm
abulmo2 wrote: Tue Apr 07, 2020 10:36 am I guess many active chesss engine developers use linux instead of windows here. Is there a linux port of this software suite?
As the .edp is given in the zip file, it is easy to run it by yourself in your own tool.
OK, Amoeba internal's epd parser now parses the c0 comment but I am puzzled in front of the list of moves and scores. What to do with it ?
The highest score is usually 10, but it can be higher, 15, 11, 13 or whatever. Such a higher score is usually found on the second move. Why is it so?
How to score a move outside the list. Zero ? But some moves inside the list are also already scored 0. It looks like the c0 comment just contain an array of 4 "best" moves. Why does the array keep the bad moves (scored 0) ? What about positions having more than 4 best moves?
On the examples given the max score is 30 x the number of position of the epd files. How it is gotten? The best score of the list is rescaled to 30 or the test is run 3 times and the score of the first move of the list (10) is retained as the max score; although some other moves are scored higher ?
I extract the "good" moves list with their score and increment an overall score with that.
I just keep track of the total at the end to bench the engine.

The relevant (but dirty) Minic code for that is

Code: Select all

            else { // look into c0 section ...
                Logging::LogIt(Logging::logInfo) << "Mea style " << extP.comment0()[0];
                std::vector<std::string> tokens = extP.comment0();
                for (size_t ms = 0 ; ms < tokens.size() ; ++ms){
                    std::string tmp = tokens[ms];
                    tmp.erase(std::remove(tmp.begin(), tmp.end(), '"'), tmp.end());
                    tmp.erase(std::remove(tmp.begin(), tmp.end(), ','), tmp.end());
                    std::cout << tmp << std::endl;
                    std::vector<std::string> keyval;
                    tokenize(tmp,keyval,"=");
                    if ( keyval.size() > 2 ){ // "=" prom sign inside ...
                       std::stringstream strTmp;
                       copy(keyval.begin(),keyval.begin()+1, std::ostream_iterator<std::string>(strTmp,"="));
                       strTmp >> keyval[0];
                       keyval[1] = keyval.back();
                    }
                    std::cout << keyval[0] << std::endl;
                    std::cout << keyval[1] << std::endl;
                    results[k][t].mea.push_back(std::make_pair(keyval[0], std::stoi( keyval[1] )));
                }
                results[k][t].score = 0;
                bool success = false;
                for(size_t i = 0 ; i < results[k][t].mea.size() ; ++i){
                    if ( results[k][t].computerMove == results[k][t].mea[i].first){
                        results[k][t].score = results[k][t].mea[i].second;
                        success = true;
                        Logging::LogIt(Logging::logInfo) << "Good " << i+1 << " best move : " << results[k][t].mea[i].first;
                        break;
                    }
                }
                if ( breakAtFirstSuccess && success ) break;
            }
User avatar
Rebel
Posts: 7026
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: MEA and temere.epd

Post by Rebel »

abulmo2 wrote: Thu Apr 30, 2020 10:12 am
xr_a_y wrote: Tue Apr 07, 2020 12:09 pm
abulmo2 wrote: Tue Apr 07, 2020 10:36 am I guess many active chesss engine developers use linux instead of windows here. Is there a linux port of this software suite?
As the .edp is given in the zip file, it is easy to run it by yourself in your own tool.
OK, Amoeba internal's epd parser now parses the c0 comment but I am puzzled in front of the list of moves and scores. What to do with it ?
The highest score is usually 10, but it can be higher, 15, 11, 13 or whatever. Such a higher score is usually found on the second move. Why is it so?
With MultiPV sometimes second, third best moves produce higher scores than the best move.
How to score a move outside the list. Zero ? But some moves inside the list are also already scored 0. It looks like the c0 comment just contain an array of 4 "best" moves.
Correct, the result of using MultiPV=4.
Why does the array keep the bad moves (scored 0) ?
Because you don't want to get those moves points.
What about positions having more than 4 best moves?
Then the set has to be re-analyzed with a higher MultiPV=4 value.
On the examples given the max score is 30 x the number of position of the epd files. How it is gotten? The best score of the list is rescaled to 30 or the test is run 3 times and the score of the first move of the list (10) is retained as the max score; although some other moves are scored higher ?
An essential part of the formula is the time how fast a move is found in the list, depending on that an extra bonus of maximal 20 points is added to the move value, making the maximum 30 points, it's where the maximum score comes from, 30 x number of positions and not 10.
90% of coding is debugging, the other 10% is writing bugs.
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: MEA and temere.epd

Post by xr_a_y »

Rebel wrote: Thu Apr 30, 2020 11:38 am An essential part of the formula is the time how fast a move is found in the list, depending on that an extra bonus of maximal 20 points is added to the move value, making the maximum 30 points, it's where the maximum score comes from, 30 x number of positions and not 10.
Good ! will you share this time bonus rules ? so that we can use it in our own tools ?
User avatar
Rebel
Posts: 7026
Joined: Thu Aug 18, 2011 12:04 pm
Full name: Ed Schröder

Re: MEA and temere.epd

Post by Rebel »

xr_a_y wrote: Thu Apr 30, 2020 11:44 am
Rebel wrote: Thu Apr 30, 2020 11:38 am An essential part of the formula is the time how fast a move is found in the list, depending on that an extra bonus of maximal 20 points is added to the move value, making the maximum 30 points, it's where the maximum score comes from, 30 x number of positions and not 10.
Good ! will you share this time bonus rules ? so that we can use it in our own tools ?
Sure, here is.

The idea behind the tool is that one runs it at fast time control since you need so many positions to get a reliable result, hence the tool concentrates itself at time controls between 100-500ms, 1000ms max. This gives the following two tables, ms (milliseconds) and a corresponding table pt (points).

Code: Select all

int ms [] =    {  10,  20,  30,  40,  50,  60,  70,  80,  90,  100,  125,  150,  175,  200,  250,  300,  400,  500,  600,  700,  800,  900,   -1 };
double pt [] = { 3.0, 2.9, 2.8, 2.7, 2.6, 2.5, 2.4, 2.3, 2.2,  2.1,  2,0,  1.9,  1.8,  1.7,  1.6,  1.5,  1.4,  1.3,  1.2,  1.1,  1.0,  1.0,  0.0 }; 
Example: c0 "Qa4=10, Rxc2=9, f6=5, Kg7=1";

If your engine plays none of the above moves, no points.

Suppose it plays Qa4 it gets 10 points * pt[x]; where x is the index found in the ms table when the engine had Qa4 as best move and remained stable to the end.

And so we may get:

Qa4 found at 8ms and stable, 10 * 3.0 = 30 points, the maximum.
Qa4 found at 190ms, 10 * 1.7 = 17 points.

Rxc2 found at 70ms, 9 * 2.4 = 21 points.

f6 found at 5ms, 5 * 3.0 = 15 points.
f6 found at 100ms, 5 * 2.1 = 10 points.

Kg7 found at 5ms, 1 * 3.0 = 3 points.
Kg7 found at 100ms, 1 * 2.1 = 2 points.
90% of coding is debugging, the other 10% is writing bugs.
User avatar
xr_a_y
Posts: 1871
Joined: Sat Nov 25, 2017 2:28 pm
Location: France

Re: MEA and temere.epd

Post by xr_a_y »

Thanks a lot !