Optimizing Repair Shop Station Costs

Reducing Idle and Overtime Costs with Smart Scheduling

This post explains how our scheduling model minimizes idle and overtime costs in multi-station automotive repair shops. Using a Mixed-Integer Linear Programming approach powered by Google OR-Tools, we optimize the sequence and allocation of repair tasks so stations are used efficiently throughout the day. Tested on real repair shop data, our method reduces station utilization costs by up to 47% compared to manual scheduling. An interactive demo lets you see the results for a sample repair day, showing exactly how better scheduling translates into lower operational costs.

Decision Variables

\( x_{ij} = 1 \) if task \( i \) is assigned to station \( j \); else \( 0 \).

\( S_i \) = start time of task \( i \)

\( OT_j \) = overtime at station \( j \),   \( ID_j \) = idle time at station \( j \)


Objective (Minimize Station Cost)

\[ \min Z \;=\; \sum_{j}\!\big( c^{OT}_{j}\, OT_{j} \;+\; c^{ID}_{j}\, ID_{j} \big) \]


Key Constraints

Eligibility & assignment: \[ \sum_{j \in \mathcal{J}_i} x_{ij} = 1, \] \[ \ x_{ij}=0 \text{ if station } j \text{ is ineligible for task } i \]

No overlap on a station: For any tasks \( i,k \) on station \( j \), \[ S_i + p_i \le S_k \;\; \lor \;\; S_k + p_k \le S_i \]

One station per car at a time: Tasks of the same car cannot overlap across stations.

Idle & overtime definition (per station \( j \)): \[ ID_j \ge W_j - \sum_{i} p_i x_{ij}, \] \[ OT_j \ge \sum_{i} p_i x_{ij} - W_j, \qquad ID_j,OT_j \ge 0 \]

Open live demo

How to optimize this list of car which should assign to different stations with several constraints?