Hi,
you could start with
using CP;
int nbTeam=16;
range Field=1..nbTeam;
range Day=1..100;
tuple game
{
int i;
int j;
}
{game} games= {<i,j> | ordered i,j in Field};
execute
{
games;
}
dvar int dayForGame[games] in Day;
dvar boolean firstPlaysHome[games];
subject to
{
forall(f in Field) allDifferent(all(g in games:(g.i==f) || (g.j==f)) dayForGame[g]);
}
int HomeTeam[Field][Day];
int AwayTeam[Field][Day];
execute
{
for(var g in games)
if (firstPlaysHome[g]==1)
{
HomeTeam[g.i][dayForGame[g]]=g.i;
AwayTeam[g.i][dayForGame[g]]=g.j;
}
else
{
HomeTeam[g.j][dayForGame[g]]=g.j;
AwayTeam[g.j][dayForGame[g]]=g.i;
}
}
regards
#ConstraintProgramming-General#DecisionOptimization