Hi,
I have a question for programmers.
I have a (big) PGN file in which I store all my test games
(say 100 000 games of 2000 engines). I want to have pairings
of groups with (say) 12 engines from the bottom up to the top.
Criteria for pairings are:
-- a certain ratings interval (say 80) and
-- the number of games in the database. I should explain further:
if it is bigger than (say ) 5, I dont necessarily want both engines
in the same group. On the other hand, I want to have: each two
engines within (say) 80-points range have played (say) once or twice.
I know this could be done by checkin manually BayesElo details file.
This is the latest option for me.
Is there enough programmers for a programming contest?
Best,
Pairings generation based on a big PGN file
Moderators: hgm, Rebel, chrisw
-
- Posts: 3533
- Joined: Tue Jan 09, 2007 8:33 pm
- Location: Antalya, Turkey
Pairings generation based on a big PGN file
hi, merhaba, hallo HT
-
- Posts: 180
- Joined: Mon Sep 03, 2007 9:15 am
Re: Pairings generation based on a big PGN file
Hi Harun,I have a (big) PGN file in which I store all my test games
(say 100 000 games of 2000 engines). I want to have pairings
of groups with (say) 12 engines from the bottom up to the top.
Criteria for pairings are:
-- a certain ratings interval (say 80) and
-- the number of games in the database. I should explain further:
if it is bigger than (say ) 5, I dont necessarily want both engines
in the same group. On the other hand, I want to have: each two
engines within (say) 80-points range have played (say) once or twice.
I know this could be done by checkin manually BayesElo details file.
This is the latest option for me.
If I understand your requirements correctly you are looking for a program that makes groups for round robin tournaments. Programs of similar strength that have not played many games against each other should go to the same group.
Some questions:
Does your PGN file contain ELO ratings?
Do you want every engine in your PGN file to become member in a pairing group?
Some engines might be left, when every group is required to have the same size. Which ones should be left out, those from the top or maybe those that have enough games against close opponents?
What about engines that have played against higher/lower rated opponents on average?
According to your requirements, there might be more lower/higher rated opponents then to chose from, but this is not guaranteed.
Are there different versions of the same engine in your PGN file? If not, the following questions don't make sense.
Should different versions of the same engine be allowed to be in the same group?
Should the fact that EngineA-Version1 already played against EngineB-Version1 have any influence on
- pairings of EngineA-Version1 against EngineB-Version2 (same as EngineA-Version2 against EngineB-Version1)
- pairings of EngineA-Version2 against EngineB-Version2
I will not participate in a programmers contest on this. Although the problem is interesting, I will not waste time on it when you have the option to chose another solution.Is there enough programmers for a programming contest?
I have a program SwissOpt that makes swiss pairings from a PGN file. It does not use the FIDE swiss pairing rules. It uses an optimization algorithm instead. This shoud be a good starting point to make the program you want.
Greetings
Volker
-
- Posts: 3245
- Joined: Thu Mar 09, 2006 9:10 am
Re: Pairings generation based on a big PGN file
Programmers may find that irritating.beachknight wrote: Is there enough programmers for a programming contest?
A programmer can invest time to help you by writing the tool.
However, defining the request as a contest (without pay) is not a good idea.
Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
http://www.chess.hylogic.de
-
- Posts: 1056
- Joined: Thu Mar 09, 2006 4:15 pm
- Location: Long Island, NY, USA
Re: Pairings generation based on a big PGN file
I am not sure of exactly what is desired. Maybe these 2 are useful?
"pairList" produces two text files. "outPairs" lists all the
player pairs in the input file, and the number of games played.
"outOpponents" lists the player names, the number of games played,
and the number of distinct opponents.
"pairSplit" creates a distinct file for the games of each pair of
players, without regard to the color played. Only the first 100 player
pairs (in sorted order) are processed per program execution. Remaining
games are collected into a leftover file which can be processed at a
later time.
"pairList" produces two text files. "outPairs" lists all the
player pairs in the input file, and the number of games played.
"outOpponents" lists the player names, the number of games played,
and the number of distinct opponents.
"pairSplit" creates a distinct file for the games of each pair of
players, without regard to the color played. Only the first 100 player
pairs (in sorted order) are processed per program execution. Remaining
games are collected into a leftover file which can be processed at a
later time.
-
- Posts: 27808
- Joined: Fri Mar 10, 2006 10:06 am
- Location: Amsterdam
- Full name: H G Muller
Re: Pairings generation based on a big PGN file
The way I usually approach this kind of problem is define en evaluation function for how much you like / dislike a certain solution (e.g. giving penalties for large rating differences, and pairing engines that already have a large number of games). And then I craete a purely random pairing, and try to improve on that by swapping randomly chosen engines if that improves the evaluation, until I cannot find swaps anymore that improve the score (in a predetermined number of tries). '
A refiinement would be to try simulated annealing (initially also accepting swaps that decrease the score, with a slowly decreasing probability).
A refiinement would be to try simulated annealing (initially also accepting swaps that decrease the score, with a slowly decreasing probability).
-
- Posts: 180
- Joined: Mon Sep 03, 2007 9:15 am
Re: Pairings generation based on a big PGN file
What I did in SwissOpt is threshold accepting. Initially also accept swaps that decrease the score by a threshold with a decreasing threshold.hgm wrote:The way I usually approach this kind of problem is define en evaluation function for how much you like / dislike a certain solution (e.g. giving penalties for large rating differences, and pairing engines that already have a large number of games). And then I craete a purely random pairing, and try to improve on that by swapping randomly chosen engines if that improves the evaluation, until I cannot find swaps anymore that improve the score (in a predetermined number of tries). '
A refiinement would be to try simulated annealing (initially also accepting swaps that decrease the score, with a slowly decreasing probability).
-
- Posts: 3533
- Joined: Tue Jan 09, 2007 8:33 pm
- Location: Antalya, Turkey
Re: Pairings generation based on a big PGN file
1. Yes, ELO Ratings is available in the PGN file.Volker Annuss wrote:Hi Harun,I have a (big) PGN file in which I store all my test games
(say 100 000 games of 2000 engines). I want to have pairings
of groups with (say) 12 engines from the bottom up to the top.
Criteria for pairings are:
-- a certain ratings interval (say 80) and
-- the number of games in the database. I should explain further:
if it is bigger than (say ) 5, I dont necessarily want both engines
in the same group. On the other hand, I want to have: each two
engines within (say) 80-points range have played (say) once or twice.
I know this could be done by checkin manually BayesElo details file.
This is the latest option for me.
If I understand your requirements correctly you are looking for a program that makes groups for round robin tournaments. Programs of similar strength that have not played many games against each other should go to the same group.
Some questions:
Does your PGN file contain ELO ratings?
Do you want every engine in your PGN file to become member in a pairing group?
Some engines might be left, when every group is required to have the same size. Which ones should be left out, those from the top or maybe those that have enough games against close opponents?
What about engines that have played against higher/lower rated opponents on average?
According to your requirements, there might be more lower/higher rated opponents then to chose from, but this is not guaranteed.
Are there different versions of the same engine in your PGN file? If not, the following questions don't make sense.
Should different versions of the same engine be allowed to be in the same group?
Should the fact that EngineA-Version1 already played against EngineB-Version1 have any influence on
- pairings of EngineA-Version1 against EngineB-Version2 (same as EngineA-Version2 against EngineB-Version1)
- pairings of EngineA-Version2 against EngineB-Version2
I will not participate in a programmers contest on this. Although the problem is interesting, I will not waste time on it when you have the option to chose another solution.Is there enough programmers for a programming contest?
I have a program SwissOpt that makes swiss pairings from a PGN file. It does not use the FIDE swiss pairing rules. It uses an optimization algorithm instead. This shoud be a good starting point to make the program you want.
Greetings
Volker
Or for input I may provide BayesElo ratings or details files.
2. Yes, I dont want an engine's different versions in the same group.
I need w32 only and x64 only pairings for
-- w32 engines (msw),
-- x64 engines (msw)
Plus I have following classes:
-- linux engines
-- mac engines
-- chessbase native engines
-- chesspartner engines
which I need separately to be paired.
Best,
hi, merhaba, hallo HT
-
- Posts: 3533
- Joined: Tue Jan 09, 2007 8:33 pm
- Location: Antalya, Turkey
Re: Pairings generation based on a big PGN file
Yes, exactly I want such a program.If I understand your requirements correctly you are looking for a program that makes groups for round robin tournaments. Programs of similar strength that have not played many games against each other should go to the same group.
Best,
hi, merhaba, hallo HT
-
- Posts: 3533
- Joined: Tue Jan 09, 2007 8:33 pm
- Location: Antalya, Turkey
Re: Pairings generation based on a big PGN file
Hi Matthias,Matthias Gemuh wrote:Programmers may find that irritating.beachknight wrote: Is there enough programmers for a programming contest?
A programmer can invest time to help you by writing the tool.
However, defining the request as a contest (without pay) is not a good idea.
Matthias.
I can write a simple program myself. But I have not touched
programming since ages. For me this will be a months effort or two.
For you or Norm or Miguel or Hans Gert... two days work at most, I'd think.
Best,
hi, merhaba, hallo HT
-
- Posts: 180
- Joined: Mon Sep 03, 2007 9:15 am
Re: Pairings generation based on a big PGN file
The point is not how much work it is for a programmer. It is that it is an individual program for one user only - you. So when more than one programmer starts working on a contest, you are in the fine position to take the program you like most, and all but one programmer have wasted their time on that project.beachknight wrote:Hi Matthias,Matthias Gemuh wrote:Programmers may find that irritating.beachknight wrote: Is there enough programmers for a programming contest?
A programmer can invest time to help you by writing the tool.
However, defining the request as a contest (without pay) is not a good idea.
Matthias.
I can write a simple program myself. But I have not touched
programming since ages. For me this will be a months effort or two.
For you or Norm or Miguel or Hans Gert... two days work at most, I'd think.
Best,