GuessFactor Targeting (traditional)

From Robowiki
Revision as of 15:46, 13 November 2007 by Voidious (talk | contribs) (adding category "Targeting")
Jump to navigation Jump to search

A form of statistical targeting that combines GuessFactors, segmentation, and Visit Count Stats. It is one of the most popular and successful methods of Targeting in all of Robocode.

Early description of the method

Paul Evans and David Alves were the first bot authors to 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:

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.

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 the values or switching between them), and using precise maximum escape angles in GuessFactor calculations.

See also