From c971989e4fef1c70bf0248f0b11fbcfbe766f542 Mon Sep 17 00:00:00 2001 From: Stefano Fogarollo Date: Wed, 18 Oct 2017 17:20:57 +0200 Subject: [PATCH] 'portfolio' model: fix time constraint --- models/portfolio/portfolio.dat | 3 +-- models/portfolio/portfolio.mod | 18 +++++++----------- models/portfolio/portfolio.run | 2 +- 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/models/portfolio/portfolio.dat b/models/portfolio/portfolio.dat index 6f2f7c2..5e2337c 100644 --- a/models/portfolio/portfolio.dat +++ b/models/portfolio/portfolio.dat @@ -11,5 +11,4 @@ param minPublicFunds := 0.4; param minAForE := 10000; param maxTime := 5; param maxRisk := 1.5; -param budget := 100000; -param bigM := 1000000; \ No newline at end of file +param budget := 100000; \ No newline at end of file diff --git a/models/portfolio/portfolio.mod b/models/portfolio/portfolio.mod index a74192a..e9f772f 100644 --- a/models/portfolio/portfolio.mod +++ b/models/portfolio/portfolio.mod @@ -10,13 +10,11 @@ param moodys_rating{FUNDS}; param time{FUNDS}; param profit{FUNDS}; param tax{FUNDS}; - param minPublicFunds; param minAForE; param maxTime; param maxRisk; param budget; -param bigM; # very large constant var x{FUNDS} >= 0; # how much to invest in each fund var y{FUNDS} binary; # 1 iff invest in fund @@ -25,15 +23,13 @@ maximize total_profit: sum{f in FUNDS} x[f] * profit[f] * (1 - tax[f]); s.t. available_money: sum{f in FUNDS} x[f] <= budget; s.t. average_risk: sum{f in FUNDS} x[f] * moodys_rating[f] <= maxRisk * sum{f in FUNDS} x[f]; -s.t. average_time: sum{f in FUNDS} x[f] * time[f] <= maxRisk * sum{f in FUNDS} x[f]; +s.t. average_time: sum{f in FUNDS} x[f] * time[f] <= maxTime * sum{f in FUNDS} x[f]; s.t. public_investment: sum{f in FUNDS} x[f] * is_state_public[f] >= budget * minPublicFunds; -# activate logic constraint C - D -s.t. logicCD_0: x["C"] <= bigM * y["C"]; -s.t. logicCD_1: x["D"] <= bigM * y["D"]; -s.t. logicCD_2: y["C"] + y["D"] <= 1; +s.t. logicCD_0: x["C"] <= budget * y["C"]; # logic constraint C - D +s.t. logicCD_1: x["D"] <= budget * y["D"]; +s.t. logicCD_2: y["C"] + y["D"] <= 1; # C nand D -# activate logic constraint A - E -s.t. logicAE_0: x["A"] >= minAForE * y["A"]; -s.t. logicAE_1: x["E"] <= bigM * y["E"]; -s.t. logicAE_2: y["E"] <= y["A"]; \ No newline at end of file +s.t. logicAE_0: x["A"] >= minAForE * y["A"]; # logic constraint A - E +s.t. logicAE_1: x["E"] <= budget * y["E"]; +s.t. logicAE_2: y["E"] <= y["A"]; # E if A >= 10000 \ No newline at end of file diff --git a/models/portfolio/portfolio.run b/models/portfolio/portfolio.run index ba6ba76..8a8c81a 100644 --- a/models/portfolio/portfolio.run +++ b/models/portfolio/portfolio.run @@ -3,7 +3,7 @@ reset; # remove cached vars model portfolio.mod; # set model and data data portfolio.dat; -option solver cplex; # select solver +option solver "/home/stefano/bin/amplide.linux64/cplex"; # select solver solve; # solve display x, total_profit; # display solution \ No newline at end of file