ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:46.23KB ,
资源ID:5688873      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5688873.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab优化工具箱的使用.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab优化工具箱的使用.docx

1、matlab优化工具箱的使用matlab优化工具箱的使用优化工具箱的使用MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MATLAB还提供了图形界面的优化工具(GUI Optimization tool)。1 GUI优化工具1.1 GUI优化工具的启动有两种启动方法:(1)在命令行输入optimtool;(2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“ToolboxesOptimizationOptimization tool”1.2 GUI优化工具的界面界面分为三大块:左边(Problem Setup

2、 and Results)为优化问题的描述及计算结果显示;中间(Options)为优化选项的设置;右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“”的按钮将帮助隐藏或显示。1、优化问题的描述及计算结果显示此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。Problem框组用于描述优化问题,包括以下内容: Objective function: 输入目标函

3、数。 Derivatives: 选择目标函数微分(或梯度)的计算方式。 Start point: 初始点。Constraints框组用于描述约束条件,包括以下内容: Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 Bounds: 自变量上下界约束。 Nonlinear Constraints function; 非线性约束函数。 Derivatives: 非线性约束函数的微分(或梯度)的计算方式。Run solver and view resul

4、ts框组用于显示求解过程和结果。(对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc函数就没有Constraints框组。)2、优化选项(Options) Stopping criteria: 停止准则。 Function value check: 函数值检查。 User-supplied derivatives: 用户自定义微分(或梯度)。 Approximated derivatives: 自适应微分(或梯度)。 Algorithm settings: 算法设置。 Inner iteration stopping criteria: 内迭代

5、停止准则。 Plot function: 用户自定义绘图函数。 Output function: 用户自定义输出函数。 Display to command window: 输出到命令行窗口。对于不同的优化问题类型,此板块也会不同,3、帮助(Quick Reference)每选择一个函数求解器,帮助部分都有对这个函数的功能说明,同时还会给出相应的各个输入项说明。1.3 GUI优化工具的使用步骤(1)选择求解器Solver和优化算法。(2)选定目标函数。(3)设定目标函数的相关参数。(4)设置优化选项。(5)单击“Start”按钮,运行求解。(6)查看求解器的状态和求解结果。(7)将目标函数、选

6、项和结果导入/导出。(在菜单文件中寻找)1.4 GUI优化工具的应用实例1、无约束优化(fminunc求解器)fminunc求解器可用的算法有两种: Large scale(大规模算法) Medium scale(中等规模算法)对于一般问题,采用中等规模算法即可。例1:用优化工具求的极小值,初始点取x=0。解:首先在当前MATLAB的工作目录下建立目标函数文件Fununc1.m文件:function y= FunUnc1(x) % function必须为小写,如果F为大写则不行y=x2+4*x-6; %平方符号输入时用键盘上数字6上的符合,否则错误然后启动优化工具: 在Solver下拉选框中选

7、择fminunc; Algorithm下拉选框中选择Medium scale; 目标函数栏输入FunUnc1; %运算时输入函数不知什么原因老有错误,直接输入目标函数却没有错误 初始点输入0,其余参数默认; 单击“Start”按钮运行。从求解结果可以看出,函数的极小值为-10,且在x=-2时取到,而且从Current iteration框可以看出迭代的步数。对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中直接输入(x)x2+4*x-6,也可求出结果。此题能否用进退法和黄金分割法(或二次插值法)求解吗?不能,要用进退法或黄金分割法得自己先编程序,然后才能调

8、用这样的函数。2、无约束优化(fminsearch求解器)fminsearch求解器也可用来求解无约束优化问题,它有时候能求解fminunc不能解决的问题。例2:用优化工具求的极小值,初始点取x=-7,比较fminunc和fminsearch求出的结果。解:通过数学计算,可以得到本例中的极小点有两个x1=1,x2=2。启动优化工具: 在Solver下拉选框中选择fminunc; Algorithm下拉选框中选择Medium scale; 目标函数栏输入(x)abs(x2-3*x+2); 初始点输入-7,其余参数默认; 单击“Start”按钮运行。Fminunc求得的结果为x=1.5,显然数值不

9、对,它是未加绝对值时函数的极小值。 然后在Solver下拉选框中选择fminsearch; Algorithm下拉选框中选择Medium scale; 目标函数栏输入(x)abs(x2-3*x+2); 初始点输入-7,其余参数默认; 单击“Start”按钮运行。fminsearch求得的结果为x=2,显然数值是对的。可为什么不能求出数值x=1呢,因为此时的函数值也是最小的。由此可得结论:对于非光滑优化问题Fminunc可能求不到正确的结果,而fminsearch却能很好地胜任这类问题的求解。2 MATLAB优化工具箱在一维优化问题中的应用2.1 应用fminbnd函数在MATLAB中,fmin

10、bnd函数可用来求解一维优化问题,其调用格式为:(1)x=fminbnd(fun,x1,x2); %求函数fun在区间(x1,x2)上的极小值对应的自变量值。(2)x=fminbnd(fun,x1,x2,options); % 按options结构指定的优化参数求函数fun在区间(x1,x2)上的极小值对应的自变量值,而options结构的参数可以通过函数optimset来设置,其中options结构中的字段如下:Display设置结果的显示方式:off不显示任何结果;iter显示每步迭代后的结果;final只显示最后的结果;notify只有当求解不收敛的时候才显示结果。FunValCheck

11、检查目标函数值是否可接受: On当目标函数值为复数或NaN时显示出错信息; Off不显示任何错误信息。MaxFunEvals最大的目标函数检查步数。MaxIter最大的迭代步数。OutputFcn用户自定义的输出函数,它将在每个迭代步调用。PlotFcns用户自定义的绘图函数。TolX自变量的精度。(3)x,fval= fminbnd(.); %此格式中的输出参数fval返回目标函数的极小值。(4)x,fval,exitflag= fminbnd(.); %此格式中的输出参数exitflag返回函数fminbnd的求解状态(成功或失败),说明如下:exitflag=1fminbnd成功求得最优

12、解,且解的精度为TolX;exitflag=0由于目标函数检查步数达到最大或迭代步数达到最大值而推出。exitflag=-1用户自定义函数引起的退出。exitflag=-2边界条件不协调(x1x2)。(5)x,fval,exitflag,output= fminbnd(.); %此格式中的输出参数output返回函数fminbnd的求解信息(迭代次数、所用算法等),说明如下:output结构中的字段:output.algorithm: 优化算法output.iterations: 优化迭代步数output.funcCount: 目标函数检查步数output.message: 退出信息例1:用f

13、minbnd求函数在区间-2,1上的极小值。解:在MATLAB命令窗口输入x,fval,exitflag,output= fminbnd(x4-x2+x-1,-2,1)所得结果为x =-0.8846fval =-2.0548exitflag =1output = iterations: 11 %迭代次数为11次 funcCount: 12 %函数计算了12次 algorithm: golden section search, parabolic interpolation % fminbnd用了黄金分割法和抛物线算法求本例函数的极小值 message: 1x112 char要查看结果的精度,可

14、以接着在MATLAB命令窗口中输入 output.message可得如下信息ans =Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004说明求得结果的精度为1.0e-4,如果想提高精度,可以通过option结构来指定,在MATLAB命令窗口输入opt=optimset(TolX,1.0e-6);format long;x,fval,exitflag,output= fminbnd(x4-x2+x-1,-2,1,opt)所得结果为

15、x = -0.884646164474752fval = -2.054784062185396exitflag = 1output = iterations: 11 funcCount: 12 algorithm: golden section search, parabolic interpolation message: 1x112 char这样求得的结果x就有了1.0e-6的精度。为了理解fminbnd的求解原理,将每一步的迭代过程打印出来,在MATLAB命令窗口中输入 opt=optimset(display,iter);x,fval,exitflag,output= fminbnd(

16、x4-x2+x-1,-2,1,opt)所得结果为Func-count x f(x) Procedure 1 -0.854102 -2.05144 initial 2 -0.145898 -1.16673 golden 3 -1.2918 -1.17585 golden 4 -0.72025 -1.9699 parabolic 5 -0.853884 -2.05139 parabolic 6 -0.890887 -2.05464 parabolic 7 -1.04402 -1.94595 golden 8 -0.884922 -2.05478 parabolic 9 -0.88455 -2.05

17、478 parabolic 10 -0.884647 -2.05478 parabolic 11 -0.884613 -2.05478 parabolic 12 -0.88468 -2.05478 parabolicOptimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 x = -0.884646700241543fval = -2.054784062184385exitflag = 1output = iterations: 11

18、 funcCount: 12 algorithm: golden section search, parabolic interpolation message: 1x112 char分析迭代过程可发现,fminbnd首先产生一个迭代的初始点,经过简单的计算可以发现,这个初始点是区间的黄金分割点(-0.854=-2+(1-0.618)*(1+2),接着再用黄金分割法迭代,直到相连两步迭代得到的f(x)相差不大时,此时用二次插值法迭代一步,如果用二次插值法得到的估计点可以接受的话(和前次黄金分割法得到的f(x)相差不大),则再用二次插值法迭代,如果相连两次二次插值法迭代得到的f(x)相差不大,且

19、自变量的差别很小,则继续直到满足精度要求,否则换用黄金分割法。例2:用fminbnd求函数在区间-10,10上的极小值。解:在MATLAB命令窗口中输入x,fval,exitflag= fminbnd(exp(-x2)*(x+sin(x),-10,10)所得结果为x = -0.6796fval = -0.8242exitflag = 1函数在区间-10,10上的图形如图所示,在此区间上函数有两个极值点,一个极大值,一个极小值,函数fminbnd成功求得极小值点。例3:用fminbnd求函数在区间-4,4上的极小值。解:在MATLAB命令窗口中输入x,fval= fminbnd(sin(2*x+

20、1)+3*sin(4*x+3)+5*sin(6*x+5),-4,4)所得结果为x =-1.1082fval =-8.8940若在MATLAB命令窗口中输入x,fval,exitflag= fminbnd(sin(2*x+1)+3*sin(4*x+3)+5*sin(6*x+5),-4,4)x =-1.1082fval =-8.8940exitflag =1例4:用fminbnd求函数在区间-8,8上的极小值。解:在MATLAB命令窗口中输入x,fval= fminbnd(-1/(x-2)2+3)-1/(3*(x-5)2+4)-1/(2*(x-1)2+1),-8,8)所得结果为x =1.0337f

21、val =-1.2715例5:用fminbnd求函数在区间-2,2上的极小值。解:在MATLAB命令窗口中输入x,fval= fminbnd(abs(x+1)+x2+x-2,-2,2)所得结果为x =-1.0000fval =-2.00002.2 应用fminsearch函数fminsearch函数的主要功能是求多变量的极值问题,当然也就可以求单变量极值问题。例:用fminsearch函数求函数的极小值。解:在MATLAB命令窗口中输入x,fval,exitflag,output= fminsearch(x4-x2+x-1,0)所得结果为x =-0.8846fval =-2.0548exitf

22、lag =1output =iterations: 24 funcCount: 48 algorithm: Nelder-Mead simplex direct search message: 1x196 char3 MATLAB优化工具箱在无约束优化问题中的应用3.1 应用fminsearch函数在MATLAB中,fminsearch函数可用来求解无约束多维极值问题,其调用格式为(1)x= fminsearch(fun,x0):从起始点x0出发,求出fun的一个局部极小点;(2)x= fminsearch(fun,x0,options):按options结构指定的优化参数求函数fun的极小点

23、,而options结构的参数可以通过函数optimset来设置,options结构中的各个字段及其含义如表所示;字段说明Display设置结果的显示方式:off不显示任何结果;iter显示每步迭代后的结果;final只显示最后的结果;notify只有当求解不收敛的时候才显示结果。FunValCheck检查目标函数值是否可接受:On当目标函数值为复数或NaN时显示出错信息;Off不显示任何错误信息。MaxFunEvals最大的目标函数检查步数MaxIter最大的迭代步数OutputFcn用户自定义的输出函数,它将在每个迭代步调用PlotFcns用户自定义的绘图函数,它将在每个迭代步调用TolFu

24、n目标函数值的精度TolX自变量的精度。(3)x,fval= fminsearch():此格式中的输出参数fval返回目标函数的极小值。(4)x,fval,exitflag= fminsearch():此格式中的输出参数exitflag返回函数fminsearch的求解状态(成功或失败),其取值如表所示。exitflag说 明1fminbnd成功求得最优解,且解的精度为TolX0由于目标函数检查步数达到最大或迭代步数达到最大值而退出。-1用户自定义函数引起的退出(5)x,fval,exitflag,output= fminsearch():此格式中的输出参数output返回函数fminsear

25、ch的求解信息(迭代次数、所用算法等),其字段及其含义如表所示:Output结构中的字段说明output.algorithm优化算法output.iterations优化迭代步数output.funcCount目标函数检查步数output.message退出信息例1:用fminsearch函数求解无约束多维函数的极小值。解:在MATLAB命令窗口中输入fx=(x)sin(x(1)+sin(x(2); %建立函数xv,fv= fminsearch(fx,0,0)所得结果为xv =-1.5708 -1.5708fv =-2.0000例2:用fminsearch函数求解无约束多维函数的极小值。解:显

26、然,上式的极值点为(2,-1),最小值为-2/15。在MATLAB命令窗口中输入fx=(x)-1/(x(1)-2)2+3)-1/(2*(x(2)+1)2-5);xv,fv= fminsearch(fx,0,0)所得结果为xv =2.0000 -1.0000fv =-0.1333为了看清楚fminsearch函数的单纯型搜索过程,采用optimset函数设置options结构,将display字段设为iter,以显示每次迭代的信息。在MATLAB命令窗口中输入opt=optimset(display,iter);xv,fv= fminsearch(fx,0,0,opt)所得结果为Iteratio

27、n Func-count min f(x) Procedure 0 1 0.190476 1 3 0.190456 initial simplex %初始单纯型 2 5 0.190224 expand %扩展 3 7 0.190067 expand 4 9 0.189526 expand 5 11 0.188944 expand 6 13 0.187583 expand 7 15 0.185763 expand 8 17 0.182219 expand 9 19 0.177002 expand 10 21 0.167918 expand 11 23 0.154383 expand 12 25

28、0.13326 expand 13 27 0.103875 expand 14 29 0.0643404 expand 15 31 0.0157881 expand 16 33 -0.0384754 expand 17 35 -0.0567264 reflect %反射 18 36 -0.0567264 reflect 19 38 -0.0567264 contract inside %压缩 20 40 -0.0594596 contract inside 21 41 -0.0594596 reflect 22 43 -0.0599578 contract inside 23 45 -0.05

29、99653 contract outside 24 47 -0.0601014 contract inside 25 49 -0.0601014 contract inside 26 51 -0.0601903 reflect 27 53 -0.0601903 contract inside 28 55 -0.0603234 expand 29 57 -0.0604675 expand 30 59 -0.0607257 expand 31 61 -0.0612865 expand 32 63 -0.0617259 expand 33 65 -0.0635127 expand 34 66 -0.

30、0635127 reflect 35 68 -0.0673697 expand 36 69 -0.0673697 reflect 37 71 -0.0740469 expand 38 73 -0.0780703 expand 39 75 -0.0928988 expand 40 77 -0.10392 expand 41 79 -0.127078 expand 42 81 -0.130651 reflect 43 82 -0.130651 reflect 44 84 -0.131814 contract inside 45 86 -0.133102 contract inside 46 88 -0.133102 contract inside 47 90

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1