Jump to navigation Jump to search

More thoughts on this.

When you only work with bullet hits, you can only be reactive to changes in the enemy targeting. Modern bots are designed around this, and they do a really good job with the limited information they have available too (see for example DrussGT's score on the Shark Challenge part 2) - even with complicated learning guns like RaikoMicro it is possible to effectively predict and dodge to get better results than a random gun would give.

However, the holy grail has always been to somehow predict where the enemy will shoot even before finding any bullets there. Theoretically we have the information we need to do that - we know where we were, we know what GFs for both hits and visits were logged, we could even model the type of gun the enemy has based on the bullet hits and (theoretically) transfer this learning across to the visits data. However until now there hasn't been any successful demonstration of using this pre-emptive data beyond just making a movement that is "flat with flat sauce" rather than taylor-made to dodge a specific gun.

I know in the past [[User::Voidious]] did quite a few experiments around adding very weak tick-wave flattening against mid-level opponents but was never able to realise any measurable gains. If this is able to be replicated across others bots and stats systems I see this as a great step-wise improvement in the state-of-the-art of Robocode, much like taking advantage of Bullet Shadows.

Skilgannon (talk)20:21, 21 October 2017

Another possibility why fuzzy AND works is that it simulates enemy data decay better, since they are decaying on visit, not hit. This way, I would not be dodging out dated data which reduced my movement options and therefore increase predictability.

If this is true, then why this doesn't work against weaker guns may be that the tick flattener is simulating the decay rate of strong guns, not weaker guns.

IMO The reason why OR approach doesn't work is that when you are already doing better than perfect random movement, being flat actually decreases your score. And unless your segmentation and decay matches them perfectly, you will end up a) dodging some bullet they will fire in the future — and making them not firing at there by avoiding there; b) dodging bullets that already hits you, this won't further help as well.

Xor (talk)03:13, 22 October 2017

So I did some quick experiments doing this with DrussGT and I saw a significant performance decrease. However, I think I'll need to re-tune the bandwidth / smoothing kernel, since now that it is effectively being squared it is much narrower.

Skilgannon (talk)11:39, 22 October 2017

Another thing is that my tick flattener decays very slowly, maybe that is also important for this to work :|

Xor (talk)12:29, 22 October 2017

note that the two trees in 0.012n2 are using exactly the same formula and same decay function. But using different formula and/or decay may work as well.

Xor (talk)03:16, 22 October 2017