Laskos wrote:lkaufman wrote:shrapnel wrote:lkaufman wrote:We wouldn't have bothered with contempt if we only cared about playing Stockfish,
Fair enough, from YOUR perspective.
From a Gamer's perspective, I can tell you this......Open up ANY online chess Server like Playchess.com or Infinitychess.com and you will find that 99.99 % of the players using Komodo, Stockfish or one of its derivatives.
NO self-respecting player would be
caught dead using ANY other Engine !
It's only in this Forum that people get excited about mostly unheard of Engines. In the real (Gaming) world all Engines except Komodo and Stockfish are simply SNEERED at !
That is the reality ! AND THAT is why it is important for many Komodo users to find the ideal Contempt to use against Stockfish, not simply use an over-defensive contempt 0 !
Regards
In my opinion the proper value for you to use in gaming depends very much on relative hardware. For example, if you only have an 8 core machine while your opponent has 24 cores, you might well want to use negative contempt. If you have 8 cores and he only has a quad, probably the default contempt (or maybe just 10) is fine. But perhaps often you don't know the opponent's hardware.
Yes, against the latest SF at blitz the most important for contempt is the hardware. There seem to be a rule of thumb of something like
Contempt = ELO difference / 10
Well, or similar. So, at blitz, assuming the engine strength between Komodo and SF is within 10-20 ELO points, the doubling in hardware gives contribution for contempt of 60 ELO points /10 ~ 6 contempt points. Opponent has twice the hardware, then use -6 contempt, opponent has half the hardware, use +6 contempt. Do you have a better rule of thumb for contempt?
I played a gazillion games testing Crafty's dynamic contempt (it has had this for 20 years now). My results were frustrating. I found NO "direct formula" that works. My tests clearly showed that at least for Crafty, there is a single correct contempt (drawscore) for a specific opponent. And there was no formula that would work for the general case. I could fit a curve to observed data, obviously, but adding a new opponent would break it for that opponent until the curve was re-fit.
I thought about doing this exact thing (refit internally done by crafty) and it could work reasonably well, probably, assuming that (a) I am told the correct name for each opponent and (b) each opponent is completely static (no hardware variability, etc). And of course, Crafty has to remain completely static as well.
I have always had it on my to-do list to go back and play with this further, but have not. It probably should also vary depending on whether you are black or white, and even on the opening played when openings are forced on you and you have no choice. The obvious problem is that imposes a LOT of degrees of freedom to accurately measure and keep up with, which is not practical except perhaps in my cluster testing where I could certainly get enough game played with enough openings and enough opponents that I could do this. But it would only be valid against the versions I use in cluster testing, which would be uniform hardware. And then SMP would be yet another factor.
I might run a few tests on the current code, changing the formula, and post the results. Key would be in the measurement, which I am using Elo for. That means you tune better against the top, since that is where the most elo gain will likely come from.
Certainly an interesting question, again.