问题描述
我正在解决一个优化问题,因为我正在学习使用 CVX 的一些基础知识
目标是最小化成本函数 fo(x) = 2x1 + 3.5x2 + 8x3 + 1.5x4 + 11*x5 + x6
有约束
90x1 + 120x2 + 106x3 + 97x4 + 130x5 + 180x6 ≥ 300
4x1 + 8x2 + 7x3 + 1.3x4 + 8x5 + 9.2x6 ≤ 10
15x1 + 11.7x2 + 0.4x3 + 22.6x4 + 0x5 + 17x6 ≥ 10
x1 + 5x2 + 9x3 + 0.1x4 + 7x5 + x6 ≥ 8
x5 ≥ 0.5
x2 ≤ 1
我为上述约束编写的基本代码是
cvx_begin quiet
variable x_1
variable x_2
variable x_3
variable x_4
variable x_5
variable x_6
minimize (2*x_1 + 3.5*x_2 + 8*x_3 + 1.5*x_4 + 11*x_5 + x_6)
subject to
300<=90*x_1 + 120*x_2 + 106*x_3 + 97*x_4 + 130*x_5 + 180*x_6;
4*x_1 + 8*x_2 + 7*x_3 + 1.3*x_4 + 8*x_5 + 9.2*x_6<=10;
10<=15*x_1 + 11.7*x_2 + 0.4*x_3 + 22.6*x_4 + 17*x_6;
8<=x_1 + 5*x_2 + 9*x_3 + 0.1*x_4 + 7*x_5 + x_6;
0.5<= x_5;
x_2<=1;
0<=x_1; 0<=x_2; 0<=x_3; 0<=x_4; 0<=x_5; 0<=x_6;
cvx_end
cvx_optval
display(x_1);
display(x_2);
display(x_3);
display(x_4);
display(x_5);
display(x_6);
display(2*x_1 + 3.5*x_2 + 8*x_3 + 1.5*x_4 + 11*x_5 + x_6);
这是我为线性规划方法编写的代码
n=6
c=[2; 3.5; 8; 1.5; 11; 1]
A=[90 120 106 97 130 80; 4 8 7 1.3 8 9.2; 15 11.7 0.4 22.6 0 17; 1 5 9 0.1 7 1; 0 0 0 0 1 0; 0 1 0 0 0 0]
b=[300; 10; 10; 8; 0.5; 1]
cvx_begin
variable x(n)
dual variables y z
minimize( c' * x )
subject to
y : A * x == b;
cvx_end
cvx_optval
echo off
现在我对这两种方法的回答显然应该匹配。我做对了吗?需要专家的回答。我想我可能需要引入一些否定登录。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)