Go to the documentation of this file.
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(); }
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++)
117 if (
opt.propagation() == PROP_SET ||
opt.propagation() == PROP_MIXED) {
119 for (
int i=0;
i<groups.
size()-1;
i++)
120 for (
int j=
i+1; j<groups.
size(); j++)
123 if (
opt.propagation() == PROP_INT ||
opt.propagation() == PROP_MIXED) {
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);
243 Script::run<Golf,DFS,GolfOptions>(
opt);
void propagation(int v)
Set default propagation value.
static IntArgs create(int n, int start, int inc=1)
Allocate array with n elements such that for all .
@ PROP_MIXED
Propagation of pair play amount using both set and int variables.
Passing integer variables.
BoolVar expr(Home home, const BoolExpr &e, IntPropLevel ipl)
Post Boolean expression and return its value.
Slice< A > row(int r) const
Access row r.
void channelSorted(Home home, const IntVarArgs &x, SetVar y)
void update(Space &, bool share, VarArray< Var > &a)
Update array to be a clone of array a.
Gecode::IntArgs i(4, 1, 2, 3, 4)
void ipl(IntPropLevel i)
Set default integer propagation level.
void value(int v)
Set default value to v.
SetVarBranch SET_VAR_MIN_MIN(BranchTbl tbl)
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.
SetExpr singleton(const LinIntExpr &e)
Singleton expression.
int size(void) const
Return size of array (number of elements)
int g
Number of groups in a week.
int main(int argc, char *argv[])
Main-function.
Gecode toplevel namespace
void add(const IntArgs &tuple)
Add tuple to tuple set.
int s(void) const
Return number of players per group.
void finalize(void)
Finalize tuple set.
Passing Boolean variables.
Parametric base-class for scripts.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
int s
Number of players in a group.
void extensional(Home home, const IntVarArgs &x, DFA dfa, IntPropLevel)
Post domain consistent propagator for extensional constraint described by a DFA.
int g(void) const
Return number of groups.
@ IPL_DOM
Domain propagation Preferences: prefer speed or memory.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
SetValBranch SET_VAL_MIN_INC(void)
LinIntExpr cardinality(const SetExpr &e)
Cardinality of set expression.
Class represeting a set of tuples.
GolfOptions(void)
Constructor.
Matrix-interface for arrays.
@ MODEL_SYMMETRY
Model with symmetry breaking.
virtual void print(std::ostream &os) const
Print solution.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
@ MODEL_PLAIN
A simple model.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVal n)
Propagates .
void precede(Home home, const IntVarArgs &x, int s, int t, IntPropLevel)
Post propagator that s precedes t in x.
SetExpr setdunion(const SetVarArgs &x)
Disjoint union of set variables.
@ PROP_INT
Propagation of pair play amount using int variables and distinct.
Golf(const GolfOptions &opt)
Actual model.
void distinct(Home home, const IntVarArgs &x, IntPropLevel ipl)
Post propagator for for all .
void solutions(unsigned int n)
Set default number of solutions to search for.
void min(Home home, FloatVar x0, FloatVar x1, FloatVar x2)
Post propagator for .
SetVarArray groups
The sets representing the groups.
Golf(bool share, Golf &s)
Constructor for copying s.
void model(int v)
Set default model value.
Passing integer arguments.
int p
Number of positive literals for node type.
virtual Space * copy(bool share)
Copy during cloning.
@ PROP_SET
Propagation of pair play amount using set variables.