Singapore is starting driverless shuttles inside new towns. This study asks what it would take in a mature one. It sends a simulated weekday of Yishun's internal bus rides, drawn from LTA fare-card counts between every pair of stops, through an on-demand shuttle fleet and compares every ride with today's buses. Road times are calibrated to LTA's live bus data and checked against bus GPS movement.
Short answer: in the model, yes, with a fleet sized for the morning rush and at a cost. About 450 ten-seat shuttles running all day beat today's buses in every hour; 425 do not. That is 3.0 times as many vehicles as the 152 buses of all services inside Yishun at 07:00, driving 4.7 times the kilometres, with up to 27 shuttles stopped at once at Yishun MRT.
Four-seat vehicles would need 700, twenty-seat ones 375. The dispatcher matters as much as the vehicles: one that considers four times as many shuttles per request needs only 375. Across 18 alternative assumptions the ten-seat fleet ranges 375–550. Several assumptions favour the shuttles: unlimited kerb space, no traffic added by the fleet itself, no charging, travel times known exactly, and road speeds measured outside the morning rush. Two favour the bus: crowding is ignored, and the dispatcher is a simple one.
Keys: space plays or pauses, arrow keys step 5 minutes. Shuttle movements are the simulator's own output for one demand replicate. Bus movements are modelled from LTA's published headways and calibrated running times (LTA does not publish timetables or vehicle traces). Building heights for HDB blocks come from HDB's storey counts; other buildings are context massing from OpenStreetMap.
Car ownership in Singapore is capped by the vehicle quota, so the autonomous future being tested here is fleets serving towns. Punggol's autonomous shuttles opened to the public on 1 April 2026 to "enhance connectivity to key amenities and transport nodes for residents within Punggol" (LTA, 4 March 2026). In September the Transport Minister said Singapore had "only 16 passenger vehicles, all in Punggol" and about 20,000 riders so far. Next comes a trial of point-to-point service "within the whole estate, without the need for fixed routes", then one to two more HDB towns, Tampines North and Tengah (MOT, 18 September 2026). In October LTA stopped a planned pilot of autonomous buses on two public bus services, to look at narrower uses first (Mothership, 13 October 2026, confirmed by LTA).
Yishun was not among the towns named. Three in five of its HDB blocks were completed in the 1980s (HDB property data), it has about 221,600 residents (Census 2020), and about 163,745 bus rides a day start and end inside the town. In Punggol, Grab is piloting on-demand rides "between existing pick-up and drop-off points", taking the most direct path (LTA, 29 July 2026). This study asks what that model would take at Yishun's scale. Pickups and drop-offs stay at today's bus stops, so walking is the same in both modes.
It does not forecast AV adoption, fares, costs or safety, and it is not an LTA plan. Demand is held at today's observed bus rides. It compares two ways of serving the same rides on the same roads, and measures what the comparison would cost in vehicles, kilometres and kerb space. The closest Singapore study, Mo et al. (2021), simulated shared autonomous vehicles competing with buses for first-mile trips in Tampines, with operators choosing fleets and fares. This one holds demand fixed and asks what replacing every internal bus ride would take.
An earlier plan for this project was to simulate 20–80% self-driving private cars in Yishun's traffic, with roadside radio units and new traffic-signal plans. That does not fit Singapore. Car numbers are capped, traffic signals already adapt to traffic, and simulated self-driving cars mostly reproduce the following distances they are given. Open junction counts are sparse one-day surveys, while fare-card data counts the bus rides inside the town.
LTA publishes, for each month, how many fare-card rides went from every bus stop to every other, hour by hour. Keeping only rides that start and end inside the Yishun planning area leaves 163,745 rides on an average school-term weekday (July and August 2026), across 4,861 stop pairs. September, with a week of school holidays, has 8% fewer rides at 07:00.
Half of them cover less than 1.06 km as the crow flies, and 66% start or end at an MRT station (Yishun, Khatib or Springleaf) or the bus interchange. These are feeder trips: a few stops between an HDB block and the train. For trips this short, waiting is a large share of the journey. That is where an on-demand vehicle could help, and also where it has the least room for error.
LTA counts fare-card rides by boarding and alighting stop. Riders tap in and out, and LTA does not document how the few rides without a tap-out are handled. A trip that changes buses inside Yishun counts as two rides. Riders may live anywhere; what is counted is where they board and alight.
Each simulated day sends every observed ride through a fleet of pooled, on-demand shuttles that stop only where riders board or alight. Today's buses are modelled from LTA's routes and published headways. Running times, signal delay and dwell are calibrated on 171,838 matched pairs of LTA's live arrival estimates and checked against buses' reported GPS positions. Waiting times use headway regularity estimated from live predictions for GPS-monitored buses.
Above a threshold the shuttles are faster than the bus: riders wait less on average and ride direct. The margin is wide off-peak and narrower in the rush. Below it, the 07:00 rush leaves a queue that peaks around 08:00. The edge is sharp. With ten-seat shuttles, 450 vehicles keep up in every hour of all three simulated weekdays: 6.9 min at 08:00 against the bus's 10.5 min. With 425, the 08:00 hour averages 11.0 min, worse than the bus, before recovering by 09:00. With 375, it averages 39.6 min and 1.1% of the day's riders are refused.
Each point is the mean over three simulated weekdays (demand replicates); the band spans them. Both modes are measured on the same riders: the 0.4% of rides with no direct bus in LTA's route data are left out. Open markers show fleets that also refused riders (no pickup within 45 minutes), with a whisker to the mean if each refused rider counts as 45 minutes plus a direct ride. At the threshold a shuttle carries 1.8 riders on average, so bigger vehicles help less than their seats suggest: twenty seats instead of ten cut the fleet only to 375. A stricter rule, matching the bus's 90th-percentile time in every hour, needs 450 ten-seat shuttles.
450 shuttles is 3.0 times the 152 buses of all services that are inside Yishun at 07:00, and 5.6 times the 81 feeder buses on the road then. Each bus carries about ten times as many people, so today's buses offer more places (about 16,200 seated and standing, against 4,500 shuttle seats), and they also carry riders to and from other towns. In September 2026 Singapore's entire autonomous passenger fleet was 16 vehicles.
The shuttle fleet drives 160,133 km inside Yishun per weekday, 4.7 times the 33,871 km that all buses drive on Yishun's roads (15,102 km by feeders). Counting only the rides inside Yishun, buses carry at least 8 riders per kilometre they drive there. The shuttles carry 1.8, and 20% of their kilometres are driven empty, repositioning or heading to the next pickup.
Feeder-service theory points the same way. In Li and Quadrifoglio's analysis (2010) of a single feeder zone, demand-responsive service beats fixed routes only below about 10–50 riders per square mile per hour. Averaged over the town, Yishun's internal demand at 07:00 is about 2,000 riders per square mile per hour.
If the fleet in service could shrink after the rush, with vehicles parked or charging, far fewer would be needed off-peak: about 200 around midday, a few dozen after midnight. That would be at least 5,225 vehicle-hours in service a day instead of 9,450. The fixed fleet spends about 6,632 of its hours driving, against about 1,463 hours of bus driving inside Yishun.
Fleets by hour come from separate one-hour simulations with a 45-minute warm-up and no backlog carried over from earlier hours, so they are lower bounds. Each is the smallest fleet whose mean stop-to-stop time in that hour is no worse than the bus, with no refused riders (larger of two demand replicates, 25-vehicle grid). Bus counts and bus-km come from published headways and modelled running times. 98.5% of shuttle-km fall inside the planning-area boundary, as bus-km do.
| 10-seat shuttles (simulated) | Buses today (modelled) | |
|---|---|---|
| Vehicles in service at 07:00 | 450 | 152 |
| Vehicle-hours in service per day | 9,450 | — |
| … if resized every hour (a lower bound) | 5,225 | — |
| Hours driving in Yishun per day | 6,632 | 1,463 |
| Vehicle-km in Yishun per day | 160,133 | 33,871 |
| Share of km driven empty | 20% | not known |
| Riders on board on average (rider-km per vehicle-km) | 1.8 | at least 8 |
| Mean wait, whole day | 1.2 min | 3.3 min |
| Mean wait, 07:00–09:00 | 2.1 min | 2.8 min |
| Mean time on board | 5.5 min | 8.7 min |
| 90th-percentile wait, 07:00–08:00 | 6.2 min | 6.1 min |
Two-thirds of rides touch a station, so a pooled fleet converges on the stops around each MRT station. In the base case kerb space is unlimited, and the model counts what the fleet uses. With the fleet that matches the bus all day, up to 27 shuttles board or alight at once at the Yishun MRT and interchange stops, and 15 at Khatib, before counting idle shuttles waiting for work.
The model does not know how many vehicles each stop can hold. The kerb test asks how much it would need. The design question moves from "how many vehicles" to where they stop, and how riders walk to them.
In the kerb test, a shuttle that finds every berth at its station taken queues until one frees. The dispatcher does not anticipate these queues, so pickups there can slip beyond the usual five-minute limit.
Comparing each simulated ride with the bus it replaces shows where the gains fall. With 450 ten-seat shuttles, pooled over 3 simulated weekdays, 92% of rides reach their stop sooner than by bus, comparing each ride with one simulated bus wait (94% beat the bus's average time for that trip). The average saving is 5.4 minutes. Longer rides gain more: 78% of all rides under 0.5 km are faster, against 97% of all rides over 1.5 km, where bus routes loop and stop more often than a direct shuttle. After 20:00, when buses run less often, 98% are faster; in the 07:00–09:00 peak, 78%. The slowest tenth of shuttle rides take more than 10.5 min, against 20.0 min by bus (12.9 against 17.4 min in the 07:00–09:00 peak). Of the rides that are slower by shuttle, 19% are under 0.5 km; in 94% the shuttle wait is longer than the bus wait, and in 18% the shuttle ride is longer than the bus ride.
Same fleet as above. "Faster" compares each simulated shuttle ride with one simulated bus wait (random arrival, measured headway regularity) plus the bus's in-vehicle time for the same stops and minute.
Gains by the subzone where rides start. The census share of residents aged 65+ is context only: the fare-card data has no rider ages.
| Subzone | Rides a day (with a bus option) | Residents 65+ | Faster by shuttle | Mean gain |
|---|---|---|---|---|
| — | ||||
Smallest fixed fleet of 10-seat shuttles that keeps up with the bus in every hour on all three demand replicates, when one assumption changes at a time. The middle column says which mode the change favours.
| Assumption changed | Favours | Fleet that keeps up all day | Bus, day mean |
|---|---|---|---|
| — | |||
| Dataset | Provider | Used for | Licence |
|---|---|---|---|
| Passenger Volume by Origin Destination Bus Stops (July, August, September 2026) | LTA DataMall | Observed demand | Singapore Open Data Licence v1.0 |
| Bus Stops, Bus Services, Bus Routes; live Bus Arrival (v3) | LTA DataMall | Bus network; calibration; GPS check | Singapore Open Data Licence v1.0 |
| HDB Property Information; HDB Existing Building | HDB via data.gov.sg | Block heights and footprints | Singapore Open Data Licence v1.0 |
| Master Plan 2019 planning areas, subzones, land use | URA via data.gov.sg | Study area; base map | Singapore Open Data Licence v1.0 |
| Census of Population 2020, residents by subzone and age | SingStat via data.gov.sg | Age profile | Singapore Open Data Licence v1.0 |
| Roads, signals, buildings, rail | OpenStreetMap contributors | Road network; context | ODbL 1.0 |
The pipeline, simulator, tests and this page are in the project repository. With an LTA DataMall key in LTA_DATAMALL_KEY, these commands rebuild the results. The live calibration data of 15 October 2026 cannot be downloaded again, so the fitted values are committed and used unless you collect your own:
make data # LTA, data.gov.sg, OpenStreetMap make reproduce-core-results # experiments, sensitivity, page data, tests make live calibrate # optional: collect live bus data, refit make web # build this page