View source for User talk:Dsekercioglu/MEA

From Robowiki
Jump to navigation Jump to search


Thread titleRepliesLast modified
And to make it even faster2215:08, 25 September 2017
Principles behind?101:56, 24 September 2017

And to make it even faster

       double x = bulletSpeed;
       double a = -3.508129323E-5;
       double b = 2.460363294E-3;
       double c = -6.666318894E-2;
       double d = 8.545020365E-1;
       double e = -3.337830707;
       double angle = a * x * x * x * x + b * x * x * x + c * x * x + d * x + e;
       return Math.sin(angle) / (bulletSpeed / 8 - Math.cos(angle));
Xor (talk)13:33, 23 September 2017

btw, you can try newton's method to find the max value ;)

Xor (talk)13:40, 23 September 2017

I know. But calculated numbers weren't exact and Wolfram Alpha's computation time exceeds.

Dsekercioglu (talk)13:43, 23 September 2017

Precision is up to 9 numbers. I think that it is enough.

Dsekercioglu (talk)13:45, 23 September 2017

Sorry, I didn't see that you changed the code. In my robot I did it like that but it is more understandable with Math.pow(x, y).

Dsekercioglu (talk)13:55, 23 September 2017

Math.pow makes me think something like e^x, but it turned out to be polynomial.

Xor (talk)13:59, 23 September 2017

Wow, I had no idea that the escape angle could be 15% bigger than traditional MEA calculation at the most common bulletspeed of 1.9 . . . Seems like my list of things to do for GresSuffurd to become top-10 again, gets bigger and bigger.

GrubbmGait (talk)16:56, 23 September 2017

this formula is bigger, simply because it is wrong

Xor (talk)01:44, 24 September 2017

Can you give the formula you used to prove that my formula is wrong?

Dsekercioglu (talk)10:08, 24 September 2017

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Users.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page.

Return to Thread:User talk:Dsekercioglu/MEA/And to make it even faster/reply (9).


I also agree that it's wrong. But why is it bigger than the correct one? Can you clarify that?

I understood that the problem with this is that it assumes that it's optimal to move in a fixed retreat angle (like moving in a perfect orbit), when it's actually true that the best retreat angle isn't a function only of the initial position, but it changes as you move around the wave. Is that the real issue?

Rsalesc (talk)12:51, 24 September 2017

I knew it's wrong because I had made the same mistake in my previous research.

It's bigger, simply because it uses some smaller distance to calculate the radians.

The correct one is:

<math>\theta = \int_0^{t_1} \frac{v_{lateral}}{d_{initial} + v_{retreat} t}dt</math>

where <math>\theta</math> is the escape angle, <math>t_1</math> is the total time (from bullet fired, to bullet hit). (this formula is true even if <math>v_{lateral}</math> or <math>v_{retreat}</math> is not constant)

Note that <math>d_{initial} + v_{retreat} t</math> is bigger than (his) <math>(v_{bullet} - \overline{v_{retreat}})t_1</math> almost all of the time,

as <math>d_{initial} =

(v_{bullet} - \overline{v_{retreat}})t_1</math>. 

Therefore his integral (<math>\theta = \int_0^{t_1} \frac{v_{lateral}}{(v_{bullet} - \overline{v_{retreat}})t_1}dt = \frac{v_{lateral}}{v_{bullet} - \overline{v_{retreat}}}</math>, assume <math>v_{lateral}</math> is constant) is bigger.

Xor (talk)15:02, 24 September 2017
  • Actually, I'm not sure that Traditional MEA is correct. It assumes that the bot doesn't change it's move angle until the wave hits. Because of that you can't get a MEA higher than Pi / 2 with Traditional MEA formula. When you move orbitally, lateralVelocity / (bulletSpeed + advancingVelocity) is the formula that will give you the EA so you can get a EA higher than Pi / 2.
Dsekercioglu (talk)16:09, 24 September 2017

You can't get escape angle higher than Pi/2 by the traditional formula simply because it is impossible.

If your formula can, it must be wrong.

Xor (talk)16:12, 24 September 2017

Principles behind?

in your calculation, you are calculating escape angle theta as theta = v_lateral / (v_bullet - v_retreat)

however, imo this formula is only true when you are moving orbital exactly ;)

Else, you have to calculate some integral, as the change rate of theta is changing everytime the distance changes. (Like my version)

Xor (talk)13:57, 23 September 2017

imo if you really want to calculate the max escape in a brute force way — try every possible paths a robot can move.

And that would be, for an estimated hit time of 50ticks, if you try 360 angles per tick — there will be 360^50 angles in total (~10^128). Anyway, you can always prune a lot of them.

Xor (talk)01:55, 24 September 2017