Author: Bruce Moreland
Date: 13:14:58 03/19/01
Go up one level in this thread
On March 19, 2001 at 14:34:50, Frank Schneider wrote: >On March 18, 2001 at 18:15:26, Bruce Moreland wrote: >>This is a bug, in my opinion. > >Why do you think so? The program drew right out of the opening with a weak player. It's obviously a bug of some sort. >> It is easy to set a program so it won't do this, > >how? Make the program believe the opponent if he tries to repeat? It works just fine if the goal is to draw in the opening. If that's the intended effect, I have no answer. I think it would be fixed if the program wouldn't try to draw in the opening. It would be possible to fix the problem by understanding that the position was an opening position and was something that was normal and not that bad. Unless of course it was that bad, in which case this is a book bug, which is still a bug. A quick fix along these lines would be to make the contempt factor a pretty large negative number in the opening. Another more comprehensive fix would be to not score positions played on the board as draws unless they have been played twice. I remember hearing about a commercial program, some time ago, that if you played 1. e4 e5 2. Nf3 Nc6 3. Ng1 against it, would play 3. ... Nb8, trying to draw, because it had an asymmetrical eval that scored most opening positions as negative from its point of view. Even two tempi up it thought it was worse. Other than the obvious fix of the asymmetric eval, a way to fix this problem would be to simply not recognize that 3. ... Nb8 is a repetition, because it has only occurred once. The argument against this fix has always been that the program might miss some real repetitions, but I think this argument is poor. If the program is the one repeating the position unnecessarily (because it doesn't know that the position has already happened once), then it will have a chance to do better before allowing a third rep. If it's the opponent who is try to draw by repeating the position, to hell with them. If the program can find something that preserves play, I say that it should. My program scores any position that occurs twice along a search branch as a draw. It scores any position that occurs twice in the list of played positions, plus once in a search branch, as a draw. It does not score a position a draw if it occurs once in the list of played positions and once in a search branch. This has always worked fine. It even has the added benefit of allowing other operators to think that my program is going to throw away a win by repeating the position, just because it does it once. This fix is also useful against humans who mess up. If a human has a win in a position, and misses it, if you do draws Stefan's way you may play into the position and allow them to find the win the second time. If you do things my way, you'll never do this. Example: I'm at -2. My opponent makes a reversible move that allows me to make a reversible move that I score as -1. They then realize their error and undo their move. A lot of programs will undo their own move, in order to get back to the "drawn" position that is really -2, rather than continuing along the -1 line. Mine won't. This is a practical case. I saw it in one of the first ICC rated games my program played. >Frank > >P.S.: is Pat still slow? Pat still has all of that video, but he's kind of a weenie. His email address is patw@microsoft.com if you want to kick him a little. bruce >>and even if you choose to keep things the way they are, Shredder's scoring >>shouldn't allow it to call it a draw in a game with that much play left. >> >>bruce
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.