zoukankan      html  css  js  c++  java
  • [数学建模(五)]线性规划,二次规划和非线性规划的MATLAB求解

    1.线性规划问题

    如果目标函数和约束条件都是线性函数,则该模型称为线性规划。

    [x,f_opt,flag,c]=linprog(f,A,B,Aeq,Beq,xm,xM,x0,opt)

    参数说明:

    X: 解

    f_opt: 最优值

    Flag:大于零表示求解成功,否则求解出问题

    C:求解信息

    X0:搜索点的初值

    Opt:最优化控制项

    例子:

    MATLAB求解:

    f=[-6,-4]'; A=[2 3;4 2];
    
    B=[100;120]; Ae=[]; Be=[]; xm=[0,0];
    
    ff=optimset;
    
    ff.LargeScale='off'; % 不用大规模问题求解
    
    ff.TolX=1e-15;
    
    ff.TolFun=1e-20;
    
    ff.TolCon=1e-20;
    
    ff.Display='iter';
    
    [x,f_opt,key,c]=linprog(f,A,B,Ae,Be,xm,[],[],ff)

    运行结果:

    x =

       20.0000

       20.0000

    f_opt =

      -200

    key =

         1

    c =

             iterations: 2

        constrviolation: 0

              algorithm: 'active-set'

           cgiterations: []

                message: 'Optimization terminated.'

          firstorderopt: 7.1054e-15

    2. 二次规划问题

     

    [x,f_opt,flag,c]=quadprog(H,f,A,B,Aeq,Beq,xm,xM,x0,opt)

    例子:

     

    MATLAB求解:

    f=[-2,-4,-6,-8]; H=diag([2,2,2,2]);
    
    OPT=optimset;
    
    OPT.LargeScale='off';
    
    A=[1,1,1,1; 3,3,2,1];
    
    B=[5;10];
    
    Aeq=[];
    
    Beq=[];
    
    LB=zeros(4,1);
    
    [x,f_opt]=quadprog(H,f,A,B,Aeq,Beq,LB,[],[0 0 0 0],OPT)

    运行结果:

    x =

        0.0000

        0.6667

        1.6667

        2.6667

    f_opt =

      -23.6667

    3.非线性规划问题

    目标函数或约束条件中至少有一个是非线性函数的最优化问题叫做非线性规划问题。

    [x,f_opt,flag,c]=fmincon(F, x0, A,B,Aeq,Beq,xm,xM,CF,opt)

    F;目标函数,inline函数或m函数

    Cf;非线性约束条件对应的m函数

     

    MATLAB求解:

    1.目标函数:

    function y=opt_fun1(x)

    y=100-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3);

    2.非线性约束条件的函数:

    function [c,ceq]=opt_con1(x)

    ceq=[x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-25;8*x(1)+14*x(2)+7*x(3)-56];

    c =[0 0 0 ];

    3.求解:

    ff=optimset;
    
    ff.LargeScale='off';
    
    ff.Display='iter';
    
    ff.TolFun=1e-30;
    
    ff.TolX=1e-15;
    
    ff.TolCon=1e-20;
    
    x0=[1;1;1];
    
    xm=[0;0;0];
    
    xM=[];A=[];B=[];Aeq=[]; Beq=[];
    
    [x,f_opt,c,d]=fmincon('opt_fun1',x0,A,B,Aeq,Beq,xm,xM,'opt_con1',ff);

    运行结果:

    x =

        3.5121

        0.2170

        3.5522

    f_opt =

       61.7152

    c =

         2

    d =

             iterations: 105

              funcCount: 569

        constrviolation: 0

               stepsize: 8.0563e-20

              algorithm: 'interior-point'

          firstorderopt: 1.2326e-07

           cgiterations: 26

                message: 'Local minimum possible. Constraints satisfied.…'

  • 相关阅读:
    POJ 2388
    POJ 2387
    POJ 2389
    POJ 2379
    POJ 2385
    文件及输入输出流模拟ATM机
    文件及输入输出流模拟学生系统
    第六讲 字符串
    第四节课练习
    第四次上课练习
  • 原文地址:https://www.cnblogs.com/youngsea/p/7473946.html
Copyright © 2011-2022 走看看