58 _w(
"-w",
"number of weeks",9),
59 _g(
"-g",
"number of groups",8),
60 _s(
"-s",
"number of players per group",4) {
66 int w(
void)
const {
return _w.
value(); }
68 int g(
void)
const {
return _g.
value(); }
70 int s(
void)
const {
return _s.
value(); }
107 g(opt.g()), s(opt.s()), w(opt.w()),
108 groups(*this,g*w,
IntSet::empty,0,g*s-1,s,s) {
112 SetVar allPlayers(*
this, 0,g*s-1, 0,g*s-1);
113 for (
int i=0;
i<w;
i++)
119 for (
int i=0;
i<groups.
size()-1;
i++)
120 for (
int j=
i+1; j<groups.
size(); j++)
126 int playerCount = g * s;
129 for (
int p1=0; p1<playerCount-1; ++p1) {
130 for (
int p2=p1+1; p2<playerCount; ++p2) {
138 for (
int i=0;
i<groups.
size()-1;
i++) {
144 for (
int p1=0; p1<group.
size()-1; ++p1) {
145 for (
int p2=p1+1; p2<group.
size(); ++p2) {
146 IntVar pair(*
this, 0, pairCount);
149 args << group[p1] << group[p2] << pair;
161 if (opt.
model() == MODEL_SYMMETRY) {
172 for (
int j=0; j<w; j++) {
173 for (
int p=0;
p < g*s;
p++) {
175 for (
int i=0;
i<g;
i++)
182 for (
int j=0; j<w; j++) {
184 for (
int i=0;
i<g;
i++)
193 for (
int i=0;
i<w;
i++)
208 os <<
"Tournament plan" << std::endl;
210 for (
int j=0; j<w; j++) {
211 os <<
"Week " << j <<
": " << std::endl <<
" ";
212 os << schedule.
row(j) << std::endl;
223 return new Golf(share,*
this);
242 opt.
parse(argc,argv);
243 Script::run<Golf,DFS,GolfOptions>(
opt);
void channelSorted(Home home, const IntVarArgs &x, SetVar y)
static IntArgs create(int n, int start, int inc=1)
Allocate array with n elements such that for all .
SetVarArray groups
The sets representing the groups.
SetExpr singleton(const LinIntExpr &e)
Singleton expression.
Propagation of pair play amount using both set and int variables.
void finalize(void)
Finalize tuple set.
int size(void) const
Return size of array (number of elements)
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf, FloatVarValPrint vvp)
Branch over x with variable selection vars and value selection vals.
int w(void) const
Return number of weeks.
int size(void) const
Return size of array (number of elements)
void propagation(int v)
Set default propagation value.
Propagation of pair play amount using int variables and distinct.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
int s
Number of players in a group.
Golf(bool share, Golf &s)
Constructor for copying s.
void ipl(IntPropLevel i)
Set default integer propagation level.
int s(void) const
Return number of players per group.
Parametric base-class for scripts.
Golf(const GolfOptions &opt)
Actual model.
SetExpr setdunion(const SetVarArgs &x)
Disjoint union of set variables.
int g(void) const
Return number of groups.
void update(Space &, bool share, VarArray< Var > &a)
Update array to be a clone of array a.
void value(int v)
Set default value to v.
Propagation of pair play amount using set variables.
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
void extensional(Home home, const IntVarArgs &x, DFA dfa, IntPropLevel)
Post domain consistent propagator for extensional constraint described by a DFA.
GolfOptions(void)
Constructor.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
void distinct(Home home, const IntVarArgs &x, IntPropLevel ipl)
Post propagator for for all .
virtual Space * copy(bool share)
Copy during cloning.
Passing integer variables.
Passing integer arguments.
Passing Boolean variables.
SetValBranch SET_VAL_MIN_INC(void)
BoolVar expr(Home home, const BoolExpr &e, IntPropLevel ipl)
Post Boolean expression and return its value.
LinIntExpr cardinality(const SetExpr &e)
Cardinality of set expression.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
Class represeting a set of tuples.
Model with symmetry breaking.
virtual void print(std::ostream &os) const
Print solution.
Slice< A > row(int r) const
Access row r.
void precede(Home home, const IntVarArgs &x, int s, int t, IntPropLevel)
Post propagator that s precedes t in x.
int g
Number of groups in a week.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
Domain propagation Preferences: prefer speed or memory.
void solutions(unsigned int n)
Set default number of solutions to search for.
Matrix-interface for arrays.
int main(int argc, char *argv[])
Main-function.
void model(int v)
Set default model value.
Gecode toplevel namespace
SetVarBranch SET_VAR_MIN_MIN(BranchTbl tbl)
void add(const IntArgs &tuple)
Add tuple to tuple set.