Archived talk:Pugilist 20090529

From Robowiki
Revision as of 04:51, 8 October 2009 by Robobot (talk | contribs) (moved Pugilist/Archived Talk 20090529 to Archived talk:Pugilist 20090529: move to talkarchive)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Pugilist Sub-pages:
PugilistVersion History - Help Requests - Guess Factor Chat - PugilistGL - PugilistGL/Code - Archived Talk 20040501 - Archived Talk 20090529
       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.     

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:

  1. Push Pugilist a few points higher, making it a stable member of The2000Club despite the drop in points from all those mini battles.
  2. 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