MODEL:

SETS:

squadre;
turni;
incontri(squadre,squadre)|&1#LT#&2:;
cal(turni,incontri):x,c;

ENDSETS

DATA:

numerosquadre=18;
numeroturni=17;   !numerosquadre -1;
totrand=1184;  !numturni^2 * numsquadre/2 +1;
squadre=1..numerosquadre;
turni=1..numeroturni;

ENDDATA

SUBMODEL ROUNDS:

min=@SUM(cal(k,i,j):c(k,i,j)*x(k,i,j));

@FOR(turni(k):
      @FOR(squadre(i):
            @SUM(squadre(j)|i#LT#j:x(k,i,j)) +
            @SUM(squadre(j)|j#LT#i:x(k,j,i))    =  1));

@FOR(incontri(i,j):
        @SUM(turni(k):x(k,i,j))  =   1);

@FOR(cal:@BIN(x));

ENDSUBMODEL

CALC:

@FOR(cal(k,i,j):c(k,i,j)=1);

@SOLVE(ROUNDS);

ENDCALC

END