#------------ parametri --------------------- param m integer > 0 ; # number of customers param n integer > 0 ; # number of locations param C{j in 1..n} > 0 ; # C[j] = costo per costruire un magazzino nella posizione j param T{i in 1..m, j in 1..n} > 0 ; # T[i,j] = costo di traporto per rifornire il cliente i dal magazzino costruito nella posizione j #------------- variabili ------------------- var x{i in 1..m, j in 1..n} binary ; # x[i,j] = 1 se il cliente i sarà rifornito dal magazzino costruito nella posizione j var y{j in 1..n} binary ; # y[j] = 1 se l'azienda costruisce un magazzino nella posizione j #------------- funzione obiettivo ------------------- minimize TotalCost: sum{j in 1..n} C[j]*y[j] + sum{i in 1..m, j in 1..n} T[i,j]*x[i,j] ; #------------- vincoli ------------------- s.t. v_clienti{i in 1..m}: sum{j in 1..n} x[i,j] = 1 ; # ogni cliente deve essere rifornito da un solo magazzino s.t. v_clienti_magazzini{i in 1..m, j in 1..n}: x[i,j] <= y[j] ; # se non viene costruito un magazzino nella posizione j, # allora nessun cliente può essere rifornito da quel magazzino