New Gun

Jump to navigation Jump to search
Revision as of 1 March 2013 at 01:44.
The highlighted comment was created in this revision.

Well it could have been worse.

But considering it suddenly beats bullet shielders leads me to believe there is a bug in my gun. I'll do some debugging and see what I get.

But I am guessing my problem with some of these is actually my terrible bullet power selector.

    Chase20:05, 20 February 2013

    Combat beats all bullet shielders except EnergyDome. And without specific anti Bullet Shielding.

    Don´t know if there is a bug in learning GF0 angles. At least graphical debugging against SittingDuck looks bug free.

      MN20:55, 20 February 2013
       

      Well Nene beats them all. Plus some of the scores seem skewed in odd ways. Since I tested against some of them with just the gun, and I happen to know the movement is relatively decent.

        Chase21:57, 20 February 2013
         

        It seems the fast math in my next position calculator as well as some bad bullet power was really hurting it. Nene ranked 8th is perfectly acceptable to me. I would have been happy with it passing Ascendant. Considering its score it might switch places with Phoenix and end up #9.

          Chase13:27, 21 February 2013
           

          Congrats with this improvement. You left me dangling at 10th place. And all I want to do is pass Dookious as that is the highest ranked non-DC bot. Your gun probably has some more room for improvements considering your movement is that strong.

            GrubbmGait16:42, 21 February 2013

            Well the gun wasn't done. But Skilgannon's comment got me thinking. I figure it was overdue.

            But this kills two birds with one stone. Means I can change the license entirely to ZLIB, and it sorts out many of the issues Nene was having with surfers and (to my surprise) bullet shielders.

            With this development, I am fairly sure Nene is the only top-10 robot who not only has no flattener but also no VG array. This appeals to my sense of simplicity. I am currently going about fixing a few minor bugs in Seraphim. To see where it would have ranked if I had been competent at the time.

              Chase17:31, 21 February 2013

              In the top 10 it is Nene and GresSuffurd, although GS is using simple VCS surfing with no rolling and a (fairly) simple VCS gun as well.

                Skilgannon18:05, 21 February 2013
                 

                WaveSerpent is the highest ranking bot that doesn't use DC, not Dookious.

                  Sheldor19:46, 27 February 2013
                   

                  We were talking about Virtual Guns and Flatteners. Neither GresSuffurd or Nene use either (as far as I am aware).

                  Never said that GresSuffurd was the highest ranking VCS. If I recall DrussGT doesn't use DC for its movement.

                    Chase20:02, 27 February 2013

                    Yup, DrussGT still uses 'stone-age' VCS for the movement =) I've tried DC several times, but I just couldn't get the same performance. Maybe DC using range-based searches instead of KNN would work better, I seem to remember Jdev saying that worked a lot better for him in movement.

                      Skilgannon20:15, 27 February 2013
                       

                      For both movement and targeting in XanderCat, I use a KDTree to store both hits (bullet hits target) and visits (where robot at time bullet would have hit whether it did or didn't). When moving or aiming, a certain number of hits are pulled from the tree using KNN search. Those hits are then dumped into a factor array (with a little smoothing for movement but not targeting). And then the lowest (or highest, for targeting) area of the factor array is where I drive to (or shoot). Visits are only used in my movement, and only when my flattener is active. When talking DC and VCS, what would you consider this to be? I've always thought of it as something of a hybrid, but I don't know if I clearly understand how you all define these terms.

                        Skotty21:42, 27 February 2013

                        I'd definitely call that KNN (or DC as we do on the wiki), you are just using a discrete kernel density estimation to find your peaks/troughs. Your algorithm would give identical results if, instead of smoothing into bins, you reversed the loops and checked each angle for a 'score' by evaluating its nearness to previous data, which is just discrete kernel density estimation through sampling. VCS refers to the way that the data is gathered in the first place, smoothing the data into segmented bins as it is collected.

                        DrussGT doesn't use bins until it's time to surf (like you), instead just keeping a list of the last 2*rollingDepth hits for that buffer, but I did the math so that it is functionally equivalent with rolloff and weights, and as such I still call it VCS.

                          Skilgannon21:50, 27 February 2013
                           

                          As I've seen it used the "DC" terminology applies to any KNN-based system. I would classify XanderCat's strategy as you describe it as being part of the group "K-Nearest-Neighbor, Guessfactors, with Bins".

                          Personally I dislike the "Dynamic Clustering" term because it's a bit of a misnomer in my eyes. While ABC coming across this technique and bringing it to Robocode was inspired by clustering algorithms, k-nearest-neighbor search is not a clustering algorithm.

                            Rednaxela21:54, 27 February 2013
                             

                            I was replying to GrubbmGait's post.

                              Sheldor22:36, 27 February 2013
                               

                              Oh that's what you meant.

                              I agree with Red that DC is kind of a misnomer. It was similar to k-means with only one cluster. Which is how it got its name. But DC is really just a KNN system.

                                Chase22:45, 27 February 2013
                                 

                                In that case I want to pass WaveSerpent, as that is the highest ranked bot without any DC in its gun, movement or radar ;-)

                                  GrubbmGait23:57, 27 February 2013
                                   

                                  You can have a KNN radar?

                                    Chase03:03, 28 February 2013
                                     

                                    Eh? The only way I can think of a K-NN search being useful for radar... would be in a field that is much larger than radar range, to predict the angle the opponent is most likely to come back into view at

                                      Rednaxela03:43, 28 February 2013
                                       

                                      Or if you're being very aggressive about an optimal radar, guessing at their movement instead of going as far as they could have gotten. :-) But GrubbmGait might have been making a subtle joke...

                                        Voidious04:22, 28 February 2013
                                         

                                        Combat uses k-NN/kernel density in energy management.

                                          MN21:07, 28 February 2013
                                           

                                          Nene uses a kNN for estimating the bullet power of the enemy (for its heat waves).

                                          How do you use kNN to determine the power to fire at?

                                            Chase23:22, 28 February 2013
                                             

                                            Most energy management strategies are based on estimating hit rate and then using high bullet powers with high hit rates and low bullet powers with low hit rates.

                                            When calculating kernel density, Combat uses a uniform kernel and checks the density. If there are k waves and x uniform kernels overlapping, it assumes hit rate is x/k. Then bullet power is adjusted accordingly.

                                            Works well in melee. High bullet powers against tight packs of bots, and low bullet powers against lone bots. Low bullet powers against flat profiles, and high bullet powers when spikes are detected.

                                            Maybe simply counting how many bullets hit and how many miss is more accurate, but kernel density is cool.

                                              MN01:05, 1 March 2013
                                               

                                              That it is. So basically you fire a more powerful bullet when your robot is more confident that the bullet will successfully hit the opponent. Possibly based on hit rate of previous shots. That isn't a bad way to do it. How do you choose when you have no data?

                                                Chase01:21, 1 March 2013
                                                 

                                                With little or no data, it assumes worst case. k is always constant and with no data, x is always zero. It needs at least k waves to have any chance of estimating 100% hit rate.

                                                The strategy works as long as the opponent does not use adaptive movement. Because if it does, spikes in movement profile are usually angles avoided the most.

                                                  MN02:01, 1 March 2013
                                                   

                                                  I spent a bunch of time trying to optimize higher hit rates = higher bullet power. Several times at different points in Diamond's history, even. Even the most conservative of these always performed worse than my hand-tuned formulas. I presumed due to some combination of:

                                                  • It's advantageous to use a consistent bullet power for more accurate data classification.
                                                  • It's advantageous to prioritize survival at the expense of the bullet damage gained by more aggressive bullet powers.
                                                    Voidious02:44, 1 March 2013
                                                     
                                                     

                                                    I just noticed.

                                                    That on adding this new gun, I accidently broke Nene's bullet shadows.

                                                    By that I mean 1.0.2 doesn't use them at all! All the code is there, it still considers them, except they never get produced/added. So it acts as if it has no shadows (per default). The thing is I used to route the targeting through a custom fire routine that informed the movement when it fired. But I bypassed that custom routine on accident when I glued the gun onto Nene.

                                                    To fix it, I only needed to remove 5 characters. I am going to test this and release a 1.0.3.

                                                      Chase19:32, 27 February 2013