<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://robowiki.net/w/index.php?action=history&amp;feed=atom&amp;title=The_Targeting_Problem</id>
	<title>The Targeting Problem - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://robowiki.net/w/index.php?action=history&amp;feed=atom&amp;title=The_Targeting_Problem"/>
	<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;action=history"/>
	<updated>2026-04-28T07:09:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.1</generator>
	<entry>
		<id>http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=3103&amp;oldid=prev</id>
		<title>Rednaxela: Add some content about log based targeting</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=3103&amp;oldid=prev"/>
		<updated>2008-09-26T15:37:53Z</updated>

		<summary type="html">&lt;p&gt;Add some content about log based targeting&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 15:37, 26 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l39&quot; &gt;Line 39:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 39:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vector quantization is another approach which could be used. The space of state vs hit angle could be considered as a set of vectors (points). A number of &amp;quot;representative vectors&amp;quot; could then be generated, using k-means, or the classic iterative Vector Quantization algorithm. The &amp;quot;representative vectors&amp;quot; have a neighbourhood which can be used either for segmentation as above, or the representative vector's Y's could be used directly as the estimated best Z' (though this may not work well in some cases).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vector quantization is another approach which could be used. The space of state vs hit angle could be considered as a set of vectors (points). A number of &amp;quot;representative vectors&amp;quot; could then be generated, using k-means, or the classic iterative Vector Quantization algorithm. The &amp;quot;representative vectors&amp;quot; have a neighbourhood which can be used either for segmentation as above, or the representative vector's Y's could be used directly as the estimated best Z' (though this may not work well in some cases).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;----&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Another approach is to create a list of previous situations, and from the list pick a smaller list of ones similar to the current one by some measure, and from that list generate the probabilities P(Y|X). See [[Pattern Matching]] and [[Dynamic Clustering]] for two different approaches in this category of targeting.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Targeting]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Targeting]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff::1.12:old-3088:rev-3103 --&gt;
&lt;/table&gt;</summary>
		<author><name>Rednaxela</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=3088&amp;oldid=prev</id>
		<title>Nfwu: Correcting Spelling...</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=3088&amp;oldid=prev"/>
		<updated>2008-09-26T13:22:57Z</updated>

		<summary type="html">&lt;p&gt;Correcting Spelling...&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 13:22, 26 September 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l5&quot; &gt;Line 5:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 5:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* the current state of the enemy robot (position, speed, direction, etc)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* the current state of the enemy robot (position, speed, direction, etc)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Mathematicaly &lt;/del&gt;stated, you are attempting to find the angle (Z) for which the estimated probability that the target will be hit at that angle (Y) will be &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;heighest&lt;/del&gt;, given the conditional information available (X).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Mathematically &lt;/ins&gt;stated, you are attempting to find the angle (Z) for which the estimated probability that the target will be hit at that angle (Y) will be &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;highest&lt;/ins&gt;, given the conditional information available (X).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;So:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l20&quot; &gt;Line 20:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 20:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the simplest case, no state information is used, so the estimates are simply P(Y), i.e. the chance that the enemy robot will be struck at any particular angle, as measured so far. This is done by building-up a histogram/table of what angle you should have fired at to hit the enemy robot, each shot. of Clearly, this approach will only work well if the enemy robot's state is unimportant to the firing angle (i.e. if it is stationary, or always moving in a circle at constant speed and distance around your robot).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the simplest case, no state information is used, so the estimates are simply P(Y), i.e. the chance that the enemy robot will be struck at any particular angle, as measured so far. This is done by building-up a histogram/table of what angle you should have fired at to hit the enemy robot, each shot. of Clearly, this approach will only work well if the enemy robot's state is unimportant to the firing angle (i.e. if it is stationary, or always moving in a circle at constant speed and distance around your robot).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In more complex approaches, some state information is used. &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Unfortunatly&lt;/del&gt;, in general state information is continuous, which means that it cannot be simply recorded to make a probability table, as can be done in the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;nieve &lt;/del&gt;approach above.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In more complex approaches, some state information is used. &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Unfortunately&lt;/ins&gt;, in general state information is continuous, which means that it cannot be simply recorded to make a probability table, as can be done in the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;naive &lt;/ins&gt;approach above.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To solve this problem, the continuous state information is ''quantized'' into &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;seperate &lt;/del&gt;states. For example, the movement of the enemy might be quantized into three states (travelling left, staying still, travelling right).  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;To solve this problem, the continuous state information is ''quantized'' into &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;separate &lt;/ins&gt;states. For example, the movement of the enemy might be quantized into three states (travelling left, staying still, travelling right).  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Three &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;seperate &lt;/del&gt;histograms can then be generated as above, showing hit angle frequencies, when the enemy state was each of the possibilities.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Three &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;separate &lt;/ins&gt;histograms can then be generated as above, showing hit angle frequencies, when the enemy state was each of the possibilities.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Unfortunatly&lt;/del&gt;, this also means that the data set (observed hit angles) is being split into three, and so the data available becomes much more sparse. This reduces the accuracy of the estimated probabilities.  &lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Unfortunately&lt;/ins&gt;, this also means that the data set (observed hit angles) is being split into three, and so the data available becomes much more sparse. This reduces the accuracy of the estimated probabilities.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In more extreme cases, one might want to consider a large number of possible enemy states, e.g. two states for enemy direction, three for enemy speed, five for enemy distance, say. This results in 2*3*5=30 histograms to be constructed, which reduces the data in each historgram by a factor of 30 (assuming the data is equally spread). Clearly, this becomes a problem quite quickly as more states are added, especially given the typical data set (~20 shots per round).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In more extreme cases, one might want to consider a large number of possible enemy states, e.g. two states for enemy direction, three for enemy speed, five for enemy distance, say. This results in 2*3*5=30 histograms to be constructed, which reduces the data in each historgram by a factor of 30 (assuming the data is equally spread). Clearly, this becomes a problem quite quickly as more states are added, especially given the typical data set (~20 shots per round).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l30&quot; &gt;Line 30:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 30:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possible approach would be to attempt to model the problem in a continuous way way, so that the conditional &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;probabilties &lt;/del&gt;P(Y|X) can be directly pulled-out.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Another possible approach would be to attempt to model the problem in a continuous way way, so that the conditional &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;probabilities &lt;/ins&gt;P(Y|X) can be directly pulled-out.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One way of doing this would be to estimate the probability density function using a &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;guassian &lt;/del&gt;mixture model, for example. So, for any given current state (X), the probability of a hit for any given angle (Y) can be pulled-out.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;One way of doing this would be to estimate the probability density function using a &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Gaussian &lt;/ins&gt;mixture model, for example. So, for any given current state (X), the probability of a hit for any given angle (Y) can be pulled-out.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Equally, one might try to use a neural network to model the probability density function. There are various ways of doing this with a neural network; the approach that I would use would be to quantize the hit angles (Y) into a number of &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;seperate &lt;/del&gt;levels. For each, I would have a neural network (multi-layer &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;perceptatron&lt;/del&gt;) which would target the classification problem - estimating whether there will be a hit or not at that particular network's angle. In theory, the neural networks will converge to estimate the probability density function, thus solving the problem.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Equally, one might try to use a neural network to model the probability density function. There are various ways of doing this with a neural network; the approach that I would use would be to quantize the hit angles (Y) into a number of &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;separate &lt;/ins&gt;levels. For each, I would have a neural network (multi-layer &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;perception&lt;/ins&gt;) which would target the classification problem - estimating whether there will be a hit or not at that particular network's angle. In theory, the neural networks will converge to estimate the probability density function, thus solving the problem.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;----&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vector quantization is another approach which could be used. The space of state vs hit angle could be considered as a set of vectors (points). A number of &amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;representitive &lt;/del&gt;vectors&amp;quot; could then be generated, using k-means, or the classic iterative Vector Quantization algorithm. The &amp;quot;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;representitive &lt;/del&gt;vectors&amp;quot; have a neighbourhood which can be used either for segmentation as above, or the &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;representitive &lt;/del&gt;vector's Y's could be used directly as the estimated best Z' (though this may not work well in some cases).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Vector quantization is another approach which could be used. The space of state vs hit angle could be considered as a set of vectors (points). A number of &amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;representative &lt;/ins&gt;vectors&amp;quot; could then be generated, using k-means, or the classic iterative Vector Quantization algorithm. The &amp;quot;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;representative &lt;/ins&gt;vectors&amp;quot; have a neighbourhood which can be used either for segmentation as above, or the &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;representative &lt;/ins&gt;vector's Y's could be used directly as the estimated best Z' (though this may not work well in some cases).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Targeting]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Targeting]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wikidb:diff::1.12:old-1429:rev-3088 --&gt;
&lt;/table&gt;</summary>
		<author><name>Nfwu</name></author>
		
	</entry>
	<entry>
		<id>http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=1429&amp;oldid=prev</id>
		<title>Voidious: moving TargetingProblem page</title>
		<link rel="alternate" type="text/html" href="http://robowiki.net/w/index.php?title=The_Targeting_Problem&amp;diff=1429&amp;oldid=prev"/>
		<updated>2007-12-06T15:17:19Z</updated>

		<summary type="html">&lt;p&gt;moving TargetingProblem page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The fundamental problem to be solved in targeting is to find the targeting angle (Z) at which to shoot, so as to maximize the probability of an impact given the information available (X)&lt;br /&gt;
&lt;br /&gt;
The information that is available (X) is:&lt;br /&gt;
* the observed past motions of the enemy robot&lt;br /&gt;
* the current state of the enemy robot (position, speed, direction, etc)&lt;br /&gt;
&lt;br /&gt;
Mathematicaly stated, you are attempting to find the angle (Z) for which the estimated probability that the target will be hit at that angle (Y) will be heighest, given the conditional information available (X).&lt;br /&gt;
&lt;br /&gt;
So:&lt;br /&gt;
Z = max Z' where Z' = P(Y|X)&lt;br /&gt;
&lt;br /&gt;
The probability is essentially one of estimating a conditional probability density, based upon a small and sparse data set - which is a very hard problem to solve well!&lt;br /&gt;
&lt;br /&gt;
There are many possible approaches.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Segmentation algorithms attempt to solve the problem by attempting to directly estimate the conditional probabilities P(Y|X), by simply recording the real statistics as they happen. &lt;br /&gt;
&lt;br /&gt;
In the simplest case, no state information is used, so the estimates are simply P(Y), i.e. the chance that the enemy robot will be struck at any particular angle, as measured so far. This is done by building-up a histogram/table of what angle you should have fired at to hit the enemy robot, each shot. of Clearly, this approach will only work well if the enemy robot's state is unimportant to the firing angle (i.e. if it is stationary, or always moving in a circle at constant speed and distance around your robot).&lt;br /&gt;
&lt;br /&gt;
In more complex approaches, some state information is used. Unfortunatly, in general state information is continuous, which means that it cannot be simply recorded to make a probability table, as can be done in the nieve approach above. &lt;br /&gt;
To solve this problem, the continuous state information is ''quantized'' into seperate states. For example, the movement of the enemy might be quantized into three states (travelling left, staying still, travelling right). &lt;br /&gt;
Three seperate histograms can then be generated as above, showing hit angle frequencies, when the enemy state was each of the possibilities. &lt;br /&gt;
&lt;br /&gt;
Unfortunatly, this also means that the data set (observed hit angles) is being split into three, and so the data available becomes much more sparse. This reduces the accuracy of the estimated probabilities. &lt;br /&gt;
&lt;br /&gt;
In more extreme cases, one might want to consider a large number of possible enemy states, e.g. two states for enemy direction, three for enemy speed, five for enemy distance, say. This results in 2*3*5=30 histograms to be constructed, which reduces the data in each historgram by a factor of 30 (assuming the data is equally spread). Clearly, this becomes a problem quite quickly as more states are added, especially given the typical data set (~20 shots per round).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Another possible approach would be to attempt to model the problem in a continuous way way, so that the conditional probabilties P(Y|X) can be directly pulled-out.&lt;br /&gt;
&lt;br /&gt;
One way of doing this would be to estimate the probability density function using a guassian mixture model, for example. So, for any given current state (X), the probability of a hit for any given angle (Y) can be pulled-out.&lt;br /&gt;
&lt;br /&gt;
Equally, one might try to use a neural network to model the probability density function. There are various ways of doing this with a neural network; the approach that I would use would be to quantize the hit angles (Y) into a number of seperate levels. For each, I would have a neural network (multi-layer perceptatron) which would target the classification problem - estimating whether there will be a hit or not at that particular network's angle. In theory, the neural networks will converge to estimate the probability density function, thus solving the problem.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Vector quantization is another approach which could be used. The space of state vs hit angle could be considered as a set of vectors (points). A number of &amp;quot;representitive vectors&amp;quot; could then be generated, using k-means, or the classic iterative Vector Quantization algorithm. The &amp;quot;representitive vectors&amp;quot; have a neighbourhood which can be used either for segmentation as above, or the representitive vector's Y's could be used directly as the estimated best Z' (though this may not work well in some cases).&lt;br /&gt;
&lt;br /&gt;
[[Category:Targeting]]&lt;/div&gt;</summary>
		<author><name>Voidious</name></author>
		
	</entry>
</feed>