Difference between pages "Maximum Escape Angle" and "Raven"

From Robowiki
(Difference between pages)
Jump to navigation Jump to search
(The work done at Maximum Escape Angle/Precise Positional needs to be seen! No pages were linking to it yet.)
 
(Update link)
 
Line 1: Line 1:
When firing, the Maximum Escape Angle (MEA) is the largest angle offset from zero (i.e., [[Head-On Targeting]]) that could possibly hit an enemy bot, given the [[Robocode/Game Physics|Game Physics]] of [[Robocode]].
+
== Background Information ==
  
== Calculation ==
+
; Bot Name
 +
: Raven
  
Let's assume a triangle with sides <code>a</code>, <code>b</code> and <code>c</code> and angles (vertices) <code>A</code>, <code>B</code>, and <code>C</code>. <code>A</code> is the angle opposite to <code>a</code>, <code>B</code> is opposite to b, and <code>C</code> is opposite to <code>c</code>. The [http://en.wikipedia.org/wiki/Law_of_sines Law of sines] says that:
+
; Author
 +
: [[Dsekercioglu]]
  
[[Image:LawOfSines.png|center]]
+
; Extends
 +
: [[AdvancedRobot]]
  
Now let's say that your bot is in the vertex <code>A</code> and the enemy bot is in the vertex <code>C</code>. We will fire a bullet with angle <code>A</code> to hit the bot in vertex <code>B</code>. We know the value of <code>b</code> (it is the distance <code>D</code> from your bot to the enemy).
+
; What's special about it?
We don't know <code>c</code>, but we know that it will be the distance traveled by the bullet. Also, we know that <code>a</code> will be the distance traveled by the enemy bot. If we put <code>a</code>, <code>b</code>, and <code>c</code> as a function of time, we have:
+
: Raven uses a form of Go to surfing where it procedurally generates paths without aiming for any point.
<pre>
 
b = D
 
c = Vb * t (Vb is the bullet speed)
 
a = Vr * t (Vr is the enemy bot velocity)
 
</pre>
 
Now, using the Law of sines:
 
<pre>  a/sin(A) = c/sin(C)
 
-> Vr*t / sin(A) = Vb*t / sin(C)
 
-> sin(A) = Vr/Vb * sin(C)
 
-> A = asin(Vr/Vb * sin(C))
 
</pre>
 
We don't know the value of <code>C</code>, but we can take the worst scenario where
 
<code>C = PI/2</code> (<code>sin(C) = 1</code>) to get a Maximum Escape Angle of
 
<code>A = asin(Vr/Vb * 1) = asin (Vr/Vb)</code>.  
 
  
With a maximum Robot velocity of 8.0, a theoretical Maximum Escape Angle would be <code>asin(8.0/Vb)</code>. Note that the actual maximum depends on the enemy's current heading, speed, and [[Wall Distance]].
+
; Great, I want to try it. Where can I download it?
 +
: https://www.dropbox.com/s/ln53uvb3ddxe4bv/dsekercioglu.mega.Raven_3.56j8.jar?dl=1
  
== See Also ==
+
; How competitive is it?
 +
: Its best is 7th place but considering how close it is to Gilgalad, 7.5th would be the right word =)
  
* [[Maximum Escape Angle/Precise Positional]] - A more precise method of calculating Maximum Escape Angle, that doesn't require movement simulation.
+
; Credits
* [[Maximum Escape Angle/Precise]] - A sophisticated calculation for Maximum Escape Angle, using [[Precise Prediction]].
+
: [[Rednaxela]], [[Skilgannon]], [[Nat]], [[Starrynyte]] and the other contributors I am unaware of for the FastTrig class.
 +
: [[Skilgannon]] for the bugless, fast Kd-tree.
 +
: [[Cb]] for the non-iterative wall smoothing.
 +
: [[Rozu]] for the precise prediction code.
 +
: [[Chase-san]] for the intercept method I used in my [[PPMEA]] calculations.
 +
: [[AW]] for giving me the idea of integrating the danger function in order to get the danger value for a given bot width.
 +
== Strategy ==
  
{{Targeting Navbox}}
+
; How does it [[Movement|move]]?
[[Category:Robocode Theory]]
+
: A form of Go To Surfing.
[[Category:Terminology]]
+
: It falls back to True Surfing when there is no bullets mid-air.
 +
 
 +
; How does it fire?
 +
: It uses [[GuessFactor]] with KNN.
 +
 
 +
; How does it [[Dodging Bullets|dodge bullets]]?
 +
: Tries to minimize the number of guess factors it gets hit by based on their weights and damage.
 +
 
 +
; What does it save between rounds and matches?
 +
: Between rounds, it saves the kd-trees. Between matches, it doesn't save anything.
 +
 
 +
== Additional Information ==
 +
 
 +
; Where did you get the name?
 +
: It just popped into my mind and I thought it would be a proper name for a bot with machine learning.
 +
 
 +
; Can I use your code?
 +
: Yes, I tried to make the code as clean and understandable as possible.
 +
 
 +
; What's next for your robot?
 +
: A proper versioning system so I don't keep accidentally releasing experimental versions.
 +
: Faster code so it doesn't run slow and doesn't skip turns.
 +
: Better bullet shadow calculations.
 +
: Tuning the guns since they haven't been tuned since the first version.
 +
: Gun Heat Waves.
 +
: Maybe a pre-trained movement or gun to use in the first ticks of the battle.
 +
: Add a flattener that actually improves its scores against adaptive targeting.
 +
 
 +
; Does it have any [[White Whale]]s?
 +
: Drifter has been crushing the latest versions.
 +
 
 +
; What other robot(s) is it based on?
 +
: It's kind of based on WhiteFang, I have tried to copy the design but make it as precise as it can be.
 +
 
 +
[[Category:Templates|Bots]]

Revision as of 15:01, 3 October 2020

Background Information

Bot Name
Raven
Author
Dsekercioglu
Extends
AdvancedRobot
What's special about it?
Raven uses a form of Go to surfing where it procedurally generates paths without aiming for any point.
Great, I want to try it. Where can I download it?
https://www.dropbox.com/s/ln53uvb3ddxe4bv/dsekercioglu.mega.Raven_3.56j8.jar?dl=1
How competitive is it?
Its best is 7th place but considering how close it is to Gilgalad, 7.5th would be the right word =)
Credits
Rednaxela, Skilgannon, Nat, Starrynyte and the other contributors I am unaware of for the FastTrig class.
Skilgannon for the bugless, fast Kd-tree.
Cb for the non-iterative wall smoothing.
Rozu for the precise prediction code.
Chase-san for the intercept method I used in my PPMEA calculations.
AW for giving me the idea of integrating the danger function in order to get the danger value for a given bot width.

Strategy

How does it move?
A form of Go To Surfing.
It falls back to True Surfing when there is no bullets mid-air.
How does it fire?
It uses GuessFactor with KNN.
How does it dodge bullets?
Tries to minimize the number of guess factors it gets hit by based on their weights and damage.
What does it save between rounds and matches?
Between rounds, it saves the kd-trees. Between matches, it doesn't save anything.

Additional Information

Where did you get the name?
It just popped into my mind and I thought it would be a proper name for a bot with machine learning.
Can I use your code?
Yes, I tried to make the code as clean and understandable as possible.
What's next for your robot?
A proper versioning system so I don't keep accidentally releasing experimental versions.
Faster code so it doesn't run slow and doesn't skip turns.
Better bullet shadow calculations.
Tuning the guns since they haven't been tuned since the first version.
Gun Heat Waves.
Maybe a pre-trained movement or gun to use in the first ticks of the battle.
Add a flattener that actually improves its scores against adaptive targeting.
Does it have any White Whales?
Drifter has been crushing the latest versions.
What other robot(s) is it based on?
It's kind of based on WhiteFang, I have tried to copy the design but make it as precise as it can be.