Shift 5 bits and you have the conversion to decimal in just 1 instruction.
Very clever and original of Vas.
But of course it's a deliberate obfuscation to hide the Fruit origin.
Gimme a break
We'll likely never know why? Only that he did it. Just like he whacked up the node counter, the depth display, and cut the PVs short...
> He also uses 3399
Yeah, a nice tuning parameter.
I have one myself,
[Attractiveness = 101]
A comparable value (3399 vs 3200) would be 106
Which is what appears to have happened here...
You prefer VIG that states: obfuscation.
Fruit pawn value = 100
Rybka pawn value = 3200 -> OBFUSCATION hiding Fruit origins.
VIG further states:
Rybka 3200 vs 3399 -> ADVANCED OBFUSCATION further hiding Fruit origins
Common sense states:
All of this provided that brilliant Vas realized in 2005 (when none had heard about him) he would become so famous that he foresaw the scenario that his program would be disassembled, reverse engineered by Osipov (Strelka) and yet Vas was stupid enough to call Strelka his own.
I definitely prefer common sense 3399 being just an EVAL tuning parameter.
Likewise the openfile code CONSTANT split into two constants. They then explain how the resulting cheated listing (with looks similar to Fruit) proves the guilt that they assumed in the first place to allow them to create the cheated listing.
If that is not the use of a circular argument I do not know what is.
With the knowledge and opposition of today I wonder if things would have made a difference.
Today's very limited opposition would not have changed a thing, the evidence still stands, and that is a major problem...
This is not about your nonsensical VII/VIG stuff, it is simply about common sense.
> Why he chose 3200 is unknown, and I won't speculate very much.
You (once?) used 1000 if I remember well.
> But we do KNOW that he obfuscated the depth and node counts (is that a VIG statement or a pure statement of FACT, BTW?).
Fact.
And in fact Vas obfuscation of the depth made R1 more look like Fruit, similar depths while in reality R1 searched 2-3 plies deeper than Fruit.
So then what is the meaning of the depth obfuscation?
What a 1900 patzer programmer with very low chess knowledge (Hyatt) can and can't do with his evaluation cannot be used as basis for what an IM superprogrammer with very high chess knowledge can or can't do.
The patzer experience is valueless here, so spare us from your dumbing down please.
And, in fact, coarser resolution leads to a faster search since we prune on <= and >=, rather than just < or >. Fewer "intervals" means more "equals".
Yup, patzer with hammer only in toolbox is unable to fine tune. What's new?
My search for cstalx vs crafty produced this:
Crafty won 32, drew 11, and lost 6. Or +37.5 -11.5 which is a 200 Elo "gap" between patzer and prodigy. How'd the patzer manage to win, exactly? Luck? Or maybe "better program"???
Not bad for a "patzer's tuning" wouldn't you say? I find it funny that you could never beat me, not even close, yet "I" am the "patzer" and "you" are the "prodigy".
Something wrong with your terminology, IMHO... BTW this patzer seemed to be MUCH more capable of fine tuning that you were... Makes your comments appear to be just a bit worthless? BTW, I suppose I am now, once again, a "bean counter" for counting those damned wins and losses and using that to draw conclusions, rather than just "guessing"???
Yo, I told you
you can't touch this
Why you standin' there man?
you can't touch this
"Should we compare head-to-head record on ICC for reference?"
Yo sound the bell... school's in sucka
you can't touch this
"The patzer experience is valueless here, so spare us from your dumbing down please"
You gotta get hype boy
Because you know Chris you know...
you can't touch this
"Since mine was clearly better, what does that say about YOUR programming ability, assuming mine is so poor???"
Ring the bell... school's back in
Break it down
Stop
Crafty time
you can't touch this
you can't touch this
you can't touch this
> I did use 1000. I found the extra precision worthless. And, in fact, coarser resolution leads to a faster search since we prune on <= and >=, rather than just < or >. Fewer "intervals" means more "equals".
Precisely my thoughts as well, the goal of 3200/32 -> more equals (but better rounded) -> more beta-cutoffs -> (somewhat) faster search.
Never tested the idea, I could be wrong.
> Wouldn't it be more efficient to simply use the correct 1/100ths units and avoid the divide, not to mention the messy 3399 used elsewhere???
There is no such thing as "correct" unit, and the answer is no, it is not more efficient.
Miguel
> It is ABSOLUTELY more efficient because there is no shift right 5 bits (divide by 32) needed at the end of each evaluate. That was the only "efficiency issue" I can see, performance.
I was referring to the automatic tuning efficiency, which is of course more important than one shift in the program.
Miguel
> I don't believe anyone is seriously doing THAT kind of tuning. I've seen one example written up (Cozzie) that did not work very well... Mine is a more manual approach where I can vary any values I want, one at a time or more...
I do, and I am not the only one. I open a thread about it ~2-3 years ago at Talkchess, when I started to have some success with it since my first attempts by 2006. Why do you think I was telling you all this? Having more resolution would have made task easier.
Marcel McKervinck reported something at CCC recently, and Remi Coulom wrote a tool for tuning. Stockfish did some sort of (secret) automatic tuning too and AFAIK, Hannibal team was attempting something. Whether this is the way to go it is irrelevant. It is very obvious that VR tried something of this kind.
Miguel
>> I did use 1000. I found the extra precision worthless. And, in fact, coarser resolution leads to a faster search since we prune on <= and >=, rather than just < or >. Fewer "intervals" means more "equals".
> Precisely my thoughts as well, the goal of 3200/32 -> more equals (but better rounded) -> more beta-cutoffs -> (somewhat) faster search.
>
> Never tested the idea, I could be wrong.
Of course, you do all calculations with maximum precision and round at the end. Error handling 101, if you took any course in an experimental science (chemistry, physics etc). I have been using 256th of a pawn since the beginning, because it looks an appealing number for a programmer, but if I have to rewrite my engine, I would seriously consider using a much higher resolution. There are many ideas you can try.
For instance, (I am digressing now), If you use 1/4096 of a pawn, you can have all a zone between -31 and +32 that are all virtual draws. However, you can assign "different" type of draws. i.e. some draws are more appealing than others (stylistically speaking) and the alpha-beta will pick them up. Sort of a micro contempt that could be used always, even if you set contempt = 0. A typical case could be KRPKR TB cases, in which many of the draws could be scored differently and "squeezed" in that "draw zone" safely.
Miguel
> Hope Ed will not be disappointed. Of course, in any case he can say that evaluation has been just prepared for future development.
That's not what I said.
3200 gives faster search due to better rounding (3200/32).
> For instance, (I am digressing now), If you use 1/4096 of a pawn, you can have all a zone between -31 and +32 that are all virtual draws.
I believe it was Dappet that used this technique for draw scores.
Very original I must say.
We just carved out the window between +0.100 and -0.100 to represent these values...
> Cray Blitz used this in the 80's. You can find a paper in the JICCA "The Cray Blitz Draw Heuristic," Hyatt, Nelson. Not only did we come up with draw scores that indicate "degree of drawishness" (Current crafty uses scores like -0.01 (draw, black is ahead in material), 0.00 (draw, material is equal), and 0.01 (draw, white is ahead in material)) we also used a "distance to draw score" where if we were ahead or behind, we used a + or - (respectively) draw score that reflected the number of plies to the draw, so that if we were ahead, we gave the opponent the greatest number of moves possible to make a mistake. We won more than one game using this. John Stanbeck can tell you about one in particular. :)
>
> We just carved out the window between +0.100 and -0.100 to represent these values...
With a higher resolution you can implement this more safely. Particularly, at the current depths we are seeing. I believe that window is too big because you end up comparing it to true +0.100 advantages in very distant parts of the tree.
Miguel
> He doesn't ALWAYS use 3200. He also uses 3399. Not so nice for a shift? And yes, I'd be willing to bet that this figures into his obfuscation ideas somewhere, because what sense does it make to start with values that are 32x larger than normal, then shift right 5 bits at the last second??? Why not just use 100 all the way???
>
> We'll likely never know why? Only that he did it. Just like he whacked up the node counter, the depth display, and cut the PVs short...
I am almost sure I know why. Because you can tune the parameters that way. To do many tuning techniques you need enough resolution to obtain derivatives or a similar concept. You generally obtain that using floating point, but if you use bigger integers, it may be good enough. If you look at the numbers, it is clear that they were tuned.
Miguel
> So "millipawns" is not enough resolution? Units of 1/1000th of a pawn is not accurate enough, but units of 1/3200th of a pawn are "just right?"
I have been happy with 256 all my life.
> Then why does he then divide everything by 32 after computing that big number?
Binary to decimal in 1 instruction: score=score>>5;
I've yet to see a valid justification for millipawns, in the first place. Why would you want to have scores that are 32x larger than normal, then convert 'em back to normal by dividing by 32? Why not just use the final score and avoid even that shift?
You can imagine all you want. I prefer Occam's razor.
Every version I release I consider a "final release of that version" where we might have a hundred internal sub-versions before we release the final version and then move on to the next one...
> So "millipawns" is not enough resolution? Units of 1/1000th of a pawn is not accurate enough, but units of 1/3200th of a pawn are "just right?" Then why does he then divide everything by 32 after computing that big number?
No, depending what fitting technique you use, it won't be enough.
Miguel
Done already several days ago. Ed found the Rybka executable section and posted it. I've posted an unbiased reverse engineered source from it. And shown the section of source that was inserted into the Rybka source by cut and paste from Fruit (the two allegedly constant integers).
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill