微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CVX 基本和线性程序示例优化

如何解决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 举报,一经查实,本站将立刻删除。