Lazy eval

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: Lazy eval - test results

Post by wgarvin »

Okay, yeah, I just re-read the thread and I'm barking up the wrong tree.

The original quote was
rvida wrote:Critter uses 150 cp lazy margin in qsearch and 300 cp margin at interior nodes. Also, when the absolute value of positional component from ply-1 eval is greater than 150 cp, lazy eval is not used.
But Houdart was replying only to the second sentence. My post above argues that Ippolit/Robbolito use the same lazy margins (150, 300) as Critter/Houdini, but I'm now willing to believe that they don't do the second part.

Thanks for the great idea, Richard! :P ..(snark, apologies)
kranium
Posts: 2129
Joined: Thu May 29, 2008 10:43 am

Re: Lazy eval - test results

Post by kranium »

wgarvin wrote:
kranium wrote:150 is certainly not an 'original' or 'brilliant' idea,
Ippolit, Robbolito, Igorrit, and IvanHoe all use 150, exactly in the manner Richard described above for Critter...

from common.c:
#define LazyValue 150
#define LazyValue2 300
They're also found in Robbolito's comune.h:

Code: Select all

#define valu_pigro 150
#define valu_pigro2 300
Wylie-

'comune.h' is Italian for 'common.h'

i translated it all 2 years ago, in an effort to provide the CC community with source code w/ easily understandable CC programming terms...
see any of my chesslogik.com Robbolito releases here: www.chesslogik.com
click on the Robbolito icon

...using the original source code is pretty difficult unless you happen speak fluent (Italian/Albanian)

clearly, Robert availed himself of this resource some time ago...
my guess is 5 months before Houdini 1.0 was released?

Robbolito 0.085g3 (12/31/2009)
Houdini x64 1_cpu (Houdini 1.0) (5/16/2010)

from Immortal chess's longest running rating list:

Image

note the exact same initial rating for both
absolutely amazing coincidence!
Last edited by kranium on Tue Dec 06, 2011 10:37 pm, edited 1 time in total.
wgarvin
Posts: 838
Joined: Thu Jul 05, 2007 5:03 pm
Location: British Columbia, Canada

Re: Lazy eval - test results

Post by wgarvin »

kranium wrote: 'comune.h' is Italian for 'common.h'
Yeah, I can't read Italian but matching up code between the various ippo clones is usually not difficult. I'm sure there are differences but there are also vast piles of code that are completely the same.

What gets me about all of those ippo-family engines is that their code is just so ugly! What self-respecting programmer produces code like that?

It looks like the output of some preprocessing tool. If they actually wrote it themselves, and if they care about this codebase at all, why wouldn't its anonymous authors put more effort into making it human readable and maintainable? It's kind of weird.

Anybody who starts an engine based on them, or even just wants to read the source--the first thing they do is probably spend a day or two cleaning it up and making it fractionally less ugly. (I did the same thing a few months ago when I was interested in looking at them. The raw sources were just too ugly to read.)
kranium wrote:note the exact same initial rating for both
absolutely amazing coincidence!
Amazing, yeah. This thread over at open-chess contains a bunch of other coincidences unearthed by kingeliveson.
User avatar
Rebel
Posts: 6995
Joined: Thu Aug 18, 2011 12:04 pm

Re: Lazy eval - test results

Post by Rebel »

Houdini wrote:
Don wrote:HOWEVER, your comment that it is a "Houdini idea" is what Mark Lefler refuted.
As far as I know this idea and its specific implementation, which is now also exactly found in Critter and in Strelka 5, is original to Houdini.

Do you have any reference to a past discussion (in this or another forum) in which this idea is exposed? I'm really interested.

Robert
Robert, LE probably was already in use before you were born :wink:
User avatar
rvida
Posts: 481
Joined: Thu Apr 16, 2009 12:00 pm
Location: Slovakia, EU

Re: Lazy eval - test results

Post by rvida »

wgarvin wrote: I was annoyed by his cheap shot at Richard who as I understand it, acknowledges that his engine is derived from the ippolit family.
No, Critter is not derived from anything (although it employs many ideas I learned from other programs including both Ippolit & Houdini). It did not appear out of blue as a 3200+ engine. It is being developed for almost 4 years. If you are interested enough, you can look up its progress over time on the CCRL webpage - from version 0.38 (2500 ELO) up to current (3200 ELO):
http://computerchess.org.uk/ccrl/4040/c ... ly=Critter
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Lazy eval - test results

Post by Don »

Houdini wrote:
Don wrote:HOWEVER, your comment that it is a "Houdini idea" is what Mark Lefler refuted.
As far as I know this idea and its specific implementation, which is now also exactly found in Critter and in Strelka 5, is original to Houdini.

Do you have any reference to a past discussion (in this or another forum) in which this idea is exposed? I'm really interested.

Robert
I don't have any specific references, but the idea is as old as the hills.

If you want an example of the concept being used in a program that is several years old then look at the document "How Rebel Plays Chess" which is on the web. He describes how he modifies the estimated score for lazy evaluation based on the positional component of the previous move and in my opinion this is a far more intelligent way to implement the same concept because it does not require using an arbitrary cutoff.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Lazy eval - test results

Post by Don »

Rebel wrote:
Houdini wrote:
Don wrote:HOWEVER, your comment that it is a "Houdini idea" is what Mark Lefler refuted.
As far as I know this idea and its specific implementation, which is now also exactly found in Critter and in Strelka 5, is original to Houdini.

Do you have any reference to a past discussion (in this or another forum) in which this idea is exposed? I'm really interested.

Robert
Robert, LE probably was already in use before you were born :wink:
Ed,

You are being modest, your program Rebel uses the same concept, with what I believe is a superior implementation.

Don
User avatar
Houdini
Posts: 1471
Joined: Tue Mar 16, 2010 12:00 am

Re: Lazy eval - test results

Post by Houdini »

Rebel wrote:Robert, LE probably was already in use before you were born :wink:
To improve the quality of the discussion, can you please give us a reference to a discussion about the specific feature of skipping LE when the positional value exceeds a certain amount?
Thank you.

Robert

P.S. The idea we are is discussing is not "LE" in general but the specific idea described above.
Last edited by Houdini on Tue Dec 06, 2011 11:01 pm, edited 1 time in total.
User avatar
Houdini
Posts: 1471
Joined: Tue Mar 16, 2010 12:00 am

Re: Lazy eval - test results

Post by Houdini »

Don wrote:I don't have any specific references, but the idea is as old as the hills.

If you want an example of the concept being used in a program that is several years old then look at the document "How Rebel Plays Chess" which is on the web. He describes how he modifies the estimated score for lazy evaluation based on the positional component of the previous move and in my opinion this is a far more intelligent way to implement the same concept because it does not require using an arbitrary cutoff.
Thank you for making clear that you don't have any specific reference.
Thank you also for demonstrating that Rebel uses another approach to this issue.

Robert
Last edited by Houdini on Tue Dec 06, 2011 10:55 pm, edited 1 time in total.
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Lazy eval - test results

Post by Don »

rvida wrote:
wgarvin wrote: I was annoyed by his cheap shot at Richard who as I understand it, acknowledges that his engine is derived from the ippolit family.
No, Critter is not derived from anything (although it employs many ideas I learned from other programs including both Ippolit & Houdini). It did not appear out of blue as a 3200+ engine. It is being developed for almost 4 years. If you are interested enough, you can look up its progress over time on the CCRL webpage - from version 0.38 (2500 ELO) up to current (3200 ELO):
http://computerchess.org.uk/ccrl/4040/c ... ly=Critter
I think Critter is an awesome example of how to build on the work of others that does not involve just ripping them off and taking credit for the work they did.