Archived talk:CassiusClay 20050329

From Robowiki
Revision as of 16:22, 21 May 2009 by Robobot (talk | contribs)
Jump to navigation Jump to search
       Archive        This is an archive of past discussions. Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page.     

PEZ, you say in the update history that you "Tweaked the movement flatener." What do you mean by this? -- jim

That wasn't right. I have now corrected it. I tweaked the hit stats segmentation. Using time-since-velocity-changed instead of time-since-decceleration and -acceleration. It makes me lose against about all top bots, but gains me 10 points in the total. -- PEZ

Seems CC now has DT's number:

1st: pez.rumble.CassiusClay 1.9.6.01    40881	14750	2950	20342	2839	0	0	295	205
2nd: pe.SandboxDT 3.02                  30962	10250	2050	16860	1801	0	0	206	295

Nice! -- PEZ

Your goal needs to be updated. Uless of course you are angling to be #2 :P -- jim

Well, CC can't dethrown RMX while it is not the king of course. =) I'll update the label. -- PEZ

PEZ, at your suggestion I am looking at using your gun indecies for DarkHallow. When I looked at your latest code on CC, I noticed your are setting the accelIndex twice. You set it to the same value each time so I am pretty sure this is redundant. -- jim

I don't think I am using an accelIndex? -- PEZ

Hi PEZ, i noticed that you latest gun tweak didn't do that well. Are you sure you calculated the botwidth correctly? I took a look at your code and now i think your method botwidth() returns twice the number of bins it should. You are using maxEscapeAngle() which actually returns the angle between the GFs 0 and 1 (or between -1 and 0 of course), but at the same time your use the total number of guess factor bins. If i'm right that could make quite a difference, if not you may of course delete this comment :-) (i just looked at the code, so no debugging or stuff ... ). --Mue

I guess that could make a lot of difference. You're right of course. Stupid me. With some luck this could solve this big mystery. Thanks! -- PEZ


There is no listing for the current version of CC in the update history section. Care to share? -- jim


Version 1.9.8.03 has five lousy points left! And I'm totally out of ideas again! 5 lousy points! Well, I should be happy of course. I am. But it's frustrating to chase something so elusive for so long... -- PEZ

A pretty cool table: http:/robocode/uploads/pez/CCvsDT_35.html -- PEZ

OK, so with version 1.9.9.00g I have finally taken the time to update the movement predictor so that it takes into account the maximum turning the bot can do at a given velocity. My tests shows it does not yet perform like the previous version of the predictor. Might have a bug in there. Check the /Butterfly page if you're curious and maybe even willing to help a poor surfing developer get the more precise act together. -- PEZ



Dunno if it will last, but it´s cool:

http://robowiki.net/robocode/uploads/axe/CC19900b2.GIF

-- Axe

Thanks for saving that for me. I like to see what ground I've touched. =) 2063 now with 296 battles. I know it's going to fall back to its "around 2050" pocket, but it's cool anyway. =) -- PEZ

CC is #2 by a hair... Congratulations! Are you going to remove SilverFist? I seem to recall you mentioning that you were going to remove it if either you or Axe were #2 behind it. --David Alves

We'll have to see where it ends up. I've seen CC drop so many times before... In any case a SilverFist WT must be tried, just to see where the bar would be placed with such a beast. -- PEZ

Great stuff! did you use BeeWT's version or did you hack in the serialization code? And now it's waiting for SFWT..... --Vic

Big congrats dude! SuperNodes is a great find. I'm using the BeeWT gun hooked on CC movement. And I'm just now putting together SFWT. Will pull CCWT tomorrow then. And SFWT can stay the proof of concepts for /Bee Targeting with SuperNodes and SilverSurfing. -- PEZ

Now I have cleaned all code that could do data writing and reading from CC. With saved data it's too hard to know what a particular gain or loss in rating really comes from. One less parameter to worry about! CC will now try to outrank RaikoMX without any data on disk. -- PEZ

Congratulations on achieving your goal, and by a nice margin too. --David Alves

Thanks!!!!!!!!!!! Man this is a wonderful day. Yayyy!! -- PEZ


Congrats, man! U surely deserved it! Hail! -- Axe

Wow! Great stuff, PEZ! Congratulations! Now tell us all about the wave list management alterations please :-) And of course how heavy your BinSmoothing is now :-) --Vic

Thanks both of ya! I'm having this stupid smile in my face that I just can't wipe away. =) About wave list management. It was one of the last leftovers from Pugilist. I used custom events for my Wave's that updated the waves in the test() method. Thus relying on thar Robocode would always iterate my waves. But obviously I coudln't. I have noticed for a long while in GL that my waves does not stay aligned for the full duration of their flight. Thought I could ignore it. But the other day I decided to not ignore it. About bin smoothing. I now smooth with pow(d, 0.4) instead of pow(d, 0.5). At first I thought it made a majr difference, but I think I must have done some other "minor" change at the same time. Because now in my tests 0.5 (sqrt) works equally well. All in all the 30 points come from bug fixes, glitch-fixes and minor tweaks in the surfing. There's no implementation detail too small to not pay attention to. -- PEZ

What do you mean pow(d, 0.4)? What is d? :-P --David Alves

d is the distance of the measured bin from the bin used for smoothing. Like so:

	for (int i = 0; i < FACTORS; i++) {
	    danger += _danger_calc(i) / Math.pow((double)(Math.abs(measuredIndex - i) + 1.0), 0.4);
	}

-- PEZ

PEZ, a bit late, but CONGRATULATIONS with your number one position. I have been away for some time and now find the RoboRumble landscape shaken. Nice work!

B.t.w. what happened to the RoboRumble? I thought there were bots with a 15000+ battles behind their names. --Loki

The rumble and the wiki was burnt to ashes in what is now known as TheBigCrash (see WelcomeToTheNewWiki and RoboRumble/TemporaryServerUp or some more on this). Like PhoeniX birds they have risen from the ashes though! The rumble a bit more hurt than the wiki. Which means we have lost a lot of battles. But the warriors of the RR Uploaders Competition has made sure we at least have a correct and stable curren standing.

Thanks for those congrats! It was bloody hard work to outrank RaikoMX!

-- PEZ

he he, you are a pretty competitative guy. You even turned getting the new rankings into a new competition! But only a second place for you ... must be hard to swallow ;-) --Loki

It's a hard life. But I get by. One day at a time. =) -- PEZ

Well here's an interesting one, PEZ. You've got Shark as a problembot, but not Raiko. Assuming their movements are about the same, wouldn't that mean Raiko's gun is less effective against you than Shark's? --Goofy

No. It means Shark's gun is worse than Raiko's against about every bot in the rumble. Just a bit less so against surfers. -- PEZ

A truly random gun would be just as effective against a surfer as it would be against very other bot in the rumble. Surfers take advantage of the fact that they can learn as you learn. When you manage to hit them, they know where you think the peak is in your stats and can avoid it until you hit them at your new peak. Some surfers go even one further and flatten the results of their movement to try and eliminate all the peaks truly turning you GF gun into a random gun. I would argue that the SharkChallenge is not a test of surfing at all. It is a test of your targeting system more than your surfing system. -- jim

Then again, noone has said that the SharkChallenge is a test for surfers. =) -- PEZ

I finally found the secret of your number one position: you haven't fought a single battle against mini.Wodan :-)

Heheh, let's be realistic, it's probably better for Wodan's ranking. But i introduced statistics aging/rolling averages after i found that it improved my results against CC v1.9.5.3 --Loki

Yes, rolling your gun stats should help against any surfer. But, if I were you I would try a version of Wodan that does not roll the stats. You might find it works better in the rumble as a whole. -- PEZ

I gained 14 points (7 positions) by using a fast version of rolling averages in the general rumble (a bit to my surprise as i only expected improvements against the wave surfers). I tested several 'aging speeds' against a number of the top bots and found contradicting results: fast aging worked best against SS and Aleph, no aging worked best against CC and intermediate against Ascendant. So i finally settled on fast aging. --Loki

B.t.w. the results of MiniWodan in the TargetingChallenge show that an intermediate speed of rolling averages works best against those bots. --Loki

That's for your gun of course. For /Bee every experiment with rolling averages has resulted in decreased RR@H rating. -- PEZ


That looks strange:

Fighting battle 0 ... pez.rumble.CassiusClay 1.9.9.28,pez.mini.Pugilist 2.0.9
RESULT = pez.mini.Pugilist 2.0.9 wins 4948 to 720

--ph

Yeah, it was a non-firing CC. And then I "fixed" it with .28b which also was stationary. =) But now .28c booth fires and moves. -- PEZ

Looks like .37 has a bug. Unless of course this is your HOT test... -- Alcatraz

Thanks! It's not my HOT test. V .09ho is my HOT test. ... I wonder what .37 is doing! -- PEZ

OK. *lol* Found it. I often do that. I'll let .37 be left in till it gets all pairings. It'll answer the question "how high ranking does a surfer get if it doesn't fire?" Duh!!! -- PEZ

Wow! I used sample.Walls to check what was wrong with .37. And in round 3 I actually saw that bug (when CC takes a HOT non-ChaseBullet hit) happening! I don't have the time right now to investigate it, but it's a MAJOR breakthrough to have seen it. I'll have that bug fixed soon I think. Yay!!! -- PEZ

.09hot might score higher with Shark's gun, which would prevent being crushed by surfers. Just a thought. :-) --David Alves

Feel free to test it! I'm sure you'll figure out how to plug Shark's gun on a CC .09rd in a jiffy. -- PEZ

Ain´t CC the King again? -- Axe

Nope. Just a test version of Ascendant hanging around. =) -- PEZ

someone (maybe it was CuriousGeorge) said "asking questions is never stupid", but maybe my question qualifies. Anayway here it is: where are the results of the PremierLeague posted ? I have seen claims like "King of PremierLeague" before, but have never been able to verify them :( --Loki

That's the point. The claims are up for grabs. =) Nah! On the RoboRumble/CurrentRankings page there's a PL for the various classes where a PL ranking is available. -- PEZ

??? have you just added that PL link, or have i (unconciously ignored/overlooked) that link sinds it have been added? Or is it because i always open the RR-results directly from my 'Favourites'? Anyway, i am learning something new each time i visit this wiki. thanks for answering any question, be it a smart one or a stupid one! --Loki

You've probably missed that link for almost a year. =) Anyway, as you now saw, CC and Pear both have only one loss, but I claim the crown since I use the ELO ranking to solve the tie. I do like CC's LRP graph too. CC is a balanced bot, almost no outliers on that graph. -- PEZ

PEZ, u use 1.9 pwr bullets even against rammers? I think that they deserve 3.0 pwr bullets, dont? I´m thinking in try this later... I know it is a lil issue, but these rammers are indeed annoying, as u said once:"Death is too kind to NanoDeath..." :). -- Axe

You're right, maybe true rammers are too predictive to fire anything less than 3.0 against. But CC is already among the top-3 ND-bashers (most versions of CC are #1 in this game)... Worth a try anyway. Death is to kind to NanoDeat after all. =) -- PEZ

mmm... Maybe im doing this already, i use power 3.0 bullets if hitRate > 35% remember? I forgot. :) -- Axe

Yes, and I haven't tried that yet. Good you reminded me. -- PEZ

It's a bit too small diff to tell for sure maybe, but it looks like firing full power when the hit rate indicates an easy victim bought me 1 or 2 points. Thanks! Maybe with some extra attention to detail in this (right now it's the rawest and simplest implementation imaginable) I can squeeze out 2 secured points. -- PEZ

That was my result too... 1 or 2 points gain. It´s lil, but... -- Axe

The current CC is right now less than one point behind Ascendant, which means that the difference between the ratings of these bots is probably within the margin of error. So according to the rating these bots are equally good. Now i wonder whats the consequence for the position of the king. Are there two kings now? Or has the new king to be better than the old one? Or is there another competition to solve these issues (maybe consulting PremierLeague, or the direct duel)?

Maybe i should try that bullet power thing too. If i gain about one point too, we can postpone that question :-). -- Mue

Yeah, postpone it please. =) But it looks like Ascendant ended up #1 in the exchange as it is. I think that if we have two bots competing very closely for #1 then we can upload some 25 battles which pairs those two bots and let the outcome from that decide which one is the King's bot. -- PEZ

Hmmm, maybe CC just had some luck there. Now it's back at 2066 again... -- PEZ

Congratulations, you have a very strong release there. Right now CC is 0.3 rating points above Ascendant with 752 battles fought.

pez.rumble.CassiusClay 1.9.9.67   2067.82 (752)
mue.Ascendant 0.9.7               2067.53 (1010)

I think that this is too close to just judge by the ranking which one is stronger. Maybe its time to run a number of battles between these two (as you proposed above) and use the result to decide who is king now? I'd do it myself, but i dont know how to tell the client to focus on a specific pairing.

Sorry for not simply acknowledging that CC is king now, but i really think that any minor fluctuation in the ranking can change the order of CC and A. --Mue

I agree. Next version maybe. =) -- PEZ

Good luck :-). Though you probably wont need it since it will still take some time until my next release is ready. I started to rewrite my gun making it an array based guess factor gun again (should bring better performance and Bee proves that this is a viable approach). Unfortunately the first results are very disappointing. I'll probably take a closer look at Bee now and run some experiments with it. Maybe i can figure out what exactly it is that makes your gun so incredibly strong. --Mue

If your gun is not array based, what is it based on then? -- PEZ

I tampered with dynamic segmentation and use basically a growing list of segments (each containing a guess factor array). When firing, the segments similar to current situation are weighted together. But after a careful analysis of whats happening there i came to the conlusion that this approach does not have innate advantages compared to array based implementations. So i'm switching to arrays now, which are faster by far, because i just need to compute some indexes instead of comparing the current situation to all situations in that list. --Mue

Interesting. How many similar situations do you collect before weighing them together? Have you tried clustering the similar situations with something like K-Means to see which of them that agree the most about the best guess factor? I would think such a gun should be very strong. -- PEZ

Well, i take all all similar situations into account. I do not really understand what you mean by clustering similar situations. What are K-Means? --Mue

All? That must mean you take all identical situations into account? K-means is a clustering method where you try build N clusters from the input data by chosing the N observations farthest from each other and then assigning observations to these clusters by measuring their "closeness" to the center of the cluster. Each time you add an observation to the cluster you recalculate the center. This goes on until all observations are assigned to a cluster. Then it would be a matter of checking what cluster the current obesrvation belongs to, and checking where the majority of those would fire. The trick is of course to figure out what distance measure to use for an observation with several measures in it. But maybe the euclidian distance between each measurements together with a "weight" for that "axis"... Something like what Axe seems to be doing in SilverSurfer I think. -- PEZ

You once accused Paul_Evans of being a rocket scientist. Now who is looking to lauch their own rockets? I could not follow one word of that. =^> jim

I use the euclidian distance in my gun (actually the squared distance). The center of the cluster is always the current situation, I don't understand what you mean by "chosing the N observations farthest from each other". The dynamic part, adapting axis weights by analysing tendencies, is something I have thought about since forever but never managed to turn it into actual code. -- ABC

That's just how K-Means clustering works, you first decide how many clusters you want and then go assign observations to the clusters. There are some other clustering methods one could use instead, like hierarchical (however you spell that...) wher you start with as many clusters as you have obesrvations and then cluster together neighbouring clusters until you only have one left. Left is a tree of clusters where you could go back and chose the level of clustering you want. We did these kind of things with data at my last job which was about marketing research analysis. Dynamically adapting axis weights? That would be cool! Maybe using the standard deviation for each axis works? -- PEZ

I have some (currently unused) code for computing the standard deviation for each axis, one of my many experiments :). The problem is that I'm not very good with Math/Statistics, and I get lost easily in small tweaks. I'll turn my current movement into a gun first and try to evolve from there, it should be much easier with guess factors because of the reduced sample numbers. -- ABC

The club of non-matematicians trying to use math for solving Robocode problems probably has more members than just you and I, ABC. =) Thinking about what we have just discussed though i wonder if standard clustering techniques are usable in a bot. Maybe it's too heavy to keep clustering a growing list of observations every tick. About std dev. Is it possible to keep the std deviation updated with each collected observation or do you have to recalculate it ever time? Maybe since you already traverse the full list every time it's not a big overhead. -- PEZ

I read somewhere that it is possible to calculate the stdv without traversing the list twice (one for the mean and another for the squared distances), but I never find it when I need it. In my attempt I did it the slow way, but only at the end of each round, adjusting weights only once per round. But then I decided that I better make a working hand-tuned version of it before trying a smarter one. I don't see the need for that clustering method you describe, if you assume a fixed cluster size its easy to keep adding samples until the cluster is full. -- ABC

If you use a fixed cluster size you risk either excluding good matches or including bad ones. Might not be a big problem though, I haven't tested any clustering at all in a gun yet. -- PEZ

I now tried making a version of Bee where I use a log of all my waves and search it for similar situations and find out what visitIndex is most often used among them. It performs like Bee in terms of TC points but gets very slow after a 30 rounds or so... -- PEZ

Interesting, did you use CC's segmentation as axis? Maybe it's time for you to make a proper "only predict if you going to shoot" gun... ;)

I tried that, but got lower TC points in my tests. Must have done something wrong as usual. Anyway, the log quickly grows to hold enormous quantities of observations, which is the big problem if I want a bot that is even possible to run 1K round battles with. Yes, I used CC's existing segmentations. Only difference is that I don't require all of them to match perfectly. Got 2041 points using CC's current movement which means the gun doesn't perform near Bee yet. But if I get some hours of continous coding time I'll try making the gun working without those indexes in the Bee segmentation. -- PEZ


Whoa - what happened with 1.9.9.72? Was it only a gun change that cost that many points? --David Alves

Yeah. It scored 91.10 in TC35 and then lost me 11 points in RR@H. .78 scores 90.89 in TC35 so I just might get higher RR@H rating. =) -- PEZ

You mean it lost you 111 points. Unless that's a mistake on your /UpdateHistory :-) --David Alves

Yeah, I made a mistake there. Imagine that writing 100 points too little still gives a score of 1955! =) -- PEZ

Hi PEZ, i took another look at your Bee gun. I think there is an issue with your last velocity segmentation. The last velocity you use is always the velocity from the tick before. But since you segment on time-since-last-velocity-change too, you get a lot of 'impossible segments'. Last velocity can only differ from current velocity if you are in the smallest time-since-last-velocity-segment. Am i missing something or is this some kind of bug? You know i segment on acceleration instead of last velocity, but of course i take the acceleration from the last time the velocity changed (no need to use extra segments to tell the gun that velocity didnt change since time-since-last-velocity-change). --Mue

It isn't exactly a bug, but I am aware of it. Jamougha uses the buckets for different stuff in this situation, but I can't really follow what's going on there and I haven't figured out a way to fill the void. Your solution is excellent! Thanks for letting me know about it. I'll try implement it right away. I'm also using acceleration now instead of a lastVelocity segment so the change should be pretty straight forward. -- PEZ

From my tests it seems it doesn't matter if I use 5 lastVelocity indexes or 2 acceleration indexes. I'll settle for acceleration since it's much clearer about its purpose and since it makes the whole stat buffer less than half the size. -- PEZ

It's probably negligble but going from any speed to speed 0 is possible too (wall collision). -- Pulsar

That's one of the reasons I used the lastVelocity segmentation to begin with. But it seems, in my tests, that it isn't common enough to make a difference. -- PEZ

Wow, CC is rising again. Congratulations! --Mue

Thanks! I'm actually just fooling around with weights and rolling depths. Seems to not matter too much what I do, but there are some few points there at least (obviously). To leap the gap to Ascendant I'll need to do something new though... -- PEZ

That's the price you have to pay to be at the top, but I am confident that you will find a way to really threaten Ascendant. -- GrubbmGait

How long until version 2.0? You are really stretching the 1.9.9 thing. -- Alcatraz

Indeed! Or rather I have been too quick to reach 1.9.9 really. Some of those changes have been truly minor. Like the ones I am trying now. I was thinking to wait with 2.0 until it contained something new. But I have been playing Halo 2 very much lately and haven't really been cooking any new stuff. So. I'll keep stretching it a while. =) -- PEZ

Just admit it, you love to be the King of TLBVNL (The Longest Bot Version Number League) -- GrubbmGait

I've already won that title over at the RobocodeLittleLeague. And there's a limit to the bot version length anyway. =) -- PEZ