metadata
title: Maintenance Scheduling (Python)
emoji: 🔧
colorFrom: gray
colorTo: green
sdk: docker
app_port: 8080
pinned: false
license: apache-2.0
short_description: SolverForge Maintenance Scheduling problem
Maintenance Scheduling (Python)
Assign maintenance jobs to crews and schedule them over time, avoiding conflicts and meeting deadlines.
Prerequisites
Install Python 3.10, 3.11 or 3.12.
Install JDK 17+, for example with Sdkman:
$ sdk install java
Run the application
Git clone the solverforge-quickstarts repo and navigate to this directory:
$ git clone https://github.com/SolverForge/solverforge-quickstarts.git ... $ cd solverforge-quickstarts/fast/maintenance-scheduling-fastCreate a virtual environment:
$ python -m venv .venvActivate the virtual environment:
$ . .venv/bin/activateInstall the application:
$ pip install -e .Run the application:
$ run-appVisit http://localhost:8080 in your browser.
Click on the Solve button.
Problem Description
The maintenance scheduling problem assigns maintenance jobs to crews over a planning period while respecting constraints:
Hard Constraints
- Crew conflict: A crew can only work on one job at a time
- Min start date: Jobs cannot start before their ready date
- Max end date: Jobs must complete before their deadline
Soft Constraints
- Before ideal end date: Slight penalty for finishing too early (maintenance cycles restart sooner)
- After ideal end date: Heavy penalty for finishing late (risk of missing deadline)
- Tag conflict: Avoid scheduling jobs with the same tag (e.g., same area) at overlapping times
Test the application
- Run tests:
$ pytest
More information
Visit solverforge.org.