this repo has no description
1int: n; % number of people
2set of int: PERSON = 1..n; % set of people
3enum GENDER = { M, F, O }; % set of genders
4array[PERSON] of GENDER: g; % the gender of each person
5set of int: POSN = 1..n; % set of positions
6
7array[PERSON] of var POSN: pos; % decisions: a position for each person
8
9array[POSN] of var PERSON: who; % view: a person for each position
10include "inverse.mzn";
11constraint inverse(pos,who); % channel from decisions to view
12constraint forall(i in 1..n-2)
13 (g[who[i]] != g[who[i+1]] \/ g[who[i+1]] != g[who[i+2]]);
14
15solve minimize sum(i in 1..n-1)(abs(pos[i] - pos[i+1]));