欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    第七讲Matlab在求解优化问题中的应用ppt课件.ppt

    • 资源ID:1469026       资源大小:542KB        全文页数:109页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第七讲Matlab在求解优化问题中的应用ppt课件.ppt

    第七讲 Matlab在求解优化问题中的应用,参考文献:,Matlab7.2优化设计实例指导教程,褚洪生、杜增吉、阎金华 等编著,机械工业出版社,2007,本 讲 内 容,多目标规划问题最大最小化问题半无限问题整数规划问题大规模最优化问题,一、最优化理论概述,二、Matlab优化工具箱简介,三、无约束优化问题,四、约束优化问题,五、方程求解,一、最优化理论概述,最优化是一门研究如何科学、合理、迅速地确定可行方案并找到其中最优方案的学科。,最优化方法就是专门研究如何从多个方案中科学合理地提出最佳方案的科学。,(一)最优化问题基本模型,最优化问题的一般形式:,称为目标函数,X称为问题的可行域。,无约束问题一般形式:,约束问题一般形式:,约束函数,等式约束条件,不等式约束条件,可行域X为:,线性规划,二次规划,凸规划,此外还分成:整数规划、动态规划、网络规划、非光滑规划、随机规划、几何规划、多目标规划等。,例 数据拟合问题,或,无约束问题,例 食谱问题,线性规划问题,线性规划问题的标准型:,非标准型线性规划问题过渡到标准型线性规划问题的处理方法:,例 二次规划问题,通过逐步二次规划能使一般的非线性规划问题的求解过程得到简化,因此,二次规划迭代法也是目前求解最优化问题时常用的方法。,由于二次规划问题本身也是一大类实际应用中经常碰到的问题,所以,二次规划问题在最优化理论和应用各方面都占有非常重要的地位。,例 最小二乘问题,如果r(x)是x的非线性函数,则问题称为非线性最小二乘问题;如果r(x)是x的线性函数,则问题称为线性最小二乘问题。,非线性最小二乘问题在数据拟合、参数估计和函数逼近等方面有广泛应用。,非线性最小二乘问题既可以看作为无约束极小化的特殊情形,又可以看作为解如下方程组:,(二)最优化问题的实现,用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:,建立数学模型。即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。,数学求解。数学模型建好以后,选择合理的最优化方法进行求解。,Matlab实现,由于最优化问题在近些年来得到了广泛的应用, Matlab工具箱函数也同时有了飞速的发展。,利用Matlab的优化工具箱可以求解如下问题:,线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题,此外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。,使用Matlab的优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:,优化函数fminbnd、fminsearch、fminunc、fminicon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即 -f (x) 最小化来实现。近似地,对于quadprog 函数提供 -H 和 -f,对于linprog函数提供 -f。,优化工具箱要求非线性不等式约束的形式为Ci(x) 0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如 Ci(x) 0形式的约束等价于-Ci(x) 0 ;Ci(x) b形式的约束等价于-Ci(x) +b0。,二、Matlab优化工具箱简介,(一)优化工具箱中的函数,优化工具箱中的函数包括下面几类:,1. 最小化函数,2. 最小二乘问题,3. 方程求解函数,中型问题方法演示函数,4. 演示函数,大型问题方法演示函数,(二)优化函数的变量,在Matlab的优化工具箱中,定义了一系列的标准变量,通过使用这些标准变量,用户可以使用Matlab来求解在工作中碰到的问题。主要有如下三类:,1. 输入变量,调用 Matlab 优化工具箱,需要首先给出一些输入变量,优化工具箱函数通过对这些输入变量的处理得到用户需要的结果。输入变量大体上分成输入系数和输入参数两类:,输入系数表,输入参数表,2. 输出变量,调用 Matlab 优化工具箱函数后,给出一系列输出变量,提供给用户相应的输出信息。,3. 优化参数,(三)参数设置,对于优化控制,Matlab 提供了18个参数。利用optimset 函数,可以创建和编辑参数结构;利用optimget 函数,可以获得 options 优化参数。这些参数的具体意义如下:,1. 参数值,2. optimset 函数,optimset 函数的功能是创建或编辑优化选项参数结构。具体的调用格式为:,options=optimset( param1,value1, param2, value2, ),options=optimset( oldopts,param1, value1, ),功能:创建一个称为options 的优化选项参数,其中指定的参数具有指定值。所有未指定的参数都设置为空矩阵 (将参数设置为 表示当options传递给优化函数时给参数赋默认值)。赋值时只要输入参数前面的字母就行了。,功能:创建一个oldopts的复制,用指定的数值修改参数。,options=optimset ( oldopts,newopts ),功能:将已经存在的选项结构 oldopts 与新的选项结构newopts 进行合并。 newopts 参数中的所有元素将覆盖oldopts 参数中的所有对应元素。,optimset,功能:没有任何输入输出参数,将显示一张完整的带有有效值的参数列表如左:,Display: off | on | iter | notify | final MaxFunEvals: positive scalar MaxIter: positive scalar TolFun: positive scalar TolX: positive scalar FunValCheck: off | on OutputFcn: function | BranchStrategy: mininfeas | maxinfeas DerivativeCheck: on | off Diagnostics: on | off DiffMaxChange: positive scalar | 1e-1 DiffMinChange: positive scalar | 1e-8 GoalsExactAchieve: positive scalar | 0 ,options=optimset ( with no input arguments ),功能:创建一个选项结构options,其中所有的元素被设置为 。,optimset( optimfunction ),功能:创建一个含有所有参数名和与优化函数optimfun相关的默认值的选项结构options 。,options=optimset(Display,iter,TolFun,1e-8),例1,options = Display: iter MaxFunEvals: MaxIter: TolFun: 1.0000e-008 TolX: FunValCheck: OutputFcn: ActiveConstrTol: BranchStrategy: DerivativeCheck: Diagnostics: DiffMaxChange: DiffMinChange: GoalsExactAchieve: ,optnew=optimset(options,TolX,1e-4),例2,options = Display: iter MaxFunEvals: MaxIter: TolFun: 1.0000e-008 TolX: 1.0000e-004 FunValCheck: OutputFcn: ActiveConstrTol: BranchStrategy: DerivativeCheck: Diagnostics: DiffMaxChange: DiffMinChange: GoalsExactAchieve: ,options=optimset(fminbnd),例3,options = Display: notify MaxFunEvals: 500 MaxIter: 500 TolFun: TolX: 1.0000e-004 FunValCheck: off OutputFcn: ,返回options优化结构,其中包含所有的参数名和与fminbnd函数相关的默认值,结果如左:,optimset fminbnd,例4,若只希望看到fminbnd函数的默认值,只需要简单地键入上面的语句之一就可以了。其输出结果同上例。,optimset(fminbnd),或,3. optimget 函数,optimget 函数的功能是获得options的优化参数。具体的调用格式为:,val=optimget( options, name ),val=optimget ( options, name,default ),功能:返回优化参数options中指定的参数的值。只需要用参数开头的字母来定义参数就行了。,功能:若options结构参数中没有定义指定参数,则返回默认值。注意,这种形式的函数主要用于其它优化函数。,设置了参数options后就可以用上述调用形式完成指定任务了。,val=optimget(options,Display),例5,val =notify,optnew=optimget(options,Display,final),例6,optnew =notify,如果显示参数没有定义,则返回值final。,(四)模型输入时需要注意的问题,使用优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:,优化函数fminbnd、fminsearch、fminunc、fminicon、fgoalattain、fminmax和lsqnonlin都要求目标函数最小化,如果优化问题要求目标函数最大化,可以通过使该目标函数的负值最小化即-f (x)最小化来实现。近似地,对于quadprog函数提供-H和-f,对于linprog函数提供-f。,优化工具箱要求非线性不等式约束的形式为Ci(x) 0,通过对不等式取负可以达到使大于零的约束形式变为小于零的不等式约束形式的目的,如 Ci(x) 0形式的约束等价于-Ci(x) 0 ;Ci(x)b形式的约束等价于-Ci(x) +b0。,在Matlab语言中,函数内部定义的变量除特殊声明外均为局部变量,即不加载到工作空间中。如果需要使用全局变量,则应当使用命令global定义,而且在任何时候使用该全局变量的函数中都应该加以定义。在命令窗口中也不例外。当程序比较大时,难免会在无意中修改全局变量的值,因而导致错误。更糟糕的是,这样的错误很难查找。因此,在编程时应该尽量避免使用全局变量。,(五)函数,Matlab6.0以后的版本中可以用函数进行函数调用。函数返回指定Matlab函数的句柄,其调用格式为:,handle= function,利用函数进行函数调用的好处:,用句柄将一个函数传递给另一个函数;,减少定义函数的文件个数;,改进重复操作;,保证函数计算的可靠性。,fhandle=humps;,例7,x = 0.6370,x=fminbnd(fhandle,0,1),为 humps 函数创建一个函数句柄,并将它指定为 fhandle 变量。,传递句柄给另一个函数,也将传递所有变量。,x=fminbnd(humps,0,1),x=fminbnd(humps,0,1),或,或,(六)优化算法介绍,参数优化就是求一组设计参数 x=(x1,x2,xn),以满足在某种意义下最优。一个简单的情况就是对某依赖于 x 的问题求极大值或极小值。复杂一点的情况是欲进行优化的目标函数 f (x) 受到以下限定条件:,1. 参数优化问题,等式约束条件:,不等式约束条件:,参数有界约束:,这类问题的一般数学模型为:,要有效而且精确地解决这类问题,不仅依赖于问题的大小即约束条件和设计变量的数目,而且依赖目标函数和约束条件的性质。,线性规划,二次规划,非线性规划,能得到可靠的解,一般是通过求解线性规划、二次规划或无约束优化的子问题来解决。,2. 无约束优化问题,搜索法是对非线性或不连续问题求解的合适方法,当欲优化的函数具有连续一阶导数时,梯度法(一个简单的方法是沿负梯度方向搜索)一般说来更为有效,高阶法(例如Newton法)仅实用于目标函数的二阶信息能计算出来的情况。,拟Newton法,在使用梯度信息的方法中,最为有效的方法是拟Newton方法。此方法的实质是建立每次迭代的曲率信息,以此来解决如下形式的二次模型问题:,其中H为目标函数的Hessian矩阵,H对称正定,b为常数向量,c为常数。最优解为:,多项式近似,对应于拟Newton法, Newton法直接计算H,并使用线搜索策略沿下降方向经过一定次数的迭代后确定最小值,为了得到矩阵 H 需要经过大量的计算;拟Newton法则不同,它通过使用 f (x)和它的梯度来修正 H 的近似值,常用的拟Newton法( Hessian矩阵修正方法),BFGS方法,DFP方法,该法用于目标函数比较复杂的情况。在这种情况下寻找一个与它近似的函数来代替目标函数,并用近似函数的极小点作为原函数极小点的近似。常用的近似函数为二次多项式和三次多项式。,二次内插的一般问题是,在定义域空间给定三个点x1,x2,x3和它们所对应的函数值 f (x1),f (x2),f (x3),由二阶匹配得出最小值点如下:,二次内插,极值点:,二次函数:,此点可能是最小值或最大值点。当执行内插或a为正时是最小值。只要利用三个梯度或者函数方程组即可确定系数a和b,从而可确定x*。得到该值以后,进行搜索区间的收缩。,其中,三次插值的基本思想和二次插值一致,它是用4个已知点构造一个三次多项式来逼近目标函数,同时以三次多项式的极小点作为目标函数极小点的近似。,三次插值,三次插值法需要计算目标函数的导数,优点是计算速度快。同类的方法还有Newton切线法、对分法、割线法等。优化工具箱中使用的比较多的是三次插值法。,二次插值法的计算速度比黄金分割搜索法快,但是对于一些强烈扭曲或者可能多峰的函数,这种方法的收敛速度变得很慢,甚至失败。,一般来讲,三次插值法比二次插值法的收敛速度快,但是每次迭代需要计算两个导数值。,如果导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率,对于只需要计算函数值的方法中,二次插值是一个很好的方法,它的收敛速度较快,在极小点所在的区间较小时尤其如此。黄金分割法是一种十分稳定的方法,并且计算简单。由于上述原因, Matlab优化工具箱中较多地使用二次插值法、三次插值法以及二次三次混合插值法和黄金分割法。,三次插值法的迭代公式为:,其中,3. 拟Newton法实现,在函数 fminunc 中使用拟 Newton 法,算法的实现过程包括两个阶段:,确定搜索方向,搜索方向的选择由选择 BFGS 方法还是选择 DFP 方法来决定,在优化工具箱中,通过将 options 参数 HessUpdate设置为 BFGS 或 DFP 来确定搜索方向。 Hessian 矩阵 H 总是保持正定的,使得搜索方向总是保持为下降方向。这意味着,对于任意小的步长,在上述搜索方向上目标函数值总是减小的。只要 H 的初始值为正定并且计算出的 qkTsk 总是正的,则 H 的正定性得到保证。并且只要执行足够精度的线性搜索, qkTsk 为正的条件总能得到满足。,要确定搜索方向首先必须完成 Hessian 矩阵的修正。Newton 法由于需要多次计算 Hessian 矩阵,所以计算量很大。拟 Newton 法通过构建一个 Hessian 矩阵的近似矩阵来避开这个问题。,线性(一维)搜索过程,另外,在三次插值法中,每一个迭代周期都要进行梯度和函数的计算。,在优化工具箱中有两种线性搜索方法可以使用,这取决于梯度信息是否可以得到。当梯度值可以直接得到时,默认情况下使用三次多项式方法;当梯度值不能直接得到时,默认情况下,采用混合二次和三次插值法。,4. 最小二乘优化,前面介绍了函数 fminunc 中使用的是在拟 Newton 法中介绍的线性搜索法,在最小二乘优化程序 lsqnonlin 中也部分地使用这一方法。最小二乘问题的优化描述如下:,在实际应用中,特别是数据拟合时存在大量这种类型的问题,如非线性参数估计等。控制系统中也经常会遇到这类问题,如希望系统输出的 y (x,t) 跟踪某一个连续的期望轨迹,这个问题可以表示为:,将问题离散化得到:,最小二乘问题的梯度和 Hessian 矩阵具有特殊的结构,定义 r (x)的 Jacobian 矩阵为J(x),则 F (x)的梯度和F(x) 的Hessian 矩阵定义为:,其中,GaussNewton法,在GaussNewton法中,每个迭代周期均会得到搜索方向d。它是最小二乘问题的一个解。,GaussNewton法用来求解如下问题:,当Q(x)很大时,GaussNewton法很难得到问题的解,在这种情况下,LevenbergMarquadt方法显得更有效。,LevenbergMarquadt法,LevenbergMarquadt法使用的搜索方向是一组线性等式的解:,5. 非线性最小二乘实现,GaussNewton实现,GaussNewton法是用前面求无约束问题中讨论过的多项式线性搜索策略来实现的。使用Jacobian矩阵的QR分解,可以避免在求解线性最小二乘问题中等式条件恶化的问题。,这种方法中包含一项鲁棒性检测技术,这种技术步长低于限定值或当Jacobian矩阵的条件数很小时,将改为使用LevenbergMarquadt法。,这种实现方法在大量非线性问题中得到了成功的应用,并被证明比GaussNewton法具有更好的鲁棒性,比无约束条件方法具有更好的迭代效率。在使用lsqnonlin函数时,函数所使用的默认算法是LevenbergMarquadt法。当options(5)=1时,使用GaussNewton法。,LevenbergMarquadt实现,实现LevenbergMarquadt方法的主要困难是在每一次迭代中如何控制的大小的策略问题,这种控制可以使它对于宽谱问题有效。这种实现的方法是使用线性预测平方总和和最小函数值的三次插值估计,来估计目标函数的相对非线性,用这种方法的大小在每一次迭代中都能确定。,6. 约束优化,在约束最优化问题中,一般方法是先将问题变换为较容易的子问题,然后再求解。前面所述方法的一个特点是可以用约束条件的罚函数将约束优化问题转化为基本的无约束优化问题,按照这种方法,条件极值问题可以通过参数化为无约束优化序列来求解。但这些方法效率不高,目前已经被通过求解KuhnTucker方程的方法所取代。 KuhnTucker方程是条件极值问题的必要条件。如果欲解决的问题是所谓的凸规划问题,那么KuhnTucker方程有解是极值问题有全局解的充分必要条件。,求解KuhnTucker方程是很多非线性规划算法的基础,这些方法试图直接计算Lagrange乘子。因为在每一次迭代中都要求解一次QP子问题,这些方法一般又被称为逐次(或序列)二次规划(SQP)方法。,这个问题可以通过任何求解二次规划问题的算法求解。,使用序列二次规划方法,非线性约束条件的极值问题经常可以比无约束优化问题用更少的迭代得到解。造成这种现象的一个原因是:受到可行域的限制,这种方法更可能得到恰当的搜索方向和迭代步长。,给定一个约束最优化问题,求解的基本思想是基于Lagrange函数的二次近似求解二次规划子问题:,从而得到二次规划子问题:,7. SQP实现,在每一次迭代中,均作Lagrange函数的Hessian矩阵的正定拟Newton 近似,通过BFGS方法进行计算。,Matlab工具箱的SQP实现由三个部分组成:,修正Lagrange函数的Hessian矩阵,二次规划问题求解,线性搜索,修正Hessian矩阵,用BFGS公式修正Hessian矩阵:(略),此算法要求有一个合适的初始值,如果由逐次二次规划方法得到的当前计算点是不合适的,则通过求解下述线性规划问题可以得到合适的计算点:,如果上述问题存在要求的点,就可以通过将 x 赋值为满足等式条件的值来得到。,求解二次规划问题,初始化,在逐次二次规划方法中,每一次迭代都要解一个二次规划问题:,三、无约束优化问题,(一)一维优化问题,1. 数学原理及模型,一般的优化问题,因受多种因素的影响与制约,目标函数一般都是多元函数,称为多维优化问题。求解多维优化问题,常常化为逐步的沿某一方向求单元函数的极值问题,也就是一维搜索问题,在这里称为一维优化问题。一维搜索方法的好坏直接影响到优化算法的求解速度。,一维搜索的直接目的是寻求单变量函数的极小点,在理论上,一维搜索主要是作为求多变量函数的极小点的手段而进行研究的。然而,在实际应用中,很多问题都需要直接使用一维搜索的方法,如工程中常见的参数反演问题。应该指出,所选用的一维搜索方法是否得当,常常对于整个计算的进程的影响极大。,数学模型,一维优化问题的数学模型为:,对于一维优化问题来说,由于问题本身比较简单,可选择的方法也比较多。比较经典的方法有:进退法、Fibonacci法(也叫分数法)、黄金分割法(也叫0.618法)、试位法以及各种插值法。一般来说,对于形态比较好、比较光滑的函数可以使用插值法,这样可以较快地逼近极小点;而对于形态比较差的函数,则可以使用黄金分割法。这也是Matlab优化工具箱中的库函数使用的两种方法。,算法介绍,2. Matlab工具箱中的基本函数,在Matlab中,一维优化问题,也就是一维搜索问题的实现是由函数fminbnd来实现的。,应当注意:该函数所求的目标函数必须是连续的,并且只用于实数变量。同时该函数只能给出目标函数的局部最优解。对于问题的解位于区间边界上的情况,此函数收敛速度非常慢。,具体的调用格式如下:,x=fminbnd( fun,x1,x2 ),功能:返回在区间(x1,x2)中标量函数fun的最小值点。,x=fminbnd( fun,x1,x2,options ),功能: 用options参数指定的优化参数进行最小化,其中, options可取值为: Display ,TolX,MaxFunEval,MaxIter,FunValCheck,和OutputFcn。,options 参数各个取值的含义如下表所示:,x,fval =fminbnd( ),功能:同时返回解x和在点x处的目标函数值。,exitflag值和相应的含义如下表所示:,x,fval,exitflag=fminbnd( ),功能:同时返回解 x 和在点 x 处的目标函数值。另外,返回 exitflag 值,描述极小化函数的退出条件。,output包含的内容和相应的含义如下表所示:,x,fval,exitflag,output=fminbnd( ),功能:返回同上述格式的值。另外,返回包含output结构的输出。,例8 fminbnd 演示。,x=fminbnd(cos,3,4),x = 3.1416,x,fval,exitflag=fminbnd(cos,3,4,optimset(TolX,1e-12, Display,off),x = 3.1416fval = -1exitflag =1,例9 求函数 f (x)=(x-4)2-5在区间(0,6)内的最小值。,function f=ex9(x)f=(x-4)2-5 2;,编辑目标函数的 M 文件 ex9.m :,x,fval=fminbnd(ex9,0,6),x = 4fval = -5,在命令窗口中输入:,例10 带参数优化问题。,function f=ex10(x,a)%This function is to demonstrate minimize the objective%given in the function which is parameterized by its second% argument a f=(x-a)2;,编辑如下 M 文件 ex10.m :,a=1.5; %define parameter first x=fminbnd(x) ex10(x,a),0,1),x = 0.9999,在命令窗口中输入:,3. 应用实例分析,function f=ex11(x)%The purpose of this file is to give the objective function %This is a function to calculate the volumef=-(5-2*x).2*x;,编辑如下 M 文件 ex11.m :,例11 容积最大化问题。,对边长为 5m 的正方形钢板,在 4 个角处剪去相等的正方形以制成方形无盖的容器,问如何剪去使得容器的容积最大?,假设剪去的正方形的边长为 x,则容器的容积计算公式为:,这里需要将最大化问题转化为最小化问题,目标函数为:,x,fval,exitflag,output=fminbnd(ex11,0,1.5),x = 0.8333fval = -9.2593exitflag = 1output = iterations: 8 funcCount: 9 algorithm: golden section search, parabolic interpolation message: 1x112 char,在命令窗口中输入:,(二)无约束非线性规划问题,1. 数学原理及模型,无约束最优化是一个十分古老的课题,至少可以追溯到 Newton 发明微积分的时代。无约束最优化问题在实际应用中也非常常见,另外,许多约束优化问题也可以转化成无约束优化问题求解,所以,无约束优化问题还是十分重要的。,由于简单的无约束线性问题非常容易,这里提到的无约束最优化问题就是指无约束非线性规划问题。,数学模型,设 f (x)是一个定义在 n 维欧式空间上的函数。把寻找f (x)的极小点的问题称为一个无约束最优化问题,这个问题可以用下列形式表示:,算法介绍,最速下降法:适用于变量不多的问题;,Newton法,变尺度法(也称为拟Newton法),信赖域方法,Powell直接方法,共轭梯度法,直接搜索法,直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况,由于实际工程中很多问题都是非线性的,直接搜索法不失为一种有效的解决办法。常用的直接搜索法为单纯形法,其缺点是收敛速度慢。,在函数的导数可求的情况下,梯度法是一种更优的方法,该法利用函数的梯度(一阶导数)和Hessian矩阵(二阶导数)构造算法,可以获得更快的收敛速度。函数 f (x)的负梯度方向- f (x)即反映了函数的最大下降方向。当搜索方向取为负梯度方向时称为最速下降法。当需要最小化的函数有一狭长的谷形值域时,该法的效率很低。,常用的梯度法有最速下降法、Newton 法、Marquadt法、共轭梯度法和拟 Newton 法等。,梯度法,Hessian矩阵的修正,确定搜索方向,一维搜索阶段,在所有这些方法中,用得最多的是拟Newton法。拟Newton法包括两个阶段,即,Newton法由于需要多次计算Hessian矩阵,计算量很大,而拟Newton法则通过构建一个Hessian矩阵的近似矩阵来避开这个问题。,在优化工具箱中,通过将options参数 HessUpdate设置为 BFGS或DFP来决定搜索方向。 当Hessian矩阵H始终保持正定的,搜索方向就总是保持为下降方向。,Hessian矩阵的修正方法很多,对于求解一般问题, BFGS法是最有效的。 另一个有名的方法是DFP法。,作为初值, H0可以设为任意对称正定矩阵。,一维搜索,若用户在fun函数中提供梯度信息,则缺省时函数将选择大型优化算法,该算法是基于内部映射Newton法的子空间置信域法。计算中的每一次迭代涉及到用PCG法求解大型线性系统得到的近似解。,工具箱中有两套方案进行一维搜索。当梯度值可以直接得到时,用三次插值的方法进行一维搜索,当梯度值不能直接得到时,采用二次、三次混合插值法。,Matlab的库函数中使用的方法为变尺度法和信赖域方法。,大型优化算法:,缺省时的一维搜索算法,当options.LineSearchType 设置为quadcubic时,将采用二次和三次混合插值法。将options.LineSearchType 设置为cubicpoly时,将采用三次插值法。第二种方法需要的目标函数计算次数更少,但梯度的计算次数更多。这样,如果提供了梯度信息,或者能较容易地算得,则三次插值法是更佳的选择。,中型优化算法:,此时fminunc函数的参数options.LargeScale设置为off。该算法采用的是基于二次和三次混合插值一维搜索法的BFGS拟Newton法。该法通过BFGS公式来修正Hessian矩阵。通过将HessUpdate参数设置为dfp,可以用DFP公式来求得Hessian矩阵逆的近似。通过将HessUpdate参数设置为steepdesc,可以用最速下降法来更新Hessian矩阵。但一般不建议使用最速下降法。,2. Matlab工具箱中的基本函数,在Matlab优化工具箱函数中,有以下两个函数用来求解上述问题。,fminunc、fminsearch,具体的调用格式如下:,x= fminunc( fun,x0 ),功能:给定起始点x0,求函数fun的局部极小点x。其中, x0 可以是一个标量、向量或者矩阵。,fminunc,x= fminunc( fun,x0,options ),功能:用options参数指定的优化参数进行最小化,其中, options可取值为:Display,TolX,TolFun,Derivativecheck,Diagnostics,FunValCheck,GradObj,HessPattern, Hessian,HessMult,HessUpdate,InitialHessType,InitialHessMatrix,MaxFunEvals, MaxIter, DiffMinChange和DiffMaxChange, TypicalX , LargeScale,MaxPCGIter, PrecondBandWidth, TolPCG,x,fval= fminunc( fun,x0, ),功能:同时返回解x和在点x处的目标函数值。,x,fval ,exitflag= fminunc( fun,x0, ),功能:同时返回解x和在点x处的目标函数值。另外,返回exitflag值,描述极小化函数的退出条件。,exitflag值和相应的含义如下表所示:,x,fval ,exitflag ,output= fminunc( fun,x0,),output包含的内容和相应的含义如下表所示:,功能:返回同上述格式的值。另外,返回包含output结构的输出。,x,fval ,exitflag ,output ,grad= fminunc( fun,x0, ),功能:返回函数fun在点x处的梯度。,x,fval ,exitflag ,output ,grad ,hessian= fminunc( fun,x0, ),功能:返回函数fun在点x处的Hessian矩阵。,例12 利用Matlab优化工具箱中的函数求函数 f (x)=sin(x)+3的最小值点。,function f=ex12(x)%This is a function for demonstration f=sin(x)+3;,首先编辑如下 M 文件 ex12.m :,x=fminunc(ex12,2),Warning: Gradient must be provided for trust-region method; using line-search method instead. In fminunc at 243Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x = 4.7124,然后在命令窗口中输入:,function f,g=ex1202(x)%This is a function for demonstration f=sin(x)+3;g=cos(x);,为了在给定的梯度下极小化函数,需要在保存的目标函数文件中加入梯度函数,使该函数有两个输出。首先编辑如下 M 文件 ex1202.m :,options=optimset(GradObj,on);x=fminunc(ex1202,4,options);,Optimization terminated: first-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detected in trust region model.x = 4.7124,然后在命令窗口中输入:,例13 求函数 y=5x12+x22 的极小点。,x=fminunc(x) 5*x(1)2+x(2)2,5;1),Warning: Gradient must be provided for trust-region method; using line-search method instead. In fminunc at 243Optimization terminated: relative infinity-norm of gradient less than options.TolFun.x = 1.0e-006 * -0.7898 -0.0702,在命令窗口中输入:,function f,g=ex14(x,a)f=a*x(1)2+2*x(1)*x(2)+x(2)2; %functiong=2*a*x(1)+2*x(2) %gradient 2*x(1)+2*x(2);,首先编辑如下 M 文件 ex14.m :,a=3;options=optimset(GradObj,on);x=fminunc(x) ex14(x,a),1;1,options);,Optimization terminated: first-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detected in trust region model.x = 1.0e-015 * 0 -0.6661,然后在命令窗口中输入:,例14 求函数 f (x)=ax12+2x1x2+x22 的极小点。其中a为参数。,fminunc函数的局限性:,(1) 目标函数必须是连续的, fminunc 函数有时会给出局部最优解。(2) fminunc 函数只对实数进行优化,即 x 必须为实数,而且 f (x) 必须返回实数。当 x 为复数时,必须将它分解为实部和虚部。(3) 在使用大型算法时,用户必须在 fun 函数中提供梯度(options 参数中 GradObj 属性必须设置为 on )。(4) 目前,若在 fun 函数中提供了解析梯度,则 options 参数DerivativeCheck 不能用于大型算法以比较解析梯度和有限差分梯度。通过将 options 参数的 MaxIter 属性设置为 0 来用中型方法核对导数。然后重新用大型方法求解问题。,fminsearch使用Nelder-Mead单纯形方法,一种直接搜索的方法。具体的调用格式如下:,x= fminsearch

    注意事项

    本文(第七讲Matlab在求解优化问题中的应用ppt课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开