matlab优化工具箱的使用 下载本文

内容发布更新时间 : 2024/9/23 16:28:27星期一 下面是文章的全部内容请认真阅读。

范文 范例 指导 参考

优化工具箱的使用

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

1 GUI优化工具

1.1 GUI优化工具的启动

有两种启动方法:

(1)在命令行输入optimtool; (2)在MATLAB主界面单击左下角的“Start”按钮,然后依次选择“Toolboxes→Optimization→Optimization tool”

1.2 GUI优化工具的界面

界面分为三大块:

左边(Problem Setup and Results)为优化问题的描述及计算结果显示; 中间(Options)为优化选项的设置; 右边(Quick Reference)为帮助。为了界面的简洁,可以单击右上角“<<”、“>>”的按钮将帮助隐藏或显示。

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

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

选择合适的求解器以及恰当的优化算法,是进行优化问题求解的首要工作。 ? Solver:选择优化问题的种类,每类优化问题对应不同的求解函数。 ? Algorithm:选择算法,对于不同的求解函数,可用的算法也不同。 Problem框组用于描述优化问题,包括以下内容: ? Objective function: 输入目标函数。

? Derivatives: 选择目标函数微分(或梯度)的计算方式。 ? Start point: 初始点。

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

? Linear inequalities: 线性不等式约束,其中A为约束系数矩阵,b代表约束向量。 ? Linear equalities: 线性等式约束,其中Aeq为约束系数矩阵,beq代表约束向量。 ? Bounds: 自变量上下界约束。

? Nonlinear Constraints function; 非线性约束函数。

? Derivatives: 非线性约束函数的微分(或梯度)的计算方式。 Run solver and view results框组用于显示求解过程和结果。

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

2、优化选项(Options)

word版 整理

范文 范例 指导 参考

? Stopping criteria: 停止准则。 ? Function value check: 函数值检查。

? User-supplied derivatives: 用户自定义微分(或梯度)。 ? Approximated derivatives: 自适应微分(或梯度)。 ? Algorithm settings: 算法设置。

? Inner iteration stopping criteria: 内迭代停止准则。

? Plot function: 用户自定义绘图函数。 ? Output function: 用户自定义输出函数。

? Display to command window: 输出到命令行窗口。

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

3、帮助(Quick Reference)

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

1.3 GUI优化工具的使用步骤

(1)选择求解器Solver和优化算法。 (2)选定目标函数。

(3)设定目标函数的相关参数。 (4)设置优化选项。

(5)单击“Start”按钮,运行求解。 (6)查看求解器的状态和求解结果。

(7)将目标函数、选项和结果导入/导出。(在菜单文件中寻找)

1.4 GUI优化工具的应用实例

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

fminunc求解器可用的算法有两种: ? Large scale(大规模算法) ? Medium scale(中等规模算法) 对于一般问题,采用中等规模算法即可。

例1:用优化工具求f?x??x?4x?6的极小值,初始点取x=0。

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

word版 整理

范文 范例 指导 参考

function y= FunUnc1(x) % function必须为小写,如果F为大写则不行 y=x^2+4*x-6; %平方符号输入时用键盘上数字6上的符合,否则错误 然后启动优化工具:

? 在Solver下拉选框中选择fminunc; ? Algorithm下拉选框中选择Medium scale;

? 目标函数栏输入@FunUnc1; %运算时输入函数不知什么原因老有错误,直接输入目标函数却没有错误 ? 初始点输入0,其余参数默认; ? 单击“Start”按钮运行。

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

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

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

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

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(x^2-3*x+2); ? 初始点输入-7,其余参数默认; ? 单击“Start”按钮运行。

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

2? 然后在Solver下拉选框中选择fminsearch; ? Algorithm下拉选框中选择Medium scale; ? 目标函数栏输入@(x)abs(x^2-3*x+2); ? 初始点输入-7,其余参数默认; ? 单击“Start”按钮运行。

word版 整理