Symbolic Dynamic Segmentation
A hybrid targeting method that acts as a log-based state matching gun with dynamic segmentation. The goal is that with low segmentation, it acts like a statistical gun, while with higher segmentation, it acts more like a pattern matching gun.
- Every turn, launch a wave. When it hits, add the bearing offset (or GuessFactor) to a hash table, indexed by a key that describes the enemy state at fire time.
- The key is a string derived from the attributes that you want to segment on, which represent the enemy state at fire time. For example, if you are segmenting by enemy velocity and acceleration, you define a function: f(velocity, acceleration) -> String(2)
- When aiming:
- Calculate the key for the current wave.
- Search the log for all (or last
X) bearing offsets (or GuessFactors) previously recorded for this key. This returns a list of firing angles for this situation.
- Use a kernel density function to decide on the best firing angle from the list of firing angles.
- If the search for the key fails (or doesn't return enough results), remove the last symbol of the string and try again. This means that it uses a high segmentation when there is more data available, but reduces it when there is not enough data available.