forked from albertolatino/ConstraintProgramming-Minizinc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathraid.mzn
38 lines (20 loc) · 725 Bytes
/
raid.mzn
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
% assignment 2
enum WARRIOR;
WARRIOR: dummy;
enum CLAN;
int: l; % minimum
int: u; % maximum
int: m; % limit of hatreds
array[WARRIOR] of int: strength;
array[WARRIOR] of CLAN: clan;
array[CLAN,CLAN] of 0..1: hates;
array[1..u] of var WARRIOR: r;
set of WARRIOR: raid ::output_only = { fix(r[i]) | i in 1..u where fix(r[i]) != dummy };
constraint forall(i in 1..u-1) (r[i]>=r[i+1] + (r[i] != dummy));
constraint sum(i in 1..u)(r[i]!=dummy) >= l;
constraint forall(i in 1..l)(r[i]!=dummy);
constraint sum(i,j in 1..u where i < j)(hates[clan[r[i]],clan[r[j]]]) <= m;
var int: obj = sum(i in 1..u where r[i] != dummy)(strength[r[i]]);
% Ouput
output ["raid = \(raid);\nobj = \(obj);\n"];
solve maximize obj;