Welcome
The highlighted comment was created in this revision.
Hi mate. You can tell him he is very welcome to the robocode community :). No offense, i'm just kidding.
Would be nice to hear more about your competition. How is it going with the 1200x1200 field. I think Walls must be good, because he is quite often out of radar range.
Maybe if Skilgannon makes his LiteRumble official we could see the competition as well.
Take Care
Welcome! The work competitions sound fun. I wish I knew some real life Robocoders. =) Good luck with your bots.
Kudos for doing a competition at work!
About 3 years ago I got a copy of the Rumbleserver code and ran a Rumble for my high school CS students as a competition for a 6 week project. On the busiest days, some of the more prolific students were submitting multiple revisions to the rumble.
The passing standard was beating sample.Walls, sample.RamFire and one other sample bot (I forget which) in 1v1 combat. After that, the scores were scaled by their rumble APS. It was tremendous fun. :)
Thanks for the welcome guys. It's great to know there's still a active community years after the game was introduced!
Voidious, I guess it's a privillage knowing other robocoders, hadn't thought about that. Have you considered trying to organise a competition in your city? A group like the local Linux Users Group, or ACM might be interested. I've consider running something like that after this comp is over. I have a feeling I might be hooked on robocode for a while.
Happy to talk more about our competition, let me know if you have any questions.
Here's the latest rankings... 11/06/2012 12:27 Results for 500 rounds Rank Robot Name Total Score Survival Surv Bonus Bullet Dmg Bullet Bonus Ram Dmg * 2 Ram Bonus 1sts 2nds 3rds 1st MarksRobots.Mbotv1* 407104 (12%) 279100 19880 99602 7967 462 93 142 81 75 2nd apc.BadWolf* 380278 (11%) 256350 18060 95338 8854 1619 57 129 61 59 3rd apc.LeeroyJenkins2* 373103 (11%) 265800 16660 82728 6402 1505 9 119 121 58 4th apc.FaceOfBoe 1.0* 283546 (8%) 217900 5320 55499 2345 2318 164 38 58 65 5th apc.Colossus2 0.13 258344 (7%) 196950 5460 50655 3553 1682 45 39 24 59 6th apc.ShellyBot* 231230 (7%) 136400 700 76411 6193 10590 935 5 8 7 7th Tim.Maximillian 1.0 218011 (6%) 152950 560 58376 3448 2632 45 4 11 23 8th wally.walnut* 200190 (6%) 164850 980 32508 1021 821 10 7 31 34 9th apc.Walls* 197329 (6%) 162850 420 32364 890 796 10 3 30 42 10th apc.JarrodDoomedRobot* 167150 (5%) 149300 1400 15339 514 596 0 10 21 25 11th apc.stratman* 167081 (5%) 133450 0 31216 1015 1393 7 0 6 9 12th apc.Squirrel* 164965 (5%) 134050 0 29142 341 1421 12 0 6 6 13th apc.Legin* 156496 (4%) 142250 0 12810 82 1343 11 0 8 11 14th arp.Gimp 1.0* 152729 (4%) 134200 280 17114 314 797 25 2 27 20 15th apc.bot42* 136208 (4%) 96650 280 37767 871 640 1 2 8 6 I think part of walls success is due to being out of radar range at times, but mostly because he stays out of the fray in the middle of the field. A number of robots have run into issues with their enemy being out of radar range. If your movement code never looks to seek our your opponent he could hide outside of radar range, no one appears to have tried that strategy yet. I noticed when testing my robot last night with Genesis and Diamond, Diamond shot all it's energy into a wall while Genesis sat outside of radar range doing nothing. Naturally I my robot was dead at that stage...
If you look at bot42, you'll notice it has unexpectedly high bullet damage for its survival. It's using a neural network to determine the best targeting strategy to use. He's implemented linear, circular, and pattern matching I believe. If he can improve his movement, I'd expect him to jump up the ranks.
Legin and Squirrel and largely unmodified Sample.Crazy. Wallnut and Gimp are modified Sample.Walls.
Since you are all so helpful, a couple of questions... 1. Has any one attempted to develop a targeting system based on a regression line of previous movements? It is an idea I'm considering... http://en.wikipedia.org/wiki/Polynomial_regression 2. Is there a place I can get an explaination of all the numbers in the darkcanuck roborumble tables? I haven't been able to find it on the wiki and I'm not familar with some of the numbers (such as Glicko-2 etc)
My guess is Rednaxlea (and maybe others) have tried something like that. A quick search turns up oldwiki:Rednaxela/MultiplePlaneRegressionClustering and Talk:Targeting Matrix, but I'm not sure either of them are really the same.
The best guns currently are nothing super fancy in terms of algorithm complexity: k-nearest neighbors to find similar situations, and kernel density among the firing angles (usually GuessFactors) recorded in those situations to choose one. (This is sometimes called Dynamic Clustering in Robocode.) Multi-variate histograms (aka Visit Count Stats) are a close second, and were the dominant strategy for a long time. Darkcanuck has an excellent neural network gun in his bots, too, which he describes a bit at Gaff/Targeting. Of course, there's lots of room for innovation and variation within any of those techniques, too.
I've personally played with various clustering methods, but found nothing that can top simple KNN, and all of which were much slower than KNN. I still think there's room for improvement with clustering algorithms, and probably other totally different algorithms that can compete, as well. WaveSim can be pretty fun if you just want to hack away at targeting algorithms. =) RoboResearch for running massive battles for testing anything else.
Hmm, not sure about the RoboRumble terms being explained anywhere. APS is "Average Percent Score" - score against each bot is (your score / total score), and APS is average of all those scores. Survival is the same, but only counting survival scores. ELO and Glicko are just chess-like rating systems based on those scores. PL is pure win/loss.
Thanks, Rednaxela's idea looks a lot more complicated than what I was thinking of!
Just talked to User:Rjcroy I've been informed that regression line fitting is likely to be highly unstable for anything other than a straight line fit. So probably not worth pursuing, as linear targeting is pretty well understood. It could provide a way to get a best fit on a robot that's oscilating or something, but probably not going to be particularly good. Worth looking into these ideas though, who knows when the next break through will come...
Well, I'd say regression fitting's stability would not be the real important problem with it (though yes that would be an issue with some types of regression). The bigger problem would be that even in the impossibly best case scenario (taking into account all variables, and practically infinite data), you would still end up averaging the movement for any given scenario. Many robots are either randomized or intentionally avoid reacting the same way to a situation as they did in the past. Due to this, the average result for a given set of inputs, frequently does not match the most common result.
For exactly that reason, one feature common to nearly all robocode targeting algorithms that are stronger than simple pattern matching, is that rather than outputting a single firing angle, they output a histogram of probability of how likely different angles are where the enemy is expected to be. (Sorry about the run-on sentence, tis late at night here and my brain doesn't word things nicely at this time)