Discrete-event simulation of wagon operations on a rail network.
Independent research project (2021) written in C++.
The model explores how operational conditions, dispatching policies, and information completeness affect wagon turnaround and fleet utilization.
RailModel simulates daily wagon circulation within a simplified railway network.
The model evaluates how dispatching rules, control policies, and empty-run routing strategies affect key efficiency indicators such as:
- empty-run ratio
- wagon turnaround time
- fleet utilization
The model compares alternative operating regimes — for example, unified vs. split fleets, and systems with or without redistribution.
The simulation combines deterministic and stochastic elements:
- Shortest paths between stations are precomputed by the Dijkstra algorithm (by distance and by time).
- Daily operations follow a discrete cycle:
- cancel a share of unserved requests,
- generate new requests with uneven intensity,
- move wagons along active routes,
- assign available wagons to open requests.
- Assignment problem is solved using the Hungarian algorithm on a bipartite graph,
with weights defined by the selected control objective:- L — minimize empty-run kilometers,
- T — minimize delivery time,
- C — minimize empty-run cost,
- P — maximize profit.
Input files in .xlsx format:
distances.xlsx— inter-station distances,runtimes.xlsx— average travel times,emptycosts.xlsx— empty-run penalties.
Network topology and routing paths were visualized using Grin (Graph Interface).
Statistical analysis and result plots were produced in Python 3 with NumPy and Matplotlib libraries.
Typical outputs include wagon turnaround distributions, empty-run ratios, and utilization trends under different scenarios.
The Jupyter notebook
RailModel_analysys.ipynb
demonstrates data analysis and visualization of simulation results.
You can also open it directly in
Google Colab
to explore the charts interactively.
- Dispatching regimes with redistribution significantly reduce empty-run ratios compared to static allocation.
- Differences between unified and split fleets are minor under otherwise identical settings.
- Incomplete information (limited market visibility) decreases fleet efficiency.
- Language: C++17
- Environment: Visual Studio Community 2019
- Model: discrete-event simulation with precomputed routes and daily iterative loop
- Algorithms: Dijkstra (routing), Hungarian (assignment)
Kashitskii I. (2021). О влиянии различных условий управления вагонными парками на качество использования подвижного состава.
Conference on Transport Systems, October 2021.
📄 Read paper (PDF)
Ivan Kashitskii
Rail operations & process analytics • Tallinn, Estonia