Go to the documentation of this file.
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(); }
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++)
114 if (
opt.propagation() == PROP_SET ||
opt.propagation() == PROP_MIXED) {
116 for (
int i=0;
i<groups.
size()-1;
i++)
117 for (
int j=
i+1; j<groups.
size(); j++)
120 if (
opt.propagation() == PROP_INT ||
opt.propagation() == PROP_MIXED) {
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);
238 Script::run<Golf,DFS,GolfOptions>(
opt);
TupleSet & add(const IntArgs &t)
Add tuple t to tuple set.
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_SET
Propagation of pair play amount using set variables.
Passing integer variables.
Slice< A > row(int r) const
Access row r.
void channelSorted(Home home, const IntVarArgs &x, SetVar y)
@ PROP_INT
Propagation of pair play amount using int variables and distinct.
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.
@ MODEL_SYMMETRY
Model with symmetry breaking.
SetExpr singleton(const LinIntExpr &e)
Singleton expression.
int size(void) const
Return size of array (number of elements)
Golf(Golf &s)
Constructor for copying s.
int g
Number of groups in a week.
int main(int argc, char *argv[])
Main-function.
Gecode toplevel namespace
int s(void) const
Return number of players per group.
void finalize(void)
Finalize tuple set.
BoolVar expr(Home home, const BoolExpr &e, const IntPropLevels &ipls)
Post Boolean expression and return its value.
Passing Boolean variables.
Parametric base-class for scripts.
virtual Space * copy(void)
Copy during cloning.
int s
Number of players in a group.
int g(void) const
Return number of groups.
@ IPL_DOM
Domain propagation Options: basic versus advanced propagation.
void parse(int &argc, char *argv[])
Parse options from arguments argv (number is argc)
SetValBranch SET_VAL_MIN_INC(void)
@ MODEL_PLAIN
A simple model.
LinIntExpr cardinality(const SetExpr &e)
Cardinality of set expression.
struct Gecode::@602::NNF::@65::@66 b
For binary nodes (and, or, eqv)
Class represeting a set of tuples.
GolfOptions(void)
Constructor.
Matrix-interface for arrays.
virtual void print(std::ostream &os) const
Print solution.
void linear(Home home, const FloatVarArgs &x, FloatRelType frt, FloatVal c)
Post propagator for .
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.
Golf(const GolfOptions &opt)
Actual model.
@ PROP_MIXED
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.
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.
void model(int v)
Set default model value.
Gecode::IntArgs i({1, 2, 3, 4})
int p
Number of positive literals for node type.
void update(Space &home, VarArray< Var > &a)
Update array to be a clone of array a.