1、2023-5-5主要内容主要内容理论背景理论背景理论模型理论模型MATLAB实现实现案例扩展案例扩展2023-5-5第一节第一节 理论背景理论背景2023-5-51951年年Kuhn-Tucker最优条件最优条件(简称简称KT条件条件)Davidon(1959),Fletcher和和Powell(1963)提出提出DFP方法方法1970年由年由Broyden,Fletcher,Goldfarb 和和Shanno从不从不同的角度共同提出的同的角度共同提出的BFGS方法方法约束变尺度约束变尺度(SQP)方法方法(Han和和Powell为代表为代表)和和Lagrange乘子法乘子法(代表人物是代表人
2、物是Powell 和和Hestenes)80年代开始研究信赖域法、稀疏拟牛顿法、大规模年代开始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计算问题的方法和并行计算90年代研究解非线性优化问题的内点法和有限储存年代研究解非线性优化问题的内点法和有限储存法法 2023-5-5第二节第二节 理论模型理论模型一、无约束非线性优化一、无约束非线性优化 不失一般性,无约束优化的一般形式:不失一般性,无约束优化的一般形式:其中,其中,为非线性函数。为非线性函数。对于无约束非线性最大化可以通过如下转换将其转化为标对于无约束非线性最大化可以通过如下转换将其转化为标准的无约束非线性优化的一般形式:准的无约束
3、非线性优化的一般形式:2023-5-5 min()nf xxR()f xmax()min()nnf xxRf xxR二、约束非线性优化二、约束非线性优化不失一般性,约束优化的一般形式:不失一般性,约束优化的一般形式:其中,其中,为非线性函数。为非线性函数。为不等式约束,为不等式约束,为等式约束。为等式约束。与无约束非线性最大化类似,对于约束非线性最大化可以通过与无约束非线性最大化类似,对于约束非线性最大化可以通过转换,将其转化为标准的约束非线性优化的一般形式:转换,将其转化为标准的约束非线性优化的一般形式:2023-5-5 min()()01,2,.()01,2,ijf xg ximsth x
4、jl:nfxRR()igx()0jh x 2023-5-5 max()()01,2,.()01,2,min()()01,2,.()01,2,iijjf xg ximsth xjlf xg ximsth xjl2023-5-5第三节第三节 MATLAB实现实现一、一、fminunc函数(无约束优化)函数(无约束优化)2023-5-5 fminunc函数是函数是MATLAB求解无约束优化问题的主要函数,函数主要求解无约束优化问题的主要函数,函数主要使用使用BFGS拟牛顿算法(拟牛顿算法(BFGS Quasi-Newton method)、)、DFP拟牛顿拟牛顿算法(算法(DFP Quasi-New
5、ton method)、最速下降法等。其调用格式主)、最速下降法等。其调用格式主要如下:要如下:x=fminunc(fun,x0)x=fminunc(fun,x0,options)x,fval=fminunc(.)x,fval,exitflag=fminunc(.)x,fval,exitflag,output=fminunc(.)x,fval,exitflag,output,grad=fminunc(.)x,fval,exitflag,output,grad,hessian=fminunc(.)2023-5-5 其中输入参数:其中输入参数:Fun:目标函数目标函数 一般用句柄形式给出一般用句柄
6、形式给出 X0:优化算法初始迭代点优化算法初始迭代点 Options:参数设置参数设置函数输出:函数输出:X:最优点输出(或最后迭代点)最优点输出(或最后迭代点)Fval:最优点(或最后迭代点)对应的函数值最优点(或最后迭代点)对应的函数值 Exitflag:函数结束信息函数结束信息(具体参见(具体参见matlab help)Output:函数基本信息函数基本信息 包括迭代次数,目标函数最大计算次数,使包括迭代次数,目标函数最大计算次数,使用的算法名称,计算规模等。用的算法名称,计算规模等。Grad:最优点(或最后迭代点)的导数最优点(或最后迭代点)的导数 Hessian:最优点(或最后迭代点
7、)的二阶导数:最优点(或最后迭代点)的二阶导数例题参考书中例题参考书中【例例14.3-1】二、二、fminsearch函数函数2023-5-5 fminsearch是是MATLAB中求解无约束的函数之一,其使用的算法为可变中求解无约束的函数之一,其使用的算法为可变多面体算法(多面体算法(Nelder-Mead Simplex),其调用格式主要如下:),其调用格式主要如下:x=fminsearch(fun,x0)x=fminsearch(fun,x0,options)x,fval=fminsearch(.)x,fval,exitflag=fminsearch(.)x,fval,exitflag,
8、output=fminsearch(.)2023-5-5 其中输入参数:其中输入参数:Fun:目标函数目标函数X0:迭代初始点迭代初始点Options:函数参数设置:函数参数设置函数输出:函数输出:X:最优点(算法停止点)最优点(算法停止点)Fval:最优点对应的函数值最优点对应的函数值Exitflag:函数停止信息函数停止信息1:函数收敛正常停止函数收敛正常停止0:迭代次数,目标函数计算次数达到最大数迭代次数,目标函数计算次数达到最大数-1:算法被:算法被output函数停止函数停止Output:函数运算信息:函数运算信息例题参考书中例题参考书中【例例14.3-2】三、三、fmincon函数
9、函数2023-5-5 fmincon是是MATLAB最主要的求解约束最优化的函数,该函数要求的最主要的求解约束最优化的函数,该函数要求的约束优化问题的标准形式为:约束优化问题的标准形式为:其中,其中,为向量,为向量,与与 为矩阵,为矩阵,为目标函数,为目标函数,为非线性约束,为非线性约束,为线性约束,为线性约束,为可行解的区为可行解的区间约束。间约束。min()()0()0.f xc xceq xst A xbAeq xbeqlbxub,x b beq lb ubAAeq()f x(),()c x ceq x,A xb Aeq xbeqlbxub2023-5-5 fmincon调用格式主要如下
10、:调用格式主要如下:x=fmincon(fun,x0,A,b)x=fmincon(fun,x0,A,b,Aeq,beq)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)x=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)x,fval=fmincon(.)x,fval,exitflag=fmincon(.)x,fval,exitflag,output=fmincon(.)x,fval,exitflag,output,lambda=fminc
11、on(.)x,fval,exitflag,output,lambda,grad=fmincon(.)x,fval,exitflag,output,lambda,grad,hessian=fmincon(.)2023-5-5 函数输入:函数输入:Fun:目标函数名称目标函数名称 X0:初始迭代点初始迭代点A:线性不等约束系数矩阵线性不等约束系数矩阵 B:线性不等式约束的常数向量线性不等式约束的常数向量Aeq:线性等约束系数矩阵线性等约束系数矩阵 Beq:线性等式约束的常数向量线性等式约束的常数向量 lb :可行区域下届可行区域下届 Ub:可行区域上界可行区域上界Nonlcon:非线性约束:非线性
12、约束 Options:优化参数设置:优化参数设置函数输出:函数输出:X:最优点(或者结束迭代点)最优点(或者结束迭代点)Fval:最有点(或者结束迭代点对应的函数值最有点(或者结束迭代点对应的函数值Exitflag:迭代停止标识:迭代停止标识Output:算法输出(算法计算信息等):算法输出(算法计算信息等)Ambda:拉格朗日乘子拉格朗日乘子Grad :一阶导数向量一阶导数向量Hessian:二阶导数矩阵二阶导数矩阵用法参考书中:用法参考书中:【例例14.3-2】和和【例例14.3-3】2023-5-5第四节第四节 案例扩展案例扩展一、大规模优化问题一、大规模优化问题2023-5-5 MAT
13、LAB求解大规模无约束最优化问题求解大规模无约束最优化问题(或者其他大规模问题或者其他大规模问题)时候时候,一般都会通过,一般都会通过optimset函数对默认算法设置进行改变,使其使用专函数对默认算法设置进行改变,使其使用专用的适合大规模问题的解算设置。用的适合大规模问题的解算设置。【例例14.4-1】求解如下优化问题(含求解如下优化问题(含200个变量):个变量):求解程序见书中求解程序见书中LargObjFun.m以及以及largUnc.m211min(),200nifx ini二、含参数优化问题二、含参数优化问题2023-5-5 含参数的优化问题一般是在程序运行过程中参数才能确定。含参数的优化问题一般是在程序运行过程中参数才能确定。MATLAB求解求解这类问题在编程技术上和求解含参数的方程类似求解求解这类问题在编程技术上和求解含参数的方程类似 【例例14.4-2】求解下面含参数函数的最小值:求解下面含参数函数的最小值:求解程序见书中求解程序见书中ObjFunWithPara.m以及以及FunWithPara.m221 122min(,)xf x aa xa x