版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、优化工具箱的使用MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用; 此外为了使用方便,MATLAB还提供了图形界面的优化工具(GUI Optimization tool )。1 GUI优化工具1.1 GUI优化工具的启动有两种启动方法:(1)在命令行输入 optimtool ;(2) 在MATLAB主界面单击左下角的"Start”按钮,然后依次选择"ToolboxesOptimization宀Optimization1.2 GUI优化工具的界面界面分为三大块:左边(Problem Setup and Results)为优化问题
2、的描述及计算结果显示;中间(Options)为优化选项的设置;右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角"<<”、“>>”的按钮将帮助隐藏或显示。1、优化问题的描述及计算结果显示此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。Algorithm :选择算法,对于不同的求解函数,可用的算法也不同。Problem框组用于描述优化问题,包括以下内容:Objective fu nctio n:
3、输入目标函数。Derivatives:选择目标函数微分(或梯度)的计算方式。Start point:初始点。Constraints框组用于描述约束条件,包括以下内容:Linear in equalities:线性不等式约束,其中 A为约束系数矩阵,b代表约束向量。Lin ear equalities:线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。Bounds:自变量上下界约束。Non li near Co nstrai nts fun ctio n; 非线性约束函数。Derivatives:非线性约束函数的微分(或梯度)的计算方式。Run solver and view resu
4、lts框组用于显示求解过程和结果。(对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc函数就没有Constraints框组。)2、优化选项(Options )Stopp ing criteria:停止准则。Function value check:函数值检查。User-supplied derivatives:用户自定义微分(或梯度)。Approximated derivatives:自适应微分(或梯度)。Algorithm sett in gs:算法设置。Inner iterati on stopp ing criteria:内迭代停止准则。
5、Plot function:用户自定义绘图函数。Output fun ctio n:用户自定义输出函数。Display to comma nd win dow:输出到命令行窗口。对于不同的优化问题类型,此板块也会不同,3、帮助(Quick Referenee )每选择一个函数求解器,帮助部分都有对这个函数的功能说明,同时还会给出相应的各个输入项说明。1.3 GUI优化工具的使用步骤(1)选择求解器Solver和优化算法。(2)选定目标函数。(3)设定目标函数的相关参数。(4)设置优化选项。(5)单击"Start”按钮,运行求解。(6)查看求解器的状态和求解结果。(7)将目标函数、选项
6、和结果导入 /导出。(在菜单文件中寻找)1.4 GUI优化工具的应用实例1、无约束优化(fminunc求解器)fminunc求解器可用的算法有两种:Large scale(大规模算法)Medium scale (中等规模算法)对于一般问题,采用中等规模算法即可。,., . 2例1:用优化工具求f x i = x ,4x-6的极小值,初始点取 x=0。解:首先在当前 MATLAB的工作目录下建立目标函数文件Fununc1.m文件:function y= FunUnc1(x)% function必须为小写,如果 F为大写则不行y=xA2+4*x-6;%平方符号输入时用键盘上数字6上的符合,否则错误
7、然后启动优化工具:在Solver下拉选框中选择 fminunc ;Algorithm 下拉选框中选择 Medium scale ;目标函数栏输入FunUnc1 ;%运算时输入函数不知什么原因老有错误,直接输入目标函数却没有错误初始点输入0,其余参数默认;单击"Start”按钮运行。从求解结果可以看出,函数的极小值为-10,且在x=-2时取到,而且从 Current iteration框可以看出迭代的步数。对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中直接输入 (x)xA2+4*x-6,也可求出结果。此题能否用进退法和黄金分割法(或二次插值法)
8、求解吗?不能,要用进退法或黄金分割法得自己先编程序,然后才能调用这样的函数。2、无约束优化(fminsearch求解器)fminsearch求解器也可用来求解无约束优化问题,它有时候能求解fminunc不能解决的问题。例2:用优化工具求f (x )= x2 -3x + 2的极小值,初始点取x=-7,比较fminunc和fminsearch求出的结果。解:通过数学计算,可以得到本例中的极小点有两个x1=1,x2=2。启动优化工具:在Solver下拉选框中选择fminunc ;Algorithm 下拉选框中选择 Medium scale ;目标函数栏输入(x)abs(xA2-3*x+2);初始点输
9、入-7,其余参数默认;单击"Start”按钮运行。Fminunc求得的结果为x=1.5,显然数值不对,它是未加绝对值时函数f x = x23x,2的极小值。然后在Solver下拉选框中选择fminsearch ;Algorithm 下拉选框中选择 Medium scale ;目标函数栏输入(x)abs(xA2-3*x+2);初始点输入-7,其余参数默认;单击"Start”按钮运行。fminsearch求得的结果为x=2,显然数值是对的。可为什么不能求出数值x=1呢,因为此时的函数值也是最小的。由此可得结论:对于非光滑优化问题Fminunc可能求不到正确的结果,而fminse
10、arch却能很好地胜任这类问题的求解。2 MATLAB优化工具箱在一维优化问题中的应用2.1应用fminbnd函数在MATLAB中,fminbnd函数可用来求解一维优化问题,其调用格式为:(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不
11、显示任何结果;iter显示每步迭代后的结果;final只显示最后的结果; n otify只有当求解不收敛的时候才显示结果。Fu nValCheck检查目标函数值是否可接受:On当目标函数值为复数或NaN时显示出错信息;Off 不显示任何错误信息。MaxFu nEvals最大的目标函数检查步数。MaxIter最大的迭代步数。OutputFcn 用户自定义的输出函数,它将在每个迭代步调用。PlotFcns 用户自定义的绘图函数。TolX 自变量的精度。(3) x,fval= fminbnd(.);%此格式中的输出参数 fval返回目标函数的极小值。(4) x,fval,exitflag= fmin
12、bnd(.);%此格式中的输出参数 exitflag返回函数fminbnd的求解状态(成功或 失败),说明如下:exitflag=1fminbnd成功求得最优解,且解的精度为 TolX ;exitflag=0由于目标函数检查步数达到最大或迭代步数达到最大值而推出。exitflag=-1用户自定义函数引起的退出。exitflag=-2边界条件不协调(x1>x2)。(5) x,fval,exitflag,output= fminbnd(.);%此格式中的输出参数output返回函数fminbnd的求解信息(迭代次数、所用算法等),说明如下:output结构中的字段:output.algori
13、thm:优化算法output.iterati on s:优化迭代步数output.fu ncCou nt:目标函数检查步数output.message:退出信息例1:用fminbnd求函数f x =x4-x2,x-1在区间-2,1上的极小值。解:在MATLAB命令窗口输入>>x,fval,exitflag,output= fminbnd(所得结果为x =-0.8846fval =-2.0548exitflag =1output = iterati ons: 11%fun cCou nt: 12%algorithm: 'golde n sect ion search 抛物线算
14、法求本例函数的极小值message: 1x112 charA4-xA2+x-1 '-2,1)迭代次数为11次函数计算了 12次parabolic in terpolati on'%fminbnd用了黄金分割法和要查看结果的精度,可以接着在MATLAB命令窗口中输入>> output.message可得如下信息ans =Optimization terminated:MATLAB命令窗口输入the current x satisfies the term in ation criteria usi ng OPTIONS.ToIX of 1.000000e-004 说明
15、求得结果的精度为 1.0e-4,如果想提高精度,可以通过 option结构来指定, >>opt=optimset( ' TolX ' ,1.0e-6);>>format l ong;>>x,fval,exitflag,output= fminbnd( xA4-xA2+x-1 ,-2,1,opt)所得结果为x= -0.884646164474752fval = -2.054784062185396exitflag =1output =iterati ons: 11fun cCou nt: 12algorithm: 'golde n se
16、ct ion search, parabolic in terpolatio n'message: 1x112 char这样求得的结果x就有了 1.0e-6的精度。为了理解fminbnd的求解原理,将每一步的迭代过程打印出来,在MATLAB命令窗口中输入>> opt=optimset( display ' , ' iter ');>>x,fval,exitflag,output= fminbnd(xA4-xA2+x-1 ',-2,1,opt)所得结果为Fun c-co unt xf(x)Procedure1-0.854102-2.
17、05144in itial2-0.145898-1.16673golde n3-1.2918-1.17585golde n4-0.72025-1.9699parabolic5-0.853884-2.05139parabolic6-0.890887-2.05464parabolic7-1.04402-1.94595golde n8-0.884922-2.05478parabolic9-0.88455-2.05478parabolic10-0.884647-2.05478parabolic11-0.884613-2.05478parabolic12-0.88468-2.05478parabolic
18、Optimization terminated:the current x satisfies the term in ation criteria usi ng OPTIONS.ToIX of 1.000000e-004x= -0.884646700241543fval = -2.054784062184385exitflag =1output =iterati ons: 11fun cCou nt: 12algorithm: 'golde n sect ion search, parabolic in terpolatio n'message: 1x112 char分析迭代
19、过程可发现,fminbnd首先产生一个迭代的初始点,经过简单的计算可以发现,这个初始点是区间的黄金分割点(-0.854=-2+ (1-0.618) * (1+2),接着再用黄金分割法迭代,直到相连两步迭代得到的f(x)相差不大时,此时用二次插值法迭代一步,如果用二次插值法得到的估计点可以接受的话(和前次黄金分割法得到的f(x)相差不大),则再用二次插值法迭代,如果相连两次二次插值法迭代得到的f(x)相差不大,且自变量的差别很小,则继续直到满足精度要求,否则换用黄金分割法。2例2:用fminbnd求函数f x二e公x sinx在区间-10,10上的极小值。解:在MATLAB命令窗口中输入>
20、>x,fval,exitflag= fminbnd(exp(-xA2)*(x+sin(x) '-10,10)所得结果为x =-0.6796fval =-0.8242exitflag =12函数f x=e» x sinx在区间-10,10上的图形如图所示,在此区间上函数有两个极值点,一个极大值, 一个极小值,函数 fminbnd成功求得极小值点。例 3:用 fminbnd 求函数 f x =sin(2x 1) 3sin(4x 3) - 5sin(6x 5)在区间-4,4上的极小值。解:在MATLAB命令窗口中输入>>x,fval= fminbnd( Si n(
21、2*x+1)+3*si n(4*x+3)+5*si n(6*x+5)',-4,4)所得结果为x =-1.1082fval =-8.8940若在MATLAB命令窗口中输入>>x,fval,exitflag= fminbnd( si n(2*x+1)+3*si n(4*x+3)+5*si n(6*x+5)'-4,4)x =-1.1082fval =-8.8940exitflag =1例4:用fminbnd求函数f x 口1(x-2)2 313(x-5)2412(x-1)2 1在区间-8,8上的极小值。解:在MATLAB命令窗口中输入>>x,fval= fmi
22、nbnd(-'1/(x-2)a2+3)-1/(3*(x-5)a2+4)-1/(2*(x-1)a2+1)'-8,8)所得结果为x =1.0337fval =-1.2715例5:用fminbnd求函数f ( x )=卜+1 +x2+X 2在区间-2,2上的极小值。解:在MATLAB命令窗口中输入>>x,fval= fminbnd( abs(x+1)+xA2+x-2 '-2,2)所得结果为x =-1.0000fval =-2.00002.2 应用 fminsearch 函数fminsearch函数的主要功能是求多变量的极值问题,当然也就可以求单变量极值问题。例:用
23、fminsearch函数求函数 f x = x4 _x2 x-1的极小值。解:在MATLAB命令窗口中输入>>x,fval,exitflag,output= fmin search(£人4帜人2+乂-1 ',0)所得结果为x =-0.8846fval =-2.0548exitflag =1output =iterati ons: 24fun cCou nt: 48algorithm: 'Nelder-Mead simplex direct search'message: 1x196 char3 MATLAB优化工具箱在无约束优化问题中的应用3.1
24、应用 fminsearch 函数在MATLAB中,fminsearch函数可用来求解无约束多维极值问题,其调用格式为(1) x= fminsearch(fun,x0):从起始点x0出发,求出fun的一个局部极小点;(2) x= fminsearch(fun,x0,options):按options结构指定的优化参数求函数fun的极小点,而 options结构的参数可以通过函数 optimset来设置,options结构中的各个字段及其含义如表所示;字段说明Display设置结果的显示方式:off不显示任何结果;iter显示每步迭代后的结果;final只显示取后的结果;n otify只有当求解不
25、收敛的时候才显示结果。Fun ValCheck检查目标函数值是否可接受:On当目标函数值为复数或 NaN时显示出错信息;Off 不显示任何错误信息。MaxF un Evals最大的目标函数检查步数MaxIter最大的迭代步数OutputFc n用户自定义的输出函数,它将在每个迭代步调用PlotFcns用户自定义的绘图函数,它将在每个迭代步调用TolFu n目标函数值的精度TolX自变量的精度。(3) x,fval= fminsearch():此格式中的输出参数fval返回目标函数的极小值。(4) x,fval,exitflag= fminsearch():此格式中的输出参数exitflag返回
26、函数fminsearch的求解状态(成功或失败),其取值如表所示。exitflag说明1fminbnd成功求得最优解,且解的精度为TolX0由于目标函数检查步数达到最大或迭代步数达到最大值而退出。-1用户自定义函数引起的退出(5) x,fval,exitflag,output= fminsearch():此格式中的输出参数output返回函数fminsearch的求解信息(迭代次数、所用算法等),其字段及其含义如表所示:Output结构中的字段说明output.algorithm优化算法output.iterati ons优化迭代步数output.fu ncCo unt目标函数检查步数outp
27、ut.message退出信息例1 :用fminsearch函数求解无约束多维函数f x二sin % sin x2的极小值。解:在MATLAB命令窗口中输入>>fx=(x)si n(x(1)+si n(x(2);%建立函数>>xv,fv= fmin search(fx,0,0)所得结果为xv =-1.5708 -1.5708fv =-2.0000例2:用fminsearch函数求解无约束多维函数12x1 - 2 3122 x2 1- 5的极小值。解:显然,上式的极值点为(2,-1),最小值为-2/15。在MA TLAB 命令窗口中输入>>fx=(x)-1/(x
28、(1)-2)A2+3)-1/(2*(x(2)+1F2-5);>>xv,fv= fmin search(fx,O,O)所得结果为xv =2.0000-1.0000fv =-0.1333为了看清楚fminsearch函数的单纯型搜索过程,采用optimset函数设置options结构,将display字段设为iter,以显示每次迭代的信息。在MA TLAB 命令窗口中输入>>opt=optimset( display ' , ' iter ');>>xv,fv= fmin search(fx,0,0,opt)所得结果为Iterati on
29、Fun c-co untmin f(x)Procedure010.190476130.190456in itial simplex%初始单纯型250.190224expand%扩展370.190067expand490.189526expand5110.188944expand6130.187583expand7150.185763expand8170.182219expand9190.177002expand10210.167918expand11230.154383expand12250.13326expand13270.103875expand14290.0643404expand153
30、10.0157881expand1633-0.0384754expand1735-0.0567264reflect%反射1836-0.0567264reflect1938-0.0567264con tract in side%压缩2040-0.0594596con tract in side2141-0.0594596reflect2243-0.0599578con tract in side2345-0.0599653con tract outside2447-0.0601014con tract in side2549-0.0601014con tract in side2651-0.06
31、01903reflect2753-0.0601903con tract in side2855-0.0603234expand2957-0.0604675expand3059-0.0607257expand3161-0.0612865expand3263-0.0617259expand3365-0.0635127expand3466-0.0635127reflect3568-0.0673697expand3669-0.0673697reflect3771-0.0740469expand3873-0.0780703expand3975-0.0928988expand4077-0.10392exp
32、and4179-0.127078expand4281-0.130651reflect4382-0.130651reflect4484-0.131814con tract in side4586-0.133102con tract in side4688-0.133102con tract in side4790-0.133204reflect4892-0.133204con tract in side4994-0.13329con tract in side5096-0.133326con tract in side5198-0.133326con tract in side52100-0.1
33、33326con tract outside53102-0.133328con tract in side54104-0.133331con tract outside55106-0.133332con tract in side56108-0.133333con tract in side57110-0.133333con tract outside58112-0.133333con tract in side59114-0.133333con tract in side60116-0.133333con tract in side61118-0.133333con tract in sid
34、e62120-0.133333con tract in side63121-0.133333reflect64123-0.133333con tract in side65125-0.133333con tract outside66127-0.133333con tract in side67129-0.133333con tract in side68131-0.133333con tract in side69133-0.133333reflect70135-0.133333con tract in sideOptimization terminated:the current x sa
35、tisfies the term in ation criteria usi ng OPTIONS.ToIX of 1.000000e-004and F(X) satisfies the con verge nee criteria using OPTIONS.TolFu n of 1.000000e-004xv =2.0000 -1.0000fv =-0.1333从迭代过程可看出,经过多次扩展、反射、压缩过程,才求得极小值。为了得到每一步优化得到的x值,通过建立相应的 m文件可实现。1 1例3:用fminsearch函数求解无约束多维函数f x =为x2的极小值。X|x2解:显然,上式的最小
36、值为4,极值点为(1,1)。在MA TLAB 命令窗口中输入>>fx=(x)x(1)+1/x(1)+x(2)+1/x(2);%建立函数>>xv,fv= fmin search(fx,2,3)所得结果为xv =1.00001.0000fv =4.0000fminsearch用的算法是单纯形搜索法,由于不需要计算梯度,因此fminsearch函数的运算速度很快,常见的函数都能立即求出极小值。3.2应用fminunc函数fminunc函数也能求无约束极值问题。常用的调用格式为:(1) x=fminunc(fun,x0):表示从起始点 x0出发,求出fun的一个局部极小点。(2
37、) x=fminunc(fun,x0,options):按options结构指定的优化参数求函数的极小点,而options结构的参数通过 函数optimset来设置,options结构和fminsearch函数一样。(3) x=fminunc(problem):所需求解的极值问题及选项通过problem结构指定,其字段及其含义如表所示:字段说明objective目标函数x0初始点solver求解方法, fminunc 'optio nsoptions 结构(4) x,fval=fminunc(.):输出参数fval返回目标函数的极小值;(5) x,fval, exitflag=fmin
38、unc(.):输出参数 exitflag返回函数fminunc的求解状态(成功或失败);(6) x,fval, exitflag, output=fminunc(.):输出参数 output返回函数fminunc的求解信息(迭代次数,所用 算法等);(7) x,fval, exitflag, output, grad=fminunc(.):输出参数 grad 返回函数 fun 在极小点 x 处的梯度。(8) x,fval,exitflag, output, grad,hessian=fminunc(.):输出参数 hessian返回函数 fun 在极小点 x处的海 森矩阵。例1:用fminun
39、c函数求解无约束多维函数12x1 - 2 3122 x2 1-5的极小值。解:在MATLAB命令窗口中输入>> fx=(x)-1/(x(1)-2)A2+3)-1/(2*(x(2)+1)A2-5);>>pro.objective=fx;%此处用的是problem结构来求解极值。>>pro.x0=0,0;>>pro.solver= 'fminunc '>>pro.options=optimset( Display f 'iter f>>xv,fv , exitflag , output, grad, h
40、ess=fminunc(pro)所得结果为Warning: Gradie nt must be provided for trust-regi on method;using lin e-search method in stead.> In fminunc at 265First-orderIteratio nFun c-co untf(x)Step-sizeoptimality030.1904760.444160.078471410.116290.048262310.0945312-0.053214510.124418-0.07618720.4058170.162521-0.0966210.105624-0.12839610.0394727-0.13268910.0141830-0.13333110.000826933-0.13333315.13e-0061036-0.133333word版
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026秋季国家管网集团北方管道公司高校毕业生招聘考试备考试题(浓缩500题)附答案详解(能力提升)
- 国家管网集团2025届高校毕业生招聘笔试历年参考题库附带答案详解(浓缩500题)及答案详解【历年真题】
- 2026国网江苏省电力校园招聘(提前批)笔试模拟试题浓缩500题含答案详解(培优b卷)
- 2026秋季国家管网集团甘肃公司高校毕业生招聘考试备考题库(浓缩500题)附参考答案详解(能力提升)
- 2026秋季国家管网集团东北公司高校毕业生招聘考试备考试题(浓缩500题)及答案详解【网校专用】
- 2026秋季国家管网集团山东分公司高校毕业生招聘考试参考试题(浓缩500题)附答案详解(综合题)
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试参考题库(浓缩500题)带答案详解(轻巧夺冠)
- 2026年鞍山市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)带答案详解(完整版)
- 2025国网山西高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及参考答案详解
- 国家管网集团2025届高校毕业生招聘笔试历年参考题库附带答案详解(浓缩500题)附答案详解(精练)
- 《俄罗斯》介绍课件
- NB/T 10522.1-2021矿用自动控制防水闸门第1部分:机械装置
- JJG 939-2009原子荧光光度计
- GB/T 8350-2008输送链、附件和链轮
- GB/T 32260.1-2015金属材料焊缝的破坏性试验焊件的冷裂纹试验弧焊方法第1部分:总则
- 【原创】课题专题讲座-《抓好朗读训练播下语感种子》PPT
- FZ/T 01002-2010印染企业综合能耗计算办法及基本定额
- CJJ28-2014城镇供热管网工程施工及验收规范
- 美术技法理论试卷A
- 防爆电器基础知识
- 减员减支方案一阶段
评论
0/150
提交评论