Archived talk:Dookious 20071111

From Robowiki
Revision as of 19:07, 11 November 2007 by Voidious (talk | contribs) (category)
Jump to navigation Jump to search

Hmm, between 1.352 and 1.3666, my score against WaveSurfingChallengeBotC plummeted from like 97 to 90-92. It doesn't seem to mean much to RoboRumble rating, but it bothers me no less... This is starting to feel like a permanent stay in the MovementLaboratory! -- Voidious

  • Found the bug, hopefully it's among the last. With my luck, it was part of what was letting me beat Shadow... =) Voidious

Hmm. VirtualGuns are a very touchy issue, I already know, but I'm still surprised how hard 1.431 is bombing by giving a stronger bias to the Main Gun. It was a 15% penalty if Main Gun rating was above 22%, now it's a 10% rating if Main Gun rating is above 12%. -- Voidious

The current AntiSurfer gun code I've been working on began with a vague idea a few versions ago. My first attempts at putting the idea to use were buggy and completely inadequate, but I'm starting to think it has some merit. Here's how it works in 1.44...

I track some WaveSurfing stats from the enemy's perspective, just recording bullet hits. My AntiSurfer gun itself just has a really low rolling depth and some good segments. (The stats of these two things are completely separate.) Before I aim the AntiSurfer gun, I calculate a "mask" to apply to the gun bins before calculating the best one at which to aim. The mask contains a multiplier for each bin; so if the multiplier was 1 for each bin, it wouldn't affect aiming at all.

The mask is calculated (currently, quite crudely) like so:

  • Initialize the mask to all 1's - if there are no waves in the air, it has no effect.
  • For each surfable wave in the air (from enemy's perspective):
    • Figure out what bins on the wave the enemy could still get to before it hits.
    • For each of these bins (call the bin X):
      • Get the danger for the bin from enemy surf stats. (Call it DANGER.)
      • Set WEIGHT for this surf wave's effect on the mask to the time until the wave impacts. (The most recent wave has the most effect on the mask.)
      • Figure out and loop through each bin (call it Y) in the current aiming space that the enemy could get to if they moved to bin X on the surfable wave.
        • Add (1 - DANGER) * WEIGHT to the surfMask for bin index Y.
        • For any bin outside the resulting aiming space (bins they couldn't get to if this surfable wave impacts them at bin X), use the average danger across all bins. (Attempting to marginalize out uncertainty...)
  • When finding the best bin to aim at, multiply every score by its corresponding mask value.

I'm not doing any precise prediction here, at least not yet. These calculations are fairly crude even in a TC setting, and are made even more crude if the tank is moving around while firing, but it's such a fuzzy process anyway that it might not make so much of a difference. Anyway, we'll see what happens...

-- Voidious

Oh, to summarize what I'm trying to do with that algorithm =) ... Basically, a surfer is less likely to move where there is a high danger. Let's say one of the spots on a surfable wave in the air looks *really* safe from his perspective - that means he's likely to be at that spot when the wave intercepts, so when the bullet I'm currently aiming gets there, he's likely to be in one of the bins that he could still get to if he went to that safe spot on the wave in the air. Basically I try and average this likelihood out for each wave in the air. Note that I'm just comparing each wave in the air to the current wave, I'm not going through all permutations or anything... -- Voidious

Everyone can just stop running battles now - with Dookious 1.44, I've finally got an undefeated version! =) For now... -- Voidious

Congrats, great work, do you have 500/1000 round test results against Shadow? About the anti-surfer gun you describe, how well did you manage to make it hit surfers? It should theoretically be possible to hit a surfer better than a random mover... -- ABC

Thanks. I haven't tried 500 or 1000 rounds yet, but I will soon. I seriously doubt Shadow will lose =) The AntiSurfer gun isn't hitting surfers all that great yet - I cracked 71 once vs Shadow in a TC (usually get 69 or 70 these days), and cracked 81 vs CassiusClay (usually 77-79). But I'm optimistic about improving this method. I was actually more curious if it would totally ruin my rating to have such a weird gun in my VirtualGuns vs non-surfers, but thankfully it didn't, so now I will keep working on improving it. -- Voidious

Doh, I forgot to re-enable the battle results before running this (option in 1.2), but I can still bring up the final score via the Ranking Panel. For 500 rounds:

1st	abc.Shadow 3.66d	41881
2nd	voidious.Dookious 1.44	32292

-- Voidious

The last couple of days my client fails to retrieve bots from your webspace. When I try it manually it succeeds, but the speed is awfully slow (< 500 bytes/sec). Did you hear of others having problems like this? -- GrubbmGait

Hmm, no, I haven't. I haven't had any problems with my web host from my location recently, but you are on the other side of the Atlantic, after all. Anyone else in Europe tried downloading my bots lately? I'm not sure of a good solution other than hoping it fixes itself for the moment :-\ You could hack your client to just skip my bots if you need to, I won't be offended :-P -- Voidious

It only happens with Dookious, at approx 100kb (after several minutes) the server just hangs up, now also when downloading manually. Smaller bots like Komarious and BrokenSword are no problem. Oh well, you just lack my support to get to The2200Club ;-D -- GrubbmGait

I downloaded it yesterday and had no problems with it, but I have a nice connection (16k download). But I think it was pretty normal speed. -- Kenran

I did get the latest version (1.474) during the night, so no details at speed etc, but at least I got it. -- GrubbmGait

Hard to believe that you *lost* 9 point by the proper onDeath handling. You don't die that much, so it is supposed to have only a small gain. My gutt feeling says to leave it in, but if it would cost me that many points I'll reconsider to remove it. -- GrubbmGait

I doubt it's actually costing anyone any points. I have found very large fluctuations in rating ever since passing about 2105 - I have had two identical versions with 5 point differences (1.25 and 1.369), and many very minor tweaks with 5 or more point differences. In fact, 1.472 was at 2117 at one point with all its battles. I will leave it in a while and then re-release 1.472 exactly as 1.491 and we'll see what happens. It's quite frustrating, really, making it hard to find true improvements! It's also possible there's some unforeseen side effect in Dookious with the proper onDeath... -- Voidious

  • Here's one possible side effect explanation: this would cause my "enemy hit percentage" stat to go up across the board, which is what triggers my flattener. Enabling the flattener a little more often (and incorrectly) could cost a few points. Seems unlikely, but maybe. -- Voidious
    • Quite easy to check, the comparison sheet between 1.472 and 1.49 shows some bots to test against. -- GrubbmGait
  • Also remember that as others update / add bots, the field is slightly different (also, the latest Dookious has not faced WeeklongObsession or WeeksOnEnd). I don't know how much difference this makes in the general rumble. It cost the top bots ... about 6 points I think? ... in the nano rumble when one of the new nanos came out. -- Simonton
  • That's definitely true, and I think much of the flux down from 2117 to 2112 was due to new bots. However, 5 points is about a total of -100 from "expected" scores against bots (in my experience - it's actually not linear like that), which seems like a lot from even, say, 10 new bots. -- Voidious
  • And don't rule out the influence of bots with datasaving. Some of them keep records on name and versionnumber and must start learning over and over again. Others keep records only on name, and already have information about your new version without fighting it. -- GrubbmGait
  • Ahhhh yes. I didn't think about that one. -- Simonton

Well, 1.491 hit 2110, so I have to think that it really was a side effect and not just fluctuations. In 1.492, I try to adjust the hit-% thresholds accordingly - let's see what happens. -- Voidious

You know, these last changes - proper handling of onDeath (which affects enemy hit percentage tracking) and discarding bullet collisions when tracking enemy hit percentage - seem like very small things at first; but they directly affect the trigger that enables the flattener, always an *extremely* sensitive and dangerous move, so they may turn out to be worth a few points once I re-tune my hit percentage thresholds. -- Voidious

Lord knows you can't totally trust a rating jump until your tank's stabilized, but with 1.534 at +0.66% per bot after 250 pairings, I'm pretty sure this one is gonna be a jump. These last versions have reminded me just how touchy movement and dive protection can be, so I thought I'd share some recap...

I've noticed since the movement rewrite that Dookious only gets around 99% against WaveSurfingChallengeBotA (as opposed to 99.6% or more), and his WaveSurfing/BarracudaChallenge score is way down, too. I couldn't figure out where the behavior was any different after the rewrite; everything looked identical as far as decision making for dive protection against simple targeters. I tried (with 1.53 - 1.533) adding some kind of subtle danger for a movement option that strays from perpendicular, but it was bombing the rating by 5-10 points each time.

Dookious tries to surf a firing wave that's in front of him; if there is none, he tries to surf a non-firing wave that's at least 150 in front of him; if he's closer than that, he previously would just set the "attack angle" to something negative (meaning moving away from enemy) and continue in his previous direction. This was true pre- and post-rewrite. With 1.534, in this situation, he calculates the would-be movement angle for both directions (using the negative attack angle) after wall smoothing, and takes the one closest to moving directly away from the enemy. Awesome MovementChallenge2K6 scores, including a killer 99.99 against BotA over 5 seasons, and looking like a solid rating boost. Yay!

-- Voidious

If I read this correctly, you don't use a favourable (or default) distance. If you get close, just move a bit away and thats it. Really amazing MC2K6 scores and an 2118 rating after 600+ battles, looks like this is a good tweak for a change ;-) -- GrubbmGait

Actually, I do use a default distance, which depends a bit on enemy hit-% and and average bullet power. But I have a special case for when I am too close and there is no real wave to surf. And thanks =) -- Voidious

2124 !! You keep setting new records. It is a hell of a tweak if it can get you 16 points, I want that too! Gimme gimme please . . . -- GrubbmGait

Well, my "long term" goal of 2125 came to me much more quickly than I expected. But it's made me curious if upgrading my clients to 1.1.5 had any side effect to help these jumps, so I'm going to re-release 1.522 as 1.542 and make sure it gets about the same rating as before with the upgraded clients... -- Voidious

I was just testing Dookious against Decado and I noticed that the flattener keeps getting enabled and then disabled...is this on purpose? Shouldn't you stick with one or the other? Also, it seems that it couldn't make up its mind to use the regular gun or the anti-surfer gun, which would lead me to believe that my RandomMovement is quite flat..true? -- Skilgannon

Well, the flattener kicks on based on the enemy's hit percentage, so the fact that it's getting turned back off probably means that it's helping, pushing the hit-% below that treshold. You're right, it might be better to just leave it on, but flatteners are so touchy that you just gotta live with getting them close enough and err on the side of leaving them off. Or at least, that's what I do... Phoenix leaves it on permanently once it decides to turn it on. As for the AntiSurfer gun being used, yes, I would say it probably means that your RandomMovement is pretty flat. That's another decision that could be a permanent one, but to me that seems risky - if you choose the wrong gun to start off, the whole match will go a lot worse. Ascendant makes a permanent choice about which gun to use once it decides. -- Voidious

  • On the other hand, it could also be that the flattener isn't doing squat =) (you're using PM, right?) and you just happen to get right around the hit percentage threshold that Dookious uses to trigger the flattener. -- Voidious

Any changes? or is 1.554b just a re-release? --David Alves

It's just a re-release. -- Voidious

Version 1.56 gets quite a lot of xxxx to 0 scores on my client, with xxxx somewhere between 4800 and 6300. Your surfing is just too perfect. Maybe you could consider to let one low-power bullet hit you in round 35 or so. -- GrubbmGait

So no straight Simontious, Simonton's gun with Dookious' movement? --Chase-san

No, I didn't post one, but Simonton is welcome to, of course. =) -- Voidious

I did make an adapter class in an attempt to make it easier to plug my bots' components into normal bots. I suppose I ought to test it ... -- Simonton

At this point, Dookiton is in the lead, 94 battles, about 4 points above Dookious, but as it gains battles I expect this to drop considerabily. --Chase-san

Comparison link: http://rumble.fervir.com/rumble/RatingDetailsComparison?game=roborumble&name1=wiki.Dookiton%201.0&name2=voidious.Dookious%201.56 Dookiton is behind by a fair amount. --David Alves

Dookiton beats everything with over 50%, which was the same for Dookious until Dookiton arrived, luckly Dookiton is only temporary. --Chase-san

Yay! Now with your non-data-saving gun we can further compare Dookious & Dookiton. -- Simonton

Nice PL update. 1.57 beat both Shadow and Phoenix, which were both losses for 1.56. Congrats! --David Alves

Hmmm, nevermind... 1.571 got pounded by both Shadow and Phoenix... maybe 1.57 was just lucky? --David Alves

Yeah, I don't think we have nearly enough matches to get reliable results at the top of the PL. My own experience is that even 20 matches can be many percentage points off of what 100 matches will tell you... -- Voidious

So, Voidious, what you think about the fact that 8 of the 9 other top bots are being actively developed? -- Simonton

I think it's absolutely awesome! Most exciting times since I've been Robocoding, for sure. Wait... except for that time where I took the #1 spot. That was the most exciting for me =), but now is definitely second. -- Voidious

WoW 2130!! Insane! --Krabb