优化问题与计算

上传人:豆浆 文档编号:37523353 上传时间:2018-04-17 格式:DOC 页数:18 大小:194KB
返回 下载 相关 举报
  优化问题与计算_第1页
第1页 / 共18页
  优化问题与计算_第2页
第2页 / 共18页
  优化问题与计算_第3页
第3页 / 共18页
  优化问题与计算_第4页
第4页 / 共18页
  优化问题与计算_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《 优化问题与计算》由会员分享,可在线阅读,更多相关《 优化问题与计算(18页珍藏版)》请在金锄头文库上搜索。

1、1第二章第二章 优化问题与计算优化问题与计算我们在 Matlab6.5 软件包中讨论问题。2.1 Matlab 内部优化命令内部优化命令(1) fminbnd 此命令的功能是在一个指定的区间中求一元函数 f(x)极小值。调用的ba,格式如下: x = fminbnd( fun, a, b) x = fminbnd( fun, a, b, options ) x = fminbnd( fun, a, b, options, P1, P2, . ) 或者 x, fval = fminbnd(.) x, fval, exitflag = fminbnd(.) x, fval, exitflag, o

2、utput = fminbnd(.)解释(1.1) x = fminbnd( fun,a, b )为基本调用格式, 功能是在一个指定的区间中求ba,一元函数 f(x)极小值。 x = fminbnd( fun, a, b, options )表示添加选项 options 的调用格式,选项options 的参数在函数 optimiset 中定义,例如,是输出每次迭代的细节(此时选 择iter) ,还是仅仅输出最后的结果(此时选择final) ,另外,还可以选择最大 的迭代次数等等;如果没有选项,则可以令 options= 。 x = fminbnd( fun, a, b, options, P1

3、, P2,.)中的 P1, P2,是目标函数中的其它参变量。解释(1.2) x,fval = fminbnd(.) 表示显示计算结果中的解 x 和解 x 处的目标函数值fval。 x,fval,exitflag = fminbnd(.)表示显示计算结果中的解 x 和解 x 处的目标函数值 fval,以及返回指标 exitflag,表示目标函数收敛到解 x;0exitflag2表示已经达到规定的最高迭代次数;表示目标函数不收0exitflag0exitflag敛。 x,fval,exitflag,output = fminbnd(.) 表示除了显示(2)中返回结果以外,还要返回“output”项

4、目中的内容,包括被使用的算法、目标函数被计算的次数、 迭代的次数等等。解释(1.3) x = fminbnd(myfun,x0)表示调用自定义函数 myfun 作为目标函数。 可以利用 inline 函数直接定义一元目标函数。例如,在区间中求目标函数的最小值。首先写一个名字为2, 0523xxfopt_fminbnd_1 的 M文件: f = inline(x.3-2*x-5); x,fval,exitflag,output = fminbnd(f, 0, 2)存盘后按 F5 键执行,得到结果: x =0.8165 fval =-6.0887 exitflag =1 output = iter

5、ations: 9funcCount: 11 algorithm: golden section search, parabolic interpolation 其中, “iterations: 9”表示共迭代 9 次, “funcCount: 11”表示目标函数被计算 11 次, “algorithm: golden section search, parabolic interpolation ”表示所使用的 算法是黄金分割搜索与抛物内插值方法。(2)fminsearch 此命令的功能是求解多元函数的极小值,它使用的是参考文献2中介绍的 单纯形方向搜索法(the simplex direc

6、t search method) 。调用格式是: x = fminsearch(fun,x0) x = fminsearch(fun,x0,options) x = fminsearch(fun,x0,options,P1,P2,.)3或者 x,fval = fminsearch(.) x,fval,exitflag = fminsearch(.) x,fval,exitflag,output = fminsearch(.)解释(2.1) fminsearch 主要解决无约束、非线性的多元函数的极小优化问题。 x = fminsearch(fun,x0) 表示以 x0 为起点求解函数 fun

7、的局部极小值 x,其中 x0 可以是数值、向量和矩阵。 x = fminsearch(fun,x0,options) 表示带有选项 options 的优化问题,目标函数是 fun,起点是 x0,其中选项 options 可以在函数 optimiset 中设定。 x = fminsearch(fun,x0,options,P1,P2,.) 中的 P1, P2,是目标函数中的其它参变量。 返回形式有如下几种: x,fval = fminsearch(.) 、x,fval,exitflag = fminsearch(.) 、x,fval,exitflag,output = fminsearch(.)

8、。 还可以调用 M文件中的函数 myfun,调用格式如下: x = fminsearch(myfun,x0,A,b) 如果是一元目标函数,可以直接使用 inline 函数设定,格式如下: x = fminsearch(inline(sin(x*x),x0,A,b); Other arguments are described in the syntax descriptions above. 例例 2.1 多元优化问题有一个著名的 Rosenbrock 香蕉函数: 2221100xxyf在范围内,f 的图像如下:1010,1010yx0 5 0 05 0 10 0 在范围内,f 的图像如下:5

9、 . 15 . 0, 5 . 15 . 0yx4 8 1 2 4 6 8 0 0 6 8 1 2 4 其最小值在(x,y)(1,1)处达到,最小值是 0。通常的搜索起点是(-1.2,1)。以下在 Matlab6.5 中求解: 第一步 写一个名字为 banana 的 M文件: function f = banana(x) f = 100*(x(2)-x(1)2)2+(1-x(1)2; 第二步 调用 banana 函数求解: x,fval = fminsearch(banana,-1.2, 1) 得到: x =1.0000 1.0000 fval =8.1777e-010即,Matlab6.5 求

10、得的解为(x, y)=(1, 1), fval = 。0101777. 810例例 2.2 求下列函数的最小值。 首先写一个名字为 humps 的 M文件,在这个文件中定义一个名字为 humps 的函数: function y = humps(x) y = 1./(x-.3).2 + .01) + 1./(x-.9).2 + .04) - 6; 存盘后,再写一个名称为 opt_humps_1 的 M文件: x = 0:.002:1; y = humps(x); plot(x,y) 其中“x = 0:.002:1;”表示 x 从 0 到 1 每隔 0.001 取一个值计算。存盘后按 F5 键 执

11、行,得到图像如下:5我们发现在 x=0.5 的附近函数有极小值,于是,计算如下: p,fval,exitflag,output = fminsearch(humps,0.5) 执行后得到结果为: x =0.6370 fval =11.2528 exitflag =1 output = iterations: 12funcCount: 24algorithm: Nelder-Mead simplex direct search 这说明 x = 0.6370 是极小值点,函数在此点的极小值为 fval =11.2528。其中“algorithm: Nelder-Mead simplex direc

12、t search”表示所使用的算法为 Nelder-Mead 单纯形方向搜索法。(3)fzero 此命令的功能是寻找一元函数的零点,搜索所依据的理论方法来自于参考 文献3、4。命令的调用格式如下: x = fzero(fun,x0) x = fzero(fun,x0,options) x = fzero(fun,x0,options,P1,P2,.) x,fval = fzero(.) x,fval,exitflag = fzero(.) x,fval,exitflag,output = fzero(.)解释(3.1)x = fzero(fun,x0) 表示在 x0 附近搜索函数 fun 的零

13、点。x = fzero(fun,x0,options) 表示带有选项 options 的格式,没有选项时,或6者不写,或者写成 options = 。x = fzero(fun,x0,options,P1,P2,.) 带有多个选项的格式。 x,fval = fzero(.) 表示同时返回搜索得到的解 x 和函数在 x 点的值。 x,fval,exitflag = fzero(.) 增加了返回提示 exitflag:exitflag0,表示搜索得到零点 x。 exitflag0,0,0 表示 函数收敛到解 x;Exitflag0 表示算法在计算时超过了最大迭代上限; Exitflag0 表示函数

14、不收敛到解 x 。参数 Lambda 表示 Lagrange 乘子所涉及到的结构。可能的解构有下列四种: Lower:表示具有下界 lb Upper:表示具有上界 ub Ineqlin:表示具有线性不等式约束 Eqlin:表示具有线性等式约束输出项 Output 包含最优化过程的信息内容,有以下几个方面: Iterations: 迭代的次数 Algorithm:所用的算法 Cgiterations:当使用大尺度法时,PCG 的迭代次数 Firstorderopt:当使用大尺度法时,首序最优性的度量(Measure of first-order optimality) 。 对于大尺度有界约束问题

15、,首序最优性是 v.*g 的无穷平均,此处 v 被 定义为盒子约束(where v is defined as in Box Constraints) ,g 是梯度。对于带有线性等式约束的大尺度问题,首序最优性是导出前提共轭梯 度 的标量剩余 z = Mr 的 2-平均(参考前提共轭梯度算法或线性约束问题算 法) 。 Medium-Scale and Large-Scale Algorithms:表示在计算中允许同时使用中尺度与 大尺度算法。Diagnostics:输出被极小化函数的检验信息。Display:输出指标。取值 off 时没有输出;取值 iter 时输出每次迭代的详细 信息;取值 final 时只输出最后结果。16MaxIter:允许迭代的最高次数。Large-Scale Algorithm Only:表示在计算中只允许使用大尺度算法。 例例 2.12 考虑下列优化问题: 0,32222. .6221min2121212121212 22 1xxxxxxxxtsxxxxxxxf第一步,将其写为矩阵形式: xcHxxxfTT21其中

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号