Difference between revisions of "Minimum Risk Movement"

From Robowiki
Jump to navigation Jump to search
(Small fixes)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{cleanup}}
 
 
{{Youtube|7e9qyOmo6nc}}
 
{{Youtube|7e9qyOmo6nc}}
  
'''Minimum Risk Movement''' is an extremely effective type of [[Melee]] movement that picks a series of points to consider going to next, then rates each one with a "risk factor". It then moves the bot to the point it determines has the lowest risk factor.then move to the lowest-risk location. On the surface, it looks like just an implementation of [[AntiGravityMovement]], and some consider the difference to be just interpretation, but the way it is implemented is different enough that they are considered distinctly different. The only real similarity in the two is that they both attempt to consider all the fundamentals of [[melee movement]].  Minimum Risk is much more versatile than [[AntiGravityMovement]] and less likely to converge at some "happy" local minimum.   
+
'''Minimum Risk Movement''' is an extremely effective type of [[Melee]] movement that picks a series of points to consider going to next, then rates each one with a "risk factor". The robot is moved to the point it determines has the lowest risk factor. On the surface, it looks like just another implementation of [[Anti-Gravity Movement]], and some consider the difference to be just interpretation, but the way it is implemented is different enough that they are considered distinctly different. The only real similarity in the two is that they both attempt to consider all the fundamentals of [[melee]] [[movement]].  Minimum Risk is much more versatile than anti-gravity movement and less likely to converge at some "happy" local minimum.   
  
 
== Implementation ==  
 
== Implementation ==  
There are two basic parts to [[MinimumRiskMovement]]:
+
There are two basic parts to the Minimum Risk Movement:
:* A Risk Function - Determines how risky it is to go to a point
+
* A risk function ‒ Determines how risky it is to go to a point.
:* A Point-generating function - generates candidates to try in the risk function
+
* A point-generating function ‒ Generates candidate points to test with the risk function.
After those two functions are completed, all that remains is to just go to the candidate point with the lowest risk. In both functions, randomness can often be helpful, although it is most often used in point generation. One possible tweak to the traditional implementation is deciding to look for a point to go to constantly rather than just choosing one point at a time. While both strategies have merits, you might get into a rut if you keep changing your mind on points; but, in choosing points constantly, you enable yourself to react more quickly to changes in the situation on the battlefield.
+
After those two functions are completed, all that remains is to just go to the candidate point with the lowest risk. In both functions, randomness can often be helpful, although it is more often used in point generation. One possible tweak to the traditional implementation is deciding to look for a point to go to constantly rather than just choosing one point at a time. While both strategies have merits, you might get into a rut if you keep changing your mind on points; but, by choosing points constantly, you enable yourself to react more quickly to changes in the situation on the battlefield.
  
 
== Bots that use it ==
 
== Bots that use it ==
Line 14: Line 13:
 
* [[FloodHT]]
 
* [[FloodHT]]
 
* [[HawkOnFire]]
 
* [[HawkOnFire]]
* [[GlowBlowMelee]]
 
 
* [[Tron]]
 
* [[Tron]]
 
* [[Shadow]]
 
* [[Shadow]]
* DuelistMiniMelee
+
* [[Diamond]]
* [[Troodon]]
+
* [[Firestarter]]
* [[Vapour]]
 
* [[Griezel]]
 
* [[Ice]]
 
  
 
Some clear and easy to understand implementations include [[Coriantumr]], [[Shiz]], and [[HawkOnFire]].
 
Some clear and easy to understand implementations include [[Coriantumr]], [[Shiz]], and [[HawkOnFire]].
  
 
== Risk Evaluation ==
 
== Risk Evaluation ==
Most bots evaluate points with a system similar to finding a force's magnitude in [[AntiGravity Movement]]. Although not all bots implemented it the same way, most base the risk of a point on enemy energy and distance. Many also consider whether they will be the closest bot to an enemy to try to avoid being targeted. Often, bots repel the center of the battlefield. In addition to these common practices, some bots: try not to travel a long distance in one movement; try to avoid staying in the same area for a long period of time; and/or consider their lateral angle to their enemies, as it is much more dangerous to travel directly toward or away from an enemy than it is to move perpendicular to them.
+
Most bots evaluate points with a system similar to finding a force's magnitude in [[Anti-Gravity Movement]]. Although not all bots implement it the same way, most base the risk of a point on enemy energy and distance. Many also consider whether they will be the closest bot to an enemy to try to avoid being targeted. Often, bots repel the center of the battlefield. In addition to these common practices, some bots try not to travel a long distance in one movement, try to avoid staying in the same area for a long period of time, and/or consider their lateral angle to their enemies (as it is much more dangerous to travel directly toward or away from an enemy than it is to move perpendicular to them).
  
== Picking points to try ==
+
== Point Generation ==
 
+
It's important to pick a good range of practical places to go to for this to work well.  Applying a force to the walls is unnecessary if you always just pick points within the battlefield.  The melee robot [[HawkOnFire]] picks several points around him in regular angular offsets at random distances.   [[Tron]] picks 4 points, at pretty much uniform distance, up, down, left and right.  He also avoids [[Head-On Targeting|head-on]] aim like the plague.  [[FloodHT]] 0.8 uses a divide-and-conquer sort of system.  He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point.  If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectangles and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore).
It's important to pick a good range of practical places to go to for this to work well.  Applying a force to the walls is unnecessary if you always just pick points within the battlefield.  The melee robot [[HawkOnFire]] picks several points around him in regular angular offsets at random distances. The next version of [[FloodHT]] will do this at least some of the time.  [[Tron]] obviously picks 4 points, at pretty much uniform distance, up, down, left and right.  He also avoids [[Head-On Targeting|head-on]] aim like the plague.  [[FloodHT]] 0.8 uses a divide-and-conquer sort of system.  He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point.  If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectanges and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore).  The dev version does this at the beginning of the battle to get situated and then starts picking points around him at a distance.
 
  
 
== See Also ==
 
== See Also ==
*[[Anti-Gravity Movement]]
+
* [[Anti-Gravity Movement]]
*[[Fluid Movement]]
+
* [[Fluid Movement]]
 
 
  
 
[[Category:Melee]]
 
[[Category:Melee]]
 
[[Category:Movement]]
 
[[Category:Movement]]

Latest revision as of 04:42, 21 August 2017

Youtube
Youtube has a video of Minimum Risk Movement in action: click here to watch

Minimum Risk Movement is an extremely effective type of Melee movement that picks a series of points to consider going to next, then rates each one with a "risk factor". The robot is moved to the point it determines has the lowest risk factor. On the surface, it looks like just another implementation of Anti-Gravity Movement, and some consider the difference to be just interpretation, but the way it is implemented is different enough that they are considered distinctly different. The only real similarity in the two is that they both attempt to consider all the fundamentals of melee movement. Minimum Risk is much more versatile than anti-gravity movement and less likely to converge at some "happy" local minimum.

Implementation

There are two basic parts to the Minimum Risk Movement:

  • A risk function ‒ Determines how risky it is to go to a point.
  • A point-generating function ‒ Generates candidate points to test with the risk function.

After those two functions are completed, all that remains is to just go to the candidate point with the lowest risk. In both functions, randomness can often be helpful, although it is more often used in point generation. One possible tweak to the traditional implementation is deciding to look for a point to go to constantly rather than just choosing one point at a time. While both strategies have merits, you might get into a rut if you keep changing your mind on points; but, by choosing points constantly, you enable yourself to react more quickly to changes in the situation on the battlefield.

Bots that use it

There are many bots in melee that use this system, although their authors don't always describe it as Minimum Risk. They include:

Some clear and easy to understand implementations include Coriantumr, Shiz, and HawkOnFire.

Risk Evaluation

Most bots evaluate points with a system similar to finding a force's magnitude in Anti-Gravity Movement. Although not all bots implement it the same way, most base the risk of a point on enemy energy and distance. Many also consider whether they will be the closest bot to an enemy to try to avoid being targeted. Often, bots repel the center of the battlefield. In addition to these common practices, some bots try not to travel a long distance in one movement, try to avoid staying in the same area for a long period of time, and/or consider their lateral angle to their enemies (as it is much more dangerous to travel directly toward or away from an enemy than it is to move perpendicular to them).

Point Generation

It's important to pick a good range of practical places to go to for this to work well. Applying a force to the walls is unnecessary if you always just pick points within the battlefield. The melee robot HawkOnFire picks several points around him in regular angular offsets at random distances. Tron picks 4 points, at pretty much uniform distance, up, down, left and right. He also avoids head-on aim like the plague. FloodHT 0.8 uses a divide-and-conquer sort of system. He divides the battlefield up into 16 rectangles, and rates each one based on the risk of its center point. If he's far away from that point, he goes to it, otherwise he splits that rectangle up into 16 more rectangles and rates them and goes to that point (or continues to subdivide until it just doesn't make a difference anymore).

See Also