Congratulations to the promising MC2K7 results! I also had a run and find pattern matchers really hurting me... like they used to be.
Anyway, did you tune your movement specially against PMs? I did so as well but never got some real improvement. (What I do is to come up with a new tree with attributes designed for pattern matchers, but it seems to have no effect ;() Or maybe I need some tuning in surfing algorithms instead, like adding some stop option or decel randomly like DrussGT does. Orbiting predicted enemy pos may help as well (although I never tried it), or that may be caused by the weakness of Fancy Wall stick...
I was tuning against AS and magically a firing wave flattener with time-since-decel and all that stuff, besides usual attributes, gave me a good result. Only thing a did different from my past attempts was to build *really* separate sets of trees. The flattener stats and the hit stats were on a single set of trees in the past. Now they are distributed over two sets, each one with a bunch of trees. Then I normalize the logged buffers (dividing by max) and weight them by something like 60%/40%. This helped me to give a proper weight to the flattener. Not sure, but I suppose you already do this.
The hard thing now will be to keep this good results without being hurt against simpler bots. I hope it is just a matter of tweaking the movement enough so that the flattener threshold is not hit that often. And well, close-rangers, I can handle them separately in the future.
You do not have permission to edit this page, for the following reasons:
- The action you have requested is limited to users in the group: Users.
- You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.
You can view and copy the source of this page.Xor (talk)
I was already doing better than ScalarBot, both with the old flattener and with no flattener at all, but yeah, adding the flattener gave a tremendous improvement.
Thanks for that information ;)
After a long time of experiment, I finally think the main difference from bots do good against PMs is not in the surfing algorithm... but the way surfing stats are handled. Maybe I should try some more traditional way before starting innovation... I've been already dropping old surfing stats (which uses 1-nn) since 0.012n1 (and finally got similar performance), now maybe I should start dropping crowd tree views ;) I use three simple views each with 3~5 attributes as main surfing stats now, maybe that's the reason why I got hit from PMs (and the top guns as well) badly.
I always thought strong APM was from lots of temporal attributes. It also makes sense that it would be from a small K size to prevent always dodging the same points and building repeated patterns.
I really tried to drop my trees and use a single one, but I really couldnt figure it out yet. I still use a bunch of trees, one is 1-nn and has higher weight and bigger decay, probably approximating the effect Druss' buffers have, which seems to work nice against PM.
That makes sense — pattern matchers do better when you have repeatable patterns, then some alias (e.g. small k size) in surfing stats helps. But yes, low repeatability in surfing stats ought to be the main point. I’ve been tuning against RaikoMicro too much, which, each time makes me create more repeatable (but exploiting) patterns. However, this gain simply makes me exploitable against PMs & top guns.
Another important thing may be the smoothing function. I’ve been using gaussian, with very low bandwidth (actual only 1.5x bot width), which makes my surfing stats pretty local (not affected by dangers far away, or even near), then when some stats are not fast changing (since I have a bunch of persistent stats), there could be even more repeatable patterns. Doh!
My past experiments told me the same story, but again I preferred gaussian for too precise bullet dodging, and then lose to anything else.
Then I got why the 1nn movement does pretty well agaisnt top guns — it aliases heavily, and replaces the nearest neighbor each time new data comes in. And it uses 1 / x^2 as well.