凸优化计算实例CVX

假设我们现在面临这样一个线性规划问题:

m i n ( x 1 − x 2 ) . s . t . 10 x 1 − 7 x 2 ≥ 5 x 1 + 1 / 2 x 2 ≤ 3 x 1 ≥ 0 , x 2 ≥ 0 \begin{aligned} &min( x{_1}-x{_2} ).\\ s.t. \\ &10x{_1}-7x{_2}\ge5\\ &x{_1}+1/2x{_2}\le3\\ &x{_1}\ge0,x{_2}\ge0\\ \end{aligned} s.t.minx1x2.10x17x25x1+1/2x23x10,x20

算例原始数据来自
https://blog.csdn.net/ljl86400/article/details/83023635
如果借助matlab工具包sedumi进行计算,须按照文档中的变量约定转化为优化问题的标准形式,比较麻烦。

下面介绍一个可直接求解凸优化问题的工具,须下载matlab 工具包CVX:
http://cvxr.com/cvx/
CVX: Matlab Software for Disciplined Convex Programming

安装好以后,输入以下代码

cvx_begin
c = [1;-1];
A = [-10,7;1,1/2];
b = [-5;3];
d=length(c);
        variable x_Recon(d);
        
        minimize(c'*x_Recon)
        subject to
            A*x_Recon<=b;
            x_Recon>=0;
    cvx_end
display(x_Recon);

求解结果如下(过程可略过,请直接看最后几行):


```javascript
Calling SDPT3 4.0: 4 variables, 2 equality constraints
------------------------------------------------------------

 num. of constraints =  2
 dim. of linear var  =  4
*******************************************************************
   SDPT3: Infeasible path-following algorithms
*******************************************************************
 version  predcorr  gam  expon  scale_data
    NT      1      0.000   1        0    
it pstep dstep pinfeas dinfeas  gap      prim-obj      dual-obj    cputime
-------------------------------------------------------------------
 0|0.000|0.000|3.9e+00|1.1e+01|5.3e+02|-7.863878e-10  0.000000e+00| 0:0:00| chol  1  1 
 1|1.000|1.000|4.7e-06|8.3e-02|4.0e+01| 1.208121e+00 -3.722157e+01| 0:0:00| chol  1  1 
 2|1.000|0.920|4.8e-07|1.4e-02|3.3e+00| 1.028984e+00 -2.041728e+00| 0:0:00| chol  1  1 
 3|0.872|1.000|7.2e-08|8.3e-04|1.3e+00| 3.589943e-02 -1.297131e+00| 0:0:00| chol  1  1 
 4|1.000|0.938|1.3e-07|1.3e-04|8.0e-02|-7.151182e-02 -1.503997e-01| 0:0:00| chol  1  1 
 5|0.980|0.984|7.0e-09|1.0e-05|1.5e-03|-1.240079e-01 -1.254659e-01| 0:0:00| chol  1  1 
 6|0.989|0.989|9.9e-10|9.4e-07|1.7e-05|-1.249889e-01 -1.250012e-01| 0:0:00| chol  1  1 
 7|0.989|0.989|1.3e-11|1.0e-08|1.9e-07|-1.249999e-01 -1.250000e-01| 0:0:00| chol  1  1 
 8|0.993|1.000|9.7e-14|2.6e-12|2.9e-09|-1.250000e-01 -1.250000e-01| 0:0:00|
  stop: max(relative gap, infeasibilities) < 1.49e-08
-------------------------------------------------------------------
 number of iterations   =  8
 primal objective value = -1.24999998e-01
 dual   objective value = -1.25000001e-01
 gap := trace(XZ)       = 2.85e-09
 relative gap           = 2.28e-09
 actual relative gap    = 2.27e-09
 rel. primal infeas (scaled problem)   = 9.68e-14
 rel. dual     "        "       "      = 2.61e-12
 rel. primal infeas (unscaled problem) = 0.00e+00
 rel. dual     "        "       "      = 0.00e+00
 norm(X), norm(y), norm(Z) = 2.9e+00, 2.8e-01, 2.8e-01
 norm(A), norm(b), norm(C) = 1.3e+01, 6.8e+00, 2.4e+00
 Total CPU time (secs)  = 0.21  
 CPU time per iteration = 0.03  
 termination code       =  0
 DIMACS: 1.1e-13  0.0e+00  3.2e-12  0.0e+00  2.3e-09  2.3e-09
-------------------------------------------------------------------
 
------------------------------------------------------------
Status: Solved
Optimal value (cvx_optval): -0.125
x_Recon =

    1.9583
    2.0833

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值