#------------ parametri --------------------- param budget >= 0; # somma da investire param n integer > 0; # numero di obbligazioni param rendimento{i in 1..n} > 0; # rendimento[i] = rendimento percentuale dell'obbligazione i param scadenza{i in 1..n} > 0; # scadenza[i] = anni alla scadenza dell'obbligazione i param rating{i in 1..n} > 0; # rating[i] = rating dell'obbligazione i param MaxPercSingola > 0; # non investire più di MaxPercSingola% su una singola compagnia param PercLungoTerm > 0; # investire almeno PercLongTerm% in obbligazioni a lungo termine #(scadenza >= 10 anni) param PercBassoRating > 0; # non investire più di PercBassoRating% in compagnie con rating 3 or 4 #------------- variabili ------------------- var x{i in 1..n} >= 0; # x[i] = euro da investire nell'obbligazione i #------------- funzione obiettivo ------------------- maximize RendimentoTotale: sum{i in 1..n} rendimento[i]*x[i]/100; #------------- vincoli ------------------- s.t. v_MaxPercSingola{i in 1..n}: x[i] <= MaxPercSingola*budget/100; s.t. v_PercLungoTerm: sum{i in 1..n: scadenza[i] >= 10} x[i] >= PercLungoTerm*budget/100; s.t. v_PercBassoRating: sum{i in 1..n: rating[i] >= 3} x[i] <= PercBassoRating*budget/100;