2026-09-11 –, Unconference
Modern railway systems operate under tight capacity constraints, especially during planned maintenance. In this talk, we present a Python-based timetable optimization system that generates feasible alternative schedules while staying as close as possible to the original plan.
We walk through how a real-world optimization problem, based on the Periodic Event Scheduling Problem (PESP) and Station Capacity Model (SCM), can be translated into a scalable Python application. The talk covers modeling decisions, solver integration, and practical trade-offs between solver-agnostic frameworks (Pyomo) and solver-specific implementations (Gurobipy).
Beyond the optimization model itself, we highlight lessons learned from building and maintaining an optimization codebase, including object-oriented design, and handling growing model complexity.
This talk is aimed at data scientists, operations researchers, and software developers interested in applying optimization techniques in Python to real-world systems.
Attendees will leave with practical insights into modeling, implementation choices, and scaling optimization workflows in Python.
This talk presents a real-world case study of building a railway timetable optimization system in Python, designed to support planners during infrastructure maintenance when network capacity is reduced.
Problem Context
Railway timetables must satisfy strict safety constraints and balance multiple stakeholders (national, freight, and international trains). During planned maintenance, the original timetable often becomes infeasible, requiring generation of alternative schedules that minimize disruption.
Approach
We model the problem using:
- Periodic Event Scheduling Problem (PESP) for network timing constraints
- Including optimization decisions such as cancellations, re-routing, and time adjustments
- Station Capacity Models (SCM) for track assignment
The implementation is built entirely in Python, combining:
- Object-oriented design for maintainability
- Optimization modeling via Pyomo (solver-agnostic) and gurobipy (solver-specific)
Key Technical Insights
We discuss several practical engineering decisions:
- Trade-offs between solver-agnostic and solver-specific approaches
- Transition from solvers (SCIP to Gurobi) due to scaling limitations
- Performance bottlenecks in model translation and how persistent interfaces influences runtime
- Structuring large Python optimization projects
Relevance
This talk provides a practical, end-to-end perspective on applying optimization in production systems—bridging theory, implementation, and engineering trade-offs.
Outline
Note: We prefer the Deep Dive Talk (45 min) format to fully cover the technical trade-offs, but have included a Standard Talk (30 min) alternative.
Deep Dive Talk
- Introduction & Problem Context — 5 min
- Modeling the Railway Optimization Problem (PESP + SCM) — 10 min
- Python Implementation & Code Architecture — 5 min
- Solver Integration: Pyomo vs Gurobi — 15 min
- Q&A — 10 min
Standard Talk
- Introduction & Problem Context — 3 min
- Modeling the Railway Optimization Problem (PESP + SCM) — 7 min
- Python Implementation & Code Architecture — 4 min
- Solver Integration: Pyomo vs Gurobi — 11 min
- Q&A — 5 min
Target Audience
- Data scientists working with optimization problems
- Operations researchers
- Software engineers building production systems
- Intermediate level (basic Python required; optimization knowledge helpful but not mandatory)
Prior Knowledge Expected
- Basic Python
- Familiarity with optimization concepts (helpful but not required)
Keywords
optimization, operations research, pyomo, gurobi, gurobipy, scheduling, transportation, python, public transport, timetable