Most important eval elements

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Most important eval elements

Post by OliverBr »

Dann Corbit wrote:If you go here:

In general, one of the most important things for a good evaluation is mobility. Look at how strong Olithink is, and it's eval is just about pure mobility and nothing else.
Thank you for the compliment, Dann. Actually I am proud of OliThink, too as it has reached the 2500 ELO and still is small compact, and as you said, just based on mobility.
There are still improvements possible on tree cutting and the speed of eval (currently olithink still calculate the complete mobility at every leaf of the tree), so I would suppose that a perfece-just-mobility engine could make the 2700 ELO.

Actually an only-mobility eval needs a quite deep search as by this way other eval things are automatically included.

For example, the "Bishop Trap" on the a-file or h-file is explicitely handled in most engine's eval. A sufficient deep search considering mobility automatically handles this problem as a trapped bishop can't move.

Same goes for pawn structure. A bad pawn structure blocks your pieces, so with a good mobility eval the pawn structure should never be that bad.
bhlangonijr
Posts: 482
Joined: Thu Oct 16, 2008 4:23 am
Location: Milky Way

Re: Most important eval elements

Post by bhlangonijr »

OliverBr wrote:
Dann Corbit wrote:If you go here:

In general, one of the most important things for a good evaluation is mobility. Look at how strong Olithink is, and it's eval is just about pure mobility and nothing else.
Thank you for the compliment, Dann. Actually I am proud of OliThink, too as it has reached the 2500 ELO and still is small compact, and as you said, just based on mobility.
I think what you are saying is not 100% accurate as your evaluation function takes into account free and hanging pawns too, right?
Anyhow Olithink is amazing, indeed.

But I guess without some more chess knowledge it will be very hard to squeeze much more Elo points from Olithink. Because you will have to compensate the positional superiority of your opponents with much deeper searches. Just a guess, anyway...

Regards,
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Most important eval elements

Post by OliverBr »

bhlangonijr wrote: I think what you are saying is not 100% accurate as your evaluation function takes into account free and hanging pawns too, right?
Correct, I mentioned it in my source code, that is the only non-mobil eval. But actually it's an indirect mobility eval. Hanging Pawn can't move, so very bad mobility and free pawn have a good mobility, of course.

I plan to implement it that way and so I have the 100% mobility eval.
Anyhow Olithink is amazing, indeed.
Thank you, I see you know my code :)

But I guess without some more chess knowledge it will be very hard to squeeze much more Elo points from Olithink. Because you will have to compensate the positional superiority of your opponents with much deeper searches. Just a guess, anyway...
The evil thing is that those superior engines like Rybka are searching much deeper, too, because they are cutting the tree much more than OliThink...

So, of course they are out of reach anyway, but I am quite happy with the current 2500 ELO. OliThink is competing now with engines (like Crafty 20.14, Yace or Phalanx) that have been very far ahead some years ago. Furthermore those engines are so much, much more complex and bigger than OliThink.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Most important eval elements

Post by Don »

OliverBr wrote:
Dann Corbit wrote:If you go here:

In general, one of the most important things for a good evaluation is mobility. Look at how strong Olithink is, and it's eval is just about pure mobility and nothing else.
Thank you for the compliment, Dann. Actually I am proud of OliThink, too as it has reached the 2500 ELO and still is small compact, and as you said, just based on mobility.
There are still improvements possible on tree cutting and the speed of eval (currently olithink still calculate the complete mobility at every leaf of the tree), so I would suppose that a perfece-just-mobility engine could make the 2700 ELO.

Actually an only-mobility eval needs a quite deep search as by this way other eval things are automatically included.

For example, the "Bishop Trap" on the a-file or h-file is explicitely handled in most engine's eval. A sufficient deep search considering mobility automatically handles this problem as a trapped bishop can't move.

Same goes for pawn structure. A bad pawn structure blocks your pieces, so with a good mobility eval the pawn structure should never be that bad.
I also agree that after counting heads (material), mobility would be the next biggest thing to include.

But mobility is far from an effective way to measure everything. Even if your evaluation was material only it would still measure pawn structure in a crude way - a weak pawn is going to force the loss of something sooner or later. So your argument is not specific to mobility. All you are saying is that you believe mobility comes closest to approximating a bunch of other missing evaluation features. I would agree with you on this. However ....

It makes me wonder why you include material in your evaluation since mobility also crudely approximates material. Why did you make that concession to simplicity but not others? You don't mind having a program that is much weaker than it needs to be to keep it conceptually simple, but you were not willing to go all the way. I'm not criticizing you, I think it's cool but I still wonder why you chose to do it like you did. For example you could have included a few cheap evaluation terms and added 100-200 ELO without adding much to the program.

I'm pretty sure that if you could have only material or only mobility, having only mobility would give you a stronger program because it would make many more "reasonable" moves. The material only program is going to immediately play nonsense moves. A mobility only program will at least play actively and appear to have some kind of purpose.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Most important eval elements

Post by Don »

OliverBr wrote:
bhlangonijr wrote: I think what you are saying is not 100% accurate as your evaluation function takes into account free and hanging pawns too, right?
Correct, I mentioned it in my source code, that is the only non-mobil eval. But actually it's an indirect mobility eval. Hanging Pawn can't move, so very bad mobility and free pawn have a good mobility, of course.

I plan to implement it that way and so I have the 100% mobility eval.
Does your program count material? Then it's still not 100% mobility.
Anyhow Olithink is amazing, indeed.
Thank you, I see you know my code :)

But I guess without some more chess knowledge it will be very hard to squeeze much more Elo points from Olithink. Because you will have to compensate the positional superiority of your opponents with much deeper searches. Just a guess, anyway...
The evil thing is that those superior engines like Rybka are searching much deeper, too, because they are cutting the tree much more than OliThink...

So, of course they are out of reach anyway, but I am quite happy with the current 2500 ELO. OliThink is competing now with engines (like Crafty 20.14, Yace or Phalanx) that have been very far ahead some years ago. Furthermore those engines are so much, much more complex and bigger than OliThink.
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Most important eval elements

Post by OliverBr »

Don wrote: It makes me wonder why you include material in your evaluation since mobility also crudely approximates material. Why did you make that concession to simplicity but not others?
Actually I have tried this one and it doesn't work.

Best example is the Rook.

The Rook has a crappy mobility the first 15-20 moves of the game, yet he has a high value and you won't want to give it away at any time of the game. You must (!) give him some value even though he has 0 mobility. That is called material value.

His mobility value comes very, very late in the game, far beyond any search horizon. So the approach just doesn't work. The Rook is only the clearest example for this.

Edit: Of course in the case that search depth is much, much bigger than now we will be able to rethink doing this approach. Anyway I personally think, that there is a limit(frontier) of searching depth and we will never reach this.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Most important eval elements

Post by Don »

OliverBr wrote:
Don wrote: It makes me wonder why you include material in your evaluation since mobility also crudely approximates material. Why did you make that concession to simplicity but not others?
Actually I have tried this one and it doesn't work.

Best example is the Rook.

The Rook has a crappy mobility the first 15-20 moves of the game, yet he has a high value and you won't want to give it away at any time of the game. You must (!) give him some value even though he has 0 mobility. That is called material value.

His mobility value comes very, very late in the game, far beyond any search horizon. So the approach just doesn't work. The Rook is only the clearest example for this.

Edit: Of course in the case that search depth is much, much bigger than now we will be able to rethink doing this approach. Anyway I personally think, that there is a limit(frontier) of searching depth and we will never reach this.
I think the relevant thing is how accurate the evaluation function is. I would not be looking for more and more excuses to drop features thinking that search will make up for it.

Based on what I have learned in the past 2 or 3 years, we want MORE evaluation in Komodo, not less. I too used to be more brute force in my thinking but I have changed :-)

Have you considered a pure material only search? I wonder how deeply you must search before the program would have reasonable looking PV's in the first 3 or 4 ply?
bhlangonijr
Posts: 482
Joined: Thu Oct 16, 2008 4:23 am
Location: Milky Way

Re: Most important eval elements

Post by bhlangonijr »

Don wrote: It makes me wonder why you include material in your evaluation since mobility also crudely approximates material. Why did you make that concession to simplicity but not others? You don't mind having a program that is much weaker than it needs to be to keep it conceptually simple, but you were not willing to go all the way. I'm not criticizing you, I think it's cool but I still wonder why you chose to do it like you did. For example you could have included a few cheap evaluation terms and added 100-200 ELO without adding much to the program.
Don, I am not Oliver but I think it is an easy question to answer. There are some authors who doesn't have as main goal gaining more Elo points no matter what.
For example, some authors valuates more the reliability of their programs even at the cost of some sacrifice of overall performance. I think Gaviota from Miguel is one of them.
OliThink, Sungorus and Micro-Max are in my list of best chess engines because it seems the authors have the goal of creating very strong and minimalist chess programs. Just to reinforce Olithink is competing with Crafty 10 who has tens of thousands more lines of code. :) Well I think we can learn something from that.
I read in some posts that Bob took out from Crafty the fractional plies and all non-check extensions code and his program is doing well. Maybe it really doesn't help much and we are just adding junk code to our programs.

Regards,
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Most important eval elements

Post by Don »

bhlangonijr wrote:
Don wrote: It makes me wonder why you include material in your evaluation since mobility also crudely approximates material. Why did you make that concession to simplicity but not others? You don't mind having a program that is much weaker than it needs to be to keep it conceptually simple, but you were not willing to go all the way. I'm not criticizing you, I think it's cool but I still wonder why you chose to do it like you did. For example you could have included a few cheap evaluation terms and added 100-200 ELO without adding much to the program.
Don, I am not Oliver but I think it is an easy question to answer. There are some authors who doesn't have as main goal gaining more Elo points no matter what.
For example, some authors valuates more the reliability of their programs even at the cost of some sacrifice of overall performance. I think Gaviota from Miguel is one of them.
OliThink, Sungorus and Micro-Max are in my list of best chess engines because it seems the authors have the goal of creating very strong and minimalist chess programs. Just to reinforce Olithink is competing with Crafty 10 who has tens of thousands more lines of code. :) Well I think we can learn something from that.
I read in some posts that Bob took out from Crafty the fractional plies and all non-check extensions code and his program is doing well. Maybe it really doesn't help much and we are just adding junk code to our programs.

Regards,
I believe most programs have a lot of junk. I think over 3 years we have added a pretty large number of minor things that we believe are worth 1 or 2 ELO but it wouldn't surprise me if many of those are junk and probably at least a few could be hurting us.

I am surprised to hear that Oli is the same as Crafty in strength. I see a 350 ELO difference looking at one of the rating lists for single CPU programs. Is Olithink under a different name?
OliverBr
Posts: 725
Joined: Tue Dec 18, 2007 9:38 pm
Location: Munich, Germany
Full name: Dr. Oliver Brausch

Re: Most important eval elements

Post by OliverBr »

Don wrote: I am surprised to hear that Oli is the same as Crafty in strength. I see a 350 ELO difference looking at one of the rating lists for single CPU programs. Is Olithink under a different name?
OliThink 5.3.0 has ELO 2500, so has Crafty 20.14.
Newer versions of Crafty are definitely stronger, I would say about 2750, so they are 250 points better.