File size: 2,149 Bytes
79deb5f 50f82a1 79deb5f 50f82a1 79deb5f 50f82a1 79deb5f 50f82a1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
---
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](#prerequisites)
- [Run the application](#run-the-application)
- [Test the application](#test-the-application)
## Prerequisites
1. Install [Python 3.10, 3.11 or 3.12](https://www.python.org/downloads/).
2. Install JDK 17+, for example with [Sdkman](https://sdkman.io):
```sh
$ sdk install java
```
## Run the application
1. Git clone the solverforge-quickstarts repo and navigate to this directory:
```sh
$ git clone https://github.com/SolverForge/solverforge-quickstarts.git
...
$ cd solverforge-quickstarts/fast/maintenance-scheduling-fast
```
2. Create a virtual environment:
```sh
$ python -m venv .venv
```
3. Activate the virtual environment:
```sh
$ . .venv/bin/activate
```
4. Install the application:
```sh
$ pip install -e .
```
5. Run the application:
```sh
$ run-app
```
6. Visit [http://localhost:8080](http://localhost:8080) in your browser.
7. 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
1. Run tests:
```sh
$ pytest
```
## More information
Visit [solverforge.org](https://www.solverforge.org).
|