this repo has no description
at develop 1.7 kB view raw
1/*** 2!Test 3expected: !Result 4 solution: !Solution 5 evedays: 6 - [1, 1, 1, 1, 1] 7 - [1, 1, 1, 1, 1] 8 - [1, 1, 1, 1, 1] 9 - [1, 1, 1, 1, 1] 10 - [1, 1, 1, 1, 1] 11 - [1, 1, 1, 1, 1] 12 - [1, 1, 1, 1, 1] 13 flatroster: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 14 morndays: 15 - [1, 1, 1, 1, 1] 16 - [1, 1, 1, 1, 1] 17 - [1, 1, 1, 1, 1] 18 - [1, 1, 1, 1, 1] 19 - [1, 1, 1, 1, 1] 20 - [1, 1, 1, 1, 1] 21 - [1, 1, 1, 1, 1] 22 restdays: 23 - [1, 1, 1, 1, 1] 24 - [1, 1, 1, 1, 1] 25 - [1, 1, 1, 1, 1] 26 - [1, 1, 1, 1, 1] 27 - [1, 1, 1, 1, 1] 28 - [1, 1, 1, 1, 1] 29 - [1, 1, 1, 1, 1] 30 roster: 31 - [1, 1, 1, 1, 1, 1, 1] 32 - [1, 1, 1, 1, 1, 1, 1] 33 - [1, 1, 1, 1, 1, 1, 1] 34 - [1, 1, 1, 1, 1, 1, 1] 35 - [1, 1, 1, 1, 1, 1, 1] 36***/ 37 38% Prior to r8850 mzn2fzn would abort when attempting to flatten the 39% seq_search annotation here. 40 41include "globals.mzn" ; 42 43int: weeks = 5; 44int: flatsize = 7 * weeks ; 45 46array [1..weeks,1..7] of var 1..5: roster; 47array [1..flatsize] of var 1..5: flatroster ; 48 49array [1..7,1..weeks] of var 1..weeks: restdays ; 50array [1..7,1..weeks] of var 1..flatsize: morndays ; 51array [1..7,1..weeks] of var 1..flatsize: evedays ; 52 53solve 54 :: seq_search([ 55 int_search([restdays[d,w]|d in 1..7,w in 1..weeks], input_order, indomain_min, complete), 56 int_search([morndays[d,w]|d in 1..7,w in 1..weeks], input_order, indomain_min, complete), 57 int_search([evedays[d,w]|d in 1..7,w in 1..weeks], input_order, indomain_min, complete), 58 int_search(flatroster, first_fail, indomain_min, complete)]) 59 satisfy; 60 61output ["roster = ", show(roster), ";\n"];