Difference between revisions of "@workgun"

From Robowiki
Jump to navigation Jump to search
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
==@work gun==
 
==@work gun==
I'm thinking about this new ibrid gun, it's work is quite simple: get and save data as PM gun, but can choose if use a PM or GF targeting algoritm.
+
I'm thinking about this new gun, it's work is quite simple: get and save data as PM gun, but use a Pattern object instead a byte to save information. Also use a weigthing system for every value in patterns, giving -1 if the value seem to change always, 0 if is ininfluent, 1 if seem to be always the same (GF applied on value change instead of angle)
 
===How gun works?===
 
===How gun works?===
* _ get data
+
* get data
* _ calculate % virtual hit on true shot using GF algorithm (at same bin distance if enought data)
+
* create a Pattern based on data
* _ calculate % virtual hit on true shot using PM algorithm (at same bin distance if enought data)
+
* find similar pattern(s)
* _ shot with the best gun, create a virtual wave for GF & PM, and set the wave as "true virtual wave"
+
* shot as PM, create a virual bullet containig the Pattern and his weigth
 +
* if bullet hit modify actual gun weigth with virtual bullet weigth
  
 
===Which data save?===
 
===Which data save?===
(difference are calculate every tick, if one or more scan fail gun can try to estimate lost data)
+
Pattern data stored:
* enemy distance travelled bin from 0 to 8 (int)
+
* enemy distance travelled
* enemy bearing change bin from 0 to 46 (int)
+
* enemy bearing change
* i've shot bin from 0 to 3 (int)
+
* i've shot
* enemy has shot bin from 0 to 3 (int)
+
* enemy has shot - not actually
* distance from me bin from 0 to 10 (int)
+
* distance from me
* enemy life bin from 0 to 10 (int)
+
* enemy life
  
 
===How find PM match?===
 
===How find PM match?===
* Look for exactly same data in an Arraylist<String> (index is tick) who contains bins indexin this form: (index bin 1).(index bin 2).ecc..
+
* Look for exactly equal Pattern (weigthDistance = 0)
 
if exactly match hasn't been found:
 
if exactly match hasn't been found:
* get all same data with same bin index
+
* Find distance of the Pattern value and multiply weigth, i call this "weigth distance"
* find the most similar results for every bin
+
<math>weigthDistance=(pattern1.value1^2 - pattern2.value1^2) * gun.weigth1</math>
* look how much enemy has moved from the most similar result until predicted hit
+
* Return Patterns with lowest weigthDistance
  
===How find similar result?===
+
===Where to shoot?===
* sum the distance of data bins index and sum it
+
As PM, see what happen after the best similar Pattern found :-)
* find the lowest sum
 
* if there are many low sum do the same but using the distance between absolute value and not bins index
 
  
I hope you have understend^^
+
I hope you have understend^^, ask if you need
 
==[[User:Lestofante|lestofante]] 13:11, 26 February 2009 (UTC)
 
==[[User:Lestofante|lestofante]] 13:11, 26 February 2009 (UTC)

Latest revision as of 16:51, 23 March 2009

@work gun

I'm thinking about this new gun, it's work is quite simple: get and save data as PM gun, but use a Pattern object instead a byte to save information. Also use a weigthing system for every value in patterns, giving -1 if the value seem to change always, 0 if is ininfluent, 1 if seem to be always the same (GF applied on value change instead of angle)

How gun works?

  • get data
  • create a Pattern based on data
  • find similar pattern(s)
  • shot as PM, create a virual bullet containig the Pattern and his weigth
  • if bullet hit modify actual gun weigth with virtual bullet weigth

Which data save?

Pattern data stored:

  • enemy distance travelled
  • enemy bearing change
  • i've shot
  • enemy has shot - not actually
  • distance from me
  • enemy life

How find PM match?

  • Look for exactly equal Pattern (weigthDistance = 0)

if exactly match hasn't been found:

  • Find distance of the Pattern value and multiply weigth, i call this "weigth distance"

<math>weigthDistance=(pattern1.value1^2 - pattern2.value1^2) * gun.weigth1</math>

  • Return Patterns with lowest weigthDistance

Where to shoot?

As PM, see what happen after the best similar Pattern found :-)

I hope you have understend^^, ask if you need ==lestofante 13:11, 26 February 2009 (UTC)