When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
Knowing your opponents
Moderators: hgm, Rebel, chrisw
-
- Posts: 670
- Joined: Mon Dec 03, 2007 3:01 pm
- Location: Barcelona, Spain
Re: Knowing your opponents
There is a difference between UCI and GUI, the latter is the Graphical User Interface that has to provide the information to the engine. The UCI (=Universal Chess Interface) is just one form of protocol to communicate with the engine. The UCI actually supports a command to tell the engine the opponent, however I neither know any GUIs nor engines that use this command.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
Code: Select all
* = UCI_Opponent, type string
With this command the GUI can send the name, title, elo and if the engine is playing a human
or computer to the engine.
The format of the string has to be [GM|IM|FM|WGM|WIM|none] [|none] [computer|human]
Example:
"setoption name UCI_Opponent value GM 2800 human Gary Kasparow"
"setoption name UCI_Opponent value none none computer Shredder"
-
- Posts: 10282
- Joined: Thu Mar 09, 2006 12:37 am
- Location: Tel-Aviv Israel
Re: Knowing your opponents
I think most humans do not modify the playing style based on the opponent.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
I also doubt if it is possible to earn much by modifying the playing style based on the oponnent.
see the FRC rating list
http://www.computerchess.org.uk/ccrl/40 ... t_all.html
usually the performance of programs after a match of 100 games is very close to the rating of the programs(difference can be explained by statistical error and I do not need the tuning explanation to explain why a program performed better than expected or worse than expected).
When I click on rybka3 and look at the perf column I see numbers between +32 and -50
http://www.computerchess.org.uk/ccrl/40 ... a_3_64-bit
clicking on shredder12 gives numbers between +28 and -37
clicking on Naum4 gives numbers between +86 and -69
looking at many programs I found no number that is bigger than +86
and usually the numbers are even smaller than 50.
Uri
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: Knowing your opponents
Are you saying that there is not very much intransitive between most players? In other words, if A beat B and B beats C, then we can also expect A to beat C.Uri Blass wrote:I think most humans do not modify the playing style based on the opponent.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
I also doubt if it is possible to earn much by modifying the playing style based on the oponnent.
see the FRC rating list
http://www.computerchess.org.uk/ccrl/40 ... t_all.html
usually the performance of programs after a match of 100 games is very close to the rating of the programs.
When I click on rybka3 and look at the perf column I see numbers between +32 and -50
http://www.computerchess.org.uk/ccrl/40 ... a_3_64-bit
clicking on shredder12 gives numbers between +28 and -37
clicking on Naum4 gives numbers between +86 and -69
looking at many programs I found no number that is bigger than +86
and usually the numbers are even smaller than 50.
Uri
If that is what you are saying, I agree. I am not saying there are NO intransitive relationships, but I believe they are fairly weak and almost certainly much weaker than people imagine. Most people claim some kind of intransitive relationship after playing only a few hundred games and trying to draw conclusions where the error margins are too high. I think a lot of people would jump to the conclusion that a 60 out of 100 result is a proof of superiority when it isn't.
But I do stress this - I think there is some intransitivity between certain programs. If your program is particularly good at something and your opponent is particularly bad at that same thing, it MIGHT make your program score lower than your ELO ratings would predict.
ELO is a great system, but it is just a model and it's not a perfect model. It assumes a 1 dimensional relationship space that defines chess strength.
-
- Posts: 1154
- Joined: Fri Jun 23, 2006 5:18 am
Re: Knowing your opponents
Clearly engines should be told who they are playing. How useful this is can be debated (I think it can be very useful, and think it effects top human players greatly, particularly in opening selection and "contempt-like" issues such as offering a draw or choosing between safe and tactically messy situations).
The annoying thing is, its hard to get the key relevant input: Name, Rating, computer/human.
Name often has many variants, Rating and opponent type are often not input or accurate. So many simple tailoring of your engine you can do (such as setting contempt by name or rating) is hard to pull off, and in some cases can even be harmful.
-Sam
The annoying thing is, its hard to get the key relevant input: Name, Rating, computer/human.
Name often has many variants, Rating and opponent type are often not input or accurate. So many simple tailoring of your engine you can do (such as setting contempt by name or rating) is hard to pull off, and in some cases can even be harmful.
-Sam
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: Knowing your opponents
It does open the door to "gaming", on the other hand it's certainly a big part of human play. A human always knows who his opponent is, whether computer or human unless of course it is intentionally hidden or there is deceit. I think over the years my programs have won more games due to the fact the human KNEW he was playing a computer and this adversely affected their play. So it's not really clear to me how much of an advantage you could get from this.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
But I would say that since our normal human chess playing convention is that you get to know who your opponent is, it seems like this should be available to the computer to use in any way it wishes.
It's very clearly done by humans who save some special move for a certain opponent and in some cases they have waited years to spring it.
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: Knowing your opponents
There should be some common authority on names of chess players - sort of like domain names for computer networks. At least for computer chess. Maybe we should ask Dann Corbitt, since he is a database expert to become the naming authority for computer chess. You have to register a name from him for $1000.00 per yearBubbaTough wrote:Clearly engines should be told who they are playing. How useful this is can be debated (I think it can be very useful, and think it effects top human players greatly, particularly in opening selection and "contempt-like" issues such as offering a draw or choosing between safe and tactically messy situations).
The annoying thing is, its hard to get the key relevant input: Name, Rating, computer/human.
Name often has many variants, Rating and opponent type are often not input or accurate. So many simple tailoring of your engine you can do (such as setting contempt by name or rating) is hard to pull off, and in some cases can even be harmful.
-Sam
-
- Posts: 1494
- Joined: Thu Mar 30, 2006 2:08 pm
Re: Knowing your opponents
Here are some examples that are pretty consistant for my program. If I am playing a weaker opponent, if I go less selective, my win percentage improves. If I am playing a stronger opponent, my win percentage increases if I go more selective.Don wrote:It does open the door to "gaming", on the other hand it's certainly a big part of human play. A human always knows who his opponent is, whether computer or human unless of course it is intentionally hidden or there is deceit. I think over the years my programs have won more games due to the fact the human KNEW he was playing a computer and this adversely affected their play. So it's not really clear to me how much of an advantage you could get from this.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
But I would say that since our normal human chess playing convention is that you get to know who your opponent is, it seems like this should be available to the computer to use in any way it wishes.
It's very clearly done by humans who save some special move for a certain opponent and in some cases they have waited years to spring it.
Another example: if I am playing a stronger opponent, my draw percentage increases if my side keeps a queen on the board (I assume this is since it increases the rep draw chance).
-
- Posts: 1494
- Joined: Thu Mar 30, 2006 2:08 pm
Re: Knowing your opponents
Thanks! I wonder if we should enforce this and encourage GUIS to use these commands.Edmund wrote:There is a difference between UCI and GUI, the latter is the Graphical User Interface that has to provide the information to the engine. The UCI (=Universal Chess Interface) is just one form of protocol to communicate with the engine. The UCI actually supports a command to tell the engine the opponent, however I neither know any GUIs nor engines that use this command.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
Code: Select all
* = UCI_Opponent, type string With this command the GUI can send the name, title, elo and if the engine is playing a human or computer to the engine. The format of the string has to be [GM|IM|FM|WGM|WIM|none] [|none] [computer|human] Example: "setoption name UCI_Opponent value GM 2800 human Gary Kasparow" "setoption name UCI_Opponent value none none computer Shredder"
-
- Posts: 5106
- Joined: Tue Apr 29, 2008 4:27 pm
Re: Knowing your opponents
I think it's probably more important to know the relative strength of your opponent than his specific identify based on what you are saying.mjlef wrote:Here are some examples that are pretty consistant for my program. If I am playing a weaker opponent, if I go less selective, my win percentage improves. If I am playing a stronger opponent, my win percentage increases if I go more selective.Don wrote:It does open the door to "gaming", on the other hand it's certainly a big part of human play. A human always knows who his opponent is, whether computer or human unless of course it is intentionally hidden or there is deceit. I think over the years my programs have won more games due to the fact the human KNEW he was playing a computer and this adversely affected their play. So it's not really clear to me how much of an advantage you could get from this.mjlef wrote:When a human plays, he/she often modifies the playing style based on his opponent, taking into accounts an opponent's weaknesses. I know in developing my program, I have come up with versions that do well against some computer opponents at the expense of other opponents. The UCI spec does not feed the name of the opponent to the chess engine. I think in most tournaments programmers are able to fine tune values between matches, change books, etc, so they could tune to the opponent. Would it make sense to expand UCI to feed the opponent program name to the engine to help automate this? Or do you feel that such tuning is "gaming" the system?
Mark
But I would say that since our normal human chess playing convention is that you get to know who your opponent is, it seems like this should be available to the computer to use in any way it wishes.
It's very clearly done by humans who save some special move for a certain opponent and in some cases they have waited years to spring it.
Another example: if I am playing a stronger opponent, my draw percentage increases if my side keeps a queen on the board (I assume this is since it increases the rep draw chance).