Aplikacja wspierająca decyzje dyspozytorskie w zakresie optymalizacji rozkładu jazdy tramwajów. System realizuje dwufazowy proces planowania:
- Faza 1 — Symulowane Wyżarzanie wyznacza optymalną liczbę kursów w każdej godzinie doby, minimalizując czas oczekiwania pasażerów i koszt floty.
- Faza 2 — algorytm dystrybuanty CDF przekształca częstotliwości godzinowe w minutowy rozkład odjazdów, wygładzając przejścia między okresami o różnym popycie.
Główny interfejs to notatnik Jupyter (app.ipynb). Logika obliczeniowa znajduje się w modułach Pythona w katalogu głównym projektu.
- Python 3.10+
- Do generowania plakatów PDF: biblioteki systemowe dla WeasyPrint
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt- Uruchom Jupyter i otwórz notatnik aplikacji:
jupyter notebook app.ipynb-
Uruchamiaj komórki kolejno (
Shift + Enter). -
W pierwszej komórce możesz wygenerować dane testowe (
generate_dummy_data) lub umieścić własne pliki CSV wdata/input/:travel_times.csv— czasy przejazdu między przystankami (Origin,Destination,TravelTime_min)demand.csv— popyt pasażerski (Origin_s,Destination_d,TimeWindow_t,Demand_P)stop_names.csv— nazwy przystanków (stop_id,stop_name)
-
Skonfiguruj parametry algorytmu i modelu w kolejnych komórkach, uruchom optymalizację (Faza 1) i generowanie rozkładu (Faza 2).
-
Wyniki trafiają do:
data/output/final_timetable.csv— harmonogram w formacie tabelarycznymdata/output/pdf/— plakaty przystankowe w PDF
| Plik | Opis |
|---|---|
experiments.ipynb |
strojenie hiperparametrów Symulowanego Wyżarzania |
tester.py |
analiza wrażliwości parametrów modelu (C, R, α, β) |
Example_usage.ipynb |
przykładowe użycie modułów |