Every night and all day, vans carry bikes from stations that are filling up to stations that are running dry. We rebuilt that job on a simulator driven by every real Citi Bike ride from April to August 2026, with vans that take real time to drive and load. Then we searched for the best way to run the vans. The winner plans each van's whole tour ahead, using only what an operator knows at the time.
Wednesday, July 15, 2026, replayed with the real rides of that day. Each dot is a station, colored by how full it is. A station that is empty or full turns away riders; each failed ride flashes. White dots are vans on duty, with a line to the stop they are driving to. Switch between the tour planner, the older station-target policy, and doing nothing.
The replay starts after two warm-up days. Van positions between stops are drawn as straight lines; the simulator drives them at taxi-measured speeds for the hour and borough.
Every policy trades van-hours for fewer failed rides. The tour planner sits below and to the left of everything else: fewer failed rides for less van time. August was held out and scored once, after every choice was frozen on June (search) and July (selection).
With perfect hindsight, the same planner fails only about 0.3% of rides. Fed the true ride counts instead of a forecast, the deployable planner gets there too. So the whole gap is the forecast. The ladder below feeds the planner more and more of the truth: knowing each station's daily total barely helps. Knowing when the next few hours of rides arrive is what matters.
We tried every source of new information we could get for July: better station profiles, trips already on the road, archived hourly weather forecasts as they were issued, and Yankees and Mets home games. Rain really does cut rides by a third, and night games bring 50% more riders to the 15 stations by Yankee Stadium. Neither moves the planner beyond the ±0.03-point noise band (shaded). The rest of the gap is mostly the timing of a few rides at each station, which is close to pure chance.
Three random seeds of the search land within 1% of each other, and on the same van schedule: a night crew of about 20 vans and a midday crew of about 18, with few vans in the rush hours. The work is done before the peaks.
July, same van-hours. The planner stays ahead when loading takes twice as long or traffic is 30% slower.
A four-borough drive graph from OpenStreetMap (273,000 nodes) replaces straight lines × 1.3. Roads are 1.22× the straight line at the median, but with long detours at the rivers. Every policy loses a little; the planner loses least, because it prices each leg when it builds a tour.
All 5.6 million station pairs more than 300 m apart.
Since September 22 we've archived Citi Bike's live station feed every five minutes. It can't be scored against rides until September's trips are published, but it already shows something the simulator missed: broken bikes hold 7.4% of all docks, and another 1.5% of docks are out of service. A rider can use only about 89% of the docks a station has.
Failed rides rise 2.5–3× for every policy. The planner still wins at every budget. For the headline planner, lost docks cost about 2.2 points, against the 3.5 points rebalancing saves.
A closed fleet over 2,367 stations in Manhattan, Brooklyn, Queens and the Bronx, driven by every recorded ride. A rider who finds a station empty or full is a failed ride. Vans carry 20 bikes, drive at speeds measured from June 2026 taxi trips by borough and hour, and spend 2 minutes per stop plus 20 seconds per bike. June trains, July selects, August is scored once.
Every 15 minutes, each idle van runs a beam search over tours: a sequence of lifts and drops, up to 20 bikes aboard, ending empty. A stop is worth the failed rides it is expected to prevent, from the minute the van gets there, using a forecast of each station's rides over the next 10 hours. Eight numbers — vans on duty in four blocks, look-ahead, the forecast's spread, and prices for a van-minute and a bike — were set by CMA-ES on June, charging failed rides, van-hours and bikes moved.
Failure rates count rides that found no bike or no dock. Van-hours are vans on duty. The simulator assumes every dock works and one bike class; the live feed says that is optimistic, so read the absolute rates as a lower bound and the comparisons as the result.
Citi Bike reports rebalancing 101,757 bikes in June 2026, about 3,390 a day. The headline planner moves 3,570 a day in August, about the same, while failing a quarter fewer rides than the best policy that didn't plan tours.