主要内容

本页采用了机器翻译。点击此处可查看英文原文。

优化探索器

针对一个优化问题,探索多种求解器配置及其解

自 R2026a 起

说明

优化探索器应用程序使用多种求解器配置(求解器、选项和起点)来寻找优化问题的全局解。使用自动模式,您可以反复搜索优化问题的全局解,或寻找解决优化问题的最佳求解器与选项组合。使用手动模式,您可以创建一组求解器、初始条件和选项进行探索。默认情况下,优化探索器会绘图并保存结果。若要进一步探索,您可以在当前会话或之前的会话中运行其他优化操作。

注意

要使用优化探索器,必须先创建一个优化问题。您可以使用 MATLAB® 命令提供一个 OptimizationProblem 对象,或者使用基于问题的优化实时编辑器任务定义一个 OptimizationProblem 对象。您还可以将这些输入作为工作区中的变量,提供给优化求解器(例如 fminconpatternsearch)。提供一个 OptimizationProblem 对象可以向优化探索器提供关于您问题的最全面信息,从而使 App 能够以最高效的方式找到解。

Optimization Explorer display

打开 优化探索器 App

  • MATLAB 工具栏:在 App 选项卡的数学、统计和优化下,点击 App 图标。

  • MATLAB 命令提示符:输入 optimizationExplorer

参数

全部展开

优化参数

当您将问题指定为 OptimizationProblem 对象时,优化探索器拥有最全面的数据,因此能够选择最合适的求解器。

使用基于问题的优化工作流创建一个问题对象。首先调用 optimproblem,然后添加目标函数和约束条件。

或者,使用基于问题的优化实时编辑器任务来创建一个问题对象

当您使用求解器输入来定义问题时,与使用优化变量定义问题相比,优化探索器所掌握的数据较少,因此解过程的效率可能会降低。以下链接列出了各类求解器及其语法:

在命令行中创建求解器输入。典型的输入包括:

  • 目标函数 - 创建一个函数句柄,例如 @fun。请参阅编写标量目标函数

  • 非线性约束函数 - 创建一个函数句柄,例如 @nlcon。请参阅非线性约束

  • 初始点 x0 - 创建一个行向量或其他数组。请参阅 x0

  • 下界 lb 和上界 ub - 创建一个数值向量或数组。请参阅边界约束

  • 线性约束 - 为不等式约束创建数值矩阵 A 和相应的向量 b,为等式约束创建数值矩阵 Aeq 和相应的向量 beq。请参阅线性约束

请根据以下指南为求解器指定初始点。

  • 新会话x0 表示优化变量的个数和形状。

    • 求解器输入 - 对于需要初始点的求解器(例如 fmincon),请将 x0 指定为实数向量或数组。目标函数 fun 必须能够对 fun(x0) 进行计算,并返回一个标量值(对于 lsqnonlin 求解器,则返回一个向量值)。

    • 问题对象 - 由于问题对象中已包含关于变量个数和形状的信息,因此无需使用 x0

  • 手动模式:求解器使用任何指定的起点。

    • 求解器输入(针对单目标问题)- 将 x0 指定为一个数组,其元素个数应与问题变量的个数相等。

    • 求解器输入(适用于多起点或基于种群的目标函数)- 将 x0 指定为一个矩阵,其中每行代表一个点,列数即为问题变量的个数。基于种群的求解器使用多个点来计算目标函数,例如 gaparticleswarm

    • 问题对象(适用于单目标问题)- 将 x0 指定为一个结构体,其字段名称应与问题变量名称一致。例如,如果您的问题包含优化变量 "x""angle",则结构体 x0 必须包含字段 x0.xx0.angle,且这些字段应指定为实数数组。

    • 问题对象(适用于多起点或基于种群的目标函数)- 请将 x0 指定为与单点目标函数相同的结构体,或指定为 OptimizationValues 向量。优化探索器仅使用 OptimizationValues 对象的 Variables 属性,而不使用任何 ObjectiveConstraints 值。

问题属性参数

请说明该优化问题是否为凸问题。

求解器采用特殊技术来优化凸函数,且在凸约束条件下,任何局部最小值都是全局最小值。只有在您确定所面临的问题(包括目标函数和约束条件)是凸问题时,才应选择 Yes

请指定优化问题是否为非平滑问题。

一个非平滑函数具有跳变或折点,导致其在某些点处没有导数。某些求解器需要导数,因此无法处理非平滑函数。仅当您确定目标函数是非平滑函数,或者非线性约束非平滑时,才选择 Yes

指定目标函数或非线性约束是否来自仿真。

仿真通过数值求解微分方程,或使用诸如 Simulink® 之类的复杂代码,来计算目标函数或非线性约束函数。仿真通常成本高昂(耗时),且往往不平滑。

注意

目前,对于使用 Simulink 模型的问题,不支持并行处理。有关解决方法,请参阅使用优化探索器并行优化 Simulink 模型 (Global Optimization Toolbox)

请说明是目标函数的计算耗时,还是非线性约束的计算耗时,抑或两者均耗时。

一个耗时的函数需要大约五秒钟或更长时间才能进行函数计算。某些求解器非常适合处理计算成本较高的函数。当您的目标函数和非线性约束在单个点上的计算通常至少需要五秒钟时,请选择 Yes

选择求解器参数

指定优化探索器的工作模式。

  • Auto 模式会使 App 从多个起点或随机种子开始,反复运行相应的求解器,直到满足某个终止条件(例如您设置的时间限制)。请参阅停止条件

  • Manual 模式会使 App 运行您手动设置的求解器配置。可用的求解器取决于问题类型。有关潜在求解器的列表,请参阅 Solver

请指定以下其中一种作为要使用的求解器:

多起点求解器允许您使用不同的起点,运行同一求解器及相应选项的多个实例。

注意

多起点求解器不会运行 MultiStart (Global Optimization Toolbox) 求解器。相反,它们使用在问题边界内随机选取的起点,多次运行该求解器。优化探索器会生成均匀分布的随机起点,并对无界分量使用 ±1000 的人为边界。

运行参数

指定是使用并行处理 (true) 还是串行处理 (false)。要并行运行,必须安装 Parallel Computing Toolbox™。

在并行处理时,App 通常为每个并行工作单元分配一个配置,同时处理多个配置。并行处理通常比串行处理更快。

注意

目前,对于使用 Simulink 模型的问题,不支持并行处理。有关解决方法,请参阅使用优化探索器并行优化 Simulink 模型 (Global Optimization Toolbox)

指定如何启动优化探索器。该参数的效果取决于 Mode 的设置。

  • Auto 模式 - 当您选择 RunRun next 时,App 会选择求解器配置并运行,直到满足停止条件为止。

  • Manual 模式 - 当您选择 Run 时,App 将执行调度好的配置。当您选择 Run next 时,App 仅执行下一个已安排的配置。您可以在求解器配置面板中查看已安排的配置。

审查结果参数

显示目标函数值与求解器运行时间的散点图(默认图)。

  • 时间轴采用对数缩放。目标函数轴未经过缩放(线性)。

  • 要查看绘图中某一点的详细信息,请点击该点以显示数据提示。再次点击该点以隐藏数据提示。

  • 显示效果会受到过滤器和排行榜设置的影响。

显示解的平行坐标绘图,类似于 parallelplot。当绘图中各坐标系的比例尺不同时,若要更方便地查看结果,请选择重新缩放值,使每个坐标值都位于 [0,1] 区间内。

  • 图中绘制的点和线根据目标函数的值进行着色,具体颜色参照附带的色标。

  • 要查看已绘图解的详细信息,请点击一个点以激活数据提示。再次点击该点以隐藏数据提示。

  • 显示效果会受到过滤器和排行榜设置的影响。

根据解点的维度数,显示解聚类的散点图或 t-SNE 图。对于一维或二维的解,App 会显示一个 scatter 绘图。对于三维或更高维度的解,App 会显示由 tsne (Statistics and Machine Learning Toolbox) 返回的解聚类 t-SNE 绘图。

  • 图中标记的颜色由目标函数值决定,具体颜色如附带的色标所示。

  • 要查看已绘图解的详细信息,请点击一个点以激活数据提示。再次点击该点以隐藏数据提示。

  • 显示效果会受到过滤器和排行榜设置的影响。

针对每个解,显示这些量在五个坐标区上的解的蜘蛛图:

  • 目标值 - 目标函数值

  • 运行时间(秒) - 运行时间(秒)

  • 约束违反值 - 不可行性(最大约束违反值)

  • 函数计算次数 - 函数计算次数

  • 最优性 - 一阶最优性测度(仅适用于 Optimization Toolbox™ 求解器)

请注意以下事项:

  • 图中绘制的点和线根据目标函数的值进行着色,具体颜色参照附带的色标。

  • 要查看已绘图解的详细信息,请点击一个点以激活数据提示。再次点击该点以隐藏数据提示。

  • 显示效果会受到过滤器和排行榜设置的影响。

根据求解器算法,显示目标函数值的箱线图,该图由 boxchart 返回。

  • 要查看绘图解的详细信息,请将光标悬停在感兴趣的点上。点击该点,使数据提示框保持显示。将鼠标悬停在其他兴趣点上或点击它们,即可同时显示这些兴趣点。点击黑色锚点以隐藏数据提示。

  • 显示效果会受到过滤器和排行榜设置的影响。

切换结果过滤器面板的显示状态。此面板中的选项可让您过滤图和结果表中显示的结果,具体包括:

  • 精选求解器

  • 所选状态(已完成、运行时间超时或已停止)

  • 运行时间、目标值或约束违反值的结果在指定范围内

结果过滤器面板显示当前可见的结果数量和结果总数。

Showing 257 of 273 results

结果表显示了相同的信息。要清除过滤器,请点击 Reset and show all results 按钮。

按目标值排序,显示排名前列的结果。排行榜最多显示 10 条结果。要取消排行榜,请点击 Reset and show all results 按钮。

当其他过滤器处于激活状态时,排行榜将不可用。

导出参数

指定如何将结果导出到工作区。

  • Export Results Table 将当前过滤后的结果导出为一张表。

  • Export Function 导出一个函数,该函数可重现结果表中所选行中的结果。要运行此函数,通常需要将原始优化问题作为输入,或者提供最初用于创建该会话的求解器输入参数。如果您使用了求解器输入,则导出的函数要求您传入所有求解器输入,即使其中有些并未被使用。对于导出函数中每个未使用的输入,传递空括号 ([])。

编程用途

optimizationExplorer 打开优化探索器,或者如果该 App 已打开,则将其置于前台。

optimizationExplorer(folder) 打开优化探索器,并加载之前保存在 folder 中的会话。folder 参量(指定为字符向量或字符串标量)必须包含优化探索器会话文件夹的名称以及该文件夹的路径(如果该会话文件夹不在当前文件夹中)。

限制

支持的问题类型

优化探索器目前仅能求解非二次的显式非线性问题。具体来说,优化探索器不支持:

  • 线性规划问题

  • 二次规划问题

  • 圆锥规划问题

  • 多目标问题

  • 混合整数线性规划问题

线性规划、凸二次规划和锥规划问题都有唯一的最优目标函数值,因此优化探索器并非解决这些问题的合适工具。对于线性规划问题,linprog sensitivity 的输出结果比优化探索器提供了更多关于更改问题参数所产生影响的信息。

会话文件夹未受保护

当您使用保存另存为保存优化探索器会话时,生成的文件夹不受修改保护。如果会话文件夹中的任何文件发生了更改(无论是文件名还是内容),您可能就无法重新打开该会话了。换句话说,若要使用会话文件夹重新启动优化探索器会话,请勿更改该文件夹中的任何内容。

提示

  • 作为最佳做法,在优化探索器中运行求解器之前,请先对您的问题运行一次求解器。此步骤可确保求解器能够无错误地运行您的问题。

  • 当您运行其他求解器配置时,App 会保留当前结果,并将新结果添加到结果表中并绘图。

  • 在运行过程中,显示图和过滤结果的选项均处于可用状态,工具栏上的停止按钮也是如此。不过,这些选项的效果可能看起来有些滞后,因为它们只有在求解器迭代完成后才会生效。

  • 要查看结果表中某个解的值,请点击该表中的条目。

    Double-click the entry to see the value.

  • 要查看结果表中某条目的详细信息,请点击表右侧的三个垂直点,然后选择显示详细信息

    Show details.

  • 当目标函数或非线性约束函数返回梯度信息或采用向量化方式进行计算时,为提高计算效率,请使用求解器输入配合高级设置来构建问题。

    Select problem inputs in new session.

    Advanced settings allow gradient and vectorized computations.

    目前,fminconfminunclsqnonlin 可以使用梯度信息,而 gaparticleswarmpatternsearchsurrogateopt 可以以向量化方式运行。

算法

全部展开

版本历史记录

在 R2026a 中推出

另请参阅

| | | | (Global Optimization Toolbox) | | (Global Optimization Toolbox) | (Global Optimization Toolbox) | (Global Optimization Toolbox) | (Global Optimization Toolbox)