Smooth evaluation

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

User avatar
Kempelen
Posts: 620
Joined: Fri Feb 08, 2008 10:44 am
Location: Madrid - Spain

Smooth evaluation

Post by Kempelen »

I have noted when examining Rybka (and possible many more programs) that when evaluating a position, Rybka evaluates the position very smooth, I mean, the evaluation only change from ply to ply only in a few centipawns (in the start position 3 centipawns). My program, in a tipical middlegame position sometimes changes 40 centipawns or more between plys, so my question is:

- What make an engine to evaluate positions "the smooth way", with "small jumps"?

- does lots of chess knowledge make evaluation funcion more smooth or less?

- What are proper ways to adjust the evaluation and search function to be as I describe?

- and last, is a program who change the evaluation from ply to ply a lot a good evaluation engine?

thx
User avatar
sje
Posts: 4675
Joined: Mon Mar 13, 2006 7:43 pm

Re: Smooth evaluation

Post by sje »

One idea that might be helpful is to assign a small positional bonus to the side on the move. This fails for zugzwang positions, though. But most of the time it helps.
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Smooth evaluation

Post by bob »

Kempelen wrote:I have noted when examining Rybka (and possible many more programs) that when evaluating a position, Rybka evaluates the position very smooth, I mean, the evaluation only change from ply to ply only in a few centipawns (in the start position 3 centipawns). My program, in a tipical middlegame position sometimes changes 40 centipawns or more between plys, so my question is:

- What make an engine to evaluate positions "the smooth way", with "small jumps"?

- does lots of chess knowledge make evaluation funcion more smooth or less?

- What are proper ways to adjust the evaluation and search function to be as I describe?

- and last, is a program who change the evaluation from ply to ply a lot a good evaluation engine?

thx
There are two options. (1) small score components so that as a feature is activated, the resulting change is small; (2) "phasing in" positional scores so that they suddenly don't just "turn on" but instead phase in slowly.

A simple example might be an outpost knight supported by friendly pawns. A knight on e5 is good, if no pawns can attack the knight, it is better, if it is supported it is better still. If the opponent has no knights and no bishop on that color square, it is better still. You could just "turn this on" in one big chunk, or you could phase it in as each requirement is met...
bob
Posts: 20943
Joined: Mon Feb 27, 2006 7:30 pm
Location: Birmingham, AL

Re: Smooth evaluation

Post by bob »

Kempelen wrote:I have noted when examining Rybka (and possible many more programs) that when evaluating a position, Rybka evaluates the position very smooth, I mean, the evaluation only change from ply to ply only in a few centipawns (in the start position 3 centipawns). My program, in a tipical middlegame position sometimes changes 40 centipawns or more between plys, so my question is:

- What make an engine to evaluate positions "the smooth way", with "small jumps"?

- does lots of chess knowledge make evaluation funcion more smooth or less?

- What are proper ways to adjust the evaluation and search function to be as I describe?

- and last, is a program who change the evaluation from ply to ply a lot a good evaluation engine?

thx
There are two options. (1) small score components so that as a feature is activated, the resulting change is small; (2) "phasing in" positional scores so that they suddenly don't just "turn on" but instead phase in slowly.

A simple example might be an outpost knight supported by friendly pawns. A knight on e5 is good, if no pawns can attack the knight, it is better, if it is supported it is better still. If the opponent has no knights and no bishop on that color square, it is better still. You could just "turn this on" in one big chunk, or you could phase it in as each requirement is met...