MATLAB 求解最优化问题

15 篇文章 9 订阅
14 篇文章 3 订阅

MATLAB 求解最优化问题

MATLAB 优化工具箱解线性规划

模型1

minz=cXs.t.AXb

命令: x=linprog(c,A,b)

模型2

minz=cXs.t.AXbAeqX=beq

命令: x=linprog(c,A,b,Aeq,beq)

注意:若没有不等式: AXb 存在,则令 A=[ ] b=[ ]

模型3

minz=cXs.t.AXbAeqX=beqVLBXVUB

命令:[1] x=linprog(c,A,b,Aeq,beq,VLB,VUB) ,[2] x=linprog(c,A,b,Aeq,beq,VLB,VUB,x0)

注意:[1] 若没有等式约束: AeqX=beq ,则令 Aeq=[ ] beq=[ ] ;[2] 其中 x0 表示初始点

命令: [x,fval]=linprog()

返回最优解xx出的目标函数的值fval

求解优化问题的主要函数

1. MATLAB求解优化问题的主要函数

类型模型基本函数名
一元函数极小
min F(x)s.t. x1<x<x2
x=fminbnd(F,x1,x2)
无约束极小
min F(X)
X=fminunc(F,x0)X=fminsearch(F,x0)
线性规划
min cTXs.t. AXb
X=linprog(c,A,b)
二次规划
min 12XTHX+cTXs.t. AXb
X=quadprog(H,c,A,b)
约束极小(非线性规划)
min F(X)s.t. G(X)b
X=fmincon(FG,x0)
达到目标问题
min rs.t. F(x)wrgoal
X=fgoalattain(F,x,goal,w)
极小极大问题
min maxx {Fi(x)}s.t. G(x)0
X=fminimax(FG,x0)

2. 优化函数的输入变量

变量描述调用函数
f线性规划的目标函数 fX 或二次规划的目标函数 XHX+fX 中线性项的系数向量linprog, quadprog
fun非线性优化的目标函数。fun必须为行命令对象或M文件、嵌入函数或MEX文件的名称fminbnd, fminsearch,fminunc, fmincon, lsqcurvefit, lsqnonlin, fgoalattain, fminimax
H二次规划的目标函数 XHX+fX 中二次项的系数矩阵quadprog
A, bA矩阵和b向量分别为线性不等式约束: AXb 中的系数矩阵和右端向量linprog, quadprog, fgoalattain, fmincon, fminimax
Aeq, beqAeq矩阵和beq向量分别为线性等式约束: AeqX=beq 中的系数矩阵和右端向量linprog, quadprog, fgoalattain, fmincon, fminimax
vlb, vubX的下限和上限向量: vlbXvub linprog, quadprog, fgoalattain, fmincon, fminimax, lsqcurvefit, lsqnonlin
X_0迭代初始点坐标除fminbnd外所有优化函数
X1 , X2 函数最小化的区间fminbnd
options优化选项参数结构,定义用于优化函数的参数所有优化函数

3. 优化函数的输出变量表

变量描述调用函数
x由优化函数求得的值。若 exitflag>0 ,则x为解;否则x不是最终解,它只是迭代终止时优化过程的值所有优化函数
fval解x处的目标函数值linprog, quadprog, fgoalattain, fmincon, fminimax, lsqcurvefit, lsqnonlin, fminbnd
exitflag描述退出条件: exitflag>0 ,表明目标函数收敛于解x处; exitflag0= ,表明目标函数评价或迭代的最大次数; exitflag<0 ,表明目标函数不收敛
output包含优化结果信息的输出结构:Iterations:迭代次数;Algorithm:所采用的算法;FuncCount:函数评价次数所有优化函数

4. 控制参数options的设置

用MATLAB解无约束问题

1. 一元函数无约束优化问题

min f(x)s.t. x1xx2

常用格式如下

x=fminbnd(fun,x1,x2);
x=fminbnd(fun,x1,x2,options);
[x,fval]=fminbnd(...);
[x,fval,exitflag]=fminbnd(...);
[x,fval,exitflag,output]=fminbnd(...);
%%其中3、4、5的等式右边可用1或2的等式右边

函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。

2. 多元函数无约束优化问题

标准型为: min F(X)

命令格式为:

x=fminunc(fun,X0);  %或x=fminsearch(fun,X0)
x=fminunc(fun,X0,options);  %或x=fminsearch(fun,X0,options)
[x,fval]=fminunc(...);  %或[x,fval]=fminsearch(...)
[x,fval,exitflag]=fminunc(...); %或[x,fval,exitflag]=fminsearch(...)
[x,fval,exitflag,output]=fminunc(...);  %或[x,fval,exitflag,output]=fminsearch(...)

fminsearch是用单纯性法寻优

fminunc的算法:

  1. fminunc为无约束优化提供了大型优化和中型优化算法。
    1. options中的参数LargeScale控制:LargeScale='on'使用大型算法,LargeScale='off'使用小型算法
  2. fminunc为中型优化算法的搜素方向提供了4种算法,由options中的参数HessUpdate控制
    1. HessUpdate='bfgs'(默认值),拟牛顿法的BFGS公式
    2. HessUpdate='dfp',拟牛顿法的DFP公式
    3. HessUpdate='steepdesc',最速下降法
  3. fminunc为中型优化算法的步长一维搜索提供了两种算法,由options中参数LineSearchType控制:
    1. LineSearchType='quadcubic'(缺省值),混合的二次和三次多项式插值
    2. LineSearchType='cubicpoly',三次多项式插值

使用fminuncfminsearch可能会得到局部最优解

用MATLAB解非线性规划

标准型为:

min F(X)s.t. AXbAeqX=beqG(X)0Ceq(X)=0VLBXVUB

其中 Xn维变元向量, G(X)Ceq(X)均为非线性函数组成的向量,其他变量的含义和线性规划、二次规划相同。MATLAB求解:

  1. 首先建立M文件fun.m,定义目标函数F(X)

    function f=fun(X);
    f=F(X);
  2. 若约束条件中有非线性约束: G(X)0 Ceq(X)=0 ,则建立M文件nonlcon.m定义函数G(X)Ceq(X)

    function [G,Ceq]=nonlcon(X);
    G=...
    Ceq=...
  3. 建立主程序,非线性规划求解的函数是fmincon,命令的基本格式如下:

    x=fmincom('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(...);

fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。

fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。

fmincon函数可能会给出局部最优解,这与初值X0的选取有关。

  • 42
    点赞
  • 286
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值