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,
109 static_cast<unsigned int>(s),static_cast<unsigned int>(s)) {
113 SetVar allPlayers(*
this, 0,g*s-1, 0,g*s-1);
114 for (
int i=0;
i<w;
i++)
120 for (
int i=0;
i<groups.
size()-1;
i++)
121 for (
int j=
i+1; j<groups.
size(); j++)
127 int playerCount = g * s;
130 for (
int p1=0; p1<playerCount-1; p1++)
131 for (
int p2=p1+1; p2<playerCount; p2++)
132 ts.
add(p1, p2, pairCount++);
137 for (
int i=0;
i<groups.
size()-1;
i++) {
143 for (
int p1=0; p1<group.
size()-1; ++p1) {
144 for (
int p2=p1+1; p2<group.
size(); ++p2) {
145 IntVar pair(*
this, 0, pairCount);
148 args << group[p1] << group[p2] << pair;
160 if (opt.
model() == MODEL_SYMMETRY) {
171 for (
int j=0; j<w; j++) {
172 for (
int p=0;
p < g*s;
p++) {
174 for (
int i=0;
i<g;
i++)
181 for (
int j=0; j<w; j++) {
183 for (
int i=0;
i<g;
i++)
192 for (
int i=0;
i<w;
i++)
207 os <<
"Tournament plan" << std::endl;
209 for (
int j=0; j<w; j++) {
210 os <<
"Week " << j <<
": " << std::endl <<
" ";
211 os << schedule.
row(j) << std::endl;
222 return new Golf(*
this);
241 opt.
parse(argc,argv);
242 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.
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.
void update(Space &home, VarArray< Var > &a)
Update array to be a clone of array a.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
int s
Number of players in a group.
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 value(int v)
Set default value to v.
int p
Number of positive literals for node type.
Gecode::IntArgs i(4, 1, 2, 3, 4)
virtual Space * copy(void)
Copy during cloning.
Model with symmetry breaking.
Propagation of pair play amount using both set and int variables.
void extensional(Home home, const IntVarArgs &x, DFA dfa, IntPropLevel)
Post domain consistent propagator for extensional constraint described by a DFA.
GolfOptions(void)
Constructor.
void distinct(Home home, const IntVarArgs &x, IntPropLevel ipl)
Post propagator for for all .
Golf(Golf &s)
Constructor for copying s.
Passing integer variables.
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.
struct Gecode::@585::NNF::@62::@63 b
For binary nodes (and, or, eqv)
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 Options: basic versus advanced propagation.
void solutions(unsigned int n)
Set default number of solutions to search for.
Matrix-interface for arrays.
TupleSet & add(const IntArgs &t)
Add tuple t to tuple set.
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)
Propagation of pair play amount using int variables and distinct.
Propagation of pair play amount using set variables.