23 lines
2.0 KiB
MiniZinc
23 lines
2.0 KiB
MiniZinc
array [1..19] of set of int: c = [1..2, {1, 3}, {1, 5}, {2, 3, 6}, {2, 5, 6}, {3, 5, 6}, {1, 3}, {1, 4}, {1, 7, 8}, {3, 4, 7}, {3, 4, 8}, {3, 7, 8}, {4, 7, 8}, {2, 3, 6}, {2, 4, 6}, {2, 5, 6}, {3, 4, 6}, {3, 5, 6}, 4..6];
|
|
array [1..19] of int: combinations_person = [1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3];
|
|
array [1..24] of int: preferences = [5, 2, 1, 0, 1, 1, 0, 0, 4, 0, 2, 2, 0, 0, 1, 1, 0, 2, 4, 1, 1, 2, 0, 0];
|
|
array [1..3] of var 1..10: preference_points;
|
|
var 3..30: sum_pref_points;
|
|
array [1..19] of var 0..1: x :: output_array([1..19]);
|
|
constraint int_lin_eq([-1, 1, 1, 1], [sum_pref_points, preference_points[1], preference_points[2], preference_points[3]], 0);
|
|
constraint int_lin_eq([1, 1, 1, 1], [x[9], x[10], x[12], x[13]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1], [x[9], x[11], x[12], x[13]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[1], x[2], x[3], x[4], x[5], x[6]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[1], x[2], x[3], x[7], x[8], x[9]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[1], x[4], x[5], x[14], x[15], x[16]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[3], x[5], x[6], x[16], x[18], x[19]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1], [x[14], x[15], x[16], x[17], x[18], x[19]], 1);
|
|
constraint int_lin_eq([1, -8, -5, -5, -7, -7, -4], [preference_points[3], x[14], x[15], x[16], x[17], x[18], x[19]], 0);
|
|
constraint int_lin_eq([1, -7, -6, -6, -4, -4, -3], [preference_points[1], x[1], x[2], x[3], x[4], x[5], x[6]], 0);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [x[7], x[8], x[9], x[10], x[11], x[12], x[13]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1], [x[8], x[10], x[11], x[13], x[15], x[17], x[19]], 1);
|
|
constraint int_lin_eq([1, -6, -6, -6, -5, -5, -4, -4], [preference_points[2], x[7], x[8], x[9], x[10], x[11], x[12], x[13]], 0);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1], [x[4], x[5], x[6], x[14], x[15], x[16], x[17], x[18], x[19]], 1);
|
|
constraint int_lin_eq([1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [x[2], x[4], x[6], x[7], x[10], x[11], x[12], x[14], x[17], x[18]], 1);
|
|
solve satisfy;
|