set SITI; set DOMANDA; set MSUD within SITI; set DSUD within DOMANDA; param f{SITI} ; param ct{SITI,DOMANDA} ; param cm{SITI} ; param Q{SITI}; param d{DOMANDA} ; param S; var x{SITI,DOMANDA} >=0; var y{SITI} binary; var L{SITI} >=0; subject to sodddom{j in DOMANDA}:sum{i in SITI}x[i,j]=d[j]; subject to maxmag{i in SITI}:sum{j in DOMANDA}x[i,j]<=L[i]; subject to usomag{i in SITI}:sum{j in DOMANDA}x[i,j]<=Q[i]*y[i]; subject to maxscorte{i in SITI}:L[i]<=Q[i]; subject to scortasud: sum{i in MSUD}L[i]>=sum{i in DSUD}d[i]+S; minimize costi: sum{i in SITI} f[i] *y[i]+sum{i in SITI,j in DOMANDA} ct[i,j]*x[i,j]+sum{i in SITI}cm[i]*L[i];