主要特性

  • 可查找单个或多个全局最优解的全局搜索和多初始点求解器
  • 用于线性、非线性、边界和整数约束的遗传算法,通过定义亲本选配、交叉和变异函数进行自定义
  • 具有 Pareto-front 识别功能的多目标遗传算法,包括线性、非线性和边界约束
  • 用于线性、非线性和边界约束的模式搜索求解器,可通过定义轮询、搜索和其他函数进行自定义
  • 用于边界约束的模拟退火求解器,有定义退火过程、温度计划和接受标准的选项
  • 用于边界约束的粒子群求解器,有定义初始粒子和群行为的选项
采用传统梯度优化算法难以解决非平滑目标函数问题(下)。图中的优化工具(中)采用了 Global Optimization Toolbox 的模式搜索找到最优解。上图显示了函数迭代结果以及网格大小。

解决优化问题

Global Optimization Toolbox 提供了可以从命令行以及从 Optimization Toolbox™ 中的 Optimization 应用程序访问的函数。通过命令行和应用程序均可实现:

  • 选择求解器,定义优化问题
  • 设置和检查优化选项
  • 运行优化问题,查看优化的中间结果和最终结果。
  • 使用 Optimization Toolbox 求解器进一步改善遗传算法、模拟退火和模式搜索的优化结果
  • 从 MATLAB® 工作区导入和导出优化问题和结果
  • 使用 MATLAB 代码生成来实现和重用通过 Optimization 应用程序完成的工作成果

您还可以使用自己的算法和自定义函数来定义求解器。多初始点及全局搜索求解器只能通过命令行调用。

工具箱里内置了各种专用于优化结果显示的绘图函数。这些图示提供了优化过程的实时反馈,供您选择是否需要修改求解器选项或停止求解器。工具箱还为遗传算法和模式搜索算法提供自定义的绘图函数。包含目标函数值、约束违规情况、分数柱状图、谱系、网格大小和函数评估。您可将多幅图显示在一个窗口,或者将指定图形用新窗口打开方便查看,还可添加自己的绘图函数。

使用输出函数,您可将结果写入文件、设定自己的终止条件,以及编写自己的应用程序来运行工具箱求解器。在使用 Optimization 应用程序时,您可以将定义好的优化问题和算法选项导出到 MATLAB 工作区中,保存您的工作成果并在以后重用它,您也可以生成匹配优化设计的MATLAB代码。

您可以在优化运行过程中修改优化选项,实时更新并改善当前优化结果,适用于遗传算法、多目标遗传算法、模拟退火和模式搜索求解器。例如在优化运行过程中,您不需要停止和重启求解器,就可以启用或禁用绘图函数、输出函数和命令行迭代结果显示,是否查看中间结果或查看求解过程。您还可以修改终止条件来调整求解过程,或根据优化过程的实时性能反馈减小迭代次数同时满足特定容差。

探索图片库 (3 图片)


全局搜索和多初始点求解器

全局搜索和多初始点求解器使用梯度法获取局部和全局极小值。这两种求解器都会从多个初始点启动局部求解器(在优化工具箱中),并存储在搜索过程中发现的局部解和全局解。

全局搜索求解器:

  • 使用分散搜索方法算法生成多个初始点
  • 根据目标函数和约束函数的值以及已经发现的局部极小值筛选无效的初始点
  • 运行约束非线性优化求解器以从剩余的初始点中搜索局部极小值

多初始点求解器使用在预定义边界内的均匀分布的初始点或者用户指定的初始点来查找多个局部极小值,也可能会得到一个全局极小值。多初始点求解器从所有初始点运行局部求解器,既可串行运行也可并行运行(使用 Parallel Computing Toolbox™)。使用多初始点求解器,您还可以灵活选择不同的局部非线性求解器。这些局部求解器包括无约束非线性、有约束非线性、非线性最小二乘和非线性最小二乘曲线拟合求解器。

找到 peaks 函数的局部和全局极小值。
找到指数模型的最佳适配参数。

遗传算法求解器

遗传算法模仿生物进化的原则,根据建立的生物繁殖基因组合规则反复一个族群的各个个体,从而解决优化问题。因为遗传算法固有的随机特性,它能提高找到全局解的机率。它可用于求解无约束、有边界约束以及常规的优化问题,而且它不要求函数可微分或连续。

下表显示了 Global Optimization Toolbox 提供的标准遗传算法选项。

步骤 遗传算法选项
创建 均匀、可行
适应度尺度变换 基于等级、比例、顶部(截断)、移位线性
选择 轮盘赌、随机均匀选择 (SUS)、竞赛、均匀、余数
交叉 算术、启发式、中间、分散、单点、两点
变异 自适应可行、高斯、均匀
绘图 最佳适应度、最佳个体、个体间距、群体多样性、个体预期、最大约束、范围、选择指数、停止条件

Global Optimization Toolbox 还可用于指定:

  • 群体大小
  • 优良子辈数量
  • 交叉片段
  • 子群体迁移(采用环形拓扑)
  • 优化问题的边界、线性和非线性约束

您可使用用户定义的函数来自定义这些算法选项,还可以采用多种数据格式来描述问题,例如将变量定义为整数、混合整数、分类型数或复数。

可根据时间、迟延、适应度限制或繁殖辈数来确定算法的终止条件。可将适应度函数向量化以提高执行速度,或并行运算目标函数和约束函数(使用 Parallel Computing Toolbox)。

Use the mixed-integer genetic algorithm to solve an engineering design problem.

多目标遗传算法求解器

多目标优化是指一组约束下的多个目标函数的最小化。多目标遗传算法求解器通过确定 Pareto front 来求解多目标优化问题。Pareto front:一系列均匀分布的独立最优解。此求解器可用于求解平滑或非平滑的优化问题,无论是否带边界和线性约束。多目标遗传算法不要求函数可微分或连续。

下表显示了 Global Optimization Toolbox 提供的标准多目标遗传算法选项。

步骤 多目标遗传算法选项
创建 均匀、可行
适应度尺度变换 基于等级、比例、顶部(截断)、线性定标、移位
选择 竞赛
交叉 算术、启发式、中间、分散、单点、两点
变异 自适应可行、高斯、均匀
绘图 平均 Pareto 距离、平均 Pareto 散布度、个体间距、群体多样性、个体预期、Pareto front、等级柱状图、选择指数、终止条件

Global Optimization Toolbox 还可让你指定:

  • 群体大小
  • 交叉片段
  • Pareto 片段
  • 个体间的距离测量
  • 子群体迁移(采用环形拓扑)
  • 优化问题的线性和边界约束

您可以使用用户定义函数来自定义这些算法选项,还可以采用多种数据格式来描述问题,例如将变量定义为整数、混合整数、分类型数或复数。

可根据时间、适应度限制或繁殖辈数来确定算法的终止条件。还可将适应度函数向量化以提高执行速度,或并行运算目标函数(使用 Parallel Computing Toolbox)。

使用 Optimization 应用程序中定义的多目标遗传算法(上)来识别 Kursawe 函数(下)的包含不连续区域的 Pareto front(中)。

模式搜索求解器

Global Optimization Toolbox 包含三个直接搜索算法:广义模式搜索 (GPS)、生成集搜索 (GSS) 和网格自适应搜索 (MADS)。较传统的优化算法使用梯度或高阶导数的精确或近似信息来搜索最优点,这些算法所用的模式搜索方法采用最小和最大正基模式。模式搜索方法可以处理带非线性、线性和边界约束的优化问题,且不要求函数可微分或连续。

下表显示了全局优化工具箱提供的模式搜索算法选项。您可通过命令行或优化工具更改任意选项。

模式搜索选项 描述
轮询方法 确定如何生成和评估模式中的各点以及每步生成的最大点数。您还可通过控制点的轮询顺序来提高效率。
搜索方法 选择可能比轮询效率更高的搜索步骤选项。您可以选择在模式中或者整个搜索空间内进行搜索。全局搜索方法与遗传算法相似,都可用于计算更优的初始点。
网格 控制搜索模式在迭代过程中的变化方式,以及根据求解问题在各个维度上尺度变化来问题调整网格。可选择初始网格大小、网格细化因子或网格收缩因子。网格加速器会在求解接近极小值时加速收敛。
缓存 用于保存计算量大的目标函数在优化过程中产生的评估点。您可指定模式搜索算法所用的缓存的大小和容差,并在算法运行过程中更改缓存容差,从而提升优化速度和效率。
非线性约束算法设置 指定非线性约束的惩罚因子,以及惩罚因子更新。

使用 Optimization 应用程序的模式搜索算法(上)查找怀特峰(中,下)的顶峰(即全局最优解)。

模拟退火求解器

模拟退火模拟退火过程,使用概率搜索算法来求解优化问题。在退火过程中材料先被加热,然后缓慢降温以减少缺陷,从而尽量减小系统能量。类似的,模拟退火算法在每次迭代中缓慢减小搜索深度来改善当前的极小值。

模拟退火算法接受所有降低目标的新点,但同时也有可能接受升高目标值的新点。通过接受升高目标值的点,算法避免在早期迭代过程中被局部极小值所限,从而能在全局搜寻更好的解。

模拟退火可用于求解无约束或有边界约束的优化问题,且不要求函数可微分或连续。可以通过命令行或 Optimization 应用程序来调用工具箱函数实现下列目的:

  • 使用自适应模拟退火、Boltzmann 退火或快速退火算法来求解问题
  • 创建自定义函数来定义退火过程、接受标准、温度计划、图解函数、模拟输出或自定义数据类型
  • 通过指定其它优化方法以预定的间隔运行,或在普通求解器结束时运行,实现混合优化
使用模拟退火来求解在凹陷区域之间存在平区的难题。

并行计算

您可以结合使用 Global Optimization Toolbox 和 Parallel Computing Toolbox ,利用并行运算功能来进行优化计算。使用内置并行计算功能或自定义并行计算,您可以缩短优化问题的求解时间。

内置的并行计算的功能可加速目标函数和约束函数的评估,适用于遗传算法、多目标遗传算法和模式搜索求解器。将多个局部求解器任务分配到多个 MATLAB worker,启用局部求解器中的并行梯度估算配置,都可以加速多初始点求解器运算。

优化换挡规律的 20 个参数,最大程度地提高双离合器变速箱的燃油经济性。全局优化算法和并行计算用于优化的加速。

使用自定义并行计算功能需要明确定义优化问题。你可以定义使用并行运算求解目标函数或约束函数,相应缩短评估目标或约束所需的时间。

找到指数模型的最佳适配参数。