[Home]StasticalSymbolicPatternMatching

Robo Home | Changes | Preferences | AllPages

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

Changed: 21c21
If you'd like, feel free to grab LifelongObsession's jar from the repository. It's open-source, so you can see how I *seriously* optimized the computation time of this sort of pattern matching (compared to what you see in SingleTick). It also has a pretty sweet anti-xxx movement system, where you basically just paste in the source of your white-whale, modify here and there, and voila, you kick the crap out it ... but that's off topic ...
If you'd like, feel free to grab LifelongObsession's jar from the repository. It's open-source, so you can see how I *seriously* optimized the computation time of this sort of pattern matching (compared to what you see in SingleTick). It also has a pretty sweet anti-xxx movement system, where you basically just paste in the source of your white-whale, modify here and there, and voila, you kick the crap out it ... but that's off topic ... -- Simonton

Changed: 23,37c23
That's not a bad idea. It may be possible to create different movement profiles such that certain movement types (that do not lend well to pattern matching) can be plugged in. For instance, one could create an anti-antigrav targeting system where the bot takes a simplified antigrav system including the most commonly used variables for attraction/repulsion and as the bot observes its movement, it figures out what those variables are. The only issue I see with all of this, is that random movement will still be an issue because the bot won't generate the same random variables as his target. I certainly will take a look at your bot. If SingleTick got me this far, I can only imagine what I can learn from the tuned version. -- Ne

Oh, no, I caused a little confusion there. The Anti-xxx is *my* movement system. So you plug in the enemy's gun & avoid it (and therefore kick the crap out of it). Plugging in the enemy's movement is a *far* more difficult task, because you'd have to simulate all the variables the enemy takes into account for every tick until your bullet hits, including your own movement. That's why I said it was off topic ... -- Simonton

Ah, I see. Targeting is a precise function of a bot's movement whereas a bot's movement is a fuzzy function of several variables. Essentially you're still talking about targeting but it's virtual guns for you enemies targeting you. If that's the case it may be possible to include targeting "definitions" and avoid bullets based on what definitions the enemy is following. They would have to be evaluated based on the same way my GF gun determines accuracy of its virtual guns. You're suggesting to impliment special virtual guns for bots of xxx name. Wouldn't a really good wave surfer be able to accomplish the same thing? Although... not as easily or as accurately against those certain bots. -- Ne

Wave surfers do that very well against head-on & linear targeting as well as GF guns, but they can't predict PM guns very well. Be careful, you can't evaluate the enemy's VGs the same way you do your own. The only times you know where he shot are when you are hit or onBulletHitBullet?. Then you can evaluate your definition to see if he's following any of them. -- Simonton

Wouldn't it be simplier to adjust your own targeting techniques (in a massive VG array) so that you can use the same functions to target your enemy or calculate how your enemy targets you? Essentially VG array uses the majority of targeting techniques. It should be able to find the most accurate method being used and surf around them. The location of the bullet could be based on the most likely bullet trajectory and the distance that the bot revolves around the bullet would be based on the distance the second/third most likely angles are from the most likely. This should ensure that the three most likely angles are avoided. Again though, you could still plug your problem bots' gun code into the array, use it yourself against other bots, and avoid it almost every time when they use it. I'm definitely going to have to figure out bullet dodging and minimum risk movement. I think that's all my bot is lacking at the moment. It's going to take quite a bit of work to recode my guns to work both ways... but it will definitely be worth it. Super-duper-wave-surfing Here I come! -- Ne

You could certainly simulate enemy targeting algorithms, try and figure out which one is closest to what he's doing, and surf the angles generated by your simulated algorithms. (I think I actually made a poor attempt at this long before Dookious was a contender.) However, I'd say it's extremely likely that you will get much, much better results with the traditional method of surfing, in which you are dodging what angles the enemy is aiming at (updated when he hits you) in different situations. In a way, it's almost like a more abstract way of doing exactly the kind of thing you're talking about.

There is also CurveFlattening, in which you also (or instead) update your stats when you don't get hit, to simulate the enemy's learning process and randomize your movement even when you're not getting hit. Many expert movers turn on CurveFlattening if they are getting hit a lot, but it can really blow your scores against lesser bots, since you're kind of "corrupting" your dodging stats. (Way off topic now, maybe we should cut/paste this discussion elsewhere. =))

-- Voidious
Got off topic from here, moved to Chimera for the sake of keeping me sane. -- Ne

This is Ne's big nasty PatternMatching gun. It is not the best in the world but it was the best I could come up with considering my relative inexperience with all of this.

Bots it's used in:

How does it work?

Firstly there is a massive symbolic pattern buffer. It is broken down into scan-blocks that are haphazardly arranged in a hashtable. Each block represents a string of uninterrupted scans over a certain bot. This solves any problems that pattern matchers tend to have with interrupted scans. Because the number of scan blocks is limited, it replaces the smallest scan block whenever choosing a new block to edit.

When attempting to determine the future location of a target, it will search for the previous n states in all of the scan blocks. It tries to find a balance between a long search pattern and several returns. If the pattern is not found, it reduces the search length. If the search length is still relatively long but returns very few instances in the buffer, it will again reduce the search length until it finds a happy equilibrium.

From there it simply finds all instances of the search pattern and then finds up to 5 possible future ticks in each scan block. Then it simply finds the one tick that is occurred the most times, advances the virtual target one tick, then repeats the process until it registers a bullet hit. If it runs out of data to process, it will revert to circular targeting. It is also capable of predicting and accounting for WallCollision?.

In effect this is somewhat like SingleTick targeting.

Comments / Suggestions:

Nice! -- Simonton

Thanks Dude. Not just for the compliment, but for the inspiration. This happens to be the one piece of my bot that I'm most proud of and it's largely inspired by your SD/SingleTick PM gun. Now you've got me thinking about recording a change in velocity and heading instead of the literal velocity and heading change. I'm also thinking about folding the buffer and possibly combining the two characters used to encode them into one to increase efficiency. The more effecient I can make this thing, the more possible future ticks I can sample from in order to make more accurate statistics. As soon as I can tune Chimera's movement, I'll definitely revisit this. -- Ne

If you'd like, feel free to grab LifelongObsession's jar from the repository. It's open-source, so you can see how I *seriously* optimized the computation time of this sort of pattern matching (compared to what you see in SingleTick). It also has a pretty sweet anti-xxx movement system, where you basically just paste in the source of your white-whale, modify here and there, and voila, you kick the crap out it ... but that's off topic ... -- Simonton

Got off topic from here, moved to Chimera for the sake of keeping me sane. -- Ne


Robo Home | Changes | Preferences | AllPages
Edit text of this page | View other revisions
Last edited May 3, 2007 7:29 EST by Ne (diff)
Search: