[Home]ImperfectPerfection

Robo Home | Changes | Preferences | AllPages

Showing revision 19
Difference (from revision 19 to revision 19) (minor diff, author diff)
(The revisions are identical or unavailable.)
I'm putting this toguether since WaveSurfing is getting so much adepts. -- Axe

The problem

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
50.00% 0.0
60.00% 108.3
70.00% 226.3
80.00% 370.2
90.00% 586.8
95.00% 786.3
99.00% 1227.0
99.90% 1844.0
99.99% 2460.0
100.00% Double.POSITIVE_INFINITY

The values of the table above where calculated via ELOCalculator

The solution

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):

Chat

... 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

Strange. Now I tried it again it doesn't get some security exception plus being disabled. It even prints to the bot's own PrintStream?. I'm going to look at that... -- Jonathan

Can u run SilverSurfer (or CassiusClay) in your computer, and see if it gets disabled? -- Axe

All the bots I downloaded have always worked, regardless of the PrintStream? they used (finally took some time to actually look at their source now). Really strange. -- Jonathan

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

--David Alves


Robo Home | Changes | Preferences | AllPages
Edit revision 19 of this page | View other revisions | View current revision
Edited September 22, 2004 10:40 EST by David Alves (diff)
Search: