Author: Matthew White
Date: 11:07:36 07/02/03
Go up one level in this thread
On July 02, 2003 at 13:35:56, Andrei Fortuna wrote: >On July 02, 2003 at 13:31:08, Matthew White wrote: > >>>CHE/CHE++ used in Nimzo looks pretty close to what I have in mind (they even >>>have this code compiled to a custom format) but I think their syntax could be >>>made nicer. >> >>CHE++ is compiled to a java-like bytecode which is interpreted by a virtual >>machine. > >This was my first impression from what informations I could find. > >>However, I don't think that the code is used at every level of the >>search, I think it may only be used at the root for move ordering (that is the >>impression that I got after spending about 6 months using Che++ for a project). > >Isn't it used for evaluation function ? I was sure this was the case ... I think that it isn't. I wish that it was, but I believe that it is applied as a heuristic. When a search is performed in Nimzo, the Che++ knowledge is applied by giving bonuses to certain moves and penalties to others. To see this behavior in the Fritz interface with Nimzo8, go to Window -> Panes -> Engine Output... It shows the output of the Che++ module. The evaluations from the module show up as "Advice" there. The purpose of my project was to improve Nimzo's positional knowledge by modifying the Che++ code included with it. The result is improved knowledge, but nonsensical PV's due to the fact that the opponent's reply move has not had the knowledge added to it. However, when the move is made, the reply move is played correctly. It is just not usually shown in the PV. My guess is that the way Brutus works is by implementing the Che++ virtual machine into an FPGA, and then using the knowledge at each step of the eval with little additional cost. I was watching a game played by Brutus on Playchess, using Nimzo to kibitz, and I observed that Brutus and Nimzo nearly always agree on the move to play despite (obvious) difference in hardware. I definitely agree about the importance of evals in strong chess programs, which is why I started down the track to improve Nimzo's knowledge to begin with :). Something else that I was looking at was taking positional knowledge out of the eval function for the purpose of assigning a score (since I don't see any clear way of assigning value to positional characteristics, it seems too artificial to me), and using positional plusses as ways of improving the move ordering instead of affecting the actual score. It is possible that positional bonuses added to the eval have the same net effect, but I am not sure. For example, I once heard a lecture stating that in the opening, a pawn is worth three tempi, meaning that if you can get a three developing move advantage on your opponent, then a gambit is generally okay. It would seem, then, that in an eval, a program could assign a value of 0 for a minus one pawn, plus three tempi situation (absent any other contributing factors). However, if you only have a two tempi and you give the opponent a pawn, does that mean you are -0.33? I don't think that the rule is so hard-and fast... A one tempo advantage is VERY different than a three tempo advantage. An exchange can often be used to regain one tempo, but regaining three tempi requires considerably more work. So is it fair to say that each tempo is worth the same amount? I don't think so. Just something to think about, I hope that all made sense. Regards, Matt > >Maybe it's used to generate pcsq tables by applying a set of rules to the root >position, exactly like CHEVAL but more low-level than that one. If this is the >case then my idea is indeed different :) > >Andrei
This page took 0.01 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.