[Home]SymbolicDynamicSegmentation

Robo Home | Changes | Preferences | AllPages

Difference (from prior major revision) (no other diffs)

Changed: 23c23,25
That is a realllly slow gun. I just adapted it to ChumbaWumba, and it runs at about 30-40 fps versus a normal unmodded chumbawumba. -- AaronKrill
That is a realllly slow gun. I just adapted it to ChumbaWumba, and it runs at about 30-40 fps versus a normal unmodded chumbawumba. -- AaronKrill

Its really odd going throught the wiki and seeing comments on things I don't remember doing. -- Krillr

It is an hybrid method between StatisticalTargeting and Log Targeting. With low segmentation, it works like an statistical gun. With high segmentation it works like a PatternMatcher (in a way similar to Iiley's Waves pattern matcher).

It works as follows:

  1. Every turn, it launches a Waves. When it hits it records the bearing it hit. Instead of adding it to a bearings list, classified by a key (see next item).
  2. The key is calculated every time a wave is created, and it is an String created from the variables you want to segment that represent the current state of the enemy (this is why I call it Symbolic, because it maps continuous values into a symbol space. The idea is the same implemented in NanoLauLectrik, but you can use more sophisticated keys if you are not restricted by CodeSize). For example, if you are segmenting by enemy velocity and acceleration, you define a function: f(velocity, acceleration) -> String(2)
  3. When it is about to fire, it calculates the key that corresponds to the current state of the enemy.
  4. Then, it just searches for all the pairs (key, bearing) previously recorded (or the last 100, or whatever you want) and returns you a list of "bearings to hit".
  5. Finally , it uses a KernelDensity function to estimate the probability function for a given state and calculate the best bearing to fire (which is the máximum probability point).
  6. If the search for the keys fails (or doesn't return enough results) it removes the last symbol of the string and tries again. The process is iterative. It means that it works with a high segmentation when there is data available, but reduces it when there is not enough data available. This is because it has DynamicSegmentation?.

Some notes:

For an implementation, you can check Virus page.

-- Albert

That is a realllly slow gun. I just adapted it to ChumbaWumba, and it runs at about 30-40 fps versus a normal unmodded chumbawumba. -- AaronKrill

Its really odd going throught the wiki and seeing comments on things I don't remember doing. -- Krillr


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited July 29, 2006 8:56 EST by 1Cust5440.an3.sea18.da.uu.net (diff)
Search: