this repo has no description
1include "globals.mzn";
2
3% Horizonte de tiempo.
4int: horizon;
5set of int: Time = 0..horizon;
6enum Task;
7enum Machine;
8
9% Duración de cada máquina.
10array[Task,Machine] of int: d;
11int: maxd = max([ d[t,m] | t in Task, m in Machine ]);
12int: mind = min([ d[t,m] | t in Task, m in Machine ]);
13
14% Hora de inicio.
15array[Task] of var Time: S;
16
17% Duración.
18array[Task] of var mind..maxd: D;
19
20% Inicio de tarea opcional.
21array[Task,Machine] of var opt Time: O;
22
23constraint forall(t in Task)(alternative(S[t],D[t],
24 [O[t,m]|m in Machine],[d[t,m]|m in Machine]));
25constraint forall(m in Machine)
26 (disjunctive([O[t,m]|t in Task],[d[t,m]|t in Task]));
27constraint cumulative(S,D,[1|i in Task],card(Machine));
28
29solve minimize max(t in Task)(S[t] + D[t]);