# MODELLO DI LOCALIZZAZIONE - file modello #
#Parametri#
param I;
param P1;
param P2=2*P1;
param P3=3*P1;
param P4=4*P1;
param C_U_TR;
param D {1..I};
param L {1..I,1..P4};
param Q_T1_MAX;
param Q_T2_MAX;
param Q_T1_MIN;
param Q_T2_MIN;
param C_T1;
param C_T2;
param C_U_ES_T;
#Variabili#
var S {1..I,1..P4} >=0;
var Y {1..P4} binary;
var U {1..P4} >=0;
#Funzione obiettivo#
minimize OBIETTIVO: sum {i in 1..I} sum {j in 1..P4} (S [i,j] * L[i,j] * C_U_TR) +
sum {j in 1..P1}(C_T1*Y[j] + C_U_ES_T*U[j]) + sum {j in P1+1..P2}(C_T2*Y[j] + C_U_ES_T*U[j]) +
sum {j in P2+1..P3}((C_T1+C_T2)*Y[j] + C_U_ES_T*U[j]) + sum {j in P3+1..P4}(2*C_T1*Y[j] + C_U_ES_T*U[j]);
#Vincoli#
s.t.vinc1 {j in 1..P4}: sum {i in 1..I} S [i,j] = U[j];
s.t.vinc2 {i in 1..I}: sum {j in 1..P4} S[i,j]=D[i];
s.t. vinc3a {j in 1..P1}: sum {i in 1..I} S [i,j]<= Q_T1_MAX * Y[j];
s.t. vinc3b {j in P1+1..P2}: sum {i in 1..I} S [i,j]<= Q_T2_MAX * Y[j];
s.t. vinc3c {j in P2+1..P3}: sum {i in 1..I} S [i,j]<= (Q_T1_MAX + Q_T2_MAX) * Y[j];
s.t. vinc3d {j in P3+1..P4}: sum {i in 1..I} S [i,j]<= 2 * Q_T1_MAX * Y[j];
s.t. vinc3e {j in 1..P1}: sum {i in 1..I} S [i,j]>= Q_T1_MIN * Y[j];
s.t. vinc3f {j in P1+1..P2}: sum {i in 1..I} S [i,j]>= Q_T2_MIN * Y[j];
s.t. vinc3g {j in P2+1..P3}: sum {i in 1..I} S [i,j]>= (Q_T1_MIN + Q_T2_MIN) * Y[j];
s.t. vinc3h {j in P3+1..P4}: sum {i in 1..I} S [i,j]>= 2 * Q_T1_MIN * Y[j];
s.t. vinc4 {k in 1..P1}: sum {j in k..P4 by P1} Y [j] <=1;
s.t. vinc5 : sum {j in 1..P4 by P1} Y [j] = 1;
s.t. vinc6 : sum {j in 4..P4 by P1} Y [j] = 1;