matlab优化工具箱的使用.docx

上传人:b****7 文档编号:15411239 上传时间:2023-07-04 格式:DOCX 页数:23 大小:41.41KB
下载 相关 举报
matlab优化工具箱的使用.docx_第1页
第1页 / 共23页
matlab优化工具箱的使用.docx_第2页
第2页 / 共23页
matlab优化工具箱的使用.docx_第3页
第3页 / 共23页
matlab优化工具箱的使用.docx_第4页
第4页 / 共23页
matlab优化工具箱的使用.docx_第5页
第5页 / 共23页
matlab优化工具箱的使用.docx_第6页
第6页 / 共23页
matlab优化工具箱的使用.docx_第7页
第7页 / 共23页
matlab优化工具箱的使用.docx_第8页
第8页 / 共23页
matlab优化工具箱的使用.docx_第9页
第9页 / 共23页
matlab优化工具箱的使用.docx_第10页
第10页 / 共23页
matlab优化工具箱的使用.docx_第11页
第11页 / 共23页
matlab优化工具箱的使用.docx_第12页
第12页 / 共23页
matlab优化工具箱的使用.docx_第13页
第13页 / 共23页
matlab优化工具箱的使用.docx_第14页
第14页 / 共23页
matlab优化工具箱的使用.docx_第15页
第15页 / 共23页
matlab优化工具箱的使用.docx_第16页
第16页 / 共23页
matlab优化工具箱的使用.docx_第17页
第17页 / 共23页
matlab优化工具箱的使用.docx_第18页
第18页 / 共23页
matlab优化工具箱的使用.docx_第19页
第19页 / 共23页
matlab优化工具箱的使用.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

matlab优化工具箱的使用.docx

《matlab优化工具箱的使用.docx》由会员分享,可在线阅读,更多相关《matlab优化工具箱的使用.docx(23页珍藏版)》请在冰点文库上搜索。

matlab优化工具箱的使用.docx

matlab优化工具箱的使用

优化工具箱的使用

MATLAB的优化工具箱提供了各种优化函数,这些优化函数可以通过在命令行输入相应的函数名加以调用;此外为了使用方便,MATLAB还提供了图形界面的优化工具(

1GUI优化工具

1.1GUI优化工具的启动有两种启动方法:

(1)在命令行输入optimtool;

(2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“

tool”

1.2GUI优化工具的界面

界面分为三大块:

左边(ProblemSetupandResults)为优化问题的描述及计算结果显示;

中间(Options)为优化选项的设置;

右边(QuickReferenee)为帮助。

为了界面的简洁,可以单击右上角"

示。

GUIOptimizationtool)。

ToolboxesOptimizationOptimization

<<”

>>”的按钮将帮助隐藏或显

1、优化问题的描述及计算结果显示

此板块主要包括选择求解器、目标函数描述、约束条件描述等部分。

选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。

Solver:

选择优化问题的种类,每类优化问题对应不同的求解函数。

Algorithm:

选择算法,对于不同的求解函数,可用的算法也不同。

Problem框组用于描述优化问题,包括以下内容:

Objectivefunction:

输入目标函数。

Derivatives:

选择目标函数微分(或梯度)的计算方式。

Startpoint:

初始点。

Constraints框组用于描述约束条件,包括以下内容:

Linearinequalities:

线性不等式约束,其中A为约束系数矩阵,

Linearequalities:

线性等式约束,其中Aeq为约束系数矩阵,

Bounds:

自变量上下界约束。

NonlinearConstraintsfunction;非线性约束函数。

Derivatives:

非线性约束函数的微分(或梯度)的计算方式。

Runsolverandviewresults框组用于显示求解过程和结果。

(对于不同的优化问题类型,此板块可能会不同,这是因为各个求解函数需要的参数个数不一样,如Fminunc函数就没有Constraints框组。

b代表约束向量。

beq代表约束向量。

2、优化选项(Options)

Stoppingcriteria:

停止准则。

Functionvaluecheck:

函数值检查。

 

 

User-suppliedderivatives:

用户自定义微分(或梯度)。

 

Approximatedderivatives:

自适应微分(或梯度)

Algorithmsettings:

算法设置。

Inneriterationstoppingcriteria:

内迭代停止准则。

Plotfunction:

用户自定义绘图函数。

Outputfunction:

用户自定义输岀函数。

Displaytocommandwindow:

输岀到命令行窗口。

对于不同的优化问题类型,此板块也会不同,

3、帮助(QuickReferenee)

每选择一个函数求解器,帮助部分都有对这个函数的功能说明,同时还会给岀相应的各个输入项说明。

1.3GUI优化工具的使用步骤

(1)选择求解器Solver和优化算法。

(2)选定目标函数。

(3)设定目标函数的相关参数。

(4)设置优化选项。

(5)单击"Start"按钮,运行求解。

(6)查看求解器的状态和求解结果。

(7)将目标函数、选项和结果导入/导岀。

(在菜单文件中寻找)

1.4GUI优化工具的应用实例

1、无约束优化(fminunc求解器)

fminunc求解器可用的算法有两种:

Largescale(大规模算法)

Mediumscale(中等规模算法)

对于一般问题,采用中等规模算法即可。

2

例1:

用优化工具求fx=x,4x-6的极小值,初始点取x=o。

解:

首先在当前MATLAB的工作目录下建立目标函数文件Fununc1.m文件:

functiony=FunUnc1(x)%function必须为小写,如果f为大写则不行

y=xA2+4*x-6;%平方符号输入时用键盘上数字6上的符合,否则错误

然后启动优化工具:

在Solver下拉选框中选择fminunc;

Algorithm下拉选框中选择Mediumscale;

目标函数栏输入@FunUnc1;%运算时输入函数不知什么原因老有错误,直接输入目标函数却没有错

初始点输入0,其余参数默认;

单击“Start”按钮运行。

从求解结果可以看岀,函数的极小值为-10,且在x=-2时取到,而且从Currentiteration框可以看岀迭代的步

数。

对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中直接输

入@(x)xA2+4*x-6,也可求岀结果。

此题能否用进退法和黄金分割法(或二次插值法)求解吗?

不能,要用进退法或黄金分割法得自己先编程序,然后才能调用这样的函数。

2、无约束优化(fminsearch求解器)

fminsearch求解器也可用来求解无约束优化问题,它有时候能求解fminunc不能解决的问题。

例2:

用优化工具求f(X)=X-3x^2的极小值,初始点取x=-7,比较fminunc和fminsearch求岀的结

果。

解:

通过数学计算,可以得到本例中的极小点有两个x1=1,x2=2。

启动优化工具:

在Solver下拉选框中选择fminunc;

Algorithm下拉选框中选择Mediumscale;

目标函数栏输入@(x)abs(xA2-3*x+2);

初始点输入-7,其余参数默认;

单击“Start”按钮运行。

Fminunc求得的结果为x=1.5,显然数值不对,它是未加绝对值时函数fx=X2—3x2的极小值。

然后在Solver下拉选框中选择fminsearch;

Algorithm下拉选框中选择Mediumscale;

目标函数栏输入@(x)abs(xA2-3*x+2);

初始点输入-7,其余参数默认;

单击“Start”按钮运行。

fminsearch求得的结果为x=2,显然数值是对的。

可为什么不能求岀数值x=1呢,因为此时的函数值也是最小

的。

由此可得结论:

对于非光滑优化问题Fminunc可能求不到正确的结果,而fminsearch却能很好地胜任这类问

题的求解。

2MATLAB优化工具箱在一维优化问题中的应用

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不显示任何结果;iter显示每步迭代后的结果;final只显示最后的结果;notify—

—只有当求解不收敛的时候才显示结果。

FunValCheck检查目标函数值是否可接受:

On――当目标函数值为复数或NaN时显示岀错信息;

Off不显示任何错误信息。

MaxFunEvals最大的目标函数检查步数。

MaxIter最大的迭代步数。

OutputFcn――用户自定义的输岀函数,它将在每个迭代步调用。

PlotFcns――用户自定义的绘图函数。

TolX――自变量的精度。

(3)[x,fval]=fminbnd(...);%此格式中的输岀参数fval返回目标函数的极小值。

(4)[x,fval,exitflag]=fminbnd(...);%此格式中的输岀参数exitflag返回函数fminbnd的求解状态(成功或

失败),说明如下:

exitflag=1fminbnd成功求得最优解,且解的精度为TolX;

exitflag=0由于目标函数检查步数达到最大或迭代步数达到最大值而推岀。

exitflag=-1用户自定义函数引起的退岀。

exitflag=-2边界条件不协调(x1>x2)。

(5)[x,fval,exitflag,output]=fminbnd(...);%此格式中的输岀参数output返回函数fminbnd的求解信息(迭

代次数、所用算法等),说明如下:

output结构中的字段:

output.algorithm:

优化算法

output.iterations:

优化迭代步数

output.funcCount:

目标函数检查步数

output.message:

退岀信息

例1:

用fminbnd求函数fx=X°-X2'XT在区间[-2,1]上的极小值。

解:

在MATLAB命令窗口输入

>>[x,fval,exitflag,output]=fminbnd(xA4-xA2+x-1'2,1)

所得结果为

x=-0.8846fval=-2.0548

exitflag=1

迭代次数为11次

函数计算了12次

output=iterations:

11%

funcCount:

12%

fminbnd用了黄金分割法和

algorithm:

'goldensectionsearch,parabolicinterpolation'%抛物线算法求本例函数的极小值

message:

[1x112char]

要查看结果的精度,可以接着在MATLAB命令窗口中输入

>>output.message

可得如下信息

ans=Optimizationterminated:

thecurrentxsatisfiestheterminationcriteriausingOPTIONS.TolXof1.000000e-004

说明求得结果的精度为1.0e-4,如果想提高精度,可以通过option结构来指定,在MATLAB命令窗口输入

>>opt=optimset(‘TolX',1.0e-6);

>>formatlong;

>>[x,fval,exitflag,output]=fminbnd(‘xA4-xA2+x-1',-2,1,opt)

所得结果为

exitflag=1

output=iterations:

11

funcCount:

12

algorithm:

'goldensectionsearch,parabolicinterpolation'

message:

[1x112char]

这样求得的结果x就有了1.0e-6的精度。

为了理解fminbnd的求解原理,将每一步的迭代过程打印出来,在MATLAB命令窗口中输入>>opt=optimset(‘display','iter');

>>[x,fval,exitflag,output]=fminbnd(‘xA4-xA2+x-1',-2,1,opt)

所得结果为

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.05478

parabolic

10

-0.884647

-2.05478

parabolic

11

-0.884613

-2.05478

parabolic

12

-0.88468

-2.05478

parabolic

Optimizationterminated:

thecurrentxsatisfiestheterminationcriteriausingOPTIONS.ToIXof1.000000e-004

exitflag=1

output=iterations:

11

funcCount:

12

algorithm:

'goldensectionsearch,parabolicinterpolation'

message:

[1x112char]

分析迭代过程可发现,fminbnd首先产生一个迭代的初始点,经过简单的计算可以发现,这个初始点是区间

的黄金分割点(-0.854=-2+(1-0.618)*(1+2)),接着再用黄金分割法迭代,直到相连两步迭代得到的f(x)

相差不大时,此时用二次插值法迭代一步,如果用二次插值法得到的估计点可以接受的话(和前次黄金分割

法得到的f(x)相差不大),则再用二次插值法迭代,如果相连两次二次插值法迭代得到的f(x)相差不大,且自

变量的差别很小,则继续直到满足精度要求,否则换用黄金分割法。

例2:

用fminbnd求函数fx二e,xsinx在区间[-10,10]上的极小值。

解:

在MATLAB命令窗口中输入

>>[x,fval,exitflag]=fminbnd(exp(-xA2)*(x+sin(x))'-10,10)

所得结果为

x=-0.6796

fval=-0.8242exitflag=

函数fx二xsinx在区间[-10,10]上的图形如图所示,在此区间上函数有两个极值点,一个极大值,一个极小值,函数fminbnd成功求得极小值点。

例3:

用fminbnd求函数fx二sin(2x1)-3sin(4x•3)-5sin(6x•5)在区间[-4,4]上的极小值

解:

在MATLAB命令窗口中输入

>>[x,fval]=fminbnd(Sin(2*x+1)+3*sin(4*x+3)+5*sin(6*x+5)'-4,4)

所得结果为

x=-1.1082

fval=-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.1082

fval=-8.8940

exitflag=1

111

2—2—2

(x-2)33(x-5)42(x-1)1

解:

在MATLAB命令窗口中输入

>>[x,fval]=fminbnd(-1/((x-2)A2+3)-1/(3*(x-5)A2+4)-1/(2*(x-1)A2+1)',-8,8)

所得结果为

x=1.0337

fval=-1.2715

例5:

用fminbnd求函数f(x)二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函数的主要功能是求多变量的极值问题,当然也就可以求单变量极值问题。

例:

用fminsearch函数求函数fx=X4-X2'X-1的极小值。

解:

在MATLAB命令窗口中输入

>>[x,fval,exitflag,output]=fminsearch(xA4-xA2+x-1'

所得结果为

x=-0.8846

fval=-2.0548

exitflag=1

output=iterations:

24

funcCount:

48

algorithm:

'Nelder-Meadsimplexdirectsearch'

message:

[1x196char]

3MATLAB优化工具箱在无约束优化问题中的应用

3.1应用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

只显示取后的结果;notify只有当求解不收敛的时候才显示结果。

FunValCheck

检查目标函数值是否可接受:

On――当目标函数值为复数或NaN时显示岀错信息;

Off不显示任何错误信息。

MaxFunEvals

最大的目标函数检查步数

MaxIter

最大的迭代步数

OutputFcn

用户自定义的输岀函数,它将在每个迭代步调用

PlotFcns

用户自定义的绘图函数,它将在每个迭代步调用

TolFun

目标函数值的精度

TolX

自变量的精度。

(3)[x,fval]=fminsearch(…):

此格式中的输岀参数fval返回目标函数的极小值。

(4)[x,fval,exitflag]=fminsearch(…):

此格式中的输岀参数exitflag返回函数fminsearch的求解状态(成功或

失败),其取值如表所示。

exitflag

说明

1

fminbnd成功求得最优解,且解的精度为TolX

0

由于目标函数检查步数达到最大或迭代步数达到最大值而退岀。

-1

用户自定义函数引起的退岀

(5)[x,fval,exitflag,output]=fminsearch(…):

此格式中的输岀参数output返回函数fminsearch的求解信息(迭

代次数、所用算法等),其字段及其含义如表所示:

output.algorithm

优化算法

output.iterations

优化迭代步数

output.funcCount

目标函数检查步数

output.message

退出信息

Output结构中的字段

说明

例1:

用fminsearch函数求解无约束多维函数

fxi;=sinx1•sinx2的极小值

解:

在MATLAB命令窗口中输入

>>fx=@(x)sin(x

(1))+sin(x

(2));

>>[xv,fv]=fminsearch(fx,[0,0])

所得结果为

xv=-1.5708-1.5708

fv=-2.0000

%建立函数

例2:

用fminsearch函数求解无约束多维函数

11

2_2

%-2i亠32x21-5

的极小值

解:

显然,上式的极值点为(2,-1),最小值为-2/15。

在MATLAB命令窗口中输入

>>fx=@(x)-1/((x

(1)-2)A2+3)-1/(2*(x

(2)+1)A2-5);

>>[xv,fv]=fminsearch(fx,[0,0])

所得结果为

xv=2.0000-1.0000

fv=-0.1333

为了看清楚fminsearch函数的单纯型搜索过程,采用optimset函数设置options结构,将display字段设为iter,

以显示每次迭代的信息。

在MATLAB命令窗口中输入

>>opt=optimset('display','iter');

>>[xv,fv]=fminsearch(fx,[0,0],opt)

所得结果为

IterationFunc-countminf(x)Procedure

010.190476

0.190456

initialsimplex%

初始单纯型

 

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

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

contractinside%

压缩

20

40

-0.0594596

contractinside

21

41

-0.0594596

reflect

22

43

-0.0599578

contractinside

23

45

-0.0599653

contractoutside

24

47

-0.0601014

contractinside

25

49

-0.0601014

contractinside

26

51

-0.0601903

reflect

27

53

-0.0601903

contractinside

28

55

-0.0603234

expand

29

57

-0.0604675

expand

30

59

-0.0607257

expand

31

61

-0.0612865

ex

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

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

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