Archived talk:Pugilist 20090529
- Pugilist Sub-pages:
- Pugilist - Version History - Help Requests - Guess Factor Chat - PugilistGL - PugilistGL/Code - Archived Talk 20040501 - Archived Talk 20090529
|
I guess the 2K clubs are not for me...
<image referenced as "http:/robocode/uploads/pez/P1.6.4.4.png" lost in the sands of time>
This P only loses to one minibot yet. Quite surprisingly this is Tityus. (Although, it's almost a tie.) I would have thought that the Tityus gun would be very vulnerable to P's style of WaveSurfing...
-- PEZ
Could you please explain what you do for the edge-smoothing protection? -- ABC
What I would like to do is to have two or three extra bins on either side of the edges and then mirror the bins on the inside of the edge to the outside when writing to the stats array. But that won't fit in my byte starved mini. Instead I just do index = min(index, FACTORS - 2) before reading the data. That way reading the last (GF1) bin gets the next last instead and the GF1 bin weights less. Does this make any sense? How about some code...
double smoothedVisits(int index) { index = (int)Math.min(index, Pugilist.FACTORS - 2); double smoothed = 0; for (int i = 0; i < Pugilist.FACTORS; i++) { smoothed += (double)visits[i] / Math.sqrt((double)(Math.abs(index - i) + 1.0)); } return smoothed / Math.sqrt(distanceToTarget() / bulletVelocity); }
-- PEZ
Check this out...
http:/robocode/uploads/pez/P1.9.4.2_Ranking.png
Now I only need 5 points and I will have fulfilled my new years promise of 2004 - with a mini. That would be sweeet. But how? The air is really thin this high in the ranking table nowadays...
-- PEZ
3.76 points and 327 battles left :D --deathcon
pez.mini.Pugilist 1.9.4.3b 2001.73 details graph 228 15-5-2004:14:56
--deathcon
Looking good! What did you do? Found that Thread.sleep() bug or something? I know I know, too early to say... -- Pulsar
I surely touched 2K ground a while there! I've decided to always treat that as a sign. =) Thanks for letting me know. Now it's 1991 with 426 battles. And, more importantly, I'm past DT! It's gonna be a high tensed PEZ until it's decided if it's stay there. Seems my performance against iiley's PM guns has gotten worse though. P is not undefeated in mini any more. But since I know what changes I made I just might be able to correct that. Problem is, as always, byte starvation. I only have three (3!) bytes left as it is. If anyone sees where I can save some bytes, please, please let me know. Tons of thanks to Jim who helped me save 13 bytes by being smarter about my wall segmentation. -- PEZ
I think I might have some clues to improve my wae surfing in particular and maybe wave surfing in general now. It seems that segmenting on wall proximity instead of acceleration improves performance against many pattern matchers, but degrades over all performance. This could mean that wall-segmentation works against many pattern matchers. But, more likely I think, it' is acceleration segmentation that gives these pattern matchers an easier target. I can't explain how, but my gut feeling is that the time variable involved in pattern matching somehow gets important when the target is segmenting its movement on acceleration. What do you rocket scientists out there think about this? -- PEZ
I really wish I'd know... I have made up many theories about why the PM bots perform so well against wavesurfing opponents, but none of them work as well as expected when I implement the correspondent "solution". I also don't know what to say about your feeling regarding acceleration segmentation, if you test it further and it evolves from a "gut feeling" to a proven method, please share ;). Atm, my feeling tells me that the only way you can improve performance against good PM guns is by reintroducing some kind of random factor, slightly sacrificing dodging performance against the "typical" GF gun. -- ABC
- I think that PM guns pick up on reversing very effectively. How often do you stop and *not* change directions? I would imagine that would be a very easy pattern to recognize. It takes 5 ticks to slow and 8 ticks to accelerate back to max. A bullet can travel quite a bit of distance in that 13 ticks. The escape envelope is significantly reduced from that shorter distance. Any reduction in the escape envelope is an increase in the likelyhood of being hit. Try making four calculations on your reverse factors: one full out ahead, one full out reverse, one ahead at velocity 4, one reverse at velocity four. Maybe the slowing will break up the easily matched pattern on reverse and find you 3+ points =^> -- jim
Hell will freeze before I do that. =) -- PEZ
1997 with 407 battles fought. 2K club better prepare a chair for Pugilist. Even if it will collect some dust while I figure out where to find the missing points. =) -- PEZ
I really thought you had it, Pug was 2001 after about 200 battles with a positive momentum. Depending on how deperate you are to make the club, i reckon you could actually tip the scales by removing a couple of your older bots (Mako, Gloomy and Frankie all have high PBI's). As they're your bots there is no reason you couldn't, it just the ethical issue you need to think about....Brainfade
=) Gloomy must have been lucky. Those old bots are too dear to me for me to remove them. P must do this on his own I guess. He's like SilverSurfer on that account. Suffering alone. -- PEZ
No pain no gain... 460 battles , 1996.83 pts... That 1.9.7b.6 looks very good, maybe u get the 2K... -- Axe
Thanks. But what's bothering me is that I only can do it with this targeting bug in place. It's the most peculiar thing I've yet come across in my robocoding. And, I've come across one or two peculiarities. =) -- PEZ
I really understand what u are talking about, sometimes is like rc universe laws and properties conspire against the logic. -- Axe
Well, 1989 it is now with 849 battles. I think maybe that the overload of mini battles can have dragged it down some. Seen it happen before. -- PEZ
As usual it wont last. But it sure is a nice picture (literally):
http:/robocode/uploads/pez/P1.9.9.4-110.png
=) -- PEZ
congrats on the 2000-club by the way! Well done!!! -- Pulsar
Contgrats from me too. Way cool !!! --deathcon
Thanks! Now this is my road map:
- Push Pugilist a few points higher, making it a stable member of The2000Club despite the drop in points from all those mini battles.
- Create a MegaBot, CassiusClay, with the explicit goal to dethrone RaikoMX. It has been allowed to rule alone for too long time now. =)
I know step 2 there can be a too hard for me, but I think I must try. One thing is for certain; If I don't try it I won't make it. Lacking Jam's talent I can only answer with hard work and persistance. And I've got plenty of the latter. =)
-- PEZ
What can I say? Congrats!! A truly incredible ranking from a mini. I look forward to duking it out with Cassius. ;-) -- Jamougha
Thanks. It'll be like "old times". Only this time I hope to end up the winner. =) -- PEZ
After i cribbed your gun, i changed the firing condition so it's something like:
(robot.getEnergy()>2||robot.getEnergy()>target.energy||(!target.isFiring()&&robot.getEnergy()<target.energy))
And in the (few) tests i did, it seemed to give a small rise in overall score, it especially seems to help against iileys bots... --Brainfade
Yes, I think there is a bit more bullet damage as a result. Can't fit it in Pugilist, but I'll keep it in mind with CassiusClay. Thanks! -- PEZ
PEZ, do you mind me introducing a wiki bot featuring the WaveSurfing of Pugilist and a Moebius style PM-gun? As most WaveSurfers have problems with PM-gun, i am curious how high this bot will rank. --Loki
Of course I don't mind. I'm as curious as you are about the results! -- PEZ
Ok. I think i will have a version ready this evening. How do you like the name "wiki.mini.FeederOfRavens" ? --Loki
Ravens? Still in norse mythology land? =) feeder of ravens is cool. But feeder of vultures would be more videly understood I think. -- PEZ
yes, still in norse prose land. Although 'kennings' are known in Dutch too. I thought using a kenning would be a nice idea for a mostly Swedish bot (and so i can keep the norse gods 'exclusively' for the bvh.* series of bots =) ).
The basic version is 'clean compiled'. Pugilist set-up is quit clean for a mini, i could quite easily add the PM-code! I will now run some tests and upload it soon. --Loki
It's out! Cool! -- PEZ
Yes. Let's see where it ends up. --Loki
Shrinking help
The difference in rating between 2.4.03 and 2.4.14 is quite striking; 1977 vs 1959. Yet all there should be to it is a failed attempt at shrinking. Here's the relevant .03 code:
static Point2D wallSmoothedDestination(Point2D location, double direction) { Point2D destination = new Point2D.Double(); int tries = 0; while (tries < 2) { double currentSmoothing = 0; while (currentSmoothing < 100 && !fieldRectangle.contains(destination = project(location, absoluteBearing(location, enemyLocation) - direction*(Math.PI / 2 + 0.2 - (currentSmoothing++ / 100.0)), enemyDistance / 5.0))); direction -= direction; tries++; if (currentSmoothing < 45) { break; } } return destination; }
And here's the .14 code:
static Point2D wallSmoothedDestination(Point2D location, double direction) { Point2D destination = new Point2D.Double(); int triesLeft = 1; double currentSmoothing; do { currentSmoothing = 0; while (!fieldRectangle.contains(destination = project(location, absoluteBearing(location, enemyLocation) - direction*(Math.PI / 2 + 0.2 - (currentSmoothing++ / 100.0)), enemyDistance / 5.0)) && currentSmoothing < 100); direction -= direction; } while (triesLeft-- < 1 && currentSmoothing > 46); return destination; }
Anyone that sees where these two snippets should differ in functionality?
-- PEZ
I think the second one will only loop once in the do/whie. You set triesLeft = 1, then do..while(triesLeft-- < 1). That triesLeft-- will evaluate to 1 and then decrement triesLeft. Maybe you want "triesLeft-- > 0"? -- Voidious
{Edit conflict]First thing that catches my eye is the 'triesLeft-- < 1' construction. If I understand it correctly, the do-loop will be done only once. triesLeft starts with 1, then tested if it is smaller than one and then decremented. I think that you wanted to do something like 'triesLeft-- > 0' -- GrubbmGait
Just in case you didn't know it, --triesLeft will decrease and then use that value in your evaluation, while triesLeft-- will evaluate the present value of triesLeft and then decrease the variable independently. -- Martin
Thanks guys. Yes I knew about the post-decrement and did that intentionally. But I reversed the logic as you both noticed... Great. New hope for Pugilist! Since most of the > .03 releases used the buggy code I might even have a version among them that will kick some major ass with the bug nailed! -- PEZ
Nope. Checked it now, this logic error was introduced with 2.4.12 so I don't have a Pugilist hiding there that would outrank 2.4.03. Not to mention 2.0.9 which was the strongest Pugilist by far. It's awful having spent so much time trying to improve a bot and never ever coming close! -- PEZ
Yeah, well, I don't have that much pity for you ... I am at that stage with Komarious, and still about 40 points behind the best version of Pugilist in the mini-rumble. :P (j/k) -- Voidious
Do you know what version of Pugilist has the highest rating in the MiniBot rumble? As far as I can tell, it's 2.2c with a rating of 2076, but I thought I recalled seeing a version at 2080+ at one point. -- Voidious