ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Matlab线性规划优化算法(1)

2020-01-23 12:01:19  阅读:462  来源: 互联网

标签:linprog lb 0.000000 线性规划 00 算法 Matlab 优化 options


在Matlab中解形如下式的线性规划问题:
在这里插入图片描述
其中包括优化对象 f’ * x, 不等式约束,等式约束,以及约束变量的上下界。
在Matlab中提供了linprog函数进行线性优化的求解:
eg:
[x,fval,exitflag,output,lambda] = linprog(f,A,b,Aeq,beq,lb,ub,options)
函数的输入f, 即为优化对象f, A,b, Aeq, beq, lb,ub 均为上式中的具体表达。最后的options是对优化过程进行参数设置,主要的包括:

options = optimoptions(‘linprog’,‘Algorithm’,‘interior-point’,‘Display’,‘iter’,‘MaxIterations’,10)

选择优化方法: 线性优化
选择优化算法: 内点法(线性优化中还提供其他算法)
显示: 显示循环次数
限制循环次数

还有其他参数可以设置:具体的搜索Matlab reference中的 Optimization Options Reference获得。
举个例子:
我们解下面的线性规划问题:

f = [-2;-1;1];

A = [1 4 -1; 2 -2 1];

b = [4;12];

Aeq = [1 1 2];
beq = 6;

lb = zeros(3,1);

给出对应优化参数设置并求解:

options = optimoptions('linprog','Algorithm','dual-simplex','Display','iter','MaxIterations',10)

[x,fval,exitflag,output,lambda]  = linprog(f,A,b,Aeq,beq,lb,ub,options)

我们可以获得如下的结果:

options = 

  linprog options:

   Options used by current Algorithm ('dual-simplex'):
   (Other available algorithms: 'interior-point', 'interior-point-legacy')

   Set properties:
              Algorithm: 'dual-simplex'
                Display: 'iter'
          MaxIterations: 10

   Default properties:
    ConstraintTolerance: 1.0000e-04
                MaxTime: Inf
    OptimalityTolerance: 1.0000e-07


LP preprocessing removed 0 inequalities, 0 equalities,
0 variables, and added 0 non-zero elements.

 Iter      Time            Fval  Primal Infeas    Dual Infeas  
    0     0.001    0.000000e+00   6.999174e+00   1.113300e+00  
    2     0.002   -1.080000e+01   1.750843e+00   0.000000e+00  
    4     0.002   -8.666667e+00   0.000000e+00   0.000000e+00  

Optimal solution found.


x =

    4.6667
         0
    0.6667


fval =

   -8.6667


exitflag =

     1


output = 

  struct with fields:

         iterations: 4
    constrviolation: 8.8818e-16
            message: 'Optimal solution found.'
          algorithm: 'dual-simplex'
      firstorderopt: 7.4015e-16


lambda = 

  struct with fields:

      lower: [3×1 double]
      upper: [3×1 double]
      eqlin: 0.3333
    ineqlin: [2×1 double]

其中包括了对参数的显示,每一步循环的数据,以及最终的最优点的值和函数值。

gophae 发布了56 篇原创文章 · 获赞 11 · 访问量 8731 私信 关注

标签:linprog,lb,0.000000,线性规划,00,算法,Matlab,优化,options
来源: https://blog.csdn.net/gophae/article/details/104074737

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有