Skip to content

Original Monte Carlo Nagel Schreckenberg traffic simulation

License

Notifications You must be signed in to change notification settings

SVJayanthi/TrafficSimulation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TrafficSimulation

graph.png

Author

Sravan Jayanthi

Nagel-Schreckenberg

The famous Nagel-Schreckenberg model, known for its use of Original Monte Carlo to model random driver behavior in traffic, was recreated using Java to gain a greater understanding of the application of Monte Carlo theory. The simulation was setup with a random variable that would influence the motion of driver behavior. Eventually, the distribution of cars deviates from the starting conditions due to the influence of the random variable. The motion of the cars are governed by four rules: each car seeks to increase speed, their speed cannot exceed the speed limit, they must slow down if there is a car ahead, and the probability p of the car slowing down. In each time step, the cars operate on these rules and are repeated until the simulation is complete. The final rule, the reduction of speed randomly, is where driver behavior will be simulated in causing potential traffic jams.

Rules

  1. Cars experience constant acceleration until velocity limit is reached
  2. If the distance between a car and the vehicle ahead of it is smaller than the velocity, the velocity is reduced to avoid crashing
  3. The speed of the cars is randomly reduced, representing the random variable that will simulate potential traffic jams
  4. The cars are moved forward the number of cells equivalent to their velocity.

Implementation

Run the application:

Run TrafficSimulation\src\TrafficExample.java on a Java IDE.

Code

Sample code of updating speed of a car facing traffic.

        velocityCurrentArray[i] = Math.min((velocityCurrentArray[i]), (minDist-1));
        double prop = Math.random();
        if (prop >= pCrit) {
            velocityCurrentArray[i] = Math.max(0, (velocityCurrentArray[i]-1));
        }
        positionArray[i] = positionArray[i] + velocityCurrentArray[i];
        if (positionArray[i] > MSpaces) {
            positionArray[i] = positionArray[i] - MSpaces;
        }

Insights

The results of the simulations in give insight into why traffic develops and how it propagates through a highway. The random behavior of the driver to slow down has a direct chain effect on the motion of all the other drivers on the highway. Thus, the darker areas demonstrate areas of high traffic that sees many cars forced to slow down to prevent collision. The traffic eventually dissipates at the area of formation but the jam continues on going towards the back of the highway. The traffic propagates in the reverse direction of motion leading to many more cars getting stuck. However, it is the probability that the car will not slow down that allows the other cars to escape the traffic.

License

GNU

About

Original Monte Carlo Nagel Schreckenberg traffic simulation

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages