第七讲Matlab在求解优化问题中的应用ppt课件.ppt
《第七讲Matlab在求解优化问题中的应用ppt课件.ppt》由会员分享,可在线阅读,更多相关《第七讲Matlab在求解优化问题中的应用ppt课件.ppt(109页珍藏版)》请在三一办公上搜索。
1、第七讲 Matlab在求解优化问题中的应用,参考文献:,Matlab7.2优化设计实例指导教程,褚洪生、杜增吉、阎金华 等编著,机械工业出版社,2007,本 讲 内 容,多目标规划问题最大最小化问题半无限问题整数规划问题大规模最优化问题,一、最优化理论概述,二、Matlab优化工具箱简介,三、无约束优化问题,四、约束优化问题,五、方程求解,一、最优化理论概述,最优化是一门研究如何科学、合理、迅速地确定可行方案并找到其中最优方案的学科。,最优化方法就是专门研究如何从多个方案中科学合理地提出最佳方案的科学。,(一)最优化问题基本模型,最优化问题的一般形式:,称为目标函数,X称为问题的可行域。,无约
2、束问题一般形式:,约束问题一般形式:,约束函数,等式约束条件,不等式约束条件,可行域X为:,线性规划,二次规划,凸规划,此外还分成:整数规划、动态规划、网络规划、非光滑规划、随机规划、几何规划、多目标规划等。,例 数据拟合问题,或,无约束问题,例 食谱问题,线性规划问题,线性规划问题的标准型:,非标准型线性规划问题过渡到标准型线性规划问题的处理方法:,例 二次规划问题,通过逐步二次规划能使一般的非线性规划问题的求解过程得到简化,因此,二次规划迭代法也是目前求解最优化问题时常用的方法。,由于二次规划问题本身也是一大类实际应用中经常碰到的问题,所以,二次规划问题在最优化理论和应用各方面都占有非常重
3、要的地位。,例 最小二乘问题,如果r(x)是x的非线性函数,则问题称为非线性最小二乘问题;如果r(x)是x的线性函数,则问题称为线性最小二乘问题。,非线性最小二乘问题在数据拟合、参数估计和函数逼近等方面有广泛应用。,非线性最小二乘问题既可以看作为无约束极小化的特殊情形,又可以看作为解如下方程组:,(二)最优化问题的实现,用最优化方法解决最优化问题的技术称为最优化技术,它包含两个方面的内容:,建立数学模型。即用数学语言来描述最优化问题。模型中的数学关系式反映了最优化问题所要达到的目标和各种约束条件。,数学求解。数学模型建好以后,选择合理的最优化方法进行求解。,Matlab实现,由于最优化问题在近
4、些年来得到了广泛的应用, Matlab工具箱函数也同时有了飞速的发展。,利用Matlab的优化工具箱可以求解如下问题:,线性、非线性最小化,最大最小化,二次规划,半无限问题,线性、非线性方程(组)的求解,线性、非线性的最小二乘问题,此外,该工具箱还提供了线性、非线性最小化,方程求解,曲线拟合,二次规划等问题中大型课题的求解方法,为优化方法在工程中的实际应用提供了更方便快捷的途径。,使用Matlab的优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:,优化函数fminbnd、fminsearch、fminunc、fminicon、fgo
5、alattain、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. 最
6、小化函数,2. 最小二乘问题,3. 方程求解函数,中型问题方法演示函数,4. 演示函数,大型问题方法演示函数,(二)优化函数的变量,在Matlab的优化工具箱中,定义了一系列的标准变量,通过使用这些标准变量,用户可以使用Matlab来求解在工作中碰到的问题。主要有如下三类:,1. 输入变量,调用 Matlab 优化工具箱,需要首先给出一些输入变量,优化工具箱函数通过对这些输入变量的处理得到用户需要的结果。输入变量大体上分成输入系数和输入参数两类:,输入系数表,输入参数表,2. 输出变量,调用 Matlab 优化工具箱函数后,给出一系列输出变量,提供给用户相应的输出信息。,3. 优化参数,(三)
7、参数设置,对于优化控制,Matlab 提供了18个参数。利用optimset 函数,可以创建和编辑参数结构;利用optimget 函数,可以获得 options 优化参数。这些参数的具体意义如下:,1. 参数值,2. optimset 函数,optimset 函数的功能是创建或编辑优化选项参数结构。具体的调用格式为:,options=optimset( param1,value1, param2, value2, ),options=optimset( oldopts,param1, value1, ),功能:创建一个称为options 的优化选项参数,其中指定的参数具有指定值。所有未指定的参
8、数都设置为空矩阵 (将参数设置为 表示当options传递给优化函数时给参数赋默认值)。赋值时只要输入参数前面的字母就行了。,功能:创建一个oldopts的复制,用指定的数值修改参数。,options=optimset ( oldopts,newopts ),功能:将已经存在的选项结构 oldopts 与新的选项结构newopts 进行合并。 newopts 参数中的所有元素将覆盖oldopts 参数中的所有对应元素。,optimset,功能:没有任何输入输出参数,将显示一张完整的带有有效值的参数列表如左:,Display: off | on | iter | notify | final M
9、axFunEvals: 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 |
10、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.
11、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: A
12、ctiveConstrTol: 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函数相关的默认值,结果如左:,
13、optimset fminbnd,例4,若只希望看到fminbnd函数的默认值,只需要简单地键入上面的语句之一就可以了。其输出结果同上例。,optimset(fminbnd),或,3. optimget 函数,optimget 函数的功能是获得options的优化参数。具体的调用格式为:,val=optimget( options, name ),val=optimget ( options, name,default ),功能:返回优化参数options中指定的参数的值。只需要用参数开头的字母来定义参数就行了。,功能:若options结构参数中没有定义指定参数,则返回默认值。注意,这种形式的
14、函数主要用于其它优化函数。,设置了参数options后就可以用上述调用形式完成指定任务了。,val=optimget(options,Display),例5,val =notify,optnew=optimget(options,Display,final),例6,optnew =notify,如果显示参数没有定义,则返回值final。,(四)模型输入时需要注意的问题,使用优化工具箱时,由于优化函数要求目标函数和约束条件满足一定的格式,所以需要用户在进行模型输入时注意以下几个问题:,优化函数fminbnd、fminsearch、fminunc、fminicon、fgoalattain、fmin
15、max和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定义,
16、而且在任何时候使用该全局变量的函数中都应该加以定义。在命令窗口中也不例外。当程序比较大时,难免会在无意中修改全局变量的值,因而导致错误。更糟糕的是,这样的错误很难查找。因此,在编程时应该尽量避免使用全局变量。,(五)函数,Matlab6.0以后的版本中可以用函数进行函数调用。函数返回指定Matlab函数的句柄,其调用格式为:,handle= function,利用函数进行函数调用的好处:,用句柄将一个函数传递给另一个函数;,减少定义函数的文件个数;,改进重复操作;,保证函数计算的可靠性。,fhandle=humps;,例7,x = 0.6370,x=fminbnd(fhandle,0,1),为
17、 humps 函数创建一个函数句柄,并将它指定为 fhandle 变量。,传递句柄给另一个函数,也将传递所有变量。,x=fminbnd(humps,0,1),x=fminbnd(humps,0,1),或,或,(六)优化算法介绍,参数优化就是求一组设计参数 x=(x1,x2,xn),以满足在某种意义下最优。一个简单的情况就是对某依赖于 x 的问题求极大值或极小值。复杂一点的情况是欲进行优化的目标函数 f (x) 受到以下限定条件:,1. 参数优化问题,等式约束条件:,不等式约束条件:,参数有界约束:,这类问题的一般数学模型为:,要有效而且精确地解决这类问题,不仅依赖于问题的大小即约束条件和设计变
18、量的数目,而且依赖目标函数和约束条件的性质。,线性规划,二次规划,非线性规划,能得到可靠的解,一般是通过求解线性规划、二次规划或无约束优化的子问题来解决。,2. 无约束优化问题,搜索法是对非线性或不连续问题求解的合适方法,当欲优化的函数具有连续一阶导数时,梯度法(一个简单的方法是沿负梯度方向搜索)一般说来更为有效,高阶法(例如Newton法)仅实用于目标函数的二阶信息能计算出来的情况。,拟Newton法,在使用梯度信息的方法中,最为有效的方法是拟Newton方法。此方法的实质是建立每次迭代的曲率信息,以此来解决如下形式的二次模型问题:,其中H为目标函数的Hessian矩阵,H对称正定,b为常数
19、向量,c为常数。最优解为:,多项式近似,对应于拟Newton法, Newton法直接计算H,并使用线搜索策略沿下降方向经过一定次数的迭代后确定最小值,为了得到矩阵 H 需要经过大量的计算;拟Newton法则不同,它通过使用 f (x)和它的梯度来修正 H 的近似值,常用的拟Newton法( Hessian矩阵修正方法),BFGS方法,DFP方法,该法用于目标函数比较复杂的情况。在这种情况下寻找一个与它近似的函数来代替目标函数,并用近似函数的极小点作为原函数极小点的近似。常用的近似函数为二次多项式和三次多项式。,二次内插的一般问题是,在定义域空间给定三个点x1,x2,x3和它们所对应的函数值 f
20、 (x1),f (x2),f (x3),由二阶匹配得出最小值点如下:,二次内插,极值点:,二次函数:,此点可能是最小值或最大值点。当执行内插或a为正时是最小值。只要利用三个梯度或者函数方程组即可确定系数a和b,从而可确定x*。得到该值以后,进行搜索区间的收缩。,其中,三次插值的基本思想和二次插值一致,它是用4个已知点构造一个三次多项式来逼近目标函数,同时以三次多项式的极小点作为目标函数极小点的近似。,三次插值,三次插值法需要计算目标函数的导数,优点是计算速度快。同类的方法还有Newton切线法、对分法、割线法等。优化工具箱中使用的比较多的是三次插值法。,二次插值法的计算速度比黄金分割搜索法快,
21、但是对于一些强烈扭曲或者可能多峰的函数,这种方法的收敛速度变得很慢,甚至失败。,一般来讲,三次插值法比二次插值法的收敛速度快,但是每次迭代需要计算两个导数值。,如果导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率,对于只需要计算函数值的方法中,二次插值是一个很好的方法,它的收敛速度较快,在极小点所在的区间较小时尤其如此。黄金分割法是一种十分稳定的方法,并且计算简单。由于上述原因, Matlab优化工具箱中较多地使用二次插值法、三次插值法以及二次三次混合插值法和黄金分割法。,三次插值法的迭代公式为:,其中,3. 拟Newton法实现,在函数 fminunc 中使用拟 Newto
22、n 法,算法的实现过程包括两个阶段:,确定搜索方向,搜索方向的选择由选择 BFGS 方法还是选择 DFP 方法来决定,在优化工具箱中,通过将 options 参数 HessUpdate设置为 BFGS 或 DFP 来确定搜索方向。 Hessian 矩阵 H 总是保持正定的,使得搜索方向总是保持为下降方向。这意味着,对于任意小的步长,在上述搜索方向上目标函数值总是减小的。只要 H 的初始值为正定并且计算出的 qkTsk 总是正的,则 H 的正定性得到保证。并且只要执行足够精度的线性搜索, qkTsk 为正的条件总能得到满足。,要确定搜索方向首先必须完成 Hessian 矩阵的修正。Newton
23、法由于需要多次计算 Hessian 矩阵,所以计算量很大。拟 Newton 法通过构建一个 Hessian 矩阵的近似矩阵来避开这个问题。,线性(一维)搜索过程,另外,在三次插值法中,每一个迭代周期都要进行梯度和函数的计算。,在优化工具箱中有两种线性搜索方法可以使用,这取决于梯度信息是否可以得到。当梯度值可以直接得到时,默认情况下使用三次多项式方法;当梯度值不能直接得到时,默认情况下,采用混合二次和三次插值法。,4. 最小二乘优化,前面介绍了函数 fminunc 中使用的是在拟 Newton 法中介绍的线性搜索法,在最小二乘优化程序 lsqnonlin 中也部分地使用这一方法。最小二乘问题的优
24、化描述如下:,在实际应用中,特别是数据拟合时存在大量这种类型的问题,如非线性参数估计等。控制系统中也经常会遇到这类问题,如希望系统输出的 y (x,t) 跟踪某一个连续的期望轨迹,这个问题可以表示为:,将问题离散化得到:,最小二乘问题的梯度和 Hessian 矩阵具有特殊的结构,定义 r (x)的 Jacobian 矩阵为J(x),则 F (x)的梯度和F(x) 的Hessian 矩阵定义为:,其中,GaussNewton法,在GaussNewton法中,每个迭代周期均会得到搜索方向d。它是最小二乘问题的一个解。,GaussNewton法用来求解如下问题:,当Q(x)很大时,GaussNewt
25、on法很难得到问题的解,在这种情况下,LevenbergMarquadt方法显得更有效。,LevenbergMarquadt法,LevenbergMarquadt法使用的搜索方向是一组线性等式的解:,5. 非线性最小二乘实现,GaussNewton实现,GaussNewton法是用前面求无约束问题中讨论过的多项式线性搜索策略来实现的。使用Jacobian矩阵的QR分解,可以避免在求解线性最小二乘问题中等式条件恶化的问题。,这种方法中包含一项鲁棒性检测技术,这种技术步长低于限定值或当Jacobian矩阵的条件数很小时,将改为使用LevenbergMarquadt法。,这种实现方法在大量非线性问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七 Matlab 求解 优化 问题 中的 应用 ppt 课件

链接地址:https://www.31ppt.com/p-1469026.html