matlab优化工具箱的使用Word下载.docx

上传人:b****5 文档编号:16143258 上传时间:2022-11-20 格式:DOCX 页数:18 大小:46.47KB
下载 相关 举报
matlab优化工具箱的使用Word下载.docx_第1页
第1页 / 共18页
matlab优化工具箱的使用Word下载.docx_第2页
第2页 / 共18页
matlab优化工具箱的使用Word下载.docx_第3页
第3页 / 共18页
matlab优化工具箱的使用Word下载.docx_第4页
第4页 / 共18页
matlab优化工具箱的使用Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

matlab优化工具箱的使用Word下载.docx

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

matlab优化工具箱的使用Word下载.docx

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

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

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

✧Solver:

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

✧Algorithm:

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

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

✧Objectivefunction:

输入目标函数。

✧Derivatives:

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

✧Startpoint:

初始点。

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

✧Linearinequalities:

线性不等式约束,其中A为约束系数矩阵,b代表约束向量。

✧Linearequalities:

线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。

✧Bounds:

自变量上下界约束。

✧NonlinearConstraintsfunction;

非线性约束函数。

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

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

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

2、优化选项(Options)

✧Stoppingcriteria:

停止准则。

✧Functionvaluecheck:

函数值检查。

✧User-suppliedderivatives:

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

✧Approximatedderivatives:

自适应微分(或梯度)。

✧Algorithmsettings:

算法设置。

✧Inneriterationstoppingcriteria:

内迭代停止准则。

✧Plotfunction:

用户自定义绘图函数。

✧Outputfunction:

用户自定义输出函数。

✧Displaytocommandwindow:

输出到命令行窗口。

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

3、帮助(QuickReference)

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

1.3GUI优化工具的使用步骤

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

(2)选定目标函数。

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

(4)设置优化选项。

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

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

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

(在菜单文件中寻找)

1.4GUI优化工具的应用实例

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

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

Ø

Largescale(大规模算法)

Mediumscale(中等规模算法)

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

例1:

用优化工具求

的极小值,初始点取x=0。

解:

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

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

y=x^2+4*x-6;

%平方符号输入时用键盘上数字6上的符合,否则错误

然后启动优化工具:

✧在Solver下拉选框中选择fminunc;

✧Algorithm下拉选框中选择Mediumscale;

✧目标函数栏输入@FunUnc1;

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

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

✧单击“Start”按钮运行。

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

对于函数形式比较简单的情况,可以直接输入目标函数,而不用建立目标函数文件,在目标函数栏中直接输入@(x)x^2+4*x-6,也可求出结果。

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

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

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

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

例2:

的极小值,初始点取x=-7,比较fminunc和fminsearch求出的结果。

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

启动优化工具:

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

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

Fminunc求得的结果为x=1.5,显然数值不对,它是未加绝对值时函数

的极小值。

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

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=1——fminbnd成功求得最优解,且解的精度为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:

退出信息

用fminbnd求函数

在区间[-2,1]上的极小值。

在MATLAB命令窗口输入

[x,fval,exitflag,output]=fminbnd(‘x^4-x^2+x-1’,-2,1)

所得结果为

x=-0.8846

fval=-2.0548

exitflag=1

output=iterations:

11%迭代次数为11次

funcCount:

12%函数计算了12次

algorithm:

'

goldensectionsearch,parabolicinterpolation'

%fminbnd用了黄金分割法和抛物线算法求本例函数的极小值

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(‘x^4-x^2+x-1’,-2,1,opt)

x=-0.884646164474752

fval=-2.054784062185396

exitflag=1

11

12

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

为了理解fminbnd的求解原理,将每一步的迭代过程打印出来,在MATLAB命令窗口中输入

opt=optimset(‘display’,’iter’);

Func-countxf(x)Procedure

1

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

当前位置:首页 > 考试认证 > IT认证

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

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