Bot AI improvements
Hi, I've got some ideas for improvements to the bot AI, or at least observations about how it misbehaves.
In points/elimination races (in the velodrome, but I assume something similar happens elsewhere), the AI consistently begins extremely calmly, so that the first lap is basically uncontested. The entire group then ramps up power heavily for the next 2-3 laps before apparently burning all of its matches and remaining calm for most of the rest of the race. It seems to, near the end, try to contest the penultimate lap, then again just coast over the line on the last lap. For example, on a recent race I was near the front of the first sprint averaging ~300W for the lap, then was almost dropped off the back of the next 3 at 350W-400W average, then easily won or came second in about 15 laps in a row with average below 300W and maximum below 400W. The last two laps again I had to average 350W+ to keep up. This isn't very sensible or very human, and is quite easy to exploit if you understand what's going on (just hang on for 4 laps, then push a little on every subsequent lap). Ideally at least some of the bots should understand they have N sprints to do and should save power for them so that every sprint is contested.
In general races (including eliminations/points sometimes, but mostly just scratch), I've noticed that the "breakaway" behaviour is mostly wasted effort: A bot will occasionally put in a big push, shooting past a 40kph group at 50-55kph, sit out a few seconds ahead for 1-2 minutes, then drop speed to 35kph and rejoin. It's rare for any other bot to ever join them, and even if a group does end up forming off the front, they generally just give up jointly after a while. Meanwhile, the main peloton doesn't appear to bother chasing, at least not until near the end of the race when almost without fail it will accelerate to 50kph+, close down 15-20 seconds of gap and overwhelm any group that happens to be off the front with 1km to go. Again, this is super-easy to exploit, as if you know the group off the front is bot-composed, you can ignore it 95% of the time because it'll never get far enough to make a difference. Ideally, bots would see and join breakaways, and would plan the breakaway effort to have enough beans to have a chance of making it to the end -- and bots in the peloton should have a chance of becoming a motivated chaser, especially if their "team" isn't represented ahead, helping to pull the peloton back when there's a dangerous breakaway.
I don't want to have unbeatable bots, or bots which behave optimally within their strength parameters (humans aren't this, after all), but I think I'd like it if the same tactics didn't put me ahead in every single race! I get absolutely destroyed when I race humans, so this effect is basically just falsely inflating my grade every time I race bots and teaching me bad habits.