Mixed-Integer Linear Programming problem

9 次查看(过去 30 天)
Hello,
i have to solve the following MILP problem on MATLAB:
I have tried to solve it in this way, but there is something wrong because the are not solutions according to the solver but there should be 2 vectors with 4 solutions each. Can anyone help me?
q = 4
n = length(tickers)
cvx_begin
cvx_solver sdpt3
variables x(n) y(n) binary;
maximize (sum(sum(rho*x)))
sum(y) == q;
sum(x) == 1;
sum(x) <= y';
cvx_end
x, y

回答(1 个)

Pranav Verma
Pranav Verma 2020-11-12
Hi Nicolo'
You can use the MILP solver in MATLAB to solve the problem you have mentioned. The MILP solver solves:
So make sure that you convert your problem from maximize to minimize and accordingly change the signs in the constraints and convert them to A.x <= b.
You can make use of optimproblem to create the optimization problem.
Thanks
  1 个评论
NICOLO' DUCCINI
NICOLO' DUCCINI 2020-11-12
编辑:NICOLO' DUCCINI 2020-11-13
Thank You for your answer!
I tried to modify the code in this way:
prob = optimproblem('ObjectiveSense','max')
x = optimvar('x',n,'Type','integer','LowerBound',0,'UpperBound',1);
y = optimvar('y',n,'Type','integer','LowerBound',0,'UpperBound',1);
prob.Objective = optimexpr(rho*x);
cons1 = sum(y) == q;
cons2 = sum(x) == 1;
cons3 = x <= y'*ones(30,1);
prob.Constraints.cons1 = cons1;
prob.Constraints.cons2 = cons2;
prob.Constraints.cons3 = cons3;
sol = solve(prob)
sol.x
sol.y
But I did't obtain an appropriate result, maybe because there are some constraint problem, do you have some suggestion ?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Programming 的更多信息

产品

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by