Since a lot of people is focusing in getting their WaveSurfing working perfectly, I thinked that it would be a good idea to write this page explaining a particularity in the RoboRumble rating system (ELO).
ELO rating system gives higher points to higher scoring differences (%), this is why WaveSurfing is so profitable (since it allows u to score above 99% against HOTs).
So, getting a perfect score (100%) against a bot sounds a very good idea, right? The answer is DEFINITELY NO! 100% scores actually would give u infinite points, and for obvious reasons the RoboRumble server simply discard those results! Some people could think that this is a flaw, but i don't think so... My thoughts might sound very subjective, but there they go:
|Scoring diff.||ELO calculated rating|
The values of the table above where calculated via ELOCalculator
It's a pitty throw off such a beatifull result as this, donīt u think? Many people already knows that, and have protected their bots againt it. Here is the algo that is implemented in SilverSurfer (i think that RaikoMX and CassiusClay have a similar approch):
... and then the losing bot does this:
System.out.println();It really works. -- Jonathan
??? Didnt understand what u mean???? -- Axe
It's somekind of pull-the-pin-and-swallow-the-granade technique? Do u mean that System.out.println() disables the bot? If so, itīs strange, i use this to print in my bot and never got disabled... -- Axe
Using System.out disables a bot for me (Robot.out doesn't). So if the losing bot tries to print on it there's no way for the (im)perfect bot to get a <100% score. -- Jonathan
I use System.out all the time. Never seen it disable anything. What's the error message, if any? -- PEZ
iirc, the Robocode code :) redirects the System.out so, i would be surprised if System.out violates the SecurityManager?... Unless, obviously, that u do something like: int i=0, System.out.println(9/i);... Anyway, thanks for testing. -- Axe
Probably something else (seemingly insignificant) in the code that was changed at the same time you switched streams pointers.
On the issue of this page. I know I am one that has wined about the extreme rating adjustments that's the result of a near 100% score. But a few weeks ago I started to think about the peculiarity that the raw score percentage rankings are identical to the ELO ones. Check out: http://rumble.robowiki.net/servlet/PremierLeague?game=roborumble&table=2 And. Yes, I do have perfection protection in CassiusClay. But I'm thinking of removing it. It's not too often CC shuts out an opponent anyway and when it does the RR@H clients keep running that pairing until the losing bots get at least 1 point. Things will probably sort themselves out I figure. On the other hand I wonder if we couldn't just fix this at the server end by setting any bots score to Math.max(1, uploaded_score). -- PEZ
@PEZ: Considering the current RR@Home client, I have a question about that phrase: "...the RR@H clients keep running that pairing until the losing bots get at least 1 point.". Doesnīt the client run with priority the battles only until 500 matches? Letīs say that u have a perfect WaveSurfer that allways scores 100% against HOTs... Even if the client re-run those 100% battles u will still score 100%, and never gain those deserved points, right? Of course that bot is hypothetic. -- Axe
I think that the client not only ensures 500 battles, but that it also tries to complete all bots pairing tables. Tell you this, when I have made that perfect surfer I will not hesitate to protect against 100% scores. =) -- PEZ
Whhhooooo!!!!!!!!!!! Please let us know what you fixed and how your surfing works. -- PEZ