Why are the Ippo derivative stronger than Stockfish?

Discussion of chess software programming and technical issues.

Moderators: bob, hgm, Harvey Williamson

Forum rules
This textbox is used to restore diagrams posted with the [d] tag before the upgrade.
Gerd Isenberg
Posts: 2127
Joined: Wed Mar 08, 2006 7:47 pm
Location: Hattingen, Germany

Re: Why are the Ippo derivative stronger than Stockfish?

Post by Gerd Isenberg » Mon Feb 28, 2011 5:17 pm

Don wrote: addendum: I was informed by someone that ideas of horizon effect extensions are decades old and comes in many forms.

For example from Phalanx in 1997:

Code: Select all

New extension trick that helps in some horizon-effect type positions, it's based on measuring difference between current score and null move result; if current score is much better, the side to move must be under threat and the line is extended, similar trick is also in gnuchess.
Does the quote appear in the source code or redme? Do you have the source or link of that quote?
Don wrote: Also there is a paper from 1983 called Searching to Variable Depth (Kaindl) which is about horizon issues and references to a paper in 1965 by Knuth-Moore concerning variable depth searching to deal with horizon issues. I have not looked at the paper myself.
Isn't to avoid the horizon effects a general property or idea of any reasonable extension? For instance Check evasion, Threat from nullmove, Botvinnik-Markov etc.?

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

Re: Why are the Ippo derivative stronger than Stockfish?

Post by Don » Mon Feb 28, 2011 5:21 pm

Gerd Isenberg wrote:
Don wrote: addendum: I was informed by someone that ideas of horizon effect extensions are decades old and comes in many forms.

For example from Phalanx in 1997:

Code: Select all

New extension trick that helps in some horizon-effect type positions, it's based on measuring difference between current score and null move result; if current score is much better, the side to move must be under threat and the line is extended, similar trick is also in gnuchess.
Does the quote appear in the source code or redme? Do you have the source or link of that quote?
I did not see this myself, I'm just repeating it. However, I believe it be part of the source code of Phalanx in 1997 near the end of the year, I think it was 10/22/1997
Don wrote: Also there is a paper from 1983 called Searching to Variable Depth (Kaindl) which is about horizon issues and references to a paper in 1965 by Knuth-Moore concerning variable depth searching to deal with horizon issues. I have not looked at the paper myself.
Isn't to avoid the horizon effects a general property or idea of any reasonable extension? For instance Check evasion, Threat from nullmove, Botvinnik-Markov etc.?
Yes.

benstoker
Posts: 342
Joined: Tue Jan 19, 2010 1:05 am

Re: Why are the Ippo derivative stronger than Stockfish?

Post by benstoker » Mon Feb 28, 2011 5:53 pm

bhlangonijr wrote:
benstoker wrote:That is right. This is a technical forum. That is the point. So please waste no more time denouncing all who question your judgment and in this forum once and for all, offer some TECHNICAL criteria for determining a derivative as opposed to an "original". Proffer will you not TECHNICAL criteria for adding the adjective "impermissible" to the word "derivative". Provide a definition of your word "innovation" as distinguished from eliminating bugs. You say Houdart has not innovated by using the techniques the Critter author described. You say Houdart has not innovated by creating the strongest engine in the world.

But you and LK pick through the code of stockfish and ippo looking for something, something to add to your OWN engine. If you take from ippo, is that "innovation"? Again, give us a set of TECHNICAL criteria to identify impermissible code copying from permissible Idea borrowing. Hyatt has. Why haven't you? It is blatantly hypocritical and atrocious to at once pick through stockfish and ippo on the one hand, and then indict Houdart as a copier, and nothing more than a fine engineer.

If you are the innovator, do turn a blind eye to open source code please.
What you fail to understand is that the "criteria" you are claiming for is only needed when you have a thin line which separates a legal and original program from a non-legal one. If you pick Stockfish or Komodo they are original programs created from scratch, which happens to use some Ippo ideas that worked for them. In the other hand, there is a expert consensus that Houdini was created out of Ippo sources and closed afterwards, a fact that is constantly denied by the "author". That lack of honesty is reason enough to void any positive adjectives one can make about Robert Houdart IMHO.
I was not the one who took this thread down the path of castigating Houdart for not being "innovative" or for having copied the work of others, etc. I hold you to your OWN words and you consistently play dodge ball.

If you want this to be technical, then be technical. That's all I am asking. BE TECHNICAL.

Quit talking out of both sides of your mouths.

To help you fellas out, take a hint from Hyatt, which I requote below for your convenience. If you cannot settle on definition of your terms, then you aint got nothing.

Hyatt:

Code: Select all

While I don't think my old idea of "how much is permissible" is the end-all idea, it is a start.

I have taken the approach to use the following conceptual idea:

If a function that is consistent from input to output, where a move generator is a good example since each position has a fixed number of moves that can be played according to the rules of chess, then perhaps copying that is not a deal-breaker on tournament participation. I can think of other similar pieces of code, such as EGTB probing, where a given position always gives the same answer of mate in N or conversion in N or draw.

Other pieces of code clearly do not follow that concept. An evaluation function is one example. For a given position, there are an infinite number of possible different evaluation outputs. Search also, since one can reduce, extend or prune a move. So those are clearly off-limits. What else?

SEE seems to be the one input one output type of code, with some room for flexibility (do you handle pins, either absolute or not, do you check for legality, etc.) But the options are limited, and one could define, precisely, a SEE() (no pins), or SEEP() (recognizes absolute pins only), SEEAP() which recognizes things like knight pinned on queen by a bishop...

RepetitionCheck()? Rules of chess are quite precise so that might be an ok thing to borrow, although there are quite a few ways to do it (separate hash table, or a repetition list, or something else entirely). But since it is a one input, one output, it seems to fit.

So we are left with the important parts, namely the search (normal and q-search), code that deals with extensions, reductions and pruning, and all the evaluation code. The code that handles time utilization.

What about hashing? Harder case, since this is not a single input -> single output precisely. You can get lots of information from a hash table. A search result. A suggested move. A bound. A hint to avoid doing a null move search. A positional evaluation. Flags such as this was a singular position previously, etc... So maybe hashing is not a one input one output idea, particularly when there are lots of replacement strategies and such.

I think if you apply that question to each function in a chess program, you will find some that are "constant" and some that are "unique". And you might find some one input one output functions inside a non one-input-one-output function. For example, in the evaluation function, you might have a piece of code called HasOpposition(wk, bk, stm). Opposition is well-defined and for any position of the two kings and stm, that function will return T or F. So one might borrow that safely, but not the code where it is used since how you use that could vary all over the place.

One other major point. If you choose to borrow something, which for me would only include the magic move generation stuff (which, by the way does not affect my move generator code at all, I just changed a macro in a very simple way), would be that one must at least provide a proper citation or give credit to the originator of the code that was used. And one would have to abide by the GPL if pieces of a GPL program are borrowed. There is a subtle issue of a GPL program that borrows code from a non-GPL program. That's not supposed to happen, but it does, and it certainly clouds the issue.

The "heart and soul" of a chess engine is the search and evaluation. And copying that code should be a clear no-no. For those one-input-one-output functions, I don't see a problem with them. We already have several common examples. egtb.cpp was originally released as a part of Crafty, written by Eugene Nalimov. Many have used this code. Now MB has released his bitbase stuff and several have used that. Ditto for Pradu's magic move generator idea. Ditto for my rotated bitboard stuff. And we have never seen a program excluded from competition for using those. Nor should we.

There are grey areas such as piece/square tables and others. While there are an infinite number of possible piece/square tables, there are probably fewer than that useful ones. Can someone make a case for any particular piece where there are some obvious numbers and no others make any sense at all? I can't think of one, but that doesn't mean it doesn't exist. Individual scoring numbers? Would two different programmers agree on every scoring term in their evaluation? Can one make a case that fixing one value then dictates the rest if the evaluation is going to be "sane"? Doesn't seem reasonable, but doesn't seem like "impossible" could be proven.

This issue is a very complex one, and it is not going to be a quick and dirty fix I am afraid. It will take some logical/rational discourse and thought to arrive at something that is anywhere near workable.

And now you have answered the question "what is permissible?" That is only the first step, and probably the easiest step although it represents a really significant effort itself. Next is how to validate programs to screen out the bad ones. That is the real can of worms... 

Roger Brown
Posts: 782
Joined: Wed Mar 08, 2006 8:22 pm

Re: Why are the Ippo derivative stronger than Stockfish?

Post by Roger Brown » Mon Feb 28, 2011 6:04 pm

Dear all,

I really do not belong here as you well know.

However, I do not want this thread to become a general mess so I am asking that the sniping and side issues stop.

I asked that trigger words not be responded to (I was hoping that the contributers would be mature enough to know that meant that I did not want them used either) nor flaming etc. start.

This is not the place.

I really am not into editing as that is way too distasteful but deleting, no problem.

Keep it technical and let us move on.

Please!

Later.

BubbaTough
Posts: 1154
Joined: Fri Jun 23, 2006 3:18 am

Re: Why are the Ippo derivative stronger than Stockfish?

Post by BubbaTough » Mon Feb 28, 2011 7:44 pm

Don wrote: with the possible exception of not reducing null threats - that is an idea I know about but I am not aware of anyone else using it. I don't view this idea as something very interesting, it's an obvious thing to try and it does not work for Komodo. For Komodo it only slows the program down for little ELO gain but it might help other programs.
Yes, the idea is obvious, something I have tried and thrown away myself a number of times. The main issue is that null threats with a window size of 1 between alpha and beta will often miss a lot. If someone came up with a method to detect and use these threats without the kinds of penalties associated with increasing the search window size I would consider it interesting and innovative.

Of course, what I consider innovative might not be an appropriate standard, since I am not as well versed in other people's programs and ideas as many here.

-Sam

benstoker
Posts: 342
Joined: Tue Jan 19, 2010 1:05 am

Re: Why are the Ippo derivative stronger than Stockfish?

Post by benstoker » Mon Feb 28, 2011 8:29 pm

Fair enough. Sounds reasonable to me. Although, I could care less if they call me an idiot. It doesn't bother me a bit. It's just a way to avoid the important technical question: definition of derivative. Without a clear definition such as Hyatt has attempted, there is no defensible basis for claiming Houdini an "impermissible derivative" or lacking in "innovation". I'll call foul to that, especially if that claimant is author of an inferior engine and is openly rooting around in possibly stolen open source code for nuggets to add to his own engine.

Just as Hyatt says, the task of defining a derivative and creating standards by which to adjudge authors cloners or not is 1) extremely technical; 2) not easily crafted.

It is also necessary.

But, absent a technical, rigorous, peer-reviewed definition of impermissible derivative, then non-technical aspersions are just so much folly and nonsense.

I await the TECHNICAL definition ...

Roger Brown wrote:Dear all,

I really do not belong here as you well know.

However, I do not want this thread to become a general mess so I am asking that the sniping and side issues stop.

I asked that trigger words not be responded to (I was hoping that the contributers would be mature enough to know that meant that I did not want them used either) nor flaming etc. start.

This is not the place.

I really am not into editing as that is way too distasteful but deleting, no problem.

Keep it technical and let us move on.

Please!

Later.

User avatar
michiguel
Posts: 6388
Joined: Thu Mar 09, 2006 7:30 pm
Location: Chicago, Illinois, USA
Contact:

Re: Why are the Ippo derivative stronger than Stockfish?

Post by michiguel » Mon Feb 28, 2011 10:06 pm

benstoker wrote:Fair enough. Sounds reasonable to me. Although, I could care less if they call me an idiot. It doesn't bother me a bit. It's just a way to avoid the important technical question: definition of derivative. Without a clear definition such as Hyatt has attempted, there is no defensible basis for claiming Houdini an "impermissible derivative" or lacking in "innovation". I'll call foul to that, especially if that claimant is author of an inferior engine and is openly rooting around in possibly stolen open source code for nuggets to add to his own engine.

Just as Hyatt says, the task of defining a derivative and creating standards by which to adjudge authors cloners or not is 1) extremely technical; 2) not easily crafted.

It is also necessary.

But, absent a technical, rigorous, peer-reviewed definition of impermissible derivative, then non-technical aspersions are just so much folly and nonsense.
People here are extremely polite when it comes to deal with the general audience. It has always been like that. However, it sometimes gives a false sense of reality to some members. That is the reason why, for once, I will try to set the record straight:

1) You are not a peer of GM Kaufman, Don Dailey, Marco Costalba, and Dr. Hyatt.

2) People in this forum do not need you to channel Dr. Hyatt's opinion. Everybody is well aware of those.

3) you can wait for a "peer-reviewed" definition (that won't include your contribution), but in this sub-forum, your requests should start with "Excuse me", "Please" and leave with a "thank you".

4) Your ungrateful and rude behavior sometimes is tolerated, but that does not mean it should be accepted and become the norm.

Miguel


I await the TECHNICAL definition ...

Roger Brown wrote:Dear all,

I really do not belong here as you well know.

However, I do not want this thread to become a general mess so I am asking that the sniping and side issues stop.

I asked that trigger words not be responded to (I was hoping that the contributers would be mature enough to know that meant that I did not want them used either) nor flaming etc. start.

This is not the place.

I really am not into editing as that is way too distasteful but deleting, no problem.

Keep it technical and let us move on.

Please!

Later.

Daniel Shawul
Posts: 3757
Joined: Tue Mar 14, 2006 10:34 am
Location: Ethiopia
Contact:

Re: Why are the Ippo derivative stronger than Stockfish?

Post by Daniel Shawul » Mon Feb 28, 2011 10:59 pm

He has been call an idiot twice just for expressing his opinion. He mentioned he was not bothered by this and is ready to let it go.

I agree with him at least on one point where this thread is going very _non-techinical_.

What do you expect with a thread started " Engine X is stronger than Engine Y while it uses all the ideas Engine Y has and has all the source code of Engine X to work with" ?

Then lets decompile (Illegal AFAIK) that super engine Z see what it does. Oh I decompiled and saw it has nothing but horizon extensions. Bravo.
Is this how technical discussion go about ? The end justifies the means ,right ?
3) you can wait for a "peer-reviewed" definition (that won't include your contribution), but in this sub-forum, your requests should start with "Excuse me", "Please" and leave with a "thank you".
This bullshit is what prompted me to post. Who are you to tell anyone how he should post ? That is what the charter is here for. He can leave without a thank you, ask without a please as long as he sticks to the charter. He can have his own ideas defend them as he will.

benstoker
Posts: 342
Joined: Tue Jan 19, 2010 1:05 am

Re: Why are the Ippo derivative stronger than Stockfish?

Post by benstoker » Mon Feb 28, 2011 11:17 pm

michiguel wrote:
benstoker wrote:Fair enough. Sounds reasonable to me. Although, I could care less if they call me an idiot. It doesn't bother me a bit. It's just a way to avoid the important technical question: definition of derivative. Without a clear definition such as Hyatt has attempted, there is no defensible basis for claiming Houdini an "impermissible derivative" or lacking in "innovation". I'll call foul to that, especially if that claimant is author of an inferior engine and is openly rooting around in possibly stolen open source code for nuggets to add to his own engine.

Just as Hyatt says, the task of defining a derivative and creating standards by which to adjudge authors cloners or not is 1) extremely technical; 2) not easily crafted.

It is also necessary.

But, absent a technical, rigorous, peer-reviewed definition of impermissible derivative, then non-technical aspersions are just so much folly and nonsense.
People here are extremely polite when it comes to deal with the general audience. It has always been like that. However, it sometimes gives a false sense of reality to some members. That is the reason why, for once, I will try to set the record straight:

1) You are not a peer of GM Kaufman, Don Dailey, Marco Costalba, and Dr. Hyatt.

2) People in this forum do not need you to channel Dr. Hyatt's opinion. Everybody is well aware of those.

3) you can wait for a "peer-reviewed" definition (that won't include your contribution), but in this sub-forum, your requests should start with "Excuse me", "Please" and leave with a "thank you".

4) Your ungrateful and rude behavior sometimes is tolerated, but that does not mean it should be accepted and become the norm.

Miguel
Roger says keep it technical. I said okay, that's exactly what I want and asked you all for technical definitions. And then you respond again with non-technical 'idiot this' 'idiot that'. Since you refuse to engage in a technical discussion, this will be my last non-tech response, which I feel obliged to relate.

Miguel, you are quite humorous. A demand for obsequious groveling! Okay. But, don't you think you should stop?! You keep moving away from the TECHNICAL discussion with this holier-than-thou B.S. If you want to continue the NON-technical, i.e., prattle on about your majesty and whatnot in lieu of defining with technical acumen standards and definitions to separate original from non-original work, let me know where to go ... Otherwise, get back on topic.

Your Honor, I would hope this trifecta would refrain from using the words "clone", "derivative", "copy", or "innovative". And further refrain from using these words to describe the likes of Houdart (or even Vas) until such time as they have defined their terms sufficiently such that they actually mean something. But, I will no longer hold my breath. Levy and company understand and appreciate the issue. The trifecta does not. The new ICGA Panel will come up with technical definitions to help sort it out. The trifecta will not.

I shall call foul wherever I see it and hold you to your own words. Pride goeth before the fall.

Your most humble servant,
B.S.

User avatar
michiguel
Posts: 6388
Joined: Thu Mar 09, 2006 7:30 pm
Location: Chicago, Illinois, USA
Contact:

Re: Why are the Ippo derivative stronger than Stockfish?

Post by michiguel » Mon Feb 28, 2011 11:33 pm

Daniel Shawul wrote:He has been call an idiot twice just for expressing his opinion. He mentioned he was not bothered by this and is ready to let it go.

I agree with him at least on one point where this thread is going very _non-techinical_.

What do you expect with a thread started " Engine X is stronger than Engine Y while it uses all the ideas Engine Y has and has all the source code of Engine X to work with" ?

Then lets decompile (Illegal AFAIK) that super engine Z see what it does. Oh I decompiled and saw it has nothing but horizon extensions. Bravo.
Is this how technical discussion go about ? The end justifies the means ,right ?
3) you can wait for a "peer-reviewed" definition (that won't include your contribution), but in this sub-forum, your requests should start with "Excuse me", "Please" and leave with a "thank you".
This bullshit is what prompted me to post. Who are you to tell anyone how he should post ? That is what the charter is here for. He can leave without a thank you, ask without a please as long as he sticks to the charter. He can have his own ideas defend them as he will.
So who am I to tell him to say "please" but, it is ok for him to tell Marco to shut up?

Who am I? A member. I am entitled to an opinion and express it. This is not an isolated case. It is the accumulation of months of a continuous attempt to take over of the general sub-forum with trolls. This is the last corner of the general forum that has maintained on topic and I am a bit sensitive, because if the record is not set straight, we are downhill.

I find it interesting that you find my request for politeness bullshit when Ben has been taunting a GM for jealousy, and telling Marco to shut up. Do you find that acceptable and my request for politeness and gratefulness bullshit?

Of course, you do not need the actual words ("please and thank you"), it is a matter of attitude. Besides, I am requesting something that I personally try. I always try to be grateful when I ask people who know better than me, and it would not occur to me to taunt them or insult them.

Ben has been asking for help in the past, and he got it. Now, he thinks he can come to the programming subforum and start trolling. I do not think he was called idiot before his posts. Anyway, I did not call him idiot so please redirect your annoyance to the proper targets.

But, you may be right. Asking for "please" and "thank you" is too much nowadays.

Miguel

Post Reply