Skip to content

Latest commit

 

History

History
46 lines (29 loc) · 2.45 KB

README.md

File metadata and controls

46 lines (29 loc) · 2.45 KB

SmartTransitionSim.jl

Smart cars transition multi-agent simulator created in Julia

Documentation

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 commands:

using Pkg
Pkg.add(PackageSpec(url="https://github.com/KrainskiL/SmartTransitionSim.jl"))

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 example/run_sweep_v4_NoSerial-1.jl 1

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