[Home]History of RoboRumble/SourceCode

Robo Home | Changes | Preferences | AllPages


Revision 223 . . (edit) December 9, 2003 17:33 EST by Tango
Revision 222 . . September 6, 2003 20:54 EST by Albert
Revision 221 . . September 6, 2003 20:48 EST by Albert
  

Difference (from prior major revision) (minor diff, author diff)

Changed: 7c7
* Gets the CadeSize? for the participants (needs codesize.jar).
* Gets the CodeSize for the participants (needs codesize.jar).

Removed: 58,235d57
I have installed the server classes on this server now. (Thanks heaven for mod_rewrite, it rules!) Now the RESULTSURL in roborumble.txt should be set like so:
RESULTSURL=http://rumble.robowiki.dyndns.org/servlet/UploadedResults
This works for me, but I'm not sure if this host name works outside my LAN yet. Anyone who would like to verify that can click here:
*http://rumble.robowiki.dyndns.org/servlet/RankingDetails?game=roborumble&name=wiki.mini.Sedan%201.0.txt
I get an error message about data missing for this bot. I have checked the "rankings" directory and the file is there for Sedan. Since Linux is case sensitive with file names I tried writing the "game" parameter with lower case (same as the file in "rankings") but it didn't help. Anyways, please let me know if you too get this error message, because that means you can reach Albert's servlet and that would be way cool. I think Albert must have set a world record in the time it took him from knowing zilch about server side Java to downloading Tomcat and have a useful servlet running. Ya'da'man Albert! -- PEZ

I'm running the client right now, and uploading a lot of results. It seems to work fine for me. But it fails to read the results once they are uploaded :-( I'w investigate. -- Albert

I GOT IT!!!! You don't have to put ".txt" at the end of the name. Use the following URL:

*http://rumble.robowiki.dyndns.org/servlet/RankingDetails?game=roborumble&name=wiki.mini.Sedan%201.0

-- Albert

This is cooler than ice! Very good work Albert. How's the ranking calculated as it stands now? -- PEZ

I'm ,using the formula from Paul Evans based on ELO rankings, with the following considerations:

* New bots start with a rating of 1600.
* New versions start with the rating of the last version (not tested yet).
* To avoid missplaced ew bots to affect the ratings, when a new bot (with less than 20 battles fought) fights a battle, only its rating is updated (the enemy rating is unchanged).

Of course, needs some testing. Probably I'w have to introduce some rule to make the new bots to move faster.

-- Albert

Just for fun I made a little shell script that produces a total from the files available. Check: http://rumble.robowiki.dyndns.org/rankings/roborumble_Totals.txt

The script:
#!/bin/bash

RESULT_FILE="roborumble_Totals.txt"
cat /dev/null > $RESULT_FILE
for file in roborumble_*_*.txt
do
awk -F"[ =]" '
BEGIN {
OFMT = "%.2g"
}
/^#Rankings file for/ {
name = $4" "$5
}
/^ranking=/ {
ranking = $2
}
/^battle/ {
battles += $2
}
END {
print ranking+0 " - " sprintf("%7d", battles) " - " name
}
' $file
done | sort -gr | awk '
BEGIN {
print "RANKING TOTALS\n"
print "GAME = roborumble\n"
print "RANK: RATING - BATTLES - BOT"
}
{
print sprintf("%4d", NR) ": " $0
}
' >> $RESULT_FILE
I've just made a very quick reverse engineering on the rankings files, but I think I got it right. I think that this should become two servlets:
# UpdateTotalRankings? - producing an XML-file
# TotalRankings? - displaying the results (this maybe is better written as a JSP page with supporting classes)
## What should be displayed? Personally I am very fond of the flags used by ER and also the position change figure (and icons). All those score details ER displays could be optional.
## Someone good at designing could maybe hack a HTML page and we could use that as a basis for the JSP?
-- PEZ

Could you post a sample datafile? Maybe I'll have a go at a few XSLT's transforming it in something pleasing to look at :) -- FnH

The data file format is not yet designed. Please feel free to make one up for the purpose of the XSLT development. You can assume about the same contents as the ER result table to start with I think. The XSLT need only deal with the result table I think. And no actual styling information, but instead "class=..." and then we can add the actual styling from the surrounding JSP. -- PEZ

The server should create the result pages once in a while, this way all pageviews are static, and won't have too much of a performance impact on the server (one of the problems ER is having) ... -- FnH

That's the purpose of the update-total-rankings servlet. I'm thinking that any client that has uploaded new rankings should consider running it. -- PEZ

A good idea would be to have the rankings updated once a day. Also would be nice to have the old rankings stored in the server, so you can take a look on the past and see how it evolves. Because it is hosted in the Wiki, may be a "Wiki" look and feel would be interesting. -- Albert

Maybe we could post the results on the wiki. That way the revision control would take care of the history thingy and the look and feel would solve itself. =) -- PEZ

Hrm, this data files thing is odd. Look at the detailed rankings for NanoSatan. He beat both TityusMega and Teancum, presumably on computers where they have no stored data on him, yet he also lost near shut-outs to them, presumably on computers where they do have stored data. -- Kuuran

The rankings are [here], oh, and now is a good time to update your preferences files with your usernames, so everything isn't being run by Albert :P -- Kuuran

We should decide how many rounds per match we use. I think 10 rounds is to low, as it handicaps bots that don't store data files and also it introduces excesive variance. Because we have now more power to run the battles, 20 or 30 rounds would be better? What do you think? -- Albert

It doesn't really introduce any more variance if you run 10 rounds over and over, but yes, it handicaps non-persistent bots. Maybe the 35 used in MiniBot? Most of the non-persistent MiniBots are already optimized with this in mind anyway. -- Kuuran

We have been able to run 40.000 matches in 12 hours!!! RoboRumble@home is powerful! -- Albert

Powerful indeed! While you guys have been running all those matches I have changed my totalling script so that it now posts the sorted rankings on the /RankingsTest? page. It wasn't as easy as I thought at first. The wiki is a picky about the page that is posted. It must contain a reference to the old page and such so the script must parse the old page for this reference first before posting the new page. Also, all this robocoding has made my Perl head slow ... =) I won't dig in to cookie handling just yet, so for now you'll have to live with seeiing the wrong user name in the "Changes" listing. The script is just a very quick 'n dirty hack, but it might do for now and we can make a serious program for this later. I can put this script in a cron job (if you're not a Unix head this means an automatically batched job). I'll go for each half hour to begin with. Then we can change this to a less frequent run when things have matured some. I'll try to get those flags into the listing (I really like them=). Meanwhile you others can follow the excellent excample of whoever updated the participants list with all those bots. All bots in the ER would be a good start. =) -- PEZ

That'd be Albert's work. I'll get on adding any major omissions I find. -- Kuuran

If it's on a wiki page are we trusting people not to edit it? Is there some way you can password protect certain pages, a bit like wikipeadia's home page? While we are testing, i think we can trust everyone, but once people that don't use the wiki come to see how their bots are doing, trust may not be enough. -- Tango

I don't think that's a problem. All changes to the page will show in the revision control. If anyone is acting a fool like that it is as simple as restoring the correct version of the page. (That goes for the whole wiki by the way.) And, every once in a while my script will post an update anyway. -- PEZ

True. Is there any plan yet to get the server to send lists of battles to be done? The current rankings list is very uneven. Also, what conclusion did we come to for handling data files? -- Tango

Can you please add the Canadian flag as the icon for package 'arthord'? -- Kuuran

60,000 battles now. Once we get it all worked out, i don't think we are going to have any problems running enough battles to keep it stable. :-) -- Tango

I think we can leave as is. It will settle down for itself. Also, first we must make sure the ranking system works fine. Have you noticed the rating needs a lot of battles to settle down? Probably we should make it a little bit faster. About numbering, no problem. I'w add it with some minor changes (ie. delete temp directory) in the next releases. -- Albert

Perhaps the number of rounds and battlefield size should both be given somehow by the server? I think it's also time we consider log-ins and at least basic precautions, since we seem to have our basics settled. I'm also about ready to restart GUI work, things seem reasonably settled, and Albert was kind enough to add some really useful parameters for controlling the program's execution. -- Kuuran

We can use a static html page for the server side decided parameters. My client (alpha5) hangs while trying to download bots. Maybe the repository site slows down on the client like it does on humans at times? Is the client honouring any robots.txt file they might have on the repository site? If not, it might just shut the downöoad down if it feels the client is demanding too much of it. -- PEZ

I think it would be easier to (1) Upload the parameters file into the Wiki so people can download it. (2) Filter the received battles according to the specifications. It would avoid having to connect every time to the server.

I guess the number of battles count is wrong in the RankingTest? page. I counted it for a bot and the number shown is higher than the battles fought. -- Albert

Well a wiki page might do, but anyone can alter it so I thought a static page would be better. The point with making it a web file would be so that both the client and a human can download it.

I think the battles count is really a "rounds" count. Which one would you rather have? I'll either change the heading or the content. =) -- PEZ

It may be important to prevent people from changing parameters and messing up the stats, though. Also, as for the algorithm, I think it's fine, the reason it's taking so long to stabilize is likely because 90%+ of the bots came in together near the 1600 mark, and rankings are relative, so they're taking a long time diffusing. -- Kuuran

Rounds is better. If people can change the number of rounds it will be meaningless if it's battles. -- Tango

I agree, I suspect the battles count is a rounds count, though I've noticed it's always in multiples of 11, I think it's counting an extra match for some reason. -- Kuuran

Oh dear, it appears some bots are throwing exceptions or timing out (it happens, especially in older bots). They and their opponents end up with divisions by zero in their rankings! This may actually be some fault in robocode as these matches seem to be from the last few I ran in a batch of 1000 battles, it's possibly that robocode's known to be buggy memory management (remember SandboxDT crashing?) started frying the bigger more memory-intensive bots by leaving them no memory to play in. This is just a guess, of course. -- Kuuran

Oh! I'w try to fix it ASAP, but it won't be before this night.

When I was running Face2face, I was getting memory problems when I was running long series (that's why I made RoboRumble@home iterative). In any case, we need to filter it!

-- Albert

Indeed, we should probably just discard matches with 0 scores on either side, they're rarely valid. In other news, the NaNs are spreading, any bot fighting something with that rank will get it after the battle. -- Kuuran

Well, I'll leave the totalling script until anyone of you have any suggestions for it or I come up with an idea for it (whichever comes first). Is it OK to use a wiki page you think? I kinda like it. Any comments someone might have about the current rankings or movement in the rankings can be made by just editing the page (the wiki way). And the revision control will let us browse previous rankings with ease. As long as people editing the page remember to check "This change is a minor edit" each revision of the page will correspond to a rankings update. (Provided someone ran Roborumble@Home that day, which seems likely). Let us know what you think. -- PEZ

I certainly like it. -- Kuuran

I think it works well, although the current page is called "test", which will need to be changed when we go live. -- Tango

I like it also. -- Albert

kawigi.SpareParts 0.7.nosnd crashes RoboRumble@home. It happened to me twice. Some else has noticed it? -- Albert

I haven't had this problem yet, and since I've run about 2000 battles I think SpareParts would've come up at least once. So I'm going to guess it might have something to do with your system or your copy of SpareParts. Does SpareParts run properly in a normal match started from within Robocode? -- Kuuran

* Define "run properly". SpareParts has never "run properly" in the sense that it's 1-on-1 radar doesn't work and its pattern matcher may not even store a pattern. The no-sound version is fairly stable, though, I think, at least more stable than FloodHT 0.7. But not as stable as some bots. -- Kawigi

** "run properly" = "Albert, does it run on your machine the same as on everyone else's, or does your copy of robocode start throwing random exceptions and crashing?"; :p -- Kuuran
** I think I found the error: the .jar file was in the /robots directory but for some reason wasn't in the /robocache directory. -- Albert

It was running some battles (Beta 1) and then it stopped:


#
# HotSpot Virtual Machine Error, Internal Error
# Please report this error at
# http://java.sun.com/cgi-bin/bugreport.cgi
#
# Java VM: Java HotSpot(TM) Client VM (1.4.0_01-b03 mixed mode)
#
# Error ID: 43113F2652414D452D41503F491418160E435050005B
#
# Problematic Thread: prio=5 tid=0x009D2348 nid=0xa98 runnable
#


Should i report it to that url? -- Tango

Typo: "Uloading Results..." should be "Uploading Results..." -- Tango

Never mind, it's just JVM crashing. No need to report it. --

The JVM seems to be doing this quite alot overhere ... I already lost alot of good data this way :/ Any idea what's causing it? -- FnH

Just noticed you don't lose data when the JVM crashes. Well done Albert :) -- FnH

I've had some problems with the JVM slowing my system to a crawl after running RoboRumble overnight, but since the CPU consumption was minimal (actually less than normal when RoboRumble was running) I believe it was a memory issue. It's possible you're having some memory issues of your own. I know RoboRumble was made iterative to avoid alot of these problems, but the java process doesn't die between iterations, only the robocode one on the JVM does, so not all the mess seems to be cleaned up. Could your issue be something related (is this happening after alot of hard running, possibly concurrent with robocode?)?

And yes, it all gets saved to a text file match by match, Albert's idea of disintegrating everything was a good one. So all your partials will be uploaded next time you complete a run. -- Kuuran


Removed: 246,247d67




Robo Home | Changes | Preferences | AllPages
Search: