This repository contains the code for optimizing passenger inflow into metro systems to prevent overcrowding. It supports multiple regions through a TOML-based configuration system.
| Region | Interval | Data Period | Data Availability |
|---|---|---|---|
| Doha Metro | 15 min | Nov 27-30, 2022 | Not included (confidential) |
| Shanghai Metro | 10 min | May-Aug 2017 | Publicly available |
Note: Doha Metro data cannot be provided due to confidentiality agreements. The framework supports Doha but users must supply their own data.
- Julia 1.9+
- Required packages (see
metroflow/Project.toml)
# Doha (default)
julia metro_framework_parallel.jl 15 '2022-11-29T05:00:00' '2022-11-30T04:59:00'
# Shanghai
julia metro_framework_parallel.jl --config config/shanghai.toml 10 '2017-05-15T05:00:00' '2017-05-16T04:59:00'├── config/ # Region configuration files
│ ├── doha.toml
│ └── shanghai.toml
├── data_public/
│ └── Shanghai/ # Shanghai Metro data
│ ├── README.md # Detailed preprocessing docs
│ ├── stationInfo.csv # Station data (included, with fixes)
│ ├── station_lines_2017.csv
│ ├── stations_shanghai.csv # Generated
│ ├── metroarcs_shanghai.csv # Generated
│ └── OD_*.csv # Generated
├── functions/ # Core Julia modules
│ ├── config.jl # Configuration loading
│ ├── metro_functions.jl # Data loading utilities
│ ├── metro_model.jl # Optimization models
│ ├── metro_heuristic.jl # Heuristic algorithms
│ └── metro_simulation.jl # Simulation logic
├── results/ # Output directory
├── metroflow/ # Julia project environment
└── metro_framework_parallel.jl # Parallel framework (recommended)
The Shanghai data requires preprocessing. Station data files are included with corrections; OD flow files must be downloaded separately.
Download from the original dataset:
metroData_ODFlow.csv(11 GB)metroData_InOutFlow.csv(217 MB)
Place in data_public/Shanghai/.
cd data_public/Shanghai
julia --project=../../metroflow build_metroarcs.jlThis generates:
stations_shanghai.csv- Expanded network nodesmetroarcs_shanghai.csv- Network arcs with capacities
julia --project=../../metroflow plot_network.jlOpens an interactive HTML plot for data verification.
julia --project=../../metroflow transform_od.jl 2017-05-15 2017-05-21See data_public/Shanghai/README.md for detailed documentation.
Edit config files in config/ or pass via command line:
| Parameter | Description |
|---|---|
set_safety |
Safety factor limiting arc capacity |
set_max_enter |
Maximum passengers allowed to enter |
set_min_enter |
Minimum passengers allowed to enter |
set_scaling |
Demand scaling factor |
minutes_in_period |
Optimization period length (must be multiple of interval) |
Results are saved with region prefix:
results/logfile_{region}_*.csv- Aggregated summaryresults/queues/sim_queues_{region}_*.csv- Queue dataresults/arcs/sim_arcs_{region}_*.csv- Arc utilization
This project is licensed under the MIT License.