PubTrans / 15 minute city

Simulation guide

Tip: Press Pause at any time to freeze the simulation and examine its state. Vehicles, waiting riders, queues, metrics and Driver POV all hold still while you look around the maps. In Auto mode, tap or click any moving fleet vehicle, even while paused, to switch Driver POV to it; Exit POV returns to the followed bus.

Explore how a shared autonomous transport fleet serves a compact city and its surrounding neighborhoods. Change demand, fleet sizes, ride sharing and human-driven traffic, then watch how trips, queues and road pressure respond.

The world and its riders

The center is a 6 × 6 block grid, about 600 meters across. Five neighborhoods have winding streets and cul-de-sacs; four have random connections up to about a mile from the center, and the fifth always adjoins it. About two thirds of homes are downtown: 212 apartments and townhouses in five buildings, with 120 houses in the neighborhoods. Residents travel between homes, jobs, shops and school. Scheduled three-car trains carry up to 60 passengers from other metros, stop at corner Central Station and Juniper Park & Ride, then continue off the opposite end of the map. Each scheduled service sends a train from both directions, doubling service frequency. Opposing trains use parallel tracks in the same rail corridor. Riders transfer to the road fleet; outbound passengers board at the platforms. Trains also make 30-second extra stops for unassigned requests when both buildings are within one block of the tracks and the destination is ahead along the line. These riders share the 60 seats and count toward normal ride and queue averages. Crossing gates hold road traffic until the last carriage clears. Events also add bursts of passengers.

Getting around the app

Scroll through the regional, center and neighborhood maps, or use the map shortcuts. They show the same simulation at different scales. Driver POV rides one Juniper Commons bus all day; tap an active vehicle to ride along with it instead. Auto runs scheduled demand; Interactive lets you choose buildings and inspect a trip’s route. Use Pause or Reset day as needed. Playback speed advances everything together—it does not make trips shorter in simulated minutes.

Dispatch, queues and ride sharing

Sedans carry four people, shuttles eight, and large buses twenty. Buses connect their assigned neighborhood with the center. Requests wait until a suitable vehicle can serve them. More demand or longer trips can leave vehicles busy and queues growing. Ride sharing lets shuttles and buses add compatible on-the-way pickups while respecting seats and existing stops; extra pickups can also delay passengers already aboard.

Avg ride measures each completed passenger’s time from pickup to destination. Avg queue combines finished waits with the growing waits of riders still awaiting pickup, including those assigned a vehicle. Both averages run from Reset day.

Traffic and disruptions

Vehicles follow road speeds, one-way restrictions, stop signs and lights, and leave space behind traffic ahead. Jaywalkers cause braking; parked trucks can prompt a detour. Lime-green cars marked H are persistent human-driven traffic: they travel to a destination, occupy their lane and can hold up the fleet. Their slider starts at the old baseline of about five arrivals per simulated hour; each step above baseline adds five cars through interstate ramps at the farthest neighborhood. Those cars stay and make repeat local trips until you lower the slider, when excess cars leave via the ramps.

Rare police and fire incidents dispatch blue police sedans or red/pink fire crews. They block their arrival direction for five or ten simulated minutes. Trigger Emergency starts an incident immediately. Occupied transit vehicles can also break down; a white recovery vehicle transfers their passengers and continues their trips. The debug stream records these decisions and events, with emergency messages in red.

What “Gridlock” means here

The score is a congestion-pressure indicator, not the percentage of traffic stopped. It counts vehicle reservations on planned road segments plus obstructed segments, divided by the number of road segments. Longer routes and more vehicles can raise it. The overall bar compares the current score with the highest reached since Reset day. The chart below separates public fleet, human-driven traffic, emergency/recovery vehicles and road obstructions; its bars show each factor’s share. Read it alongside ride times, queue times and the count of vehicles delayed behind traffic.

How routes are chosen

Dijkstra’s algorithm finds the lowest-cost path through a network of road nodes and segments. Here, cost combines road distance with a penalty for routes already reserved by other vehicles. One-way restrictions and emergency closures rule out unavailable directions. Dispatch chooses whom to carry and the stop order; Dijkstra finds paths between those stops. It does not predict every future delay.

This is an illustrative simulation, not a calibrated traffic forecast. It models scheduled demand, shared rides and road disruptions with simplified driving and congestion rules. Opening this guide leaves the simulation running unless you have paused it.

This was inspired by a comment that 'it would take an entire datacenter per city' to route SDEV traffic in a public transportation system. In fact it wouldn't take much more than what your browser uses ;) (real challenge will be integrating AI as an overall judge of what the sensors are seeing, bringing safety to near 100%)

Employer
Grocery
School
Rail stations
Train (cap 60)
Residential
Downtown apartments & townhouses
Sedan (cap 4)
Shuttle (cap 8)
Large bus (cap 20)
Police sedan
Fire trucks / support
Recovery vehicle
Police / Fire station
Human-driven (H)
Obstacle
Person boarding
Person alighting

Debug stream

Live metrics

Queue wait 0.0 min Queued 0