本页对应的英文页面已更新,但尚未翻译。 若要查看最新内容,请点击此处访问英文页面。

Optimization 工具

注意

Optimization 工具会显示警告,说明它将在以后的版本中被删除。有关备选方法,请参阅 Optimization App Alternatives

Optimization 工具基础知识

如何打开 Optimization 工具

要打开 Optimization 工具,请键入:

optimtool

(在命令行窗口中键入以上命令。)这将打开 Optimization 工具,如下图所示。

您还可以从 MATLAB® App 选项卡启动 Optimization 工具。

Optimization 工具的参考页提供了启动 optimtool 函数的各种不同方式。

使用 Optimization 工具的示例

以下文档示例使用 Optimization 工具:

使用 Optimization 工具的步骤

以下是设置优化问题和使用 Optimization 工具查看结果的步骤汇总。

暂停和停止

当求解器运行时,您可以

  • 点击 Pause 以临时暂停算法。要在暂停时使用当前迭代继续执行算法,请点击 Resume

  • 点击 Stop 以停止算法。点击 Stop 时,Run solver and view results 窗口将显示当前迭代的信息。

停止算法后,您可以导出结果。有关详细信息,请参阅 导出您的工作

查看结果

当求解器终止时,Run solver and view results 窗口会显示算法终止的原因。要在各次运行之间清理 Run solver and view results 窗口,请点击 Clear Results

对显示的结果进行排序.  根据求解器和问题,结果可能会采用表的形式。如果表有多个行,可点击列标题对表进行排序。再次点击标题可对结果进行反向排序。

例如,假设您使用 Optimization 工具来求解Optimization App with the lsqlin Solver 中所述的 lsqlin 问题。结果如下所示。

要按值从低到高对结果进行排序,请点击 Value。图中的结果已按该顺序排列,因此不需要更改。

要按从高到低的相反顺序对结果进行排序,请再次点击 Value

要返回原始顺序,请点击 Index

有关对 Global Optimization Toolbox gamultiobj 函数返回的表进行排序的示例,请参阅Pareto Front for Two Objectives (Global Optimization Toolbox)。

如果您使用 File > Export to Workspace 导出结果,导出的结果不会依赖于已排序的显示。

最终点

当算法终止时,Final point 会更新以显示最终点的坐标。如果没有看到终点,请点击左下角 图标上的上三角。

开始新问题

重置选项并清除问题.  选择 File > Reset Optimization Tool 会将问题定义和选项重置为原始默认值。此操作等效于关闭并重新启动该 App。

要仅清除问题定义,请选择 File > Clear Problem Fields。通过此操作,Problem Setup and Results 窗格中的字段将重置为默认值,但所选的求解器和算法不会被重置。此操作不会重置您从 Options 窗格中的默认值修改的任何选项。

设置用于更改求解器的预设项.  要修改当您更改求解器时 Optimization 工具对选项的处理方式,请选择 File > Preferences,这会打开如下所示的 Preferences 对话框。

默认值 Reset options to defaults 会放弃您先前在 optimtool 中指定的任何选项。在此选项下,您可以选择选项 Prompt before resetting options to defaults

您也可以选择 Keep current options if possible 以保留您修改的值。对新选择的求解器无效的更改选项将被保留,但不会被使用,而与新选择的求解器相关的有效选项将会用于新求解器。此选择允许您尝试用不同的求解器来求解您的问题,而不会丢失您的选项。

指定特定选项

绘图函数

您可以选择一个绘图函数来轻松绘制算法执行过程中的各个进度指标值。每个所选绘图函数会在图窗窗口中绘制一个单独的轴。可使用 Run solver and view results 窗口中的 Stop 按钮来中断正在运行的求解器(如果此选项对所选求解器可用)。您可以从 Optimization 工具中选择预定义的绘图函数,也可以选择 Custom function 来编写您自己的绘图函数。与所选求解器无关的绘图函数呈灰色显示。下面列出了可用的绘图函数:

  • Current point - 选择此绘图函数可显示当前迭代中点的条形图。

  • Function count - 选择此绘图函数可绘制每次迭代的函数计算次数。

  • Function value - 选择此绘图函数可绘制每次迭代的函数值。

  • Norm of residuals - 选择此绘图函数可显示当前迭代中当前残差范数的条形图。

  • Max constraint - 选择此绘图函数可绘制每次迭代中的最大约束违反度值。

  • Current step - 选择此绘图函数可绘制每次迭代的算法步长大小。

  • First order optimality - 选择此绘图函数可绘制每次迭代中求解器违反最优性条件的情况。

  • Custom function - 以函数句柄形式输入您自己的绘图函数。要提供多个绘图函数,请使用元胞数组,例如,键入:

    {@plotfcn,@plotfcn2}
    使用与输出函数相同的语法编写自定义绘图函数。有关信息,请参阅Output Function Syntax

上图显示了对默认 “fmincon” 求解器可用的绘图函数。

输出函数

Output function 是算法在每次迭代中调用的函数或函数集合。通过输出函数,您可以观察优化量,如函数值、梯度值和当前迭代。可以不指定输出函数,使用函数句柄指定单个输出函数,或指定多个输出函数。要提供多个输出函数,请在 Custom function 字段中使用由函数句柄组成的元胞数组,例如,键入:

{@outputfcn,@outputfcn2}

有关编写输出函数的详细信息,请参阅Output Function Syntax

显示到命令行窗口

选择 Level of display 以指定在运行算法时显示的信息量。可从以下选项中进行选择;根据求解器的不同,可能只有部分选项可用:

  • off”(默认值)- 不显示输出。

  • final” - 在运行结束时显示停止的原因。

  • final with detailed message” - 在运行结束时显示停止的详细原因。

  • notify” - 仅当函数未收敛时显示输出。

  • notify with detailed message” - 仅当函数未收敛时显示详细输出。

  • iterative” - 在运行结束时显示算法的每次迭代的信息以及停止的原因。

  • iterative with detailed message” - 在运行结束时显示算法的每次迭代的信息以及停止的详细原因。

有关详细消息的信息,请参阅增强版退出消息

选择 Show diagnostics 会列出问题信息以及已从默认值更改的选项。

下图显示 fmincon 求解器的显示选项。其他一些求解器的选项要少一些。

导入和导出您的工作

导出您的工作

通过 Export to Workspace 对话框,您可以将问题信息作为结构体或对象发送到 MATLAB 工作区,然后可以在命令行窗口中对其进行操作。

要访问下面显示的 Export to Workspace 对话框,请选择 File > Export to Workspace

您可以指定包含以下内容的结果:

  • 问题和选项信息

  • 问题和选项信息,以及求解器停止时的状态(对于大多数求解器为到达的最近一个点,对于遗传算法求解器为求得的最新种群,对于模拟退火算法求解器为找到的最佳点)

  • 在上一次运行开始时随机数生成器 randrandn 的状态(需要选中适用求解器的 Use random states from previous run 框)

  • 仅选项信息

  • 在 Optimization 工具中运行问题的结果

导出的结果包含所有可选信息。例如,lsqcurvefit 的导出结果结构体包含数据 xresnormresidualexitflagoutputlambdajacobian

从 Optimization 工具中将信息导出到 MATLAB 工作区后,您可以在 MATLAB 工作区浏览器中或通过在命令行窗口中键入结构体名称查看数据。要查看结构体或对象中字段的值,请在工作区窗口中双击相应的名称。或者,通过在命令行中输入 exportname.fieldname 查看值。例如,要查看输出结构体中的消息,请输入 output.message。如果结构体包含结构体或对象,您可以在工作区浏览器中再次双击,或在命令行中输入 exportname.name2.fieldname。例如,要查看导出的问题结构体的选项中包含的迭代输出级别,请输入 optimproblem.options.Display

您可以通过在命令行中键入以下内容,对导出的问题运行求解器

solver(problem)
例如,如果您导出了名为 optimproblemfmincon 问题,您可以键入
fmincon(optimproblem)
这将使用在 optimproblem 中保存的选项对问题运行 fmincon。例如,您可以通过键入以下命令对输出进行更多控制:
[x,fval,exitflag] = fmincon(optimproblem)
或者使用任何其他支持的语法。

小心

对于 Optimization Toolbox™ 求解器,Optimization 工具只导入和导出与前面的 TolFun 容差相关的一个选项。它将此选项显示为 Function tolerance,并将其用作 OptimalityTolerance 选项。您无法在 Optimization 工具中导入、导出或更改 FunctionTolerance 选项。

不过,Global Optimization Toolbox 求解器没有 OptimalityTolerance 选项。这些求解器可以在 Optimization 工具中导入、导出和设置 FunctionTolerance 选项。

导入您的工作

无论您是在命令行窗口中保存来自 Optimization Toolbox 函数的选项,还是从 Optimization 工具导出选项或问题和选项,您都可以使用 Optimization 工具来继续处理问题。

您可以通过三种方式将您的选项或问题和选项导入 Optimization 工具:

  • 从命令行窗口调用 optimtool 函数,指定您的选项或问题和选项作为输入,例如,

    optimtool(options)
  • 在 Optimization 工具中选择 File > Import Options

  • 在 Optimization 工具中选择 File > Import Problem

上述方法要求选项或问题和选项出现在 MATLAB 工作区中。

如果您导入的问题是在选中 Include information needed to resume this run 框时生成的,则初始点是上一次运行中生成的最新点。(对于遗传算法求解器,初始种群是上一次运行中生成的最新总体。对于模拟退火求解器,初始点是上一次运行中生成的最佳点。)如果导入的问题是在未选中此框的情况下生成的,则初始点(或种群)是上一次运行的初始点(或种群)。

生成文件

您可能希望生成文件,以便在另一个时间在命令行窗口中继续处理优化问题。您可以运行该文件而无需修改,以重新创建您使用 Optimization 工具生成的结果。您也可以编辑和修改文件,并从命令行窗口运行它。

要将数据从 Optimization 工具导出到文件,请选择 File > Generate Code

生成的文件会采集以下内容:

  • 问题定义,包括求解器、要求最小值的函数的信息、算法设定、约束和起点

  • 具有当前所选选项值的选项

在命令行窗口中运行文件会重现您的问题结果。

虽然您无法将问题结果导出到生成的文件中,但可以将它们保存到 MAT 文件中以与生成的文件结合使用,方法是使用 Export to Workspace 对话框导出结果,然后从命令行窗口将数据保存到 MAT 文件中。

相关主题