Archived talk:Pear 20090613

From Robowiki
(Redirected from Pear/Archived Talk 20090613)
Jump to navigation Jump to search
Pear Sub-pages:
PearVersion History - RRGC - Archived Talk 20090613
       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.     

You only score 70% rz.HawkOnFire, which is a HeadOnTargeting bot, so it appears your wavesurfing code has some bugs. You might want to try the WaveSurfingChallenge to help debug your bot. Also don't forget to use RobocodeGL, it's a huge help. Good luck and welcome back! --David Alves

Thanks David, yes there maybe many some bugs,but it score 70% rz.HawkOnFire is right reasonable to the current Pear's WaveSurfing,it thinks all bot use a guess factor gun. And thanks for RobocodeGL, it really a cool tool, It let me to see my waves flying(This is my first do robocodeGL in Pear). Cool-------- ;] -- iiley

It depends on the flavour of your wave surfing if you'll be able to get 99.9%-ish against HawkOnFire. But if your flavour is uncomprimised peak-avoiding surfing then 70% indicates bugs. -- PEZ

Oh---I tested some surfers,they did very good, but is all surfers has some trick to HeadOnTargeting Bot. Or there is some mistake of my understanding of WaveSurfing. Lacrimas's movement without trick did not good either.Now same to Pear. -- iiley

Some WaveSurfers have special cases for HOT. But not all. CassiusClay hasn't. But then again, CC has no special cases anywhere. =) Anyway, Lacrimas style of wave surfing isn't the same kind of surfing that's used by the top bots. Maybe if you read the CassiusClay/Butterfly page you'll see what I mean with "pure" peak avoiding surfing. -- PEZ

Thank you, I think i have to look the successful WaveSurfing movement much more. Can't imagine a "pure" peak avoiding surfing (I think old Lacrimas and Pear's movement should be them) can beat HOT so well. ~~ -- iiley

YALT doesn't have any special case code for HOT bots... other than initializing the enemy hits array as if it had been hit once with HOT. It scores 98-99.7% depending on which version of YALT you use. --David Alves

1941! Congratulations! Still have a lot of work to do on trashing those simple targeters (if that's what you want to do), but Pear is strong against the mid range of bots. -- PEZ

Thanx, I focus on the surfing against simple targeters this moment,you know Pear's WaveSurfingChallenge score,it is not a good surfer.Maybe many bugs. Yeah,it rank higher than my old Lacrimas now. A good beginning ;] -- iiley

Steady improvements! Looks like your surfing is starting to work. Some of those HOT bots are left full of regrets. =) Maybe it's time you payed some attention to your gun? It's probably full of old non-asserted assumptions. -- PEZ

Yes, surfing was starting to work, but it can't get over 99% against WaveSurfingChallenge BotA, i think i could keep improve the movement for a time. -- iiley

What is a "pure Descartes reference frame"? Google doesn't seem to know, and neither do I. :-P --David Alves

It should be "Cartesian co-ordinates". -- iiley

Hu-------- ``1993.33 after 553 battles, near to The2000Club .~ ;] But i can't judge is my movement or my gun is weak this moment~;[ --iiley

and almost past SandboxDT! Great work! Btw. Lacrimas is still in the top-20, altough you haven't changed this bot is a long time. I think this shows how strong this bot was and is. --Loki

Yeah! But you seem to going the same path as DT does. By raw strength! Add some finess to your surfing and you'll be challenging Mue for the crown. By the way. Was the change in surfing style the only change you made with this version? I wouldn't think it should matter if you go for the indents or avoid the peaks... Maybe you have something in the code left from Lacrimas that works better with goto-style surfing? -- PEZ

Thank you Loki, PEZ, now 1997.05 after 612, higher than DT now, yes i want to do a surfing with the same style of yours(most of the top surfers), and i want to predict my movement accurately, so i surf around the wave center, do not stop, just clockwish or unclockwish, But i cant let it move well against rammers, you can see Pear before this version lost too much for rammers(even DevilFISH), it can not escape well, so today i tested the old goto-style surfing, it did very better when enemy is close to me, but i can't judge is it better when i far from enemy.However it cannt get more than 99 against WSCBotA. -- iiley

I don't think you need to change your style of surfing. SilverSurfer surfs pretty well using goto-style. Evasion is tricky with a surfer, no doubt. Though CC doesn't do anything particular when in close combat. Only against rammers it steepens its evasion angle. Note that CC doesn't think DevilFISH is a rammer though. If your goto-style surfing helps you against rammers and close combat, stick with it. Perfection against HOT is mostly a matter of getting those bugs out. -- PEZ

Yes, I think so. Only maybe goto-style did worse against PM-guns, There must be bugs in my surfing, it did not as good as other surfers against simple guns. -- iiley

Of course there are bugs in your surfing. Bugfree surfing means an automatic 2020+ rating. -- PEZ

How high would a surfer with HOT score? -- Alcatraz

Yeah I don't know about that 2020 thing... Maybe "bugfree surfing and a good gun and good near-wall behavior means an automatic 2000" :-P --David Alves

Not too high I think. But it could be tested of course... I could make a version of CC fire with HOT and that would be a check. Even if CC's surfing isn't [CassiusClay#bugs bugfree] yet, it still works pretty OK. Broken surfing works if it's broken the right way. =) About your literal interpretations of what I said.... Bugfree surfing with a reasonably bugfree implementation of a good gun strategy; 2020+. At least. -- PEZ

Hey!!! once a top after 63 battles. ;] http://pezius.com/robocode/pear0.58-63.png -- iiley

Way cool. 63% against Shadow. That must be some kind of record. -- PEZ

Can see how excellent Butterfly style is, I just changed the surfing mode, goto-style, my old ahead-back style, very different score. -- iiley

It really is Shadow style I think. Or old-school Shadow at least. But I think it depends on implementation more than style. The stop position is of course crucial for Shadow / Butterfly. SilverSurfer uses goto-style and handles the dive-in protection by setting the movement vector to zero if moving fully would bring it too close to the enemy. It's equvalent. The important thing is to deal with it. -- PEZ

Only 65 battles so far, but most of those results are very impressive. -- Alcatraz

In my old ahead-back style, my bot cannot stop, usually shake his body on the right position, I think it does matter before, but maybe, now i think it had less velocity index of 0 segment, version 0.57 use goto-style, some times stops. Maybe the stop time cause some thing. -- iiley

SilverSurfer makes sure it stops when it has reached its destination. This to make sure the bot width is minimal when the bullet passes. -- PEZ

You've definately sorted out some bugs:

Fighting battle 9 ... tide.pear.Pear 0.58,rz.HawkOnFire 0.1
RESULT = tide.pear.Pear 0.58 wins 4291 to 0

Too bad the server disregards that battle. Some bots (CC included) makes sure they take a small blow in the end of the match if it seems they are going to shut out the poor opponent. Nothing I can really recommend though. Probably HawkOnFire will probably finally hit Pear if it gets enough battles to try.

-- PEZ

Yeah, I know the minimal width now, I had never think of this before, Pear before 0.56 always drive as fast as he can when reach his destination, so i can see some times it hit some close peak. But i dont think always stop when the bullet passing me is the best way, some times you must have a high start velocity, especially the close fighting. --iiley

Well, maybe it is a contingency, in my testing, Pear 0.58 can't get more than 99 against WSCBotA. -- iiley

I know a lot about SilverSurfer/WaveSuffering, but some of the details I don't know. What I do know is that SilverSurfer might be the best close-combat bot in existance. Maybe Axe has some special case about not stopping when it's close combat. SilverSurfer just oodles of special cases. -- PEZ

Actally you, iiley, and Axe are a bit similar in your remarkable attention to detail. -- PEZ

About not making 99+ against WSCBotA. It could be something particular with stationary enemies. Not saying that that is the case though. -- PEZ

Pear download link is broken, it's my RR@H client is hanging when it tries to download... err, nevermind--David Alves

I upload it to the robocoderepository, and changed the participats page. -- iiley

Consider running a TargetingChallenge/FastLearning instead of a normal TargetingChallenge... since it consists of 35 round battles it's a better indicator of performance in the RoboRumble --David Alves

Yes, I am running it already, Running season 14 now, result come soon. ;] -- iiley

[, only got 89.05 in FastLearning, a bad gun. -- iiley

Hey! 2020! Congrats Tide personnel (iiley & Xiemin, right?)! -- Axe

Thank you, that's right, me and Xiemin. :) -- iiley

Answering some questions & comments above:

  • SS indeed tries to minimize the surface when a bullet is passing, of course the cost of this is a EscapeEnvelope slightly reduced. But note that i only do this if i can, if the "best gf" is GF 1.0, SS wont try to stop (unless that the enemy is a HOT).
  • SS only surf if distance > 150, if the distance is < 150, it just go to full speed in a angle of 130 dgs. I once told this, but PEZ didn´t believe, perhaps it is so stupid (the algo, not PEZ, of course) that it is almost unbelievable. The problem is that WaveSurfing is quite useless in distances that close, u just don´t have time to avoid the bullets, so i prefer to take the risk of taking one shot to put my bot in a good distance.
  • "iiley, and Axe are a bit similar in your remarkable attention to detail" - PEZ has always a nice word to everybody, don´t he? And again he is correct, that is how i am, it´s a gift... And a curse... :) -- Axe

Aha, good comments, Axe, PEZ always give me big encouragement, thanks him very much. ;] The distance of < 150, you are right, WaveSurfing is hardly useful, I think this is a problem in Pear 0.58, it surfs all distance, so it lost too much to some rammers, i should fix this in next version. -- iiley

That probably wont help u against rammers, SS also has a particular casing to deal with rammers, i try to run-like-hell from them... -- Axe

Yes, it is a intractable problem, i maybe have to has a particular dealing too. Pear 0.57 has one.:) -- iiley

Just saw that Pear 0.58 wins the PremierLeague. Nice!! -- iiley

  • iiley, where are these results presented?--Loki

For your information CassiusClay never stops surfing as long as there are waves in the air to surf. When there's no waves in the air CC chooses either forward or reverse direction whichever brings it farthest from the enemy. The latest test version of CC has a bit of a dive-in problem, but 1.9.9.09 didn't and it was among the strongest around when it comes to close combat. Maybe surfing isn't particularly meaningful at distances < 150. But introducing special cases might mean introducing bugs so I rather avoid it if I can. Special casing for rammers I have found necessary though. What I do is that I don't wait for the rammer to get close before I try run away at steep angles. -- PEZ

iiley 89.05 in TC35 isn't a bad gun. Look what guns you have behind you. SandboxDT 2.11 is almost 2 points behind! Yet, a few lessons learnt in the Fierce Battle (tm) between Tityus and its spawned competitor Raiko could probably boost your gun. I haven't looked at your gun code, but what Jamougha proved to us was that:

  • waves are better fired every tick for fast learning
  • with faster learning you can segment harder. Why settle with anything less than distance, velocity, acceleration, walls and velocity-change timer?
  • rolling the stats isn't necessary
  • smoothing the stats is a waste of code (at least for Tityus based guns, your reslults may vary)

Jam also utilizes the fact that while the enemy bot is accelerating or deccelerating the velocity-change timer segmentation can be used for something else.

-- PEZ

Thank you very much,PEZ:) i am just thinking how to improve my gun, that's great informations, i will have a try about it. -- iiley

That Pear is getting more and more indigest. PoisonedPear should be a better name... :) -- Axe

Aha~~Cool name,maybe make a Virulent Fruit Series bots. Later Lichee, Watermelon, oh, i eats fruit now, not smoke.;} -- iiley

iiley, I wish you best of luck with improving your gun. It could mean quite a few rating points for you to bring it up on par with the top guns. Also you might want to takea look at my wall segmentation. I think it's the best around. After all, Jamougha started to use it too, which must mean something. =) Even though Jam doesn't wall segment as heavily as I do. -- PEZ

Oh~ your wall segmentation, I had noticed that, that is different from i had seen before, but had not read it clearly, then i will reread it clearly. Aha, Pear's gun segmentation become more and more like Bee. I must do some new try i think then. -- iiley

Back to 0.58 to see does i made some worse. -- iiley

It seems that i really did some thing worse, 0.58 is the best version, after it i make it down. -- iiley

Why do you think we call it WaveSuffering? =) -- PEZ

Like SilverSurfer's theme picture, i think ;]. -- iiley

Like SilverSufferer's theme picture you mean? -- Kawigi

  • Yeah, am i right? -- iiley

What is an "Explosion Increasing Hit Statist System"? --David Alves

It is about a arithmetic different from RollingAverage, you know if you continuously rate a value in RollingAverage, your value will be like "newValue = oldValue*0.99 + 0.01", in about 5 times continuously, the value will be about 0.49, it increases slower and slower.And they is the difference to EISS that it increases faster and faster like "newValue = oldValue*2"(first oldValue must bigger than zero). Example first oldValue = 0.01, first rate it will increase 0.01, seconds will be 0.02, if you want decrease it, you can set "newValue = oldValue*(1/2)". I think this is useful for hit factors for WaveSufering. If you are hit by a Simple Gun, the certain factors will be continuously rated, it will be a very large value, then you can always avoid them. -- iiley

1st: tide.pear.Pear 0.58	3166	1300	260	1386	220	0	0	26	8	0
2nd: tide.pear.Pear 0.61.8	1402	400	80	851	70	0	0	8	27	0

1st: tide.pear.Pear 0.58	3155	1200	240	1475	239	0	0	24	11	0
2nd: mue.Ascendant 1.0	        2058	550	110	1286	112	0	0	11	24	0

I think there must be some very good thing in 0.58. -- iiley

I think you should be careful when drawing conclusions from a single 35 round battle. In my experience the score shares obtained in these battles vary by 20 to 30% (of course only when both bots are able to hit each other). --Mue

Very nice iiley, but can you do this?

1st: abc.tron3.Shadow 3.52	84547	30100	6020	42469	5947	10	0	603	398	0
2nd: mue.Ascendant 1.0		67080	19900	3980	39022	4177	1	0	398	602	0

Doesn't mean much in the rumble, but it's nice for one's ego... :) --- ABC

Wow thats a beating, i really have to look into long battle performance ... --Mue

Yeah, i know that Mue, i posted that just want to say i improved for days, but my old version seems stronger, that score i'd tested several times, on average 0.58 did better than 0.61.8 against top bots. That means not, although, i'm testing a long battle, i think Pear 0.58 must can't do good agasint Ascendant 1.0. -- iiley

wiki.Pear 0.61Bee only got 2042 score, then i konw my large problem was my movement, thanks PEZ's Bee let me know this. -- iiley

1st: tide.pear.Pear 0.58	78173	26750	5350	40790	5265	18	0	537	465	0
2nd: mue.Ascendant 1.0	        72280	23250	4650	39743	4633	3	0	465	535	0

Pear 0.58 wins a little margin in 1000 rounds. -- iiley

I want to got 2040, my last goal of Pear. God, please!!! -- iiley

2042.5 after 700 battles, Thank you God, kiss you!!! -- iiley

Maybe this time (0.62.1) you reduced the segment a bit too much. =) That's good of course since now you're starting to home in on where the segmentations should be. Anyway, might I suggest you try segmentations like: 3 velocity, 4 distance, 3 acc, 5 time_since_vchange and 4 wall proximity? Here "time since velocity change" should be measured in fractions of the travel time for your next bullet to hit your enemy and be divided something like TIMER_SLICES = { 0.1, 0.3, 0.7, 1.2 } (that's from Bee). And "wall proximity" should be measured in "my" way:

    public double wallDistance(double direction, Rectangle2D fieldRectangle) {
	double targetDistance = distanceFromTarget();
	for (double gf = 0; gf < 2; gf += 0.01) {
	    if (!fieldRectangle.contains(PUtils.project(gunLocation,
			startBearing + middleBin * bearingDirection * direction * gf, targetDistance))) {
		return gf;
	    }
	}
	return 2;
    }

(That's a method in the Wave class used by Bee.) I slice that wall distance up like WALL_SLICES = { 0.15, 0.35, 0.65, 0.95 }.

It would be an interesting experiment even if it proves not to work for Pear.

-- PEZ

Thank you for the good detail, maybe it can be a good experiment in Pear's Gun, And the "time since velocity change" was really clever:), Pear 0.62.1 did not reduced many segments in Gun, just in surfing stuff segments, I am focusing the movement recently, it's a experiment of my movement. -- iiley

Ah, when I had written my suggestion I realised you were probably talking about movement. But you can revisit it when you turn some attention to your gun. =) -- PEZ

By the way. Time since velocity change can be a good surfing parameter. -- PEZ

er---In my testing,more surfing parameter would be wrong, but Time since velocity change could be a important parameter i had never tested in my surfing, it may give Pear a improvement. -- iiley

Do you use a fast learning stat buffer in combination with the one you describe above? -- PEZ

yup, but not any on fast stat buffer, about the times of the statist's dimension like this:

		fastBuffer     = new Statist[DIST_D];
		distVeloBuffer = new Statist[DIST_D][VELOCITY_D];
		normalBuffer   = new Statist[DIST_D][VELOCITY_D][BEARING_D];
		dvbwBuffer     = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D];
		slowBuffer     = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D][MOVETIME_D];
		bigSlowBuffer  = new Statist[DIST_D][VELOCITY_D][BEARING_D][WALL_D][MOVETIME_D][WALL_D];

I think it can learn very fast and when times goes by, it learn subtly. But the segments have to be improved. -- iiley

Yes, but you should probably add an unsegmented buffer as well. Otherwise you might need to learn really simple targeting the hard way at each distance index. -- PEZ

AHa, i made a mistake, I posted the targeting's stat buffer, yeah, in movement, i have a unsegmented buffer, and less dimension than my targeting. -- iiley

Yes, Pear, I do love eating you. Years after your last version update, you still kick major butt in the PremierLeague! Not to mention an awesome TargetingChallenge2K6 score. -- Voidious

Anyone know why Pear redefines the events? --Chase-san

That is because we have this [ai-code|http://www.ai-code.org] robot platform, we were tring to make a adapter to make Tide robots(like Pear) can be easily ported to robocode and AI-Tank. --iiley

I know we never "met", but - does this mean you're back to Robocode, or just stopping by for now? Pear is still quite strong, particularly its gun, as seen in the TargetingChallenge2K6 and TargetingChallenge2K7. -- Voidious

Oooooo, I see. --Chase-san

Just, some times back here to see some thing, miss here. :) After our ai-code company closed, i don't have any chance/time/interesting to back to robocode, i'm waiting to see a new revolution technic to beat down the current king-technic WaveSurfer bots. The main technic is stopped at GuessFactor Gun + WaveSurfer Movement for years, am i right?, i have no idea what will be the next, maybe some day it comes out, you guys will do it, or me? Anyway, very expecting the next revolution, like the PatternMatching time, GuessFactor time, Wave time, Random Move time, WaveSurfer time, exciting times.:). --iiley

DynamicClustering has been pretty reliable (no one has gone at it hard lately, but many of top bots use it), and if Simonton has anything to say about it there is gonna be another PatternMatching time. --Chase-san

I think GuessFactors and WaveSurfing will be integral parts of Robocode forever, but that doesn't mean there's nothing new going on. Any form of precise bullet dodging will be called WaveSurfing and a GuessFactor is just about the most elegant way to describe a firing angle. There are 9 bots in the top 20 that don't fit the traditional GuessFactorTargeting / VisitCountStats / WaveSurfing setup: WaveSerpent (no bins in its surfing), Shadow (DynamicClustering gun / surfing), Chalk (DynamicClustering gun / surfing), X2 (DynamicClustering for gun, at least), SilverSurfer (unique gun), Lukious (DynamicClustering gun / surfing), Toad (DynamicSegmentation for gun), Ali (log-based gun), and Engineer (NeuralTargeting and NeuralMovement / surfing). There's still plenty of room for innovation while still making use of GuessFactors and WaveSurfing! =) By the way, DynamicClustering == TronsGun.

I don't know if there is room in Robocode 1v1 for any more revolutions, but Robocode 2 is not so far off. =)

-- Voidious

Thanks Chase-san and Voidious, interesting, i think i'v missed the good things, Robocode 2? -- iiley

Well, Fnl now has official control of the Robocode project on SourceForge, so he has been releasing some new versions of Robocode with lots of nice development features: debugging graphics built in, many nice interface changes, integrating the RoboRumble, and lots of other stuff. Anyway, he started a discussion about Robocode 2 a few months ago on Robocode/Future. We haven't discussed it much lately, but I think he's still planning to do it eventually. -- Voidious

I have talked to Fnl on this actually, and he seems to be prepared to do it. He has some nice Server/Client/Gui things going on there. I don't think it will be all to RC1 compatible like most the talks we're attempting to have it be. --Chase-san

There are no threads on this page yet.