Skip to main content

非线性优化

概念

当目标函数或约束条件中有非线性的函数时,就是非线性规划问题,与线性规划类似,只是函数不同。

matlab编程求解

非线性规划标准型为

minF(X)s.t.{AXbAeqX=beqG(X)0Ceq(X)=0VLBXVUB\min F(\bold{X}) \\ s.t. \begin{cases} \bold A\bold X\le \bold b \\ Aeq\cdot\bold X = beq \\ G(\bold{X})\le \bold{0} \\ Ceq(\bold{X})=\bold{0} \\ VLB\le\bold{X}\le VUB \end{cases}
  1. 先建立目标函数m文件

  2. 若有非线性约束G(X)0G(\bold{X})\le \bold{0}Ceq(X)=0Ceq(\bold{X})=\bold{0}建立m文件表示出来

     function [G, Ceq]=nonlcon(X)
    G=...
    Ceq=...
  3. 建立主程序,使用非线性规划求解的函数fmincon格式如下

     x=fmincon('fun',x0,A,b)
    x=fmincon('fun',x0,A,b,Aeq,beq)
    x=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB)
    x=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'nonlcon')
    x=fmincon('fun',x0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options)

    [x,fval] = fmincon(...)
    [x,fval,exitflag] = fmincon(...)
    [x,fval,exitflag,output] = fmincon(...)