Talk:Darkcanuck/VelocityTest

From Robowiki
Revision as of 17:22, 16 July 2009 by Darkcanuck (talk | contribs) (hijack results)
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:

Darkcanuck's VelocityTest

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=2.5 remain=1.5
  5 velocity=1.5 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.3500000000000005 remain=1.2500000000000004
  6 velocity=1.2500000000000004 remain=0.0
  7 velocity=0.0 remain=0.0

A few bugfixes and a 'smooth decel' predictor later... --Skilgannon 08:30, 16 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!

"Hijack" Version (Skilgannon+Positive+Voidious)

Starting velocity=8.0 distance=22.8
  1 velocity=8.0 remain=14.8
  2 velocity=6.7 remain=8.100000000000001
  3 velocity=4.7 remain=3.4000000000000012
  4 velocity=2.7000000000000006 remain=0.7000000000000006
  5 velocity=0.7000000000000006 remain=0.0
  6 velocity=0.0 remain=0.0


Starting velocity=8.0 distance=22.5
  1 velocity=8.0 remain=14.5
  2 velocity=6.625 remain=7.875
  3 velocity=4.625 remain=3.25
  4 velocity=2.625 remain=0.625
  5 velocity=0.625 remain=0.0
  6 velocity=0.0 remain=0.0


Starting velocity=8.0 distance=-200.0 max=7.0
  1 velocity=6.0 remain=-206.0
  2 velocity=4.0 remain=-210.0
  3 velocity=2.0 remain=-212.0
  4 velocity=-0.0 remain=-212.0
  5 velocity=-1.0 remain=-211.0
  6 velocity=-2.0 remain=-209.0
  7 velocity=-3.0 remain=-206.0
  8 velocity=-4.0 remain=-202.0
  9 velocity=-5.0 remain=-197.0
  10 velocity=-6.0 remain=-191.0
  11 velocity=-7.0 remain=-184.0
  12 velocity=-7.0 remain=-177.0
  13 velocity=-7.0 remain=-170.0
  14 velocity=-7.0 remain=-163.0
  15 velocity=-7.0 remain=-156.0
  16 velocity=-7.0 remain=-149.0
  17 velocity=-7.0 remain=-142.0
  18 velocity=-7.0 remain=-135.0
  19 velocity=-7.0 remain=-128.0
  20 velocity=-7.0 remain=-121.0
  21 velocity=-7.0 remain=-114.0
  22 velocity=-7.0 remain=-107.0
  23 velocity=-7.0 remain=-100.0
  24 velocity=-7.0 remain=-93.0
  25 velocity=-7.0 remain=-86.0
  26 velocity=-7.0 remain=-79.0
  27 velocity=-7.0 remain=-72.0
  28 velocity=-7.0 remain=-65.0
  29 velocity=-7.0 remain=-58.0
  30 velocity=-7.0 remain=-51.0
  31 velocity=-7.0 remain=-44.0
  32 velocity=-7.0 remain=-37.0
  33 velocity=-7.0 remain=-30.0
  34 velocity=-7.0 remain=-23.0
  35 velocity=-7.0 remain=-16.0
  36 velocity=-7.0 remain=-9.0
  37 velocity=-5.0 remain=-4.0
  38 velocity=-3.0 remain=-1.0
  39 velocity=-1.0 remain=0.0
  40 velocity=0.0 remain=0.0


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


Starting velocity=0.0 distance=Infinity
  1 velocity=1.0 remain=Infinity
  2 velocity=2.0 remain=Infinity
  3 velocity=3.0 remain=Infinity
  4 velocity=4.0 remain=Infinity
  5 velocity=5.0 remain=Infinity
  6 velocity=6.0 remain=Infinity
  7 velocity=7.0 remain=Infinity
  8 velocity=8.0 remain=Infinity
  9 velocity=8.0 remain=Infinity
  10 velocity=8.0 remain=Infinity


Starting velocity=0.0 distance=-Infinity
  1 velocity=-1.0 remain=-Infinity
  2 velocity=-2.0 remain=-Infinity
  3 velocity=-3.0 remain=-Infinity
  4 velocity=-4.0 remain=-Infinity
  5 velocity=-5.0 remain=-Infinity
  6 velocity=-6.0 remain=-Infinity
  7 velocity=-7.0 remain=-Infinity
  8 velocity=-8.0 remain=-Infinity
  9 velocity=-8.0 remain=-Infinity
  10 velocity=-8.0 remain=-Infinity

Yet another version that passes all my tests so far. Definitely the smallest code, with no iterative routines and mostly understandable. --Darkcanuck 15:22, 16 July 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.

There are no threads on this page yet.