欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    mtlab无约束最优化问题.docx

    • 资源ID:5722265       资源大小:71.24KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

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

    mtlab无约束最优化问题.docx

    1、mtlab无约束最优化问题第16章 无约束最优化问题 单变量最小化 基本数学原理本节讨论只有一个变量时的最小化问题,即一维搜索问题。该问题在某些情况下可以直接用于求解实际问题 ,但大多数情况下它是作为多变量最优化方法的基础,因为进行多变量最优化要用到一维搜索算法。该问题的数学模型为:该问题的搜索过程可用下式表达: 求解单变量最优化问题的方法有很多种。根据目标函数是否需要求导,可以分为两类,即直接法和间接法。直接法不需要目标函数的导数,而间接法则需要用到目标函数的导数。1. 直接法常用的一维直接法主要有消去法和近似法两种。(1)消去法。该法利用单峰函数具有的消去性质进行反复迭代,逐渐消去不包含极

    2、小点的区间,缩小搜索区间,直到搜索区间缩小到给定的允许精度为止。一种典型的消去法为黄金分割搜索法(GoIden Section Search )。黄金分割搜索法的基本思想是在单峰区间内适当插入两点,将区间分为3段,然后通过比较这两点函数值的大小来确定是删去最左段还是删去最右段,或是同时删去左、右两段保留中间段。重复该过程使区间无限缩小。插入点的位置放在区间的黄金分割点及其对称点上,所以该法称为黄金分割搜索法。该法的优点是算法简单,效率较高,稳定性好。(2)多项式近似法。该法用于目标函数比较复杂的情况。此时寻找一个与它近似的函数来代替目标函数,并用近似函数的极小点作为原函数极小点的近似。常用的近

    3、似函数为二次和三次多项式。二次内插涉及到形如下式的二次函数数据拟合问题:其中步长极值为然后只要利用3个梯度或函数方程组就可以确定系数a和b,从而可以确定 *。得到该值以后,进行搜索区间的收索。在缩短的新区间中,重新安排3点求出下一次的近似极小点 *,如此迭代下去,直到满足终止准则为止。其迭代公式为式中二次插值法的计算速度比黄金分割搜索法的快,但是对于一些强烈扭曲或可能多峰的函数,该法的收敛速度会变得很慢,甚至失败。2 间接法间接法需要计算目标函数导数,优点是计算速度很快。常见的间接法包括牛顿切线法、对分法、割线法和三次插值多项式近似法等。优化工具箱中用得较多的是三次插值法。三次插值的基本思想与

    4、二次插值的一致,它是用4个已知点构造一个三次多项式P 3(x),用它逼近函数f(x),以P 3(x)的极小点作为数f(x)的近似极小点。一般地讲,三次插值法比二次插值法的收敛速度要快些,但每次迭代需要计算两个导数值。三次插值法的迭代公式为如果函数的导数容易求得,一般来说首先考虑使用三次插值法,因为它具有较高的效率。对于只需要计算函数值的方法中,二次插值法是一个很好的方法,它的收敛速度较快,在极小点所在区间较小时尤其如此。黄金分割法则是一种十分稳定的方法,并且计算简单。由于以上原因, 优化工具箱中用得较多的方法是二次插值法、三次插值法以及二次、三次混合插值法和黄金分割法。 有关函数介绍1. fm

    5、inbnd 函数利用该函数找到固定区间内单变量函数最小值。调用格式为: x= fminbnd (fun,x1,x2) 返回区间x1,x2 上fun 参数描述的标量函数的最小值x 。 x= fminbnd (fun,x1,x2,options)用options 参数指定的优化参数进行最小化。 x= fminbnd (fun,x1,x2,options,p1,p2,) 提供另外的参数p1,p2等,传输给目标函数fun。如果没有设置options选项,则令options= 。 x,fvaI=fminbnd() 返回解x处目标函数的值。 x,fvaI,exitfIag=fminbnd()返回exitf

    6、Iag 值描述fminbnd 函数的退出条件。 x,fvaI,exitfIag,output=fminbnd() 返回包含优化信息的结构输出。与fminbnd函数相关的细节内容包含在fun, options, exitfIag和output等参数中,如表16-1所示。 表16-1参数描述表 参数 描述fun需要最小化的目标函数。fun函数需要输入标量参数x,返回x处的目标函数标量值f。可以将fun函数指定为命令行,如 x=fminbnd(inline(sin(x*x)x0)同样,fun参数可以是一个包含函数名的字符串。对应的函数可以是M文件、内部函数或MEX文件。若fun=ymfun,则M文件

    7、函数必须有下面的形式functionf=myfun(x)f= %计算x处的函数值options优化参数选项。可以用optimset 函数设置或该变这些参数的值. options参数有以下几个选项:DispIay 显示的水平。选择 off,不显示输出;选择 iter,显示每一步迭代过程的输出;选择 final,显示最终结果MaxFunEvaIs 函数评价的最大允许次数MaxIter 最大允许次数ToIX x处的终止容限exitfIag描述退出条件:0表示目标函数收敛于解x处0表示已经达到函数评价或迭代的最大次数 x=fminbnd(op16_1,0,x = 即剪掉的正方形的边长为时水槽的容积最大

    8、。水槽的最大容积计算: y=op16_1(x)y = 所以水槽的最大容积为 . 无约束非线性规划问题 基本数学原理 无约束最优化问题在实际应用中也比较常见,如工程中常见的参数反演问题。另外,许多有约束最优化问题可以转化为无约束最优化问题进行求解。 求解无约束最优化问题的方法主要有两类,即直接搜索法( Direct search method)和梯度法 (Gradient method)。 直接搜索法适用于目标函数高度非线性,没有导数或导数很难计算的情况。由于实际工作中很多问题都是非线性的,故直接搜索法不失为一种有效的解决办法。常用的直接搜索法为单纯形法,此外还有Hook-Jeeves 搜索法、

    9、PaveII共轭方向法等,其缺点是收敛速度慢。在函数的导数可求的情况下,梯度法是一种更优的方法。该方法利用函数的梯度(一阶导数)和Hess 矩阵(二阶导数)构造算法,可以获得更快的收敛速度。函数f(x) 的负梯度方向即反映了函数的最大下降方向。当搜索方向取为负梯度方向时称为最速下降法。当需要最小化的函数有一狭长的谷形值域时,该法的效率很低,如Rosenbrock 函数它的最小值解为x=1,1 ,最小值为 f(x)=0。图16-1是该函数的等值线图,图中还显示了从初值,2出发向最小值前进的路径。迭代1000次以后终止,此时距最小值仍有相当长的距离。图中的黑色区域是该法在谷的两侧不断进行“之”字形

    10、搜索形成的。 这种类型的函数又称为香蕉函数。图16-1 香蕉函数的等值线图及最速下降法的搜索路径 常见的梯度法有最速下降法、Newton法、Marquart法、共轭梯度法和拟牛顿法(Quasi-Newton method)等。在所有这些方法中,用的最多的是拟牛顿法,这些方法在每次迭代过程中建立曲率信息,构成下式得二次模型问题:式中,Hess矩阵H为一正定对称矩阵,C为常数向量,b为常数。对x求偏导数可以获得问题的最优解 拟牛顿法包括两个阶段,即确定搜索方向和一维搜索阶段1. Hess矩阵的更新 牛顿法由于需要多次计算Hess 矩阵,故计算量很大。而拟牛顿法则通过构建一个Hess 矩阵的近似矩阵

    11、来避开这个问题。在优化工具箱中,通过将options 参数HessUpdate 设置为BFGS 或 DFP来决定搜索方向。当Hess 矩阵H 始终保持正定时,搜索方向就总是保持为下降方向。构建Hess 矩阵的方法很多。对于求解一般问题,Broyden, Fletcher,GoIdfarb和Shanno的方法(简称BFGS法)是最有效的。BFGS法的计算公式为式中 作为初值,H0可以设为任意对称正定矩阵。 另一个有名的构造近似Hess矩阵的方法是DFP(Daridon-Fletcher-PoweII)法。该法的计算公式与BFGS 法的形式一样,只是梯度信息可以用解析方法得到,也可以用有限差分方法

    12、通过求偏导数得到。在每一个主要的迭代过程中,在下式所示的方向上进行一维搜索:. 图16-2演示了用拟牛顿法时Rosenbrock 函数的求解路径。可见,利用该法,只需要140迭代就可以达到最小值解,比前面利用最速下降法要快得多。 图16-2 拟牛顿法的搜索路径-P202 2一维搜索 工具箱中有两套方案进行一维搜索。当梯度值可以直接得到时,用三次插值的方法进行一维搜索,当梯度值不能直接得到时,采用二次、三次混合插值法。 有关函数介绍1fminunc 函数用该函数求多变量无约束函数的最小值。多变量无约束函数的数学模型为:式中,x为一向量,f(x)为一函数,返回标量。 fminunc函数的调用格式如

    13、下: fminunc给定初值 ,求多变量标量函数的最小值。常用于无约束非线性最优化问题 x=fminunc(fun,x0)给定初值x0,求fun函数的局部极小点x。x0 可以是标量、向量或矩阵。 x=fminunc(fun,x0,options)用options 参数中指定的优化参数进行最小化。 x=fminunc(fun,x0,options,P1,P2,)将问题参数P1、P2 等直接输给目标函数fun,将options参数设置为空矩阵,作为options参数的默认值。 x,fvaI=fminunc()将解x 处目标函数的值返回到fvaI 参数中。 x,fvaI,exitfIag=fminu

    14、nc()返回exitfIag值,描述函数的输出条件。 x,fvaI,exitfIag,output=fminunc() 返回包含优化信息的结构输出。 x,fvaI,exitfIag,output,grad=fminunc()将解x处fun函数的梯度值返回到grad参数中。 x,fvaI,exitfIag,output,grad,hessian=fminunc()将解x处目标函数的Hessian矩阵信息返回到hessian参数中。 表16-2中包括各输入输出变量的描述。表 16-2 输入/输出变量描述表变 量 描 述 fun为目标函数,即需要最小化的目标函数。Fun函数需要输入标量参数x,返回x

    15、处的目标函数标量值f。可以将fun函数指定为命令行,如x=fminbnd(inline(sin(x*x),x0) 同样,fun参数可以是一个包含函数名的字符串。对应的函数可以是M文件、内部函数或MEX文件。若fun=myfun,则M文件函数必须有下面的形式: function f=myfun(x) f= %计算x处的函数值若fun函数的梯度可以算得,且设位on(用下式设定)、则fun函数必须返回解x处的梯度向量g到第2个输出变量中去。注意,当被调用的函数fun函数只需要一个输出变量时(如算法只需要目标函数的值而不需要其梯度值时),可以通过核对nargout的值来避免计算梯度值functionf

    16、,g=myfun(x)f= %计算x处的函数值if nargout1 %调用fun函数并要求有两个输出变量 g= %计算x处的梯度值end若Hess矩阵也可以求得,并且设为on,即,options=optimset(Hessian,on) 则fun函数必须返回解x处的Hess对称矩阵H到第3个输出变量中去。注意,当被调用的fun函数只需要一个或两个输出变量时(如算法只需要目标函数得值f和梯度值g而不需要Hess矩阵H时),可以通过核对nargout的值以避免计算Hess矩阵functionf,g,H=myfun(x)f= %计算x处的函数值if nargout1 %调用fun函数并要求有两个输

    17、出变量g= %计算x处的梯度值if nargout2H= %计算x处的Hess矩阵 options优化参数选项。可以通过optimset函数设置或改变这些参数。其中有的参数适用于所有的优化算法,有的则只适用于大型优化问题,另外一些则只适用于中型问题首先描述适用于大型问题的选项。这仅仅是一个参考,因为使用大型问题算法有一些条件。对于fminunc函数来说,必须提供梯度信息 LargeSeaIe 当设为on时使用大型算法,若设为off则使用中型问题的算法适用于大型和中型算法的参数: Diagnostics 打印最小化函数的诊断信息 DispIay 显示水平。选择off,不显示输出:选择iter,显

    18、示每一步迭代过程的书橱;选择finaI,显示最终结果。打印最小化函数的诊断信息 GradObj 用户定义的目标函数的梯度。对于大型问题此参数是必选的,对于中型问题则是可选项 MaxFunEvaIs 函数评价的最大次数 MaxIter 最大允许迭代次数 ToIFun 函数值的终止容限 ToIX x处的终止容限只用于大型算法的参数: Hesian 用户定义的目标函数的Hess矩阵 HessPattem 用于有限差分的Hess矩阵的稀疏形式。若不方便求fun函数的稀疏Hess矩阵H,可以用梯度的有限差分获得的H的稀疏结构(如非零值的位置等)得到近似的Hess矩阵H。若连矩阵的稀疏结构都不知道,则可以

    19、将HessPattem设为密集矩阵,在每一次迭代过程中,都将进行密集矩阵的有限差分近似(这是默认摄制)。这将非常麻烦,所以花一些力气得到Hess矩阵的稀疏结构还是值得的 MaxPCGIter PCG迭代的最大次数 PrecondBandWidth PCG前处理得上带宽,默认时为零。对于有些问题,增加带宽可以减少迭代次数 ToIPCG PCG迭代的终止容限 TypicaIX 典型x值只适用于中型算法的参数: DerivativeCheck 对用户提供的导数和有限差分求出的导数进行对比 DiffMaxChange 变量有限差分梯度的最大变化 DiffMinChange 变量有限差分梯度的最小变化

    20、LinSearchType 一维搜索算法的选择exitfIag描述退出条件 0 表示目标函数收敛于解x处 0 表示已经达到函数评价或迭代的最大次数 x0=1,1; x,fva1=fminunc(myfun,x0)Warning: Gradient must be provided for trust-region method; using line-search method instead. In C:MATLAB6p5toolboxoptim at line 211 Optimization terminated successfully: Search direction less t

    21、han 2*x = * % 书上的结果为: fva1 = 经过迭代以后,返回解x 和x 处的函数值fva1。 如果用fminsearch函数则有与上不同的结果: x0=1,1; x,fval2 = fminsearch(myfun,X0)x = * fval2 = 下面用提供的梯度g 使函数最小化,修改 M文件如下:function f,g=myfun2(x) f=3*x(1)2+2*x(1)*x(2)+x(2)2; % 目标函数 if nargout1 g(1)=6*x(1)+2*x(2); g(2)=2*x(1)+2*x(2); end下面通过将优化选项结构 设置为on 来得到梯度值。 c

    22、lear options=optimset(GradObj,on); x0=1,1; x,fva2=fminunc(myfun2,x0,options)Optimization terminated successfully: First-order optimality less than , and no negative/zero curvature detectedx = * % 书上结果为: 0fva2 = % 书上结果为:经过数次迭代以后,返回解 x和x处的函数值fva12。2fminsearch 函数利用fminsearch 函数求解多变量无约束函数的最小值,其调用格式如下: f

    23、minsearch求解多变量无约束函数的最小值。该函数常用于无约束非线性最优化问题。 x=fminsearch(fun,x0) 初值为x0,求fun函数的局部极小点x。x0可以是标量、向量或矩阵。 x=fminsearch(fun,x0,options)用options参数指定的优化参数进行最小化。 x=fminsearch(fun,x0,options,p1,p2)将问题参数p1,p2等直接输给目标函数fun,将options 参数设置为空矩阵,作为options参数的默认值。 x,fvaI=fminsearch()将x处的目标函数返回到fvaI参数中。 x,fvaI,exitfIag=fm

    24、insearch()返回exitfIag值,描述函数的退出条件。 x,fvaI,exitfIag,output=fminsearch()返回包含优化信息的输出参数output。fminsearch函数使用单纯形法进行计算。对于求解二次以上的问题,fminsearch函数比fminunc函数有效。但是,当问题为高度非线性时,fminsearch函数更具有稳健性。注意:应用 fminsearch函数可能会得到局部最优解。fminserarch函数只对实数进行最小化,即 x必须由实数组成,f(x) 函数必须返回实数。如果 x为复数,则必须将它分为实数部和虚数部两部分。另外,fminsearch函数不适合求解平方和问题,用IsqnonIin 函数更好一些。【例16-3】 使一维函数f(x)=sin(x)+3 最小化。首先创建M 文件myfun3m: function f=myfun3(x) f=sin(x)+3; % 目标函数然后调用 fminsearch函数求2附近函数的最小值。 x=fminsearch(myfun3,2)x = 下面使用命令行使该函数最小化: f=inline(sin(x)+3); x=fminsearch(f,2)x =


    注意事项

    本文(mtlab无约束最优化问题.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

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




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开