The aim of this project is to rework the original Traffic Flow Dynamics Model. This rework consists of a full code rewriting, in order to implement more features (like intersections) and get advantage from the latest C++ updates.
The project only requires C++20
or greater and cmake
.
Utilities are written in python. To install their dependencies:
pip install -r ./requirements.txt
The library can be installed using CMake. To build and install the project in the default folder run:
cmake -B build && cmake --build build
sudo cmake --install build
Otherwise, it is possible to customize the installation path:
cmake -B build -DCMAKE_INSTALL_PREFIX=/path/to/install
then building and installing it (eventually in sudo mode) with:
cmake --build build
cmake --install build
This project uses Doctest for testing.
To compile tests run:
cd test
cmake -B build && make -C build
To run all the tests together use the command:
./dsm_tests.out
Some functionalities of the library have been benchmarked in order to assess their efficiency.
The benchmarks are performed using a small toolkit developed by @sbaldu, in order to keep them simple and
without needing to rely on large external libraries.
To compile the benchmarks use the commands:
cd benchmark
cmake -B build && make -C build
To run all the benchmarks together use the command:
for f in ./*.out ; do ./$f ; done
@misc{DSM,
author = {Berselli, Gregorio and Balducci, Simone},
title = {Framework for modelling dynamical complex systems.},
year = {2023},
url = {https://github.com/physycom/DynamicalSystemFramework},
publisher = {GitHub},
howpublished = {\url{https://github.com/physycom/DynamicalSystemFramework}}
}