Jamilton

Ring road with IDM car following and MOBIL lane changes.

Time
Mean speed
Slowest car
Density
Lane changes

Ride-along

Live
Vectors:

Presets

Each row is a ring started at its settled speed and watched for 60 simulated minutes, either left alone or with one car braked for 1 s after 10 s. Most rows have one vehicle in ten a truck, about the share on UK motorways; a few have cars only. In all but the last two, drivers make room for a car that is stuck in a jam and wants to change lane, so jams spread across the lanes. The last two follow the book's lane changing, in which nobody makes room: a jam then traps the lane it forms in while the others keep flowing.

With cars only, traffic up to keeps flowing. From , which is where the model's flow peaks at about 2,500 cars an hour per lane, the small random wobble in every driver's speed is enough to start a stop-and-go jam: within ten minutes or so at on three lanes, and sooner in denser traffic. Trucks bring jams on at lower densities on two and three lanes. A 1 s brake is a light touch: it brings some jams on sooner and others later.

Each row is a scenario built on the defaults (row 0), and each outcome is that scenario with nothing or a brake added. Pick an outcome to load it: its road, drivers, seed and brake, exactly as measured, so the jam comes when the table says. Its seed is used for that run only; Reset goes back to your own. Click a row to see its scenario in full: values it sets itself are bright, values from a parent row say which, and the rest are the defaults. The number in the first column is the scenario's id, for npm run scenario -- preset <id>. Times are simulated; a jam means the slowest car fell below 5 m/s.

About this simulation

The road
The ring stands in for a long stretch of motorway with no junctions, with one to ten lanes. Lane 1 is the inside lane; cars overtake towards the outside and, unless you turn the rule off, hold back instead of passing on the inside while the lane outside them is flowing freely. Road geometry, in Settings, only changes how the loop is drawn; bends do not slow the cars.
Colours and vectors
Cars are coloured by speed to begin with: red at rest, and the same green for anything at 27.8 m/s () or faster. Colour by, under the ride-along view, can instead show live acceleration (red braking, grey steady, green accelerating) or any driver parameter. A parameter's scale runs from the lowest value on the road to the highest, so it only tells cars apart when that parameter varies between drivers. Vectors draws lines from each car, to the road's scale: desired speed and speed ahead of it, as the distance covered in half a second, and acceleration ahead when speeding up or behind when braking. They show in the ride-along view, and on the road once you zoom in far enough for cars to be drawn as cars.
Lane-change lines
The lane changes vector works like an indicator. A full, bright line points the way a car is moving while it changes lane. A shorter, fainter line marks a driver who wants to change and has been held back for at least a second, by safety or by consideration for others, and it lengthens over the next five seconds of waiting. Do not expect the two to match one for one. About half of all changes happen with no wait at all, so no faint line comes first; and most held-back wishes fade without a change, because drivers decide afresh every half second and a small shift in the gaps is enough to change their mind.
Zoom and pan
Scroll or pinch to zoom, drag to pan, or use the buttons above the road. Zoomed in far enough, cars are drawn to scale. Zoomed out, each car becomes a mark across the road, and the marks merge into a band of colour where traffic is dense.
Starting speed
Every run starts with each lane at the speed its drivers settle to at that density, every car at its own steady gap. With identical drivers that means evenly spaced cars. From then on every driver's speed wobbles a little at random, as real drivers' do, which is what sets off jams in busy traffic and gives drivers reasons to change lane; set Speed noise to 0 for traffic that stays exactly as it started until you disturb it. When drivers differ, a lane can go no faster than its slowest driver, and faster drivers soon start looking for a way past.
Drivers who differ
Each driver has their own value of every parameter in the Parameters box, whose ? button explains each one and says which published model it comes from. To begin with they are all the same. The button beside a parameter's name opens an editor where you choose how it varies: a few fixed values with a share of drivers each, a uniform range, or a normal distribution cut off at the ends of the slider. The picture there shows the shape asked for and a tick for the value each driver would have. The exponent δ takes fixed whole values only. Sliders in the panel apply at once; edits in the editor apply when you press Save. Either way every driver keeps their rank, so the fastest driver stays the fastest. Resample deals the drivers a new set of values from the same distributions: in the editor for one parameter, or with the dice at the top of the Parameters box for every parameter that varies. All of it, and the random wobble in every driver's speed, is worked out from one seed, which Settings lets you fix so that a run can be repeated (with the same time step). The Params button under the ride-along view lists the followed driver's own values beside those of the driver ahead. The presets were measured with identical cars, and identical trucks in the rows that have them.
The layout
The road and the ride-along view are in the middle. The panel on the left holds the charts and statistics; the one on the right holds presets, driver classes, parameters, braking and the road. The buttons at either end of the title bar hide a panel to give the road more room, and every box folds to its heading.
Classes of driver
The Driver classes box splits the fleet into classes. + Trucks adds lorries, one vehicle in ten: 16 m long, held to 25 m/s (), slow to gather speed and kept well back. + Class adds an empty class. Each class has a name, is drawn as a car or a truck, and takes a share of the fleet. Click a class there, or its tab at the top of Parameters, then tick a parameter to give that class its own value or distribution of it; everything left unticked it shares with everyone else. Colour by Class shows who is who. Changing vehicle lengths restarts the run.
Driver style
Parameters can be made to go together. Every driver has one style, from cautious to assertive, and the editor for a parameter that varies has a Follows driver style slider. At +1 the most assertive drivers get its highest values, at −1 its lowest, and at 0 style has no bearing. Set desired speed to follow style and time gap to oppose it, say, and the fast drivers are also the ones who follow closely, while each parameter keeps exactly the distribution you gave it.
Following a car
Click the road to follow the car nearest that spot. It is outlined in blue, and the ride-along view under the road shows it from above with the cars around it in every lane, on the road unrolled straight. Click a car there to follow that one instead. Brake lights come on when a driver brakes firmly, at more than 1 m/s², and stay on until the braking eases; gentler slowing is lifting off the accelerator and shows no lights. The line under the view gives the followed car's speed and gap, and its driver's own value of any parameter that varies. Params shows every parameter of the followed driver and of the driver ahead, and lets you change them. Settings has the view's zoom: a fixed scale, or one that moves to keep the nearest cars in view.
Braking
Shift+click the road, or press and hold it, to make the one car nearest that spot brake at 2 m/s² for the chosen duration. In the ride-along view, Shift+click a car to brake it. Brake, under that view, brakes the followed car; the arrow beside it opens a menu with Brake leader, for the car ahead. A car that is already braking keeps whichever end time is later.
Charts
The left panel has charts of the last 30 minutes of simulated time: a space-time diagram of speed along the road, a fundamental diagram of flow against density, the spread of speeds across the fleet, a car-order diagram, the speed of the followed car and cars behind it, and the waves round the ring. Below them, the detector chart shows the last hour at one spot on the road. Point at a chart to read values off it. Each has its own help, and buttons to copy or save it as a picture. Time skipped forward is filled in.
Enlarging a chart
The square button on a chart fills the space where the road is with it; the cross puts it back. While it is enlarged, pinch or scroll with Ctrl or ⌘ held to zoom in on part of it, scroll or Shift+drag to move about, and use the buttons above it to zoom in, out or back to the whole chart. The controls under the road keep working, so you can still look back and play.
Looking back and replays
The run keeps its last 30 minutes. Press or drag on any chart with time across it, or use the timeline under the road, to look at any moment of them: the road, the ride-along, the readouts and a white line on every chart all show that moment. Looking back pauses the run. Play then plays the past forward at the run speed and carries on live when it reaches the present; Back to live jumps straight there. Brakes and skips wait until you are back to live. Parameter changes made while looking back take effect when live time resumes, not in the past being shown, which never changes.
Save replay keeps those 30 minutes in a file, with the scenario the run started from; Open replay loads one, replacing the live run, to scrub and play through. A replay cannot be driven on from its end, so Back to live is off while one is open; Reset leaves it and starts a new live run with the current settings.
Scenarios
A scenario is a run written down as a small JSON file: the road, the drivers (every parameter's distribution, the classes, the style), the seed, the time step, any brakes at set times and how long to run. The same file runs here and from the command line (npm run sim), and gives exactly the same run in both. Each outcome in Presets is a scenario.
Open scenario loads a file and starts its run: its road on the sliders, its drivers in the Parameters box, and its seed and time step for that run only. Its brakes happen at their set times, and the run pauses at its end; Play carries on past it. Reset goes back to your own seed and time step. Copy link puts the run's scenario into a link that opens the page with it.
Save scenario writes the run's road, the drivers as the Parameters box has them now, its seed and time step, and a loaded scenario's brakes and length. It saves settings, not history: changes made during a run are not recorded as changes. The file holds the settings as they are when you save, applied from the start, so a slider moved half way through a run is in the file as if it had been set from the beginning. Brakes you apply by hand are not saved, and nor is resampling: a run of the file uses the seed's first draw. A saved replay's scenario is the run's as it started.
Recording video
The round button to the left of Play records the road, the ride-along and the first three charts as one video, including charts whose boxes are folded; press it again to stop and save. Each chart has its own record button for a video of that chart alone. One recording runs at a time, and a red dot with the time so far shows what is being recorded. Settings chooses between MP4 and WebM, and, in browsers that allow it, a folder that videos and saved pictures go to without asking. Recording pauses while the tab is in the background, and a skip forward shows as a jump.
What makes traffic jam
Density does most of it: the default drivers flow freely at and jam, left alone, from . That is where the model's flow peaks, and theory says these drivers are unsteady at every density beyond it, because they accelerate more gently than they brake. Sluggish acceleration jams lighter traffic and brisk acceleration steadies it; with acceleration and braking both at 2 m/s², theory says traffic is steady at any density. Lorries bring the tipping point down. Jams with no cause are a feature of rings like this one: on real roads a breakdown needs heavy traffic, a bottleneck and a disturbance together.
What is not yet realistic
On busy roads the inside lane carries over a third of the traffic here, against about a fifth in practice. In dense traffic identical drivers now change lane less often than real ones, and in light traffic mixed drivers a little more often. Once jammed, the road carries about a quarter less than its peak, where measurements say a tenth to a fifth. Speed noise here has no memory; real drivers' errors last seconds.
Sliders
Driver sliders take effect immediately, mid-run, without moving any car, except Length, which restarts the run as the Road sliders do. Brake duration applies to the next click.
Run speed and skipping
Run speed, the list beside the skip buttons, stops at 32× because faster than that the display cannot follow the motion: cars appear to crawl or run backwards, as wheels do on film. To jump ahead, the skip buttons run 1, 5 or 10 simulated minutes as fast as the engine can; if a skip takes more than a moment, the button you pressed fills up to show how far it has got, and with the engine in a worker (the default) the page stays usable meanwhile. If the computer cannot keep up with the chosen speed, it runs as fast as it can and the line under the road says what speed it is managing.
Collisions
Extreme driver settings can make cars collide. The run then stops; adjust the sliders and press Reset.

Space-time diagram

Speed at every place on the road at every moment, in one picture. It is the standard way to see jams form, travel and die.

How to read it
Time runs left to right and position round the ring runs upwards, so a car driving along traces a line rising to the right. Colour is the mean speed in that stretch of road, on the same red-to-green scale as the cars: green is fast, red is slow or stopped.
What to look for
A jam is a red band. It slopes down to the right because a jam moves backwards against the traffic: cars join at its tail and leave from its head. The steeper the band, the faster the jam travels; real jams and these both go back at about 15 to 20 km/h. Faint streaks that fade are disturbances that died out; streaks that darken and widen are waves growing into jams. Bands leaving the bottom come back in at the top, since the road is a ring.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Fundamental diagram

How many cars get through against how tightly they are packed. Traffic science calls this relation the fundamental diagram.

How to read it
The ring is cut into ten sections. Every 2 seconds each section gives one dot: its density (cars per unit of road, per lane) across, and its flow (cars passing per hour, per lane) upwards. Flow is density times speed, so a line from the corner to a dot is steeper the faster that traffic is moving. The newest dots are bright and older ones faint.
What to look for
Free-flowing traffic sits on the rising left side: more cars, more flow. Jammed traffic sits on the falling right side: more cars, less flow. When a jam forms, dots leave the peak and scatter down to the right, and total flow drops below what the road could carry.
The grey line
Where the dots would sit if traffic were perfectly steady: everyone identical, evenly spaced and holding one speed. It is worked out from the model for the fleet's median driver, not measured. With IDM+ or the Improved IDM it is two straight lines. On the rising one, gaps are roomy and everyone drives at their desired speed v₀, so flow is density × v₀. On the falling one, gaps are tight and everyone drives at the speed that keeps their standstill gap s₀ plus time gap T, which gives flow = (1 − density × (length + s₀)) / T, reaching zero where cars stand bumper to gap. The peak where they meet is the road's capacity, and the slope of the falling line is the speed at which jams travel backwards. With plain IDM the line is rounded at the top and lower.
Against published diagrams
Density here is counted along the road. Published diagrams mostly come from roadside detectors, which work density out from flow and speed at one point; that understates density in congestion, sometimes by half, and misses stopped traffic altogether. So measured dots sit further left than these would for the same traffic.
Why dots leave the line
Real traffic and this model are not steady: speed noise, lane changes and differences between drivers scatter the dots, mostly below the line on the congested side.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Speed spread

How much drivers' speeds differ from one another at each moment: the standard deviation of speed across every car on the road.

How to read it
Time runs left to right and the spread runs upwards, from zero at the bottom. The scale grows to fit, and its top value is shown in the corner.
What to look for
Near zero, everyone is doing much the same speed. A line that stays low and flat means disturbances are dying out. A line that climbs, slowly at first and then faster, is a wave growing into a jam, and it usually shows here before the jam can be seen on the road. It levels off once the jams are fully formed, with some cars stopped and others at full speed. With drivers who want different speeds it never reaches zero.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Car-order diagram

The space-time diagram again, but with the cars themselves up the side instead of places on the road.

How to read it
Time runs left to right. Each row is one car, and the rows are stacked in the order the cars are along the road now, ahead upwards, with the followed car in the middle (marked on the right). Colour is that car’s speed. A row follows the same car all the way across, so a car’s history reads straight along its row.
What to look for
Drivers only react to the car in front, so a disturbance can only travel from a car to the one behind it: here every wave runs downwards as time goes on, never up. Follow a car and brake it to see its disturbance pass back down the line, fading or growing as it goes. On the space-time diagram some of the same waves seem to creep forwards; that is the cars carrying them along the road.
Colour
Speed uses the same scale as the cars. Difference from mean colours each car by how far its speed is from the mean of all cars at that moment, grey for the mean, green faster and red slower, with small differences stretched so that faint waves show.
With several lanes
Cars in all lanes are stacked together by position, so neighbouring rows may be in different lanes. A lane change or an overtake swaps rows, which shows as a slight break.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Speed down the line

How a swing in one driver’s speed is passed back from car to car.

How to read it
Each strip is one car’s speed against time, all on the same scale (its ends are shown on the right). The top strip is the followed car; below it are the cars 10, 50, 100 and 200 places behind it in its lane now, as far as the lane has that many.
What to look for
A wave reaches each strip later than the one above. Where traffic is unstable the swings grow down the strips, slow ones most, while quick jitters fade: each driver passes slow swings on slightly larger, and that compounds car after car. Where it is stable the swings shrink down the strips.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Ring waves

The speed round the ring taken apart into waves, the way a sound is taken apart into notes.

How to read it
Any pattern of speed round the ring is a sum of waves that fit a whole number of times round it: one wave the length of the ring, two half its length, and so on (a Fourier series). Each row is one of those wave lengths, the longest at the bottom, on a stretched scale so the long waves where jams grow get room. Time runs left to right. Brightness is the size of that wave, in metres per second either side of the mean, on a scale from 0.01 to 10.
What to look for
Speed noise feeds every wave a little. In unstable traffic a band of long waves brightens steadily while the rest stay dim: those are the waves the drivers amplify. As a jam forms, the brightest one takes over and shorter waves light up too, because a jam is a sharp shape and sharp shapes need short waves to draw.
The dashed lines
The band of waves that linear theory says should grow, for identical drivers with the fleet’s middling parameters at this density in each lane; the tick on the right marks the one that should grow fastest. Point at a row to read how fast theory says it grows. The theory leaves out speed noise, lane changes and differences between drivers, so it is a guide, not a fit.
What it covers
The last 30 minutes of simulated time, sampled every 2 seconds, starting again on Reset. Time skipped forward is filled in. Point at the chart to read values off it; the buttons copy or save it as a picture.

Detector

What a roadside detector at one spot would record, and the swings in it by period.

Where it is
At the start of the ring, where the space-time diagram’s bottom edge is, marked across the road in amber. It reads the mean speed of the cars within 50 m either side of that spot, in any lane, every 2 seconds, keeping the last reading when no car is over it.
How to read it
The top strip is its speed over the last hour. Below it, the same readings are taken apart into swings by period, from every 4 seconds on the left to once an hour on the right, on a logarithmic scale; the height is the size of the swing.
What to look for
The same wave swings at very different periods depending on who is watching. A driver feels the fastest-growing wave as a slow swing of a minute or so, but crests move only slowly along the road, so a detector sees them pass far less often. The dashed line marks theory’s period for that wave at a fixed spot: its length over the speed of its crests.
What it covers
The last hour of simulated time, starting again on Reset; the spectrum sharpens as the hour fills. Point at either part to read values off it.

Driver classes

A class is a part of the fleet that differs from everyone else in some parameters: lorries that are longer and slower, say, or a group of impatient drivers.

All drivers / Everyone else
The drivers in no class. Their parameters are the ones every class shares unless it sets its own.
Name, look and share
Each class has a name, is drawn as a car or a truck, and takes a share of the fleet. The look changes only the drawing. Shares cannot add up to more than 100%.
Giving a class its own parameters
Click a class here, or its tab in Parameters, then tick a parameter there to give the class its own value or distribution. Unticked parameters follow everyone else.
+ Trucks
Adds lorries as one vehicle in ten, about their share on UK motorways: 16 m long, held to 25 m/s, slow to accelerate and keeping a 1.8 s gap.
Reset
Removes every class, leaving all drivers alike again. Parameters keep their settings.

How the statistics are measured

All figures describe the current run and start again from zero on Reset. Simulated time, not real time, throughout.

Lane changes
Counts since the run began. Left is towards lane 1, the inside lane. Per minute is the total divided by the time elapsed, so it is an average over the whole run, not a recent rate.
Per lane change
Each change is scored at the instant it happens, from the IDM accelerations before and after: the changer's own gain, and the summed change for the two cars behind it (the one it left and the one it pulled in front of). The figures shown are running averages over every change in the run. They say how much harder cars accelerate at that moment, not how much speed anyone eventually gains; following the cars for longer would need a run in which the change had not happened.
Cars yielding and mean loss
Each step, every car easing off to let a would-be changer in is counted, together with the acceleration it gives up (what the IDM would have had it do minus what it does). Both are averaged over the last 3 seconds of simulated time, which is why the count can be fractional: 6.2 means about six cars were yielding at any one moment during those 3 seconds. Mean loss is the window's total loss divided by its total count.
Speed given up
The unsmoothed yielding loss integrated over time (loss × step length, summed over the run), across all cars. It is the total speed that cooperation has cost drivers, so it grows for as long as anyone is yielding.
Lanes
Cars in each lane now, with their mean and slowest speed at this instant.
Strip above the road
Instantaneous values, except the lane-change total, which is the run's count.

The driver model

Every driver follows the same rules with their own values of the parameters below. The rules come from published models, plus some additions made for this simulator. Each section says which.

Car following IDM · Treiber, Hennecke and Helbing, 2000

Model chooses between three versions of the same law, which share all six parameters. The Intelligent Driver Model, the original, picks each driver's acceleration from three things: their own speed, the gap to the car ahead, and how fast they are closing on it. Every car applies it every time step: 0.1 s unless Settings says otherwise.

acceleration = a · [ 1 − (v / v₀)δ − (s* / s)² ]
s* = s₀ + max(0, v·T + v·Δv / (2√(a·b)))

The first bracketed term is the urge to reach the desired speed v₀, which fades as v approaches it. The second is the urge to keep a safe gap: s* is the gap the driver wants right now and s is the gap they have. The wanted gap grows with speed (v·T) and with closing speed Δv, so a driver bearing down on a slower car brakes, and brakes harder the faster they close.

Desired speed v₀
Speed on an empty road.
Time gap T
Following distance expressed as time; 1.5 s is a typical real value.
Standstill gap s₀
Gap kept when queuing.
Acceleration a
Maximum acceleration, and how quickly a driver responds in general.
Comfortable braking b
The deceleration drivers aim not to exceed; the model brakes harder when a gap closes too fast.
Exponent δ
How abruptly the urge to accelerate dies away near v₀. 4 is the usual value.

With identical drivers, traffic settles at the speed where the two urges balance for the gap available, which is why density alone sets the cruising speed here. Whether a disturbance then dies out or grows depends on the density and on a, b and T: when drivers respond sluggishly (small a) and gaps are short, a line of cars amplifies each other's braking and a stop-and-go wave forms.

The max(0, …) in s* is not in the 2000 paper. It comes from the same authors' later textbook (Treiber and Kesting, 2013), and stops a leader pulling away from shrinking the wanted gap below s₀. Cars cannot reverse, and there is no reaction delay. A lane of mixed drivers settles at the one speed they can all hold, each at their own gap.

IDM+ (Schakel, van Arem and Netten, 2010), the default
Takes the smaller of the two bracketed terms where the IDM adds them, so a driver is held back by their desired speed or by the car ahead, whichever binds, not both at once. The steady gap is then exactly s₀ + v·T. Under the IDM it is longer, much longer near v₀, which is why IDM traffic of the same density runs slower and carries less.
Improved IDM (Treiber and Kesting, 2013)
Reaches the same steady gap with a smooth formula in place of the sharp switch, and has a driver who is above their desired speed slow gently, never harder than b, where the other two brake unrealistically hard.

Unsteadiness Treiber and Kesting, 2018

Speed noise
No real driver holds a speed exactly. Each step every driver's speed is nudged up or down at random, by an amount whose variance is this value times the length of the step, so the size of the wobble does not depend on the step. It is what lets jams start by themselves in busy traffic. The paper fits values of 0.2 to 0.3 m²/s³ to real platoons. The wobble is fixed by the seed, so a run repeats exactly. At 0 the model is the original, perfectly steady one.

Vehicle Not part of either model

Length
Gaps are measured to the back of the vehicle ahead, so a long lorry takes up more road.
Hardest braking
The IDM puts no limit on braking and can ask for more than tyres can give. No driver here brakes harder than this; 9 m/s² is about the most a car manages on a dry road.

Lane changing MOBIL · Kesting, Treiber and Helbing, 2007

MOBIL stands for "minimising overall braking induced by lane changes". A driver asks what acceleration the IDM would give them in the lane beside them. A change is safe if the car they would pull in front of would not have to brake harder than bsafe. It is worth it if their own gain, plus the politeness share p of what the car behind them in the outer of the two lanes loses, exceeds the threshold Δa. That is the paper's form for keep-left roads: the overtaking lane has priority, so the follower there is the one considered.

Politeness p
Weight on the braking a change forces on others. 0 is selfish; 1 counts their loss as much as the driver's own gain.
Threshold Δa
Net gain a change must deliver before it is made; it stops cars flipping between lanes for nothing.
Keep-left bias
The paper's rule for keep-left roads: the threshold is raised by this for moving out and lowered by it for moving back in, so cars drift back to the inside lane when they can. At 0, drivers have no preference between lanes.
Safe braking bsafe
Hardest braking a change may force on the new follower. The default, 2 m/s², is the value in the authors' book; the MOBIL paper's table has 4.

One difference from the paper: the safe-braking limit also applies to the driver changing lane, which the paper suggests in a footnote and other simulators do.

Undertaking From the MOBIL paper, softened here

Undertaking is passing a slower vehicle on the inside. The MOBIL paper adds a rule against it for European roads: a driver who is faster than the car ahead in the lane outside them holds back, unless traffic there is congested.

Prevent undertaking
Turns the rule on or off. Off, with the keep-left bias at 0, gives a road where passing on either side is allowed.
Release speed
Once the lane outside is slower than this, it counts as congested and passing on the inside is allowed. The paper uses 60 km/h, which is 16.7 m/s ().

Changed from the paper in four ways. The paper reacts to the one car ahead in the outer lane; here the driver judges that lane by the average speed of the next three cars, so one car braking is not mistaken for the lane slowing. The paper has the driver follow that car as if it were in their own lane, at a full gap; here they slow only as much as it takes to be down to the outer lane's speed on drawing level with it, so a driver a shade faster barely eases off. Following at a full gap had drivers on three lanes braking firmly about eight times a minute. The paper sets no limit on how hard the driver brakes; here it is their comfortable braking b. And a car closer ahead than the standstill gap s₀ is ignored, since the driver is already alongside it. Other simulators soften the rule in their own ways, or leave it out, as does the authors' book. This form is ours.

Lane-change extras Not in the MOBIL paper

None of these is in the MOBIL paper, but most have precedents in other simulators or in the authors' book (Treiber and Kesting, 2nd edition). Impatience and ordinary cooperation are off by default: the book loosens the rules and has other drivers make room only for forced merges, such as a lane ending, which this road does not have. With them on, drivers change lane two to three times as often as real ones, and stop-and-go waves stop forming. Congested cooperation is on: without it a car stuck in a jam can never move into a lane flowing beside it, so a jam traps one lane while the others flow, which real congested traffic does not do.

Impatience time τ
At 0, the default, drivers are never impatient. Published MOBIL has no memory, and a driver stuck beside fast traffic would wait for ever. Here a driver who would gain from a change but is held back grows impatient: over τ seconds their politeness and threshold fade to nothing and the braking they will impose on others doubles, then keeps growing to at most three times bsafe. The SUMO simulator has a similar impatience that grows with waiting time, at junctions.
Cooperation
At 0, the default, nobody makes room in moving traffic. Above it, a driver who sees a held-back car wanting in ahead of them eases off as if it were already there, braking no harder than this share of bsafe. This is a variant of the gap creation in the LMRS model (Schakel, Knoop and van Arem, 2012).
Congested cooperation and congestion speed
The same share, used instead when the held-back car is crawling below the congestion speed, as when it is stuck in a jam. The default, 1, lets drivers brake up to bsafe to let it in, as LMRS lets a cooperating driver brake up to their comfortable braking, and as LMRS makes room only for a driver who badly needs it. The congestion speed, 16.7 m/s (60 km/h), is the speed below which the undertaking rule also treats traffic as congested. At 0 nobody makes room, and a car in a stopped lane can only get out once the traffic beside it has slowed on its own: jams then stay in one lane.
Relaxation time
A lane change often leaves the driver, or the one they pulled in front of, closer than they would choose. Real drivers accept that for a while. Here such a driver takes the time gap they find themselves with, down to half their usual T, and eases back to T over about this long, in place of braking at once to restore it. With 0 they brake at once, which makes traffic far more prone to jam. The idea is from the LMRS model and from Keane and Gao; this form is ours.
Decision interval
How often a driver reconsiders changing lane. Drivers take turns, so they do not all decide at the same instant. LMRS also uses 0.5 s; MOBIL decides every time step.
Cooldown
How long a driver stays put after a lane change before considering another. The drivers behind in the lanes they left and entered, who saw the change happen in front of them, also wait, for a quarter as long. Both waits, and the 4 s, are from the MOBIL authors' book; without the second, drivers swap lanes back and forth.
Merge gap
Smallest gap, ahead and behind, that a driver will move into, however safe the IDM says it is. The MOBIL authors' MovSim simulator uses 2 m.

Two further rules have no parameter: a car you have braked does not consider a lane change until it is released, and when two cars want the same gap the one further ahead takes it.

When drivers differ, a change is judged by the changer's own values of these parameters, and each affected driver's response by that driver's own IDM values; a driver making room uses their own cooperation.

Parameter

Parameters that differ between drivers are highlighted. Edit how they vary in the Parameters box.

Settings

Distances

Used for road speeds, densities and road distances. Anything shown in metres or m/s stays as it is.

Engine

Which implementation runs the model: the original TypeScript, or the same model in Rust compiled to WebAssembly. Both give identical runs. Changing it restarts the run.

Time step

How much simulated time each step of the model covers. Smaller steps are more exact and take longer; the presets were measured at 0.1 s. A preset, an opened scenario or a scenario link brings its own step, used for that run only; Reset goes back to this one. Changing it restarts the run.

Where the engine runs

In a worker the page stays responsive while long skips run. Shared memory avoids copying each frame's state but needs the page to be cross-origin isolated. Changing it restarts the run.

Random drivers

Optional. Left empty, each visit uses a new random seed, shown in the box. A seed you type is kept for future visits and always gives the same drivers, resample by resample, so a run can be repeated. It also drives the random wobble in every driver's speed, so it matters for every run. Changing it starts the resampling again from the beginning. A preset, an opened scenario or a scenario link brings its own seed, used for that run only; Reset goes back to this one.

Ride-along zoom

Dynamic zoom moves in and out to keep the followed car's nearest neighbours in view. Otherwise the view holds the zoom set here, zooming out only if the lanes would not fit.

Recordings and pictures
Recording folder:

Road geometry

Only changes the drawing. Bends do not slow the cars.