this repo has no description
1enum JOB;
2enum TASK;
3TASK: last = max(TASK);
4
5% Duración de tareas.
6array [JOB,TASK] of int: d;
7
8% Duración total.
9int: total = sum(i in JOB, j in TASK)(d[i,j]);
10
11% Dígitos para salida.
12int: digs = ceil(log(10.0,int2float(total)));
13
14% Horas de inicio.
15array [JOB,TASK] of var 0..total: s;
16
17% Tiempo de finalización total.
18var 0..total: end;
19
20% Asegurar de que las tareas se realicen en secuencia.
21constraint
22 forall(i in JOB) (
23 forall(j in TASK where j < last)
24 (s[i,j] + d[i,j] <= s[i,enum_next(TASK,j)]) /\
25 s[i,last] + d[i,last] <= end
26 );
27
28% Garantizar que no se superponen las tareas.
29constraint
30 forall(j in TASK) (
31 forall(i,k in JOB where i < k) (
32 s[i,j] + d[i,j] <= s[k,j] \/
33 s[k,j] + d[k,j] <= s[i,j]
34 )
35 );
36
37solve minimize end;
38
39output ["Fin = \(end)\n"] ++
40 [ show_int(digs,s[i,j]) ++ " " ++
41 if j == last then "\n" else "" endif |
42 i in JOB, j in TASK ];