AddNoOverlap for Single-Machine Scheduling

Use the AddNoOverlap constraint to model a single machine that can process at most one task at a time. Determine whether candidate schedules are feasible, compute the schedule induced by a given task order, incorporate release times, and check feasibility against deadlines.

Step 1 of 157%

Tutorial

The AddNoOverlap Constraint

A single-machine scheduling problem has nn tasks competing for one resource that can process at most one task at a time. In constraint programming we model each task ii as an interval variable with start sis_i, processing time pip_i, and end ei=si+pie_i = s_i + p_i.

The constraint

AddNoOverlap(I1,I2,,In)\text{AddNoOverlap}(I_1, I_2, \dots, I_n)

forces every pair of intervals to be disjoint. For all iji \ne j, the solver requires

eisjorejsi.e_i \le s_j \quad \text{or} \quad e_j \le s_i.

Geometrically, the intervals lie on a single time axis and may touch but never overlap.

Illustration. Take two tasks with p1=3p_1 = 3 and p2=2p_2 = 2. The assignment s1=0,s2=3s_1 = 0,\, s_2 = 3 produces I1=[0,3)I_1 = [0,3) and I2=[3,5)I_2 = [3,5), and e1=3s2=3e_1 = 3 \le s_2 = 3 — accepted. The assignment s1=0,s2=2s_1 = 0,\, s_2 = 2 produces I2=[2,4)I_2 = [2,4), which overlaps I1I_1 on [2,3)[2,3) — rejected by AddNoOverlap.

navigate · Enter open · Esc close · ⌘K/Ctrl K toggle