Skip to content
Smart cars transition multi-agent simulator created in Julia
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.


Smart cars transition multi-agent simulator created in Julia


Build status

Build Status codecov

This is a repository containig a simulation model accompying the paper:

Multi-agent routing simulation with partial smart vehicles penetration

by Bogumił Kamiński, Łukasz Kraiński, Atefeh (Atty) Mashatan Paweł Prałat and Przemysław Szufel

Journal of Advanced Transportation, Volume 2020 DOI

Agent-based Simulation Framework for modelling transport systems with partial smart vehicles penetration

The framework was optimized in terms of performance. Major performance tweaks include:

  • Yen's algorithm is based on custom, fast A-star implementation - 5 times performance improvement over a standard Julia implementation,
  • routes calculated by the k-shortest paths algorithm are saved for future re-use (memoization technique) - leading to up to 15 times faster simulation execution in comparison to no-memoization,
  • simulations use common, separately generated agents pools - halved overall running time.

We have designed the simulation tool in such a way that the simulations can be executed in a distributed fashion. Additionally the simulation model has been adjusted to work with KissCluster software KissCluster that can be used to manage the distributed simulation execution and the data collection process in the Amazon Web Service cloud.

In order to run the simulation please execute the following julia commnads:

using Pkg

Once the simulation package with its dependencies is installed get the run_sweep_v4_NoSerial-1.jl (available in the example project subfolder) to actually run the simulations. In order to to parallelize the simulation over a computational cluster you need to use external software. To start simulation, run the command:

julia run_sweep_v4_NoSerial-1.jl 1

where 1 is the value that will be parsed as the sweep parameter

You can’t perform that action at this time.