this repo has no description
at develop 970 B view raw
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 ];