Difference between revisions of "GuessFactor Targeting (traditional)"

From Robowiki
Jump to navigation Jump to search
m (fix something, mark as cleanup)
(Reformat)
 
Line 1: Line 1:
: ''For other uses see [[GuessFactor Targeting (disambiguation)]]''
+
<blockquote>
 +
<p>We now do a pretty good job separating out gun terminology like Visit Count Stats, GuessFactors, Pattern Matching, and Play It Forward, instead of using confusing names for multipart systems, like "GuessFactor Targeting" ([[VCS]] + [[Segmentation]] + [[GF]]s), or "[[Dynamic Clustering|TronsGun]]" ([[KNN]] + [[PIF]]).</p>
 +
 
 +
<p><small>— [[Voidious]] ([[Thread:Talk:Premier League/Why x2?/reply (7)|source]])</small></p>
 +
</blockquote>
  
{{cleanup}}
+
Traditional '''GuessFactor Targeting''' is the specific combination of [[GuessFactors]] and [[Segmentation|Segmented]] [[Visit Count Stats]]. It uses these algorithms to [[Statistical Targeting|statistically]] generate a good firing angle. It is one of the most popular and successful methods of [[:Category:Targeting|targeting]] in all of [[Robocode]]. Alternatives to GuessFactor Targeting include [[Dynamic Clustering]] and [[Pattern Matching]].
<!-- Nat's Comment: This page should contains more information about this kind of targeting, not just history -->
 
  
A form of [[statistical targeting]] that combines [[GuessFactors]], [[segmentation]], and [[Visit Count Stats|visit count stats]]. It is one of the most popular and successful methods of [[:Category:Targeting|targeting]] in all of [[Robocode]].
+
Note that despite its name, GuessFactor Targeting is not the only targeting method to use [[GuessFactor]]s.
  
== Early description of the method ==
+
== History ==
 +
{{cleanup}}
  
[[User:Paul Evans|Paul Evans]] and [[User:David Alves|David Alves]] were the first [[:Category:Bot Authors|authors]] who implement some forms of GuessFactor targeting, though their first systems did not yet use [[segmentation]]. The following description by David (from 2003) and the paper by Paul that he mentions were what first brought GuessFactor Targeting to the rest of the Robocode community:
+
=== Early description ===
 +
[[User:Paul Evans|Paul Evans]] and [[User:David Alves|David Alves]] were the first [[:Category:Bot Authors|authors]] who implement a form of GuessFactor Targeting, though their first systems did not yet use [[segmentation]]. The following description by David (from 2003), and the paper by Paul that he mentions, were what first brought GuessFactor Targeting to the rest of the Robocode community:
 
<blockquote>
 
<blockquote>
My targeting is similar to the [[SandboxLump]] / [[SandboxDT]] method. Here's how it works.
+
My targeting is similar to the [[SandboxLump]]/[[SandboxDT]] method. Here's how it works.
 
:* Calculate how far forward the other bot could go if it suddenly went top speed forwards for as long as it would take my bullet to reach the other bot. Call this Point A.
 
:* Calculate how far forward the other bot could go if it suddenly went top speed forwards for as long as it would take my bullet to reach the other bot. Call this Point A.
 
:* Calculate how far backward the other bot could go if it suddenly went top speed backwards for as long as it would take my bullet to reach the other bot. Call this Point B.
 
:* Calculate how far backward the other bot could go if it suddenly went top speed backwards for as long as it would take my bullet to reach the other bot. Call this Point B.
  
Now take a guess between -1 and 1 at where the bot is going to be. -1 would mean going straight back and ending up at B, 1 means going straight forward and ending up at A. 0 means sitting still. I just keep track of how well different numbers work and fire with the best one. You can find a better description (with code!) at [[http://www.aqre94.dsl.pipex.com/robocode/guessfactor.shtml this url]]. However notice that the algorithm that Lump uses (the bit where he says he uses the bot's current acceleration) is a bad idea, because it won't hit bots that sit still for a long time and then suddenly hit the gas. He fixed this when he came out with DT. (And I fixed it in [[Duelist]]! :-D) However, pretty much any targeting method will work well enough as long as it isn't simple linear or circular targeting, because some bots (like [[Fermat]]) will guess where you would fire if you used circular and dodge accordingly.
+
Now take a guess between -1 and 1 at where the bot is going to be. -1 would mean going straight back and ending up at B, 1 means going straight forward and ending up at A. 0 means sitting still. I just keep track of how well different numbers work and fire with the best one. You can find a better description (with code!) at [https://web.archive.org/web/20080214181907/http://www.aqre94.dsl.pipex.com:80/robocode/guessfactor.shtml this url]. However notice that the algorithm that Lump uses (the bit where he says he uses the bot's current acceleration) is a bad idea, because it won't hit bots that sit still for a long time and then suddenly hit the gas. He fixed this when he came out with DT. (And I fixed it in [[Duelist]]! :-D) However, pretty much any targeting method will work well enough as long as it isn't simple linear or circular targeting, because some bots (like [[Fermat]]) will guess where you would fire if you used circular and dodge accordingly.
  
 
Good bots for testing targeting are:
 
Good bots for testing targeting are:
Line 20: Line 25:
 
:* [[JollyNinja]]: Open source! Stays as far from you as possible most of the time.
 
:* [[JollyNinja]]: Open source! Stays as far from you as possible most of the time.
  
Also try the [[Nano bots]] - they're almost all open source and have some cool ideas.
+
Also try the [[Nano bots]] they're almost all open source and have some cool ideas.
 +
<p><small>— [[David Alves]], 2003</small></p>
 
</blockquote>
 
</blockquote>
  
== Evolution and refinement ==
+
=== Evolution and refinement ===
 
 
 
While the same fundamental principles have applied since its creation, several key factors have helped GuessFactor Targeting become increasingly powerful and popular over the years:
 
While the same fundamental principles have applied since its creation, several key factors have helped GuessFactor Targeting become increasingly powerful and popular over the years:
  
 
* Perhaps the most important was the addition of [[segmentation]], which allows separate sets of statistics to be collected for different firing situations. Things like proximity to walls, current velocity, and distance from the firing bot have a large impact on what GuessFactor will hit the target, so segmenting your stats on these attributes helps a lot.
 
* Perhaps the most important was the addition of [[segmentation]], which allows separate sets of statistics to be collected for different firing situations. Things like proximity to walls, current velocity, and distance from the firing bot have a large impact on what GuessFactor will hit the target, so segmenting your stats on these attributes helps a lot.
 
* [[Kawigi]], through his [[open source]] bot [[FloodMini]] and the [[GuessFactor Targeting Tutorial]] that he authored, showed many people how to implement GuessFactor Targeting.
 
* [[Kawigi]], through his [[open source]] bot [[FloodMini]] and the [[GuessFactor Targeting Tutorial]] that he authored, showed many people how to implement GuessFactor Targeting.
* There have been many incremental improvements to GuessFactor Targeting guns by a variety of authors, including: refining what attributes make the best segments, using Virtual Guns systems with multiple GuessFactor Targeting guns, using multiple Visit Count Stats buffers (and summing the values or switching between them), and using [[Maximum Escape Angle/Precise|precise maximum escape angles]] in GuessFactor calculations.
+
* There have been many incremental improvements to GuessFactor Targeting guns by a variety of authors, including:
 +
** Refining what attributes make the best segments.
 +
** Using [[Virtual Guns]] systems with multiple GuessFactor Targeting guns.
 +
** Using multiple Visit Count Stats buffers (and summing their values or switching between them).
 +
** Using [[Maximum Escape Angle/Precise|precise maximum escape angles]] in GuessFactor calculations.
 +
 
 +
== Description ==
 +
{{stub}}
  
 
== See also ==
 
== See also ==
 
 
* [[GuessFactor Targeting Tutorial]] - A tutorial written by [[User:Kawigi]]  that walks you through creating a basic GuessFactor Targeting gun.
 
* [[GuessFactor Targeting Tutorial]] - A tutorial written by [[User:Kawigi]]  that walks you through creating a basic GuessFactor Targeting gun.
 
* [[GFTargetingBot]] - A tutorial-style bot by [[PEZ]] that implements a basic GuessFactor Targeting gun.
 
* [[GFTargetingBot]] - A tutorial-style bot by [[PEZ]] that implements a basic GuessFactor Targeting gun.

Latest revision as of 02:09, 16 October 2017

We now do a pretty good job separating out gun terminology like Visit Count Stats, GuessFactors, Pattern Matching, and Play It Forward, instead of using confusing names for multipart systems, like "GuessFactor Targeting" (VCS + Segmentation + GFs), or "TronsGun" (KNN + PIF).

Voidious (source)

Traditional GuessFactor Targeting is the specific combination of GuessFactors and Segmented Visit Count Stats. It uses these algorithms to statistically generate a good firing angle. It is one of the most popular and successful methods of targeting in all of Robocode. Alternatives to GuessFactor Targeting include Dynamic Clustering and Pattern Matching.

Note that despite its name, GuessFactor Targeting is not the only targeting method to use GuessFactors.

History

This article may require cleanup to meet RoboWiki's quality standards.
Please improve this article if you can.

Early description

Paul Evans and David Alves were the first authors who implement a form of GuessFactor Targeting, though their first systems did not yet use segmentation. The following description by David (from 2003), and the paper by Paul that he mentions, were what first brought GuessFactor Targeting to the rest of the Robocode community:

My targeting is similar to the SandboxLump/SandboxDT method. Here's how it works.

  • Calculate how far forward the other bot could go if it suddenly went top speed forwards for as long as it would take my bullet to reach the other bot. Call this Point A.
  • Calculate how far backward the other bot could go if it suddenly went top speed backwards for as long as it would take my bullet to reach the other bot. Call this Point B.

Now take a guess between -1 and 1 at where the bot is going to be. -1 would mean going straight back and ending up at B, 1 means going straight forward and ending up at A. 0 means sitting still. I just keep track of how well different numbers work and fire with the best one. You can find a better description (with code!) at this url. However notice that the algorithm that Lump uses (the bit where he says he uses the bot's current acceleration) is a bad idea, because it won't hit bots that sit still for a long time and then suddenly hit the gas. He fixed this when he came out with DT. (And I fixed it in Duelist! :-D) However, pretty much any targeting method will work well enough as long as it isn't simple linear or circular targeting, because some bots (like Fermat) will guess where you would fire if you used circular and dodge accordingly.

Good bots for testing targeting are:

  • Wolverine: A superb dodger, though it's very old.
  • JollyNinja: Open source! Stays as far from you as possible most of the time.

Also try the Nano bots – they're almost all open source and have some cool ideas.

David Alves, 2003

Evolution and refinement

While the same fundamental principles have applied since its creation, several key factors have helped GuessFactor Targeting become increasingly powerful and popular over the years:

  • Perhaps the most important was the addition of segmentation, which allows separate sets of statistics to be collected for different firing situations. Things like proximity to walls, current velocity, and distance from the firing bot have a large impact on what GuessFactor will hit the target, so segmenting your stats on these attributes helps a lot.
  • Kawigi, through his open source bot FloodMini and the GuessFactor Targeting Tutorial that he authored, showed many people how to implement GuessFactor Targeting.
  • There have been many incremental improvements to GuessFactor Targeting guns by a variety of authors, including:
    • Refining what attributes make the best segments.
    • Using Virtual Guns systems with multiple GuessFactor Targeting guns.
    • Using multiple Visit Count Stats buffers (and summing their values or switching between them).
    • Using precise maximum escape angles in GuessFactor calculations.

Description

This article is a stub. You can help RoboWiki by expanding it.

See also