加载中…
加载中…
From episode 15 of A Million Tries ("My AI Race Car Refused to Make a Pit Stop"). One brain drives every car in an 8-car race: contact, damage through the physics, dirty air, soft/medium/hard tyres that wear out (scaled to a Grand Prix's 305 km) and fail when worn through, a fuel limit with no refuelling, and a pit lane with an automatic 80 km/h limiter. The team calls it in; it has to turn in, brake and stop on its mark.
How it got here (devlog steps 8-9): the episode 14 driver, then PPO in a race school (one-minute stretches of real races, the team paying back a called stop, a pit coach): ~60,000 calls, 0 stops. Then imitation of a hand-written pit driver (turn-ins 2 -> 146 of 256 called cars on unseen circuits), then evolution on race results (finish, fast; not finishing costs; no coach): whole races, then Grand Prix tyre wear. This is that last run, generation 50.
Under the final rules (marshals clear a stopped car in 10 s, an empty tank retires the car), 256 car-races in mixed fields of random designs on test circuits, GP tyres, the team calling when the worst tyre passes 60%:
| driver | finished | wrecked | into the wall | stranded dry | stops a car |
|---|---|---|---|---|---|
| the whole-race driver before GP tyres | 49% | 18% | 21% | 11% | 1.79 |
| this one (trained on GP tyres) | 66% | 8% | 8% | 8% | 1.49 |
episode-15: https://github.com/backstab319/a-million-tries/tree/episode-15
(games/race_field.py, agents/es_field.py; ailearns.agents.ppo_car builds the same network).From the YouTube channel A Million Tries: https://www.youtube.com/@amilliontries