this repo has no description
1% Simplificación de la lista de enfermeras. 2include "regular.mzn"; 3 4enum NURSE; 5enum DAY; 6int: req_day; 7int: req_night; 8int: min_night; 9 10enum SHIFT = { d, n, o }; 11int: S = card(SHIFT); 12 13int: Q = 6; int: q0 = 1; set of int: STATE = 1..Q; 14array[STATE,SHIFT] of int: t = 15 [| 2, 3, 1 % Estado 1 16 | 4, 4, 1 % Estado 2 17 | 4, 5, 1 % Estado 3 18 | 6, 6, 1 % Estado 4 19 | 6, 0, 1 % Estado 5 20 | 0, 0, 1|]; % Estado 6 21 22array[NURSE,DAY] of var SHIFT: roster; 23 24constraint forall(j in DAY)( 25 sum(i in NURSE)(roster[i,j] == d) == req_day /\ 26 sum(i in NURSE)(roster[i,j] == n) == req_night 27 ); 28constraint forall(i in NURSE)( 29 regular([roster[i,j] | j in DAY], Q, S, t, q0, STATE) /\ 30 sum(j in DAY)(roster[i,j] == n) >= min_night 31 ); 32 33solve satisfy; 34 35output [ show(roster[i,j]) ++ if j==card(DAY) then "\n" else " " endif 36 | i in NURSE, j in DAY ];