# MODELLO A - ipotesi di due tipi di fango #
# Le spiegazioni sono le medisime del modello B, salvo quanto
# diversamente specificato
# Parametri #
param I1; # indici numerici degli ultimi impianti di depurazione
param I2; # di ognuno dei due insiemi rappresentati nel grafo bipartito param P1;
param P2=2*P1;
param P3=3*P1;
param D {1..I2};
param L {1..I2,1..P3};
param Q_T1_MAX;
param Q_T1_MIN;
param Q_T2_MAX;
param Q_T2_MIN;
param C_T1;
param C_T2;
param C_U_ES_T1;
param C_U_ES_T2;
param C_EDI {1..P3}; # costo dei lavori edili (comunque di avviamento, # salvo il costo di acquisto delle tecnologie) # per ogni piattaforma
param Q {1..I2};
param C_U_TR1;
param C_U_TR2;
# Variabili #
var S {1..I2,1..P3} >=0;
var Y {1..P3} binary;
var U1 {1..P3} >=0; # variabili del livello di attività delle # tecnologia 1 e 2 in ogni piattaforma var U2 {1..P3} >=0;
# Funzione obiettivo #
minimize OBIETTIVO: sum {i in 1..I2: i<=I1} sum {j in 1..P3: j<=P1 or j>P2}
(((S [i,j]*L [i,j])/Q[i])*(if Q[i]=1 then C_U_TR1 else C_U_TR2)) + sum {i in 1..I2:i>I1} sum {j in 1..P3: j>P1}
(((S [i,j]*L[i,j])/Q[i])*(if Q[i]=1 then C_U_TR1 else
C_U_TR2)) + sum {j in 1..P3}((C_EDI [j]+(if j<= P1 then C_T1 else if j>P2 then (C_T2 + C_T1) else C_T2)) * Y[j] + C_U_ES_T1*(if j<=P1 or j>P2 then U1 [j]
else 0) + C_U_ES_T2*(if j>P1 then U2[j] else 0));
# Vincoli #
s.t.vinc1a {j in 1..P3: j<=P1 or j>P2}: sum {i in 1..I1} S [i,j]=U1 [j];
s.t.vinc1b {j in 1..P3: j>P1}: sum {i in 1..I2: i>I1} S[i,j]=U2 [j];
s.t.vinc2a {i in 1..I1}: sum {j in 1..P3:j<=P1 or j>P2} S[i,j]=D[i];
s.t.vinc2b {i in 1..I2:i>I1}: sum {j in 1..P3: j>P1} S[i,j]=D[i];
s.t. vinc3a {j in 1..P3: j<=P1 or j>P2}: sum {i in 1..I1} S [i,j]
<= Q_T1_MAX*Y[j];
s.t. vinc3b {j in 1..P3: j<=P1 or j>P2}: sum {i in 1..I1} S [i,j]
>= Q_T1_MiN*Y[j];
s.t. vinc3c {j in 1..P3: j>P1}: sum {i in 1..I2: i>I1} S [i,j]
<= Q_T2_MAX*Y[j];
s.t. vinc3d {j in 1..P3: j>P1}: sum {i in 1..I2: i>I1} S [i,j]
>= Q_T2_MIN*Y[j];
s.t. vinc4 {k in 1..P1}: sum {j in k..P3 by P1} Y [j] <=1;
s.t. vinc5: Y[6]=0;
# per il vincolo di tipo 5 si sceglie a titolo di esempio di non
# attivare la piattaforma il cui indice numerico è 6