#------------ parametri --------------------- param n integer > 0; # numero di prodotti param ore{i in 1..n} >= 0; # ore[i] = ore di lavorazione necessarie per produrre una scatola del prodotto i param tonno{i in 1..n} >= 0; # tonno[i] = numero di kg di tonno necessari per produrre una scatola del prodotto i param OreDisp >= 0; # numero di ore disponibili per la lavorazione param TonnoDisp >= 0; # kg di tonno disponibili param ricavo{i in 1..n} >= 0; # ricavo[i] = ricavo ottenuto dalla produzione di una scatola del prodotto i param costo{i in 1..n} >= 0; # costo[i] = costo di affitto della macchina per la produzione del prodotto i param M > 0; # parametro "big-M" #------------- variabili ------------------- var x{i in 1..n} >= 0 integer; # x[i] = numero di scatole prodotte del prodotto i var y{i in 1..n} binary; # y[i] = 1 se viene avviata la produzione del prodotto i #------------- funzione obiettivo ------------------- maximize profitto: sum{i in 1..n} ricavo[i]*x[i] - sum{i in 1..n} costo[i]*y[i]; #------------- vincoli ------------------- s.t. VincoloOre: sum{i in 1..n} ore[i]*x[i] <= OreDisp; s.t. VincoloTonno: sum{i in 1..n} tonno[i]*x[i] <= TonnoDisp; s.t. Vincolixy{i in 1..n}: x[i] <= M*y[i];