Talk:Darkcanuck/VelocityTest

From Robowiki
Revision as of 21:30, 15 July 2009 by Darkcanuck (talk | contribs) (voidious/positive combo effort)
Jump to navigation Jump to search

Using 1.7.1.3

Scratch that last posted result -- was using the method from 1.7.1.2 Beta by accident. Here's the corrected test result:

Starting velocity=0.0 distance=6.0
  1 velocity=1.0 remain=5.0
  2 velocity=2.0 remain=3.0
  3 velocity=3.0 remain=0.0
  4 velocity=1.0 remain=-1.0
  5 velocity=-0.75 remain=-0.25
  6 velocity=-0.25 remain=0.0
  7 velocity=0.0 remain=0.0

Still a problem here:

  • at tick 3 the bot should have stayed at velocity 2 then decelerated to 1 to hit the target
  • the bot then overshoots and takes its time to get on target
  • this should have been a 4-tick move...

--Darkcanuck 05:22, 15 July 2009 (UTC)


For another (worse) example of the above, try starting at 0 with a target of 10.

Starting velocity=0.0 distance=10.0
  1 velocity=1.0 remain=9.0
  2 velocity=2.0 remain=7.0
  3 velocity=3.0 remain=4.0
  4 velocity=4.0 remain=0.0
  5 velocity=2.0 remain=-2.0
  6 velocity=0.0 remain=-2.0
  7 velocity=-1.0 remain=-1.0
  8 velocity=-2.0 remain=1.0
  9 velocity=-0.0 remain=1.0
  10 velocity=1.0 remain=0.0
  11 velocity=0.0 remain=0.0
Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=0.0 remain=-2.0
  3 velocity=-1.0 remain=-1.0
  4 velocity=-2.0 remain=1.0
  5 velocity=-0.0 remain=1.0
  6 velocity=1.0 remain=0.0
  7 velocity=0.0 remain=0.0

Starting from an overshoot condition, the velocity formula causes a second, unnecessary overshoot. --Darkcanuck 05:45, 15 July 2009 (UTC)

And here's a sample of what odd negative velocities can produce:

Starting velocity=-1.9 distance=10.0
  1 velocity=1.8074999999999999 remain=8.1925
  2 velocity=2.8075 remain=5.385000000000001
  3 velocity=3.8075 remain=1.5775000000000006
  4 velocity=1.8075 remain=-0.22999999999999954
  5 velocity=-0.22999999999999954 remain=0.0
  6 velocity=0.0 remain=0.0

--Darkcanuck 05:49, 15 July 2009 (UTC)

Voidious Version

Here's the same tests done with the changes made by Voidious:

Starting velocity=0.0 distance=6.0
  1 velocity=1.0 remain=5.0
  2 velocity=2.0 remain=3.0
  3 velocity=3.0 remain=0.0
  4 velocity=1.0 remain=-1.0
  5 velocity=-0.5 remain=-0.5
  6 velocity=-0.5 remain=0.0
  7 velocity=0.0 remain=0.0

Starting velocity=0.0 distance=10.0
  1 velocity=1.0 remain=9.0
  2 velocity=2.0 remain=7.0
  3 velocity=3.0 remain=4.0
  4 velocity=3.0 remain=1.0
  5 velocity=1.0 remain=0.0
  6 velocity=0.0 remain=0.0

Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=0.0 remain=-2.0
  3 velocity=-2.0 remain=0.0
  4 velocity=-0.0 remain=0.0

Starting velocity=-1.9 distance=10.0
  1 velocity=0.050000000000000044 remain=9.95
  2 velocity=1.05 remain=8.899999999999999
  3 velocity=2.05 remain=6.849999999999999
  4 velocity=3.05 remain=3.799999999999999
  5 velocity=2.8999999999999995 remain=0.8999999999999995
  6 velocity=0.8999999999999995 remain=0.0
  7 velocity=0.0 remain=0.0

That seems to fix all the problems I've found so far, except for the tricky 0,6 case. --Darkcanuck 06:12, 15 July 2009 (UTC)

There's a bug here: in the 4,0 case, how is the bot able to get from velocity 2 to 0 to -2? Surely it should be:

Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=-0.0 remain=-2.0
  3 velocity=-1.0 remain=-1.0
  4 velocity=-1.0 remain=0.0
  5 velocity=0.0 remain=0.0

--Skilgannon 09:53, 15 July 2009 (UTC)

It was late, and I missed that. =) Here's the newest version's results:

Starting velocity=0.0 distance=6.0
  1 velocity=1.0 remain=5.0
  2 velocity=2.0 remain=3.0
  3 velocity=1.5 remain=1.5
  4 velocity=1.5 remain=0.0
  5 velocity=0.0 remain=0.0

Starting velocity=0.0 distance=10.0
  1 velocity=1.0 remain=9.0
  2 velocity=2.0 remain=7.0
  3 velocity=3.0 remain=4.0
  4 velocity=3.0 remain=1.0
  5 velocity=1.0 remain=0.0
  6 velocity=0.0 remain=0.0

Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=0.0 remain=-2.0
  3 velocity=-1.0 remain=-1.0
  4 velocity=-1.0 remain=0.0
  5 velocity=0.0 remain=0.0

Starting velocity=-1.9 distance=10.0
  1 velocity=0.050000000000000044 remain=9.95
  2 velocity=1.05 remain=8.899999999999999
  3 velocity=2.05 remain=6.849999999999999
  4 velocity=3.05 remain=3.799999999999999
  5 velocity=2.8999999999999995 remain=0.8999999999999995
  6 velocity=0.8999999999999995 remain=0.0
  7 velocity=0.0 remain=0.0

Looks ok to me, now I have to find some more numbers to break it... --Darkcanuck 15:42, 15 July 2009 (UTC)

Skilgannon Version

And for comparison's sake:

Starting velocity=0.0 distance=6.0
  1 velocity=1.0 remain=5.0
  2 velocity=2.0 remain=3.0
  3 velocity=2.0 remain=1.0
  4 velocity=1.0 remain=0.0
  5 velocity=0.0 remain=0.0

Starting velocity=0.0 distance=10.0
  1 velocity=1.0 remain=9.0
  2 velocity=2.0 remain=7.0
  3 velocity=3.0 remain=4.0
  4 velocity=1.0 remain=3.0
  5 velocity=2.0 remain=1.0
  6 velocity=1.0 remain=0.0
  7 velocity=0.0 remain=0.0

Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=-0.0 remain=-2.0
  3 velocity=-1.0 remain=-1.0
  4 velocity=-1.0 remain=0.0
  5 velocity=1.0 remain=-1.0
  6 velocity=-1.0 remain=0.0
  7 velocity=1.0 remain=-1.0
  8 velocity=-1.0 remain=0.0
  9 velocity=1.0 remain=-1.0
  ...  (infinite loop) ...

Starting velocity=-1.9 distance=10.0
  1 velocity=0.10000000000000009 remain=9.9
  2 velocity=1.1 remain=8.8
  3 velocity=2.1 remain=6.700000000000001
  4 velocity=3.1 remain=3.600000000000001
  5 velocity=1.1 remain=2.500000000000001
  6 velocity=2.1 remain=0.4000000000000008
  7 velocity=0.4000000000000008 remain=0.0
  8 velocity=0.0 remain=0.0

This one adds an extra tick during deceleration in the 0,10 and -1.9,10 cases. And the 4,0 case leads to an infinite loop because the velocity never hits 0 at the same time as the distance remaining. --Darkcanuck 15:49, 15 July 2009 (UTC)

Voidious + Positive getMaxVelocity

Starting velocity=0.0 distance=6.0
  1 velocity=1.0 remain=5.0
  2 velocity=2.0 remain=3.0
  3 velocity=2.5 remain=0.5
  4 velocity=0.5 remain=0.0
  5 velocity=0.0 remain=0.0

Starting velocity=0.0 distance=10.0
  1 velocity=1.0 remain=9.0
  2 velocity=2.0 remain=7.0
  3 velocity=3.0 remain=4.0
  4 velocity=3.0 remain=1.0
  5 velocity=1.0 remain=0.0
  6 velocity=0.0 remain=0.0

Starting velocity=4.0 distance=0.0
  1 velocity=2.0 remain=-2.0
  2 velocity=-0.0 remain=-2.0
  3 velocity=-1.0 remain=-1.0
  4 velocity=-1.0 remain=0.0
  5 velocity=0.0 remain=0.0

Starting velocity=-1.9 distance=10.0
  1 velocity=0.10000000000000009 remain=9.9
  2 velocity=1.1 remain=8.8
  3 velocity=2.1 remain=6.700000000000001
  4 velocity=3.1 remain=3.600000000000001
  5 velocity=2.8000000000000007 remain=0.8000000000000003
  6 velocity=0.8000000000000007 remain=-4.440892098500626E-16
  7 velocity=-4.440892098500626E-16 remain=0.0

Passes all tests except doesn't account for max velocity yet. The nice thing about this one so far is it's use of round velocity numbers. I like it!

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.

There are no threads on this page yet.