Comparing GoTo Surfing with True Surfing?

Jump to navigation Jump to search
Revision as of 2 September 2017 at 03:17.
The highlighted comment was edited in this revision. [diff]

Comparing GoTo Surfing with True Surfing?

One thing that surprise me is that even if everything else is the same, GoTo movement typically scores worse than True Surfing. Does anyone reproduced this discover? Or I must made something wrong somewhere, which feels really bad.

    Xor (talk)13:06, 1 September 2017

    Again, when a True Surfer adds second wave surfing, the score increases a lot. When a GoTo Surfing adds second wave surfing, the score decreased a lot. Is this phenomenon common? Or is that just because adding another wave exploits some hidden bug in my code?

      Xor (talk)13:10, 1 September 2017

      It might be causing you to skip turns. Goto surfing does a lot more calculations in a single tick.

      Otherwise I would say it is a bug, maybe with the starting conditions of your second wave surfing. Most difficult to get right for me was aligning the time I switch to surfing second wave with when I actually stop surfing the first wave in my real movement.

        Skilgannon (talk)14:06, 1 September 2017

        I would say it's perfectly aligned, from the debug graphics the predicted next wave path is exactly the same as when it really happens.

        However, I create a billion of new objects per surf ;p for every predicted new position, every stop status, etc.

        But I never ever skipped a turn on my computer :( whereas I see a lot of very low score on the literumble which I can never reproduce on my computer.

        May be I should eliminate all the object allocation in loops ;( I used to thought Java would use stack allocation for those objects after escape analysis (which is available since Java 6 update 14), but it doesn't.

          Xor (talk)05:16, 2 September 2017
           
           

          I'm probably having the same problem as you. I'm not using my GoTo code right now just because it won't work, it's always worse. Anyway, visually I feel like I'm wasting too much dodging potential when I arrive to the destination and stop (of course if you choose a point further away, you will hit the wave while moving there, but it's just a consequence). In practice my robot never moves to more than, like, 25% of my MEA, which is pretty weird. Maybe it have something to do with this time aligning thing after all, may be it have to do with my point picking strategy.

          A important question: in usual GoTo movement, if moving to a point clockwise, it's impossible to hit the wave while reversing (ie, going counter-clockwise), right?

            Rsalesc (talk)14:31, 1 September 2017

            You don't have to stop, just adapt your speed that you arrive when the wave hits. Really stopping decreases your MEA.

              GrubbmGait (talk)15:32, 1 September 2017

              Maybe I understand GoTo wrong and it must be more complex than I thought to give a decent result. Anyway I decided to stick to a True Surfing-like approach that evaluates a bunch of points instead of only the extreme points and then I let the surf smooth the movement by itself. Does the GoTo movement should feel almost smooth like that? Mine just doesn't and when I see DrussGT in action I feel like it should.

                Rsalesc (talk)16:22, 1 September 2017
                 

                Exactly what GrubbmGait said. Take your predicted end velocity from the first wave and use it as start conditions for the second wave.

                  Skilgannon (talk)16:19, 1 September 2017

                  Yes, I do that. But still, your initial state for the second wave surfing will be restricted by the GoTo movement you did to your destination point. It's not like you could be going backwards instead. You will for sure be going in the direction of your GoTo point. So that's actually a characteristic of GoTo surfing and is that what differs it from the approach I mentioned below or there is some other difference?

                    Rsalesc (talk)16:26, 1 September 2017

                    Oh, and of course, there is the difference that you are not restricted to a specific path of points.

                      Rsalesc (talk)16:35, 1 September 2017
                       

                      It make me do bad specially against close rangers, which is pretty sad and makes me feel I have a bug or there is some twist in the movement I'm not getting,

                        Rsalesc (talk)16:33, 1 September 2017

                        Basically, I see it as a way of choosing a movement path. For N ticks try to go to this point, then after that for N ticks try to go to this other point. This gives you some movement path which is repeatable and easily defined. As long as numerically your simulation of the robot behaviour is correct, you never have to actually reach the point you are aiming at. Just make sure you are evaluating the danger for the point you actually reach and not the end point that you gave to your go-to method.

                        Oh, and don't base your work on the go-to basicsurfer. Rather read the Understanding DrussGT page and read how it works there. Goto surfing has come a long way since those early experiments.

                          Skilgannon (talk)17:03, 1 September 2017

                          Actually my only knowledge about GoTo was learned by reading Understanding DrussGT :P

                          I'll give it another try, thank you.

                            Rsalesc (talk)18:22, 1 September 2017