73 int gn(
int h,
int a)
const {
74 return teams*(h-1) + a;
113 for (
int p=1; p<
periods(); p++) {
114 play(p,0).
h = (p + 1) + 1;
120 for (
int w=1; w<
weeks(); w++) {
121 for (
int p=0; p<
periods(); p++) {
124 else if (
play(p,w-1).h == 1)
144 for (
int p=0; p<
periods(); p++) {
227 for (
int w=0; w<
weeks(); w++) {
235 for (
int p=0; p<
periods(); p++) {
243 for (
int p=0; p<
periods(); p++)
244 for (
int w=0; w<
teams; w++)
250 for (
int p=0; p<
periods(); p++)
260 for (
int w=0; w<
teams; w++) {
262 for (
int p=0; p<
periods(); p++) {
263 c[2*p] =
h(p,w); c[2*p+1] =
a(p,w);
269 for (
int p=0; p<
periods(); p++) {
271 for (
int t=0; t<
teams; t++) {
276 for (
int i=1; i<=
teams; i++)
282 for (
int p=0; p<
periods(); p++)
283 for (
int w=0; w<
weeks(); w ++)
303 virtual void print(std::ostream& os)
const {
306 for (
int p=0; p<
periods(); p++) {
313 for (
int w=0; w<
weeks(); w++) {
317 for (
int p=0; p<
periods(); p++) {
319 os <<
h(p,w).
val() <<
'-';
321 os <<
a(p,w).
val() <<
" ";
337 opt.
parse(argc,argv);
338 if (opt.size() < 5) {
339 std::cerr<<
"No Solution for less than 5 teams!" << std::endl;
342 if (opt.size() % 2 != 0) {
343 std::cerr <<
"Number of teams has to be even!" << std::endl;
static void run(const Options &opt, Script *s=NULL)
Passing integer arguments.
Passing integer variables.
int val(void) const
Return assigned value.
Options for scripts with additional size parameter
Entry in round robin schedule.
int g
game number Default constructor
void hag(int w, IntArgs &h, IntArgs &a, IntArgs &g)
Home, away, and game information.
RRS(int t)
Build a feasible schedule.
const int teams
Number of teams.
Play & play(int p, int w)
Play for period p and week w.
int weeks(void) const
Return number of weeks.
~RRS(void)
Delete schedule.
int gn(int h, int a) const
Game number for game between home team h and away team a.
Play * plays
Play information.
int periods(void) const
Return number of periods.
IntVar & a(int p, int w)
Away team in period p and week w.
int main(int argc, char *argv[])
Main-function.
int weeks(void) const
Return number of weeks.
SportsLeague(const SizeOptions &opt)
Setup model.
virtual Space * copy(void)
Copy during cloning.
virtual void print(std::ostream &os) const
Print solution.
const IntVar & h(int p, int w) const
Home team in period p and week w.
SportsLeague(SportsLeague &s)
Constructor for cloning s.
IntVar & g(int p, int w)
Return game number for game in period p and week w.
int periods(void) const
Return number of periods.
const IntVar & a(int p, int w) const
Away team in period p and week w.
IntVar & h(int p, int w)
Home team in period p and week w.
const IntVar & g(int p, int w) const
Return game number for game in period p and week w.
const int teams
number of teams
IntVarArray away
away teams
IntVarArray game
game numbers
IntVarArray home
home teams
void parse(int argc, char *argv[])
Parse commandline arguments.
Driver::ScriptBase< Driver::IgnoreStepOption< Space > > Script
Base-class for scripts.
void branch(Home home, const FloatVarArgs &x, FloatVarBranch vars, FloatValBranch vals, FloatBranchFilter bf=nullptr, FloatVarValPrint vvp=nullptr)
Branch over x with variable selection vars and value selection vals.
void rel(Home home, FloatVar x0, FloatRelType frt, FloatVar x1)
Post propagator for .
@ IPL_DOM
Domain propagation Options: basic versus advanced propagation.
Gecode toplevel namespace
IntValBranch INT_VAL_SPLIT_MIN(void)
Select values not greater than mean of smallest and largest value.
void count(Home home, const IntVarArgs &x, int n, IntRelType irt, int m, IntPropLevel ipl=IPL_DEF)
Post propagator for .
Post propagator for SetVar SetOpType SetVar SetRelType r
void distinct(Home home, const IntVarArgs &x, IntPropLevel ipl=IPL_DEF)
Post propagator for for all .
IntVarBranch INT_VAR_NONE(void)
Select first unassigned variable.
void element(Home home, IntSharedArray n, IntVar x0, IntVar x1, IntPropLevel ipl=IPL_DEF)
Post domain consistent propagator for .
void values(Home home, const IntVarArgs &x, IntSet y, IntPropLevel ipl=IPL_DEF)
Post constraint .