Did the flattener help against weak bots?
The highlighted comment was created in this revision.
So, the best version that i ever had was 1.95, by a fairly large margin. In 1.96, I fixed a bug where I had accidentally had the flattener on for any bot hitting me more than (normalizedProbability-0.045) which happens with way more bots than a flattener would usually be used for (it corresponds to roughly a 7% hit rate). Is it possible that the flattener helps?
I think there's only one way to find out. :-) Try lowering the threshold?
But I'd say it largely depends on how heavily your flattener is weighted, how your hit percentage is normalized, and so on. A 7% hit rate might be low but it really depends on the distance and bullet power, so I'd have to see how you're normalizing it to say.
Diamond's main flattener is enabled at hit rate = 5.9%, normalized to precise escape angle = 0.98 and precise bot width of 0.1 radians, which is something like bullet power = 2 and distance = 500. I also found a little bit of improvement with another lower weighted flattener enabled at half that hit percentage. So maybe that can give you a ballpark idea of how high/low your threshold is compared to mine, which I think is pretty well tuned. I also add a margin of error based on number of shots, like they use to calculate margin of error in election polling, which lets me set it as low as possible without much risk. (So it's only really 5.9 after a lot of shots, early on it's quite a bit higher.)
Another thought is don't be afraid to just re-release 1.95 as 1.95b. There could have been some weird battles or something and you are just chasing shadows - I've definitely had that happen.
Well, the re-release is showing that 1.95 really was the strongest by a large margin. When I said I had the flattener on, I was actually being imprecise, what I had was one of my "semi-advanced" classifiers being trained with visits and hits and one of my flatteners being trained with only hits. Regardless, I ran some tests this morning that show 1.99.5's gun as being weaker than 1.95. I had previously spent all my time searching for something i broke in the movement when I "fixed" the gun, but I guess I broke something in the gun instead...
My changes to the gun (from Gilgalad's targeting strategy page): Version 1.99.4 is, I think, the first robot to handle virtual waves exactly. After a real wave is fired, the virtuality and bullet power attributes for the real waves are set. Bullet power is a weighted average of the two real waves around the virtual waves (in terms of time). At training time, the waves play through a log of positions with the new bullet power. Attributes, which can depend on bullet power, are calculated only when training and aiming (aiming uses the estimated bullet power).
That should only improve the accuracy if done correctly, right?
So you have two attributes, virtuality and bullet power. Virtuality is 0 at fire time and scales linearly to 1 halfway between firing bullets? If so, I certainly agree with that and it's what I do in Diamond.
And bullet power is average of the two firing waves. I'm not sure about that part. The enemy hasn't seen the second wave's bullet power until it's fired, so how could it be an input to predict his movement before then? Or if you're looking at it as both bullets being in the air during flight time, shouldn't it instead be the weighted average of all bullets in the air over the course of the bullet's flight time? (And FWIW, I barely weight bullet power as an attribute and it's a pretty recent addition.)
I definitely think virtuality is the right way to handle gun heat as an attribute, but I haven't really proven it outperforms other approaches in KNN guns.