54 _w(
"w",
"number of weeks",9),
55 _g(
"g",
"number of groups",8),
56 _s(
"s",
"number of players per group",4) {
62 int w(
void)
const {
return _w.
value(); }
64 int g(
void)
const {
return _g.
value(); }
66 int s(
void)
const {
return _s.
value(); }
103 g(opt.g()), s(opt.s()), w(opt.w()),
104 groups(*this,g*w,
IntSet::empty,0,g*s-1,
105 static_cast<unsigned int>(s),static_cast<unsigned int>(s)) {
109 SetVar allPlayers(*
this, 0,g*s-1, 0,g*s-1);
110 for (
int i=0;
i<w;
i++)
116 for (
int i=0;
i<groups.
size()-1;
i++)
117 for (
int j=
i+1; j<groups.
size(); j++)
123 int playerCount = g * s;
126 for (
int p1=0; p1<playerCount-1; p1++)
127 for (
int p2=p1+1; p2<playerCount; p2++)
128 ts.
add(p1, p2, pairCount++);
133 for (
int i=0;
i<groups.
size()-1;
i++) {
139 for (
int p1=0; p1<group.
size()-1; ++p1) {
140 for (
int p2=p1+1; p2<group.
size(); ++p2) {
141 IntVar pair(*
this, 0, pairCount);
144 args << group[p1] << group[p2] << pair;
156 if (opt.
model() == MODEL_SYMMETRY) {
167 for (
int j=0; j<w; j++) {
168 for (
int p=0;
p < g*s;
p++) {
170 for (
int i=0;
i<g;
i++)
177 for (
int j=0; j<w; j++) {
179 for (
int i=0;
i<g;
i++)
188 for (
int i=0;
i<w;
i++)
203 os <<
"Tournament plan" << std::endl;
205 for (
int j=0; j<w; j++) {
206 os <<
"Week " << j <<
": " << std::endl <<
" ";
207 os << schedule.
row(j) << std::endl;
218 return new Golf(*
this);
237 opt.
parse(argc,argv);
238 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.