Metadata-Version: 2.2
Name: uxsimpp
Version: 0.0.1
Summary: UXsim++: Fast and simple traffic simulator for Python
Author-Email: Toru Seo <seo.t.aa@m.titech.ac.jp>
License: MIT
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: C++
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.9
Requires-Dist: numpy>=1.21.5
Requires-Dist: matplotlib>=3.5.2
Requires-Dist: pillow>=9.2.0
Requires-Dist: tqdm>=4.64.1
Requires-Dist: scipy>=1.9.1
Requires-Dist: pandas>=1.4.4
Description-Content-Type: text/markdown

# UXsim++: Fast and simple traffic simulator for Python

**UXsim++** (or **uxsimpp**) is a free, open-source mesoscopic network traffic flow simulator for Python. 
It simulates the movements of car travelers and traffic congestion in road networks. 
It is suitable for simulating large-scale (e.g., city-scale) traffic phenomena. 
UXsim++ would be especially useful for scientific and educational purposes because of its fast, simple, lightweight, and customizable features, but users are free to use UXsim++ for any purpose.

UXsim++ is a significantly faster variation of [**UXsim**](https://github.com/toruseo/UXsim), a pure Python-based traffic simulator.
Its functionalities and syntax are almost equivalent to UXsim.
Meanwhile, the internal simulation engine is thoroughly written in C++, making it 20 to 30 times faster than UXsim.
Thanks to pybind11, the C++ engine is fully accessible from Python codes without any dependencies.

This is alpha stage.
The codes and docs are work in progress.

## Main Features

## Examples

## Install

## Getting Started

```python
from uxsimpp import newWorld, Analyzer

W = newWorld(
    name="basic",
    deltan=5,
    tmax=1200,
    random_seed=42
)

W.addNode("orig1", 0, 0)
W.addNode("orig2", 0, 2)
W.addNode("merge", 1, 1)
W.addNode("dest", 2, 1)

W.addLink("link1", "orig1", "merge", 1000, 20, 0.2, 1)
W.addLink("link2", "orig2", "merge", 1000, 20, 0.2, 1)
W.addLink("link3", "merge", "dest", 1000, 20, 0.2, 1)

W.adddemand("orig1", "dest", 0, 1000, 0.45)
W.adddemand("orig2", "dest", 400, 1000, 0.6)

W.print_scenario_stats()

W.exec_simulation()
W.print_simple_results()

ana = Analyzer(W)
ana.plot_time_space_trajectories(["link1", "link3"])
ana.network_fancy()
```

## Further Reading

ArXiv preprint will be added

## Terms of Use & License

MIT License