如何解决CVX 基本和线性程序示例优化
我正在解决一个优化问题,因为我正在学习使用 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 举报,一经查实,本站将立刻删除。