sangraal.fzn 6.66 KB
Newer Older
Valentin Platzgummer's avatar
Valentin Platzgummer committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
array [1..8] of int: free = [1, 1, 2, 2, 3, 4, 5, 6];
array [1..8] of int: prep = [15, 5, 15, 5, 10, 15, 10, 5];
var 0..8: INT____00001 :: is_defined_var :: var_is_introduced;
array [1..8] of var 0..1: d :: output_array([1..8]);
var 0..8: maxk :: output_var = INT____00001;
array [1..8] of var int: t :: output_array([1..8]);
array [1..64] of var 0..1: x :: output_array([1..8, 1..8]);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[1], x[9], x[17], x[25], x[33], x[41], x[49], x[57]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[2], x[10], x[18], x[26], x[34], x[42], x[50], x[58]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[3], x[11], x[19], x[27], x[35], x[43], x[51], x[59]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[4], x[12], x[20], x[28], x[36], x[44], x[52], x[60]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[5], x[13], x[21], x[29], x[37], x[45], x[53], x[61]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[6], x[14], x[22], x[30], x[38], x[46], x[54], x[62]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[7], x[15], x[23], x[31], x[39], x[47], x[55], x[63]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[8], x[16], x[24], x[32], x[40], x[48], x[56], x[64]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56]], 1);
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1], [x[57], x[58], x[59], x[60], x[61], x[62], x[63], x[64]], 1);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 1], [INT____00001, d[1], d[2], d[3], d[4], d[5], d[6], d[7], d[8]], 0) :: defines_var(INT____00001);
constraint int_lin_eq([-1, 16, 6, 17, 7, 13, 19, 15, 11], [t[1], x[1], x[9], x[17], x[25], x[33], x[41], x[49], x[57]], 0);
constraint int_lin_eq([-1, 1, 16, 1, 6, 2, 17, 2, 7, 3, 13, 4, 19, 5, 15, 6, 11], [t[2], x[1], x[2], x[9], x[10], x[17], x[18], x[25], x[26], x[33], x[34], x[41], x[42], x[49], x[50], x[57], x[58]], 0);
constraint int_lin_eq([-1, 1, 1, 16, 1, 1, 6, 2, 2, 17, 2, 2, 7, 3, 3, 13, 4, 4, 19, 5, 5, 15, 6, 6, 11], [t[3], x[1], x[2], x[3], x[9], x[10], x[11], x[17], x[18], x[19], x[25], x[26], x[27], x[33], x[34], x[35], x[41], x[42], x[43], x[49], x[50], x[51], x[57], x[58], x[59]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 16, 1, 1, 1, 6, 2, 2, 2, 17, 2, 2, 2, 7, 3, 3, 3, 13, 4, 4, 4, 19, 5, 5, 5, 15, 6, 6, 6, 11], [t[4], x[1], x[2], x[3], x[4], x[9], x[10], x[11], x[12], x[17], x[18], x[19], x[20], x[25], x[26], x[27], x[28], x[33], x[34], x[35], x[36], x[41], x[42], x[43], x[44], x[49], x[50], x[51], x[52], x[57], x[58], x[59], x[60]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 6, 2, 2, 2, 2, 17, 2, 2, 2, 2, 7, 3, 3, 3, 3, 13, 4, 4, 4, 4, 19, 5, 5, 5, 5, 15, 6, 6, 6, 6, 11], [t[5], x[1], x[2], x[3], x[4], x[5], x[9], x[10], x[11], x[12], x[13], x[17], x[18], x[19], x[20], x[21], x[25], x[26], x[27], x[28], x[29], x[33], x[34], x[35], x[36], x[37], x[41], x[42], x[43], x[44], x[45], x[49], x[50], x[51], x[52], x[53], x[57], x[58], x[59], x[60], x[61]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 2, 17, 2, 2, 2, 2, 2, 7, 3, 3, 3, 3, 3, 13, 4, 4, 4, 4, 4, 19, 5, 5, 5, 5, 5, 15, 6, 6, 6, 6, 6, 11], [t[6], x[1], x[2], x[3], x[4], x[5], x[6], x[9], x[10], x[11], x[12], x[13], x[14], x[17], x[18], x[19], x[20], x[21], x[22], x[25], x[26], x[27], x[28], x[29], x[30], x[33], x[34], x[35], x[36], x[37], x[38], x[41], x[42], x[43], x[44], x[45], x[46], x[49], x[50], x[51], x[52], x[53], x[54], x[57], x[58], x[59], x[60], x[61], x[62]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 17, 2, 2, 2, 2, 2, 2, 7, 3, 3, 3, 3, 3, 3, 13, 4, 4, 4, 4, 4, 4, 19, 5, 5, 5, 5, 5, 5, 15, 6, 6, 6, 6, 6, 6, 11], [t[7], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[57], x[58], x[59], x[60], x[61], x[62], x[63]], 0);
constraint int_lin_eq([-1, 1, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 1, 1, 1, 1, 6, 2, 2, 2, 2, 2, 2, 2, 17, 2, 2, 2, 2, 2, 2, 2, 7, 3, 3, 3, 3, 3, 3, 3, 13, 4, 4, 4, 4, 4, 4, 4, 19, 5, 5, 5, 5, 5, 5, 5, 15, 6, 6, 6, 6, 6, 6, 6, 11], [t[8], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56], x[57], x[58], x[59], x[60], x[61], x[62], x[63], x[64]], 0);
constraint int_lin_le([-15, -1], [d[1], t[1]], -21);
constraint int_lin_le([-15, -1], [d[2], t[2]], -21);
constraint int_lin_le([-15, -1], [d[3], t[3]], -21);
constraint int_lin_le([-15, -1], [d[4], t[4]], -21);
constraint int_lin_le([-15, -1], [d[5], t[5]], -21);
constraint int_lin_le([-15, -1], [d[6], t[6]], -21);
constraint int_lin_le([-15, -1], [d[7], t[7]], -21);
constraint int_lin_le([-15, -1], [d[8], t[8]], -21);
constraint int_lin_le([33, 1], [d[1], t[1]], 53);
constraint int_lin_le([33, 1], [d[2], t[2]], 53);
constraint int_lin_le([33, 1], [d[3], t[3]], 53);
constraint int_lin_le([33, 1], [d[4], t[4]], 53);
constraint int_lin_le([33, 1], [d[5], t[5]], 53);
constraint int_lin_le([33, 1], [d[6], t[6]], 53);
constraint int_lin_le([33, 1], [d[7], t[7]], 53);
constraint int_lin_le([33, 1], [d[8], t[8]], 53);
solve  :: int_search([x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9], x[10], x[11], x[12], x[13], x[14], x[15], x[16], x[17], x[18], x[19], x[20], x[21], x[22], x[23], x[24], x[25], x[26], x[27], x[28], x[29], x[30], x[31], x[32], x[33], x[34], x[35], x[36], x[37], x[38], x[39], x[40], x[41], x[42], x[43], x[44], x[45], x[46], x[47], x[48], x[49], x[50], x[51], x[52], x[53], x[54], x[55], x[56], x[57], x[58], x[59], x[60], x[61], x[62], x[63], x[64]], first_fail, indomain, complete) maximize INT____00001;