Talk:Diamond

From Robowiki
Revision as of 13:58, 12 August 2009 by Positive (talk | contribs) (Clever!)
Jump to navigation Jump to search

I can't believed it, it almost the same thing I'm doing in my TheRiver! (I have the ideas about displacement vector, but never known that it is called displacement vector) Anyway, nicely done! Here are my result that I just ran if you want (EDIT: more, and the debugging graphics is the exactly same as one I'm creating)

The one problem of this robot is lack of one-on-one performance (or you will never see 9 2nds). I saw it lost to Shadow and Phoenix a lot.

» Nat | Talk » 06:16, 15 May 2009 (UTC)

Rank Name Score Surv. Bonus Bullet Dmg. Bonus Ram Bonus 1st 2nd 3rd
1st voidious.Diamond 1.0 14361 (13%) 10850 540 2807 164 0 0 6 9 5
2nd abc.Shadow 3.83c 13453 (12%) 10100 630 2633 89 1 0 7 3 5
3rd rz.Aleph 0.34 12804 (12%) 9600 270 2861 73 0 0 3 4 5
4th abc.Tron 2.02 12261 (11%) 8450 630 3052 127 2 0 7 3 3
5th kawigi.mini.Coriantumr 1.1 11909 (11%) 450 360 2998 101 0 0 4 3 3
6th florent.XSeries.X2 0.7 9472 (9%) 695 90 2349 84 0 0 1 4 2
7th ags.surreptitious.MiniSurreptitious 0.0.1 9411 (9%) 6550 0 2785 68 8 0 0 4 5
8th tzu.TheArtOfWar 1.2 9240 (9%) 6750 90 2355 42 2 0 1 3 4
9th abc.tron3.Tron 3.11 8050 (7%) 5400 360 2245 42 4 0 4 2 1
10th davidalves.Phoenix 1.02 7443 (7%) 5550 180 1679 32 2 0 2 0 2

Not so bad... 6th place. Lost to Mellaris, Shadow, Tron and Aleph. But it used to win them in battle full of top melee bots! » Nat | Talk » 10:03, 15 May 2009 (UTC)

I haven't focused on the 1v1 movement much yet, because it doesn't matter as much as other things and I don't want to get distracted by it. (There's no hiding what a 1v1 nut I've been so far in my Robocode career.) But the 1v1 performance is pretty decent, I think it's mainly that the gun has trouble hitting surfers (no accounting for firing waves or gun heat yet). --Voidious 13:38, 15 May 2009 (UTC)

Decent? It's very strong in 1v1! It's 1v1 pairings are nearly complete and it's sitting in 11th place. Though... it does get beat by the top mirror-bot in the rumble :)
Man... all these new bots are not only topping RougeDC which used to be in 12th, but are also causing shifts in ranking of old bots so they're now above RougeDC... damn... I really got to get my new stuff out of the garage to join in on this fun! --Rednaxela 15:38, 15 May 2009 (UTC)

Thanks! The gun doesn't segment on firing waves or gun heat or anything, so it's not a huge surprise that a mirror movement that is reacting to bullet fire ('cause I'm surfing) works well against it. What kind of gun is on PolishedRuby? And why is there no page anywhere for it? --Voidious 17:38, 15 May 2009 (UTC)
PolishedRuby is just the gun of the latest RougeDC version, on top of a basic 'goto location' based mirror movement, with very slight alterations to energy management. No page for it because 1) Not much to say about it 2) I'm lazy. Diamond is the highest ranking bot I can see that it beats I think, so it shows well how Diamond's gun is notably lacking (in 1v1) against it's own surfing movement. Of course, I'm considering making a second version of PolishedRuby, which mirror's the enemy's firepower and firing time as well... that might demonstrate it even more clearly... ;) --Rednaxela 18:21, 15 May 2009 (UTC)

Wow -- takes me over a year to make a decent gun and you churn out a brand new top melee and 1v1 bot in what, a month or less? --Darkcanuck 15:46, 15 May 2009 (UTC)

Thanks, but that's so not a fair comparison. =) Basing anything off the Dookious movement would yield a really nice rating in 1v1, and I've got plenty of experience with DC and Minimum Risk Movement from Lukious and BrokenSword. --Voidious 17:38, 15 May 2009 (UTC)

It lost to a LOT of surfer, count from lowest score: Phoenix, Dookious, Ascendent, RougeDC, CassiusClay, Chalk, Shadow, YersiniaPestis, Gauss, DrussGT, Garm, WeeksOnEnd, Hyperion, LifelongObsession, CunobelinDC, MathcupAGF (not a surfer actually) and PolishedRuby (mirror, as Rednaxela mentioned) Perhaps some weight on firing scan will make you score better. » Nat | Talk » 16:12, 15 May 2009 (UTC)

Don't remind me, I'm trying not to focus on 1v1 here... :-P --Voidious 17:38, 15 May 2009 (UTC)

I'll give you some time before I resume working on a melee bot :-D Seriously, nice work! And it seems strong in 1v1 too! Are you also using your displacement targeting in 1v1? Or do you switch to regular GFs? --Skilgannon 16:14, 15 May 2009 (UTC)

I also use the displacement targeting in 1v1, getting about 87 in the TCRM right now (full results soon). One point of note is that I invert the vectors depending on the enemy's orbit direction, just like GFs, but I calculate orbit direction relative to the bot closest to the target (whether that's Diamond or another enemy). In 1v1, it's probably not acting much different than GuessFactors, but in Melee, I think it should work better than GFs. If nothing else, it seems far more "right" to me. I was actually considering "wall smoothing" the vectors instead of throwing out ones that would end up off the battlefield, then it would act even more like GFs. ;) --Voidious 17:38, 15 May 2009 (UTC)

Awesome (re)entrance you made in melee! You and justin really shake up that rusty top-10 there. Seems that in melee the gun is more important than in one-on-one. Maybe it is time to say farewell to my old CT-gun . . . --GrubbmGait 17:29, 15 May 2009 (UTC)

Thanks. I was surprised how much the gun mattered in Melee. I had it in my head that HoT is OK in Melee because of bots like HawkOnFire. This is partly true, of course. But I developed the basic movement first using only HoT, and when I upgraded the gun, the performance in my test beds shot up dramatically. --Voidious 17:38, 15 May 2009 (UTC)

Just asking quick, does this robot select enemy or do the thing like the one describe at Shadow/ShadowsMeleeGun? » Nat | Talk » 06:42, 18 May 2009 (UTC)

Nope, nothing like that. I actually don't remember ever seeing that page. Maybe I'll save that idea for when I run into a wall with other improvements. Which might be soon. =) --Voidious 14:07, 18 May 2009 (UTC)

Congrats with going up to 7th in melee (again)! I'm guessing all those red arrows probably have something to do with it. :) --Positive 09:58, 28 July 2009 (UTC)

Isn't the red arrow present the vector of the displacement vector? » Nat | Talk » 11:35, 28 July 2009 (UTC)
Thanks! I actually have no idea what caused it. =) I've just been working on the gun for 1v1. The red arrows are just some new graphical debugging in the gun, indicating the firing angles for the most similar situations. The yellow arrow is the chosen firing angle, and the yellow line through the yellow arrow indicates the "bandwidth" used in the kernel density estimator. --Voidious 13:59, 28 July 2009 (UTC)
Well, improving the one-on-one gun/movement could gain a number of points. When you are the last survivor, you gain the last survivor bonus, ain't you? » Nat | Talk » 14:11, 28 July 2009 (UTC)
Since you said you want these things pointed out to you Nat, "don't you?" would probably be more correct than "ain't you?" in this case I believe. The words "gain the last survivor bonus" behave as a verb, which means it's a matter of "do" or "do not". Well the wikipedia article does say that "ain't" is sometimes used for "do not" in some dialects, but I'd call that a rather obscure and that "don't" would make more sense. --Rednaxela 15:43, 28 July 2009 (UTC)
Thank you very much. Actually I mean the 'are not' for the word 'ain't' I usually forget that verb got the auxiliary verb do. » Nat | Talk » 16:00, 28 July 2009 (UTC)
Yes, the 1v1 changes can help in Melee, but I've had a lot of 1v1 improvement already and not much of it helped the Melee rating. My best guess is that one of my gun fixes just affected Melee way more than I realized it would... --Voidious 19:16, 28 July 2009 (UTC)

--Rednaxela 02:33, 3 August 2009 (UTC) Nice stuff Voidious! Hm, thinking about this just made my realize that my new surfing code I'm about to begin could also work as a good codebase to build melee movement on. Hopefully I can catch up to this melee activity, because even after I get that movement working I'll need to get a working melee gun since my past guns wouldn't work at all. Nice debugging graphics too btw :) --Rednaxela 15:43, 28 July 2009 (UTC)

You mean you actually watch battles with interesting new bots/versions? Last time I did that was . . . eh . . years ago. Did you notice btw that in the last few months 4 bots passed the old nr 4 Tron 2.02, which held that place for, well, years? Time to convert my ideas for GraafDracula to real code, so I can take advantage of the momentum and enter the top-3. ;-) --GrubbmGait 18:01, 28 July 2009 (UTC)
Thanks. =) That Melee top 3 has been the same since I started Robocoding, so I think we all have some catching up to do. :-P If you start work on the Melee movement, you can add simple radar, target selection, and power=3 Head-On Targeting and do surprisingly well. Early dev versions of Diamond were like that. From there, working on the gun and the Wave Surfing was very fun and familiar.
And I hear you, GrubbmGait. I've watched some battles recently and I find myself thinking stuff like, "whoah, DrussGT is yellow?" =) --Voidious 19:16, 28 July 2009 (UTC)

Woah 6th place! And you made your survival rate a lot higher. Damn, what are you doing to that thing? :) --Positive 01:03, 3 August 2009 (UTC)

1.241 through 1.243 have just been changes to bullet power. It's always amusing how the simplest stuff can be worth so many points. =) 1.242 actually had even better survival, but less rating points, so I made it a bit more aggressive in 1.243. I was actually getting pretty discouraged until 1.24... I had barely improved melee performance since 1.0. But now I'm excited and thinking of some new ideas to try. =) --Voidious 01:14, 3 August 2009 (UTC)
Nice stuff Voidious! Mm... bullet power... I wonder how the adaptive bullet power techniques I used in RougeDC will apply in melee. All this excitement is making me want to stay up very late tonight working on my new melee engine... If only I didn't have to wake up for work tomorrow :) --Rednaxela 02:33, 3 August 2009 (UTC)

Congrats, 4th place now! I'm very curious what you changed this time. :) --Positive 12:29, 12 August 2009 (UTC)

Thanks! I'm pretty stoked. =) Hope I don't ruin it with an immediate new version, but I realized a bug in the new code (while laying in bed). Basically, I added a "mathematically correct" way of adding a damage taken risk factor (noting that enemies closer to you and enemies that are alive are more likely to do damage, and trying to account for that). --Voidious 12:34, 12 August 2009 (UTC)
Do you mean that Diamond now tries to never be the closest opponent to any enemy? --Positive 12:48, 12 August 2009 (UTC)
No, he already did that. =) What I mean is Diamond weights enemies by how much damage he has taken from them (similarly to how Minimum Risk Movement usually weights enemies by their energy, which Diamond does too), but in a slightly less naive way than just using the raw "damage taken from this enemy". --Voidious 12:52, 12 August 2009 (UTC)
Ahh, okay, that's pretty clever. :) --Positive 12:58, 12 August 2009 (UTC)

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.

Contents

Thread titleRepliesLast modified
Flattener?313:47, 6 December 2013
Bug in Diamond804:44, 1 June 2013
Congratulation ....117:17, 28 June 2012
New PL king806:59, 23 November 2011
Testbed823:08, 11 September 2011

Flattener?

Does Diamond use a flattener in 1v1? I haven't seen any mention of one.

Straw (talk)00:24, 6 December 2013

Yep, it does. In spirit, the decision criteria and configuration are similar to Dookious. Maybe the biggest implementation difference, besides VCS vs DC, is that Diamond has a more sophisticated system to decide when to enable it. Dookious has "tiers" - like never enable it in first few rounds, then hit % threshold is 9% until round 10, 10% until round 20, etc. Diamond just uses a single hit % + a margin of error based on how much data he's collected, similar to an election polling formula.

If you want to check out the code, see "initSurfViews()" in voidious/move/MoveEnemy.java. The last 3 are for the flattener. A "view" is a kd-tree + all associated configuration data, like parameters to decide on k, max data points, decay rate, and hit % threshold before it's enabled.

Voidious (talk)01:01, 6 December 2013

how does a flattener work with wave surfing

Tmservo (talk)13:28, 6 December 2013

see Flattener. Instead of moving to the places with the least amount of danger, move to the places you have been less often. Ofcourse depending on your configuration and segmentation. In case of a wavesurfer, recording every fired bullet instead of only the times the enemy really hit you, would result in a 'flat' movement => flattener. The biggest problem with a flattener is the decision when to switch to the flattener and when not. (pro tip: search the wiki for info)

GrubbmGait (talk)13:43, 6 December 2013
 
 
 

Bug in Diamond

Well, sorry to ruin Christmas break for you but...

I was watching a battle with Diamond, and I noticed that there were bullets in the area marked safe. The shadow was quite large, (large enough for me to be able to say it was one shadow) so, I don't think it's possible that the bullet that supposedly made the shadow hadn't passed yet (unless there were two shadows near each other and a third bullet that would have connected them had just been fired). In short it appears there is a bug with your bullet shadows.

AW16:42, 19 December 2012

Thanks for the notice! If it was a big shadow, it's probably a bug with merging shadows or angle normalization. I think that stuff's pretty tight so it might be tough for me to duplicate it enough to debug it. But I'll give it a shot when I have some time. Thanks. :-)

Oh, and finding a bug for me to fix in Diamond doesn't ruin anything, it's great. If I can't get to #1 with bug fixes, I have to actually think of innovative new features. ;)

Voidious16:47, 19 December 2012
 

Just to be clear - did your see if the bullet in the safe area hit one of my bullets before it reached me? Because that would not be a bug, it would just mean Diamond knew beforehand that one of his fired bullets would intersect any bullet in that range.

Voidious17:08, 19 December 2012
 

Yeah, I'm pretty sure it didn't but I MIGHT have missed it. I think I have a bug with bullet shadows it Gilgalad, and to test I just ran two 1000 round battles against hawkOnFire with and without bullet shadows. HawkOnFire's bullet damage without bullet shadows was 103 and with bullet shadows it was 192, so it appears I will be suffering with you...

AW17:24, 19 December 2012
 

Still searching for the similar bug in Gilgalad. I just found that it occurs in my intersection calculations (rather than the merging) which will make it more annoying to find. Perhaps I should have tested for bugs before optimizing those...

AW14:20, 31 March 2013
 

I discovered my bullet shadows didn't contain any 'impossible bullets' when I moved my bullets a tick forward - how about trying an empirical test for having your bullets a tick ahead/behind where you think they are?

Skilgannon20:57, 31 March 2013

So I tried that, and and fixed the possible "bullet start and end positions are in the wave, but it passes outside of it" bug. Still short of perfection (though there is a measurable improvement against HawkOnFire over 1000 rounds). Would someone mind explaining how robocode deals with bullets that hit both the enemy robot and their bullet on the same turn?

AW (talk)22:34, 27 May 2013

I'm not sure how Robocode deals with simultaneous impacts. I think you'd have to dig in the source code to find out exactly what happens.

Skilgannon (talk)18:04, 29 May 2013

Just in case anyone else is curious, the bulletHitRobot event is dealt with first.

AW (talk)04:44, 1 June 2013
 
 
 
 

Congratulation ....

I guess after 17k battles and still no 1. in melee general it is time to spring the congratulation cards :)

Congratulation for taking the melee Crown. Thats a hell of a bot you put there together.

Take Care

Wompi12:33, 28 June 2012

Congradulations Void! -Jlm0924

Jlm092417:17, 28 June 2012
 

New PL king

I noticed only now. Diamond took the PL throne away from DrussGT.

MN22:33, 29 October 2011

Thanks :-) I'm very pleased with my PL improvements, but the truth is I still get 49.3% vs DrussGT over 1000 battles and Tomcat has been kicking my butt a lot lately. So it's still very much a crown in dispute, but I'll keep working on it. =)

Voidious22:44, 29 October 2011
 

Tomcat actually had the highest PL for about a day or two. It's a very close running.

Skotty23:51, 29 October 2011
 

Pretty sure I've got it now. =) (Well, for now.) I'm running 1000 seasons vs Shadow, DrussGT, and Tomcat to be sure. After ~250, the lowest score was over 51% (Tomcat). I'll post results soon.

Of course, it's after a change to improve APS that I get the PL boost I was looking for. :-P

Voidious17:18, 22 November 2011

Hey, remove Tomcat from yours testbed - it's just little sweet kitty!:)
Enough to hurt my defenseless kitty!:) He even can not do multiply wave surfing right:)

Jdev06:59, 23 November 2011
 

Pairs won: 100%. It's beautiful.

PEZ19:37, 22 November 2011
 

Very nice. Good job, now just take the crown.

Chase-san19:44, 22 November 2011
 

Very nice there! Note to self: Better throw some of my new top-secret bulletpower research into Scarlet, to attempt make it more challenging for folks to get 100% in PL ;)

Rednaxela21:00, 22 November 2011
 

Some Diamond 1.6.17 scores over 500 battles:

Voidious00:54, 23 November 2011
 

For the first time since 2004, I have assembled a testbed, but now I notice something I had not though about on beforehand. Some bots like Phoenix and ad.Quest, save data and that could have influence on the outcome. Do you use data-saving bots in your testbed and if so, how do you arrange that every version starts with a clean sheet against those. I want to alter my 40-bot testbed anyway, because 1 run (35 rounds) takes about 30-35 minutes. I still use a single core 2.66 GHz P4, although I have a i7 8-core laptop from work available. --GrubbmGait 14:39, 11 September 2011 (UTC)

GrubbmGait15:39, 11 September 2011

I do use data saving bots and am just ignoring the issue right now, actually, which is perhaps stupid. But it should be pretty easy to modify RoboResearch to delete the robot.database and .data after every season, so they get rebuilt and saved data is cleared. That would be a very nice option to have. Are you using RoboResearch?

Voidious16:20, 11 September 2011

One little note, is another option would be perhaps to modify RoboResearch to enable the option in new versions of Robocode, to obfuscate/randomize enemy names?

Rednaxela16:55, 11 September 2011
 

I thought that would return a consistent name for the same bot each time, just preventing you from pre-load bot-specific behavior? I started browsing the code just now to try and say for sure, but I wasn't able to uncover the answer as quickly as I'd hoped...

Voidious17:53, 11 September 2011
 

A wait... it looks like the "anonymous names" are just like "#1" and "#2" according to their position in the participants in the battle... That's unfortunate, because because unlike randomized ones, that would really confuse data saving robots by giving them polluted results.

See "getAnnonymousName()" in net.sf.robocode.host.RobotStatics

Rednaxela18:15, 11 September 2011
 

On second thoughts, it is not really an issue. Most bots that save data do it for each version separate. Only bots like cx.BlestPain that save data without version information I should remove from my testbed. And ofcourse regularly removing the contents of 'working_dirs'. Any tips about contents of the testbed? I now selected 10 of my 20 worst White Wales, 10 bots out of the top-30, and 20 bots ranging from 40-140 with a PBI close to zero. Still busy with 30 seasons for 30 minutes each, sigh. --GrubbmGait 19:24, 11 September 2011 (UTC)

GrubbmGait20:24, 11 September 2011
 

These days I generally go for big test beds generated by BedMaker. Like right now, my main test bed (when working on APS) is 100 random bots that Diamond scores <= 80% against. Your test bed sounds well put together to me - improving against problem bots is good, and having a diverse set of other bots helps to ensure you're improving in general instead of just specializing against a different set of bots.

Voidious20:34, 11 September 2011
 

Does Diamond still has more than 100 bots it scores less than 80% against? That's a bit disappointing isn't it ;-)

GrubbmGait20:40, 11 September 2011
 

Ok, me and my big mouth. Diamond has around 200 bots that qualify for the above statement, GresSuffurd still has around 300. But running such testbeds for 30 seasons or so will cost you alot of time, certainly if you like to improve gradually (like me) instead of big-bang.

GrubbmGait23:08, 11 September 2011