Archived talk:WaveSerpent 20090520

From Robowiki
Revision as of 15:47, 20 May 2009 by Voidious (talk | contribs) (migrating discussion)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
WaveSerpent Sub-pages:
WaveSerpentVersion History - RRGC - DookiSerpent - Archived Talk 20090520
       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.     

Although capable of high wave surfing challenge scores, I can't seem to get WaveSerpent to get a score greater than 30 against FloodHT. If anyone is brave enough to look through my extremely messy and unexplained code and give advice, I'd appreciate it. -- Kev

This might not be the whole reason, but without looking at your code much at all (just a glance, and then setting isMC == 1), I can tell you that your distancing is probably a huge culprit in the MovementChallenges. Watch CassiusClay or Dookious, or probably anyone getting high scores there, and you'll see that they all stay pretty far away, while WaveSerpent pretty much just keeps whatever distance it is at currently. Staying close has pros and cons in a real battle, but against a learning gun in an MC situation, it's just a huge disadvantage. I'd try that first before worrying much about it. -- Voidious

Oh, and you really think it won't get much higher than Puzzle? Comparison sheet =) Also, how old was Alcatraz when he hit 2K? -- Voidious

I too think distancing is important, but for different reasons. Yes, of course against any non-trivial gun you'll get hit less if you stay away, but you'll hit less yourself too so there's no real reason in real battles to stay far away. However, trying to control you distance and make it so you fight most of the battles from the same distance is good for learning purposes. Especially for a WaveSurfer. Your targeting will benefit from it too against the majority of bots.

I haven't checked your code but I am still dead sure that what keeps your bot from really high ratings is bugs. It always is. Try the movement challenge and something like this:

  1. Use unsegmented surfing stats and go for perfection against HeadOnTargeting
  2. Then check your unsegmented score against LinearTargeting and see if you can segment your surfing stats to improve it
  3. Only then focus on the other guns in the challenge.

-- PEZ

@Voidious - 17. @Kev - I found the bin smoothing function in RaikoMX very important. I think that's a great bot to look at. And graphical debugging was also great. Good luck with WaveSerpent. -- Alcatraz

Well, I didn't mean to optimize your distancing for the challenges - obviously, how it performs in real battles is all that matters. But since you were looking for the reason you couldn't get high scores against FloodHT, I'd say the distancing is probably a strong reason. Since you can probably count on your gun being stronger than the majority of RoboRumble opponents, you will likely benefit from staying a bit on the "far away" side in real battles, too. But what PEZ says is true - it's all about the flawless implementation with WaveSurfing. It's a lot easier to get decent scores in the CurveFlatteningChallenge and such than it is to hold Barracuda to ~50 points every time, at least in my experience. -- Voidious

Whatever the case, nice work with WaveSerpent! You shot right into the 1900 club, and halfway past it to 2K. -- Voidious

Thanks for the advice all, I really appreciate it. The next version of WaveSerpent has simple distance control and replaces bins and bin smoothing with an interesting AntiGravity style approach. I'm getting 99+ scores vs. WaveSurfingChallengeBotA now. I still haven't found any bugs in the wave surfing code, but my previous direction finding algorithm was horrible and got WaveSerpent occasionally stuck in corners, most likely the culprit of low MovementChallenge scores. -- Kev


Mad bullet-dodging skill :):

1st: kc.WaveSerpent 4071 1750 350 1643 328 0 0 35 0 0
2nd: rz.HawkOnFire 0.1 14 0 0 14 0 0 0 0 35 0


1st: kc.WaveSerpent 5285 1750 350 2639 496 2 47 35 0 0
2nd: radnor.DoctorBob 1.42 56 0 0 56 0 0 0 0 35 0

-- Kev

Still hasn't faced everyone, but... 2062!!! Friggin' awesome work dude. I think it'd be officially 5th, since CC 2pi.08 got 2067. Rock on, congrats! -- Voidious

Giant jump, looks you are flying! Now you are really dominating one-on-one. And as a sidenote: you are pushing RaikoMX, who was 2nd when I started with Robocode, to rank 18! -- GrubbmGait

Thanks!!! And there was I thinking it might go up 15 points :). Having precise, bug free, and KISS wave surfing really makes a difference. I found a lot of inaccuracies in WaveSerpent's old movement (the most embarrassing being it segmenting movement data on the other robot's wall ahead instead of its own). -- Kev

Very nice! --David Alves

When i run WaveSerpent against CopyCat (MirrorMovement) it suddenly sits still. Is it supposed to do that, or is it just because CopyCat doesn't fire when it has low energy (and so WaveSerpent doesn't have to move)? --Starrynte

WaveSerpent is not in the MeleeRumble... --Starrynte

That's right, WaveSerpent currently isn't in the melee rumble, and the latest version isn't melee compatible. However, Logic uses almost the same melee gun and movement as WaveSerpent, so it acts pretty much the same. I'm not to sure what caused it to stop against CopyCat. WaveSerpent automatically stops against bots on the later rounds if it hasn't been hit yet (to avoid the other bot getting a score of zero, which don't count for the rumble). So if you put WaveSerpent in a one round match it will stop automatically. Besides that, I can't think of anything that would make it stop. When there are no waves to surf, WaveSerpent tries to get into a good position by moving away from walls and the other bot. -- Kev

Looks like you've solidified that #4 position, congrats! (I know you had it before, but it was very very close.) Funny seeing everyone messing with BulletHitBullet events after Simonton mentioned gaining points with it in WeeksOnEnd. =) -- Voidious

Yeah, nice improvement. I think this issue was on almost everyones to-do list, but Simonton triggered us to increase its importance. It is quite an easy gain on movement (9 points for me) -- GrubbmGait

Thanks! I had no idea bullet collisions were that common in battles, or that it would be so easy to implement learning from onBulletHitBullet (I only just figured out you can use getX() and getY() for bullets). -- Kev

I'm glad you're trying pattern matching in your VG array. Pattern matching is my favorite :). I'll be interested to see how it turns out. -- Simonton

Pretty well! I see green scores against 2k bots such as Garm, PhoenixOS, X2, GresSuffurd, RaikoMX, PulsarMax, Lukious, PowerHouse, and Engineer. It looks like a good pattern matching works well at killing surfers and getting those PL wins. -- Kev.

So do your a/b versions each just have a single gun, no VirtualGuns at all? If so, will that be the next step after finishing tests with each? -- Voidious

  • Umm, right, I can read... =) Doh! -- Voidious

Hey Kev, did you forgot to take the second WaveSerpent out of the rumble? I can't help but think Krabb and GrubbmGait want that #20 spot ;) -- Voidious

  • Never mind, we'll get there either way :P --Krabb

Are you aware of how much memory your bot uses? I had to push the heap space up to 512MB and java was taking 500 megs of it, and right now robocode sits around 30 megs by itself with sample bots. -- Ntroutman 2007-09-08

  • Are you referring to WaveSerpent 1.3b31? I know some recent version of WS had a bug and was storing way too much data, but the current one doesn't seem to be a problem on my system. Two WaveSerpents against each other (on a fresh launch of Robocode) is staying steady at 241 megs total through 100 rounds. It does seem that restarting the battle sends it up over 400 megs, though, and I see similar with Dookious, so that would suggest a leak in Robocode itself. Probably should be reported to Fnl after a little more investigating. Are you seeing something different than I am? If you launch Robocode and run WaveSerpent first thing, is it really 500 megs by itself? -- Voidious
  • I grabbed the bot from this page, the link you have up top. As for memory leaks in Robocode, thats become my area (unofficaly currently), I just noticed I for got to sign my comment above (I'm the Nathaniel Troutman who worked on 1.4.3) so I'll check into things some more. I'll also check them out with Dookious. And I'll look into the possible Restart issue. -- Ntroutman 2007-09-08

This is great! Everyone is jumping on the DynamicClustering wagon! I'm having fun. It makes me happy. I never liked VCS. Never. Not for one minute, not one bit. -- Simonton

  • To be honest, I've never figured out why VisitCountStats works as well as it does. Intuitively (to me at least), it seems like DynamicClustering ought to be far more effective than VCS. -- AaronR
  • I think it's pretty elegant (KISS) and quite easy to tune. It executes very fast without any fancy algorithms and it clearly performs as well as anything DC-based, so far. I like DynamicClustering, too (a lot!), and it seems very "pure", but I gotta stick up for VisitCountStats. =) -- Voidious
  • I think the problem with DynamicClustering is that you may want some attributes to be absolute (for instance acceleration), yet you could still have a scan that is 'close' in all the other dimensions, yet not close in that one dimension, be 'closer' than a scan that is only slightly out in all the other dimensions. This can be overcome by segmenting the buffers you store your DC scans in, but that seems like cheating to me. Still, all is fair in love and Robocode =). I think my DC gun is ready for action, so look out, Kev! -- Skilgannon
  • I have to say that the INelegance of VCS is exactly what I dislike. Hard-coding the dividing line between segments is totally uncool. Also - I suspect that finding scans that are close, rather than hard matches, is one of DC's strengths. I've seen discussions about binsmoothing across segments taking too much processor in VCS systems - but that's exactly what you get built into DC. If you want accelleration to be an "absolute" dividing line, you could always give it a crazy high weight. Then, you still get the benefit of using real data when that acceleration value has never been seen before, but as soon as there are some matching scans those will be used. If you want a few attributes to have hard dividing lines it may be a bit more difficult ... but then that's exactly the inellegance that has kept me from VCS all along. That, and the fact that everybody else was doing it ... -- Simonton
  • I knew you'd say that (re: "INelegance"). =) I agree somewhat, but I think they are each elegant in their own way. The main thing elegant about VisitCountStats to me is this: VCS / Segmentation is really simple compared to DynamicClustering, in my opinion, yet as of now, it is still the most powerful system. And it's fast, too, even without fancy data structures. -- Voidious
  • I see DC as the samurai and VCS as guys with guns, VCS isn't hard to be okay with, but is diffacult as any to be the best with, where as DC requires a bit of technique to even stand up (ergo the fancy data structures), not to say VCS doesn't, but it requires far less. But then again I could be totally wrong. It just makes it weirder that VCS predates DC. --Chase-san
  • Hey, I kinda like that, actually. DC seems so pure and there's an obvious elegance to it, but there's also an elegance (to me) about a very simple invention that is very powerful. -- Voidious
  • One thing that I think people tend to overlook is that in your most frequently visited segments in a VCS gun (e.g. speed 8, no accel, distance 450) you can have really massive amounts of data. So you may be deciding the best angle to shoot at based on several thousand previous pieces of data. Whereas with DC you're only looking at 35, 50, maybe 200 scans at most, so if the enemy's curve is pretty flat in that segment, VCS may be better at picking up minor differences. Probably only applies vs. a few of the best RandomMovers, but still... --David Alves

So, if you have a DC gun now, then don't you qualify for the TopTenDCParty? =) --David Alves

  • I thought only fully DC bots got you in the door? I believe WaveSerpent still surfs VCS. -- Simonton
  • What he said! -- Voidious
  • Aw, I wanted to party =(. WaveSerpent's movement doesn't actually use VCS, but it doesn't really use DynamicClustering either. I think I'll start working on a DC movement soon though... -- Kev

Congrats on the rating jump, dude, really awesome! -- Voidious

You cannot post new threads to this discussion page because it has been protected from new threads, or you do not currently have permission to edit.

There are no threads on this page yet.