21 lines
528 B
MiniZinc
21 lines
528 B
MiniZinc
int: horizon = sum(j in Jobs, t in Tasks)(duration[j,t]);
|
|
var 0..horizon: makespan;
|
|
array[JOB,TASK] of var 0..horizon: start;
|
|
|
|
constraint forall(j in Jobs, t in 1..nbTasks-1) (
|
|
start[j,t] + duration[j,t] <= start[j,t+1]
|
|
);
|
|
|
|
constraint forall(j in Jobs) (
|
|
start[j, nbTasks] + duration[j, nbTasks] <= makespan
|
|
);
|
|
|
|
constraint forall(m in Machines) (
|
|
disjunctive(
|
|
[start[j,t] | j in Jobs, t in Tasks where resource[j,t] == m],
|
|
[duration[j,t] | j in Jobs, t in Tasks where resource[j,t] == m],
|
|
)
|
|
);
|
|
|
|
solve minimize makespan;
|