Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Writing a meta-language to describe eval function

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.