Optimization Toolbox

主要特性

使用混合整数线性规划问题确定从仓库和厂房到供应销售地点的最佳路线
使用混合整数线性规划问题确定从仓库和厂房到供应销售地点的最佳路线。

定义和求解优化问题

定义优化问题

使用优化技术寻找给出可能的最佳结果的一组设计参数。在优化问题中有两个关键要素:

目标函数计算要最小化或最大化的所需数量。可以添加约束条件,限制设计参数的 可能值。

使用优化进行数学建模,第 1 部分
将问题描述转换为可以使用优化求解的数学规划(使用蒸汽发电厂示例)。

使用优化进行数学建模,第 2 部分
使用 Optimization Toolbox™ 求解器求解线性规划(使用蒸汽发电厂示例)。

使用 Optimization 应用程序

您可以通过编程或使用 Optimization 应用程序访问 Optimization Toolbox 函数和求解 器选项。

Optimization 应用程序简化了常用优化任务。使用该工具可以:

  • 选择求解器并定义优化问题
  • 设置,并检查优化选项及其对应所选求解器的默认值。
  • 运行问题并使中间结果和最终结果可视化。
  • 在可选快速参考窗口中查看特定于求解器的文档。
  • MATLAB® 工作区与 Optimization 应用程序之间导入和导出问题的定义、算法选项和结果。
  • 自动生成 MATLAB 代码,以抓取工作和自动执行任务。
  • 访问 Global Optimization Toolbox 求解器

优化工具入门
设置和运行优化问题并使中间结果和最终结果可视化。

选择求解器

Optimization Toolbox 包含对不同类型目标和约束的求解器。Optimization Decision Table 帮您选择问题的最佳求解器。

设置选项

求解器选项使您能调节或调整优化进程和可视化求解器进程。设置选项可通过编程进行或使用 Optimization 应用程序进行。 

Setting Options for Optimizations
Set options with optimoptions in Optimization Toolbox™ to tune solvers and monitor optimization progress.

非线性优化

Optimization Toolbox 提供用于求解 MATLAB 中的非线性规划问题的应用广泛的优化算法。 该工具箱包含用于无约束和有约束非线性优化的求解器和用于最小二乘优化的求解器。

无约束非线性优化

Optimization Toolbox 使用三种算法求解无约束非线性最小化问题:

  • 拟牛顿算法使用二次和三次线搜索法并结合 Broyden-Fletcher-Goldfarb-Shanno (BFGS) 公式来更新海赛矩阵的近似值。
  • Nelder-Mead 算法(或下坡单纯形)是只使用函数值(不要求导数)的直接搜索算法,可用于处理非平滑目标函数。Global Optimization Toolbox 为非线性优化提供了更多的非求导优化算法。
  • 信赖域算法用于无约束非线性问题,特别适用于有稀疏性或其它结构的大规模问题。
Unconstrained nonlinear programming used to search an engine performance map for peak efficiency.
用于在发动机性能图中搜索峰值效率的无约束非线性优化。

约束非线性优化

约束非线性优化问题由线性或非线性目标函数构成,并可能受到线性和非线性约束。Optimization Toolbox 使用四种算法求解这些问题:

  • 内点算法用于常规非线性优化。它特别适用于具有稀疏性或其它结构的大规模问题,并且可容许用户自定义的目标和约束函数评估失败情形。它基于障碍函数,且在优化运行过程中可选择保持所有迭代对于边界严格可行。
  • SQP 算法用于常规非线性优化。它在所有迭代中均遵守边界,并且可容许用户定义的目标和约束函数评估失败情形。
  • 动态序列算法用于常规非线性优化。
  • 信赖域反射算法仅用于边界约束问题或线性等式。它特别适用于大规模问题。

内点和信赖域反射算法使您可以用不同的方法来评估海赛矩阵。

对于内点算法,可以使用以下方法评估海赛矩阵:

  • BFGS(稠密)
  • 有限内存 BFGS(用于大规模问题)
  • 海赛-乘函数
  • 实际海赛矩阵(稀疏或稠密)
  • 有限梯度差法,但不要求预先知道稀疏性结构。

对于信赖域反射算法,可以使用:

  • 有限梯度差,稀疏性结构的海赛矩阵
  • 实际海赛矩阵(稀疏或稠密)
  • 海赛-乘函数

此外,内点和信赖域反射算法可用于在函数中计算海赛乘向量的乘积而无需明确形成海赛矩阵。

Constrained nonlinear programming used to design an optimal suspension system.
用于设计最佳悬架系统的约束非线性优化。

线性规划和二次规划

Optimization Toolbox 可求解大规模线性和二次规划问题。

线性规划

线性规划问题涉及最小化或最大化受到线性等式和不等式约束的线性目标函数。线性规划用于变量之间关系可线性表示的财务、能源、运营研究及其他应用领域。

Optimization Toolbox 包含用于解决线性规划问题的三种算法:

  • 单纯形算法是一种系统规划,用于生成并测试线性规划的候选顶点解。单纯形算法是进行线性规划的最常用算法。
  • 内点算法基于用来求解线性规划问题的原始-对偶预估-校正算法。内点法尤其适合于具有特殊结构或可通过稀疏性矩阵定义的大规模问题。
  • 动态序列算法最小化动态序列(局部动态的约束子序列)每次迭代的目标值,直至获得解为止。
在一家蒸汽发电厂的设计中使用的线性规划。
在一家蒸汽发电厂的设计中使用的线性规划。

二次规划

二次规划问题涉及对受到边界、线性等式和不等式约束的多元二次函数的最小化。二次规划用于财务中投资组合优化、发电厂发电优化、工程中设计优化及其他应用领域。

Optimization Toolbox 包含三种用于求解二次规划的算法:

  • 内点凸包算法求解具有任何约束组合的凸包问题。
  • 信赖域反射算法求解边界约束问题或线性等式约束问题。
  • 动态序列算法求解具有任意约束组合的问题。

Optimization in MATLAB: An Introduction to Quadratic Programming
In this webinar, you will learn how MATLAB can be used to solve optimization problems using an example quadratic optimization problem and the symbolic math tools in MATLAB.

内点凸包和信赖域反射算法都是大规模的,这表示两种算法都可以处理大型稀疏问题。 而且,内点凸包算法具有优化的内部线性代数例程和一个新的预求解模块,该模块可以改进速度、数值稳定性以及不可行性的检测。

为三种共同基金执行基于回报的投资风格分析所使用的二次规划
为三种共同基金执行基于回报的投资风格分析所使用的二次规划。

混合整数线性规划

混合整型线性规划扩展了线性规划问题,增加了最优解中部分或全部变量必须是整 数的约束。

对于一些优化问题,变量不应取分数值。例如,如果一个变量代表要认购的股票数量, 则只应取整数值。同样,如果一个变量代表发电机的开/关状态,则只应取二进制值 (0 或 1)。混合整型线性规划问题通过增加了这些变量在最优解中只应取整型或整数的约束,从而允许对这种行为进行建模。

MATLAB中的混合整数线性规划
学习如何使用2014a版本中新的混合整数线性规划优化求解。这个新的求解器使您能够求解一些或全部变量都约束为整数值的优化问题。

Optimization Toolbox 使用如下算法求解混合整型线性规划问题:

  • 执行整型规划预处理,紧缩可行区域
  • 应用切割平面紧缩可行区域
  • 使用启发式搜索整型可行解
  • 验证分枝定界算法求解一系列线性规划松驰问题不可能存在更好的可行解
使用整型规划问题确定应进行哪些投资
使用整型规划问题确定应进行哪些投资。

部署

您可以使用 Optimization Toolbox 求解器和 MATLAB Compiler™ 创建能与没有 MATLAB 的用户共享的决策支持工具。可以免版权税向无数量限制的终端用户部署这些独立应 用程序。利用 MATLAB Builder™ 产品,您还可以将 MATLAB 优化算法与其他语言 集成,比如 Java® 和 .NET。

多目标优化

多目标优化是指一组约束下的多个目标函数的最小化。Optimization Toolbox 提供的函数可求解以下两种多目标优化问题的公式:

  • 目标达到问题,涉及减小线性或非线性向量函数的值以达到目标向量中指定的目标值。目标的相对重要性则使用权重向量来描述。目标达到问题也可能受到线性和非线性约束。
  • 极小极大问题涉及使多元函数组的最差情况值最小化,可能受到线性和非线性约束。

Optimization Toolbox 将两种多目标问题都转换为标准的约束优化问题,然后使用动态序列方法对其求解。

Global Optimization Toolbox 为非平滑问题提供了一个额外的多目标求解器。

用于设计低通滤波器的多目标优化。
用于设计低通滤波器的多目标优化。

非线性最小二乘、数据拟合及非线性方程

Optimization Toolbox 可求解线性和非线性最小二乘问题、数据拟合问题和非线性方程。

线性和非线性最小二乘优化

该工具箱使用两种算法来求解有约束线性最小二乘问题:

  • 有效集算法用于求解有边界的问题以及线性不等式或等式。 
  • 信赖域反射用于求解只带有边界约束的大规模问题。

该工具箱使用两种算法来求解非线性最小二乘问题:

  • 信赖域反射算法采用信赖域方法来实现 Levenberg-Marquardt 算法。它用于无约束和有边界约束的问题。
  • Levenberg-Marquardt 算法实现标准的 Levenberg-Marquardt 算法。它用于无约束 问题。
使用非线性最小二乘拟合超越方程。
使用非线性最小二乘拟合超越方程。

数据拟合

该工具箱为数据拟合问题提供专用的界面,在其中需要找出一系列非线性函数中最适合一组数据点的特定函数。该工具箱对数据拟合问题采用的算法与其用于非线性最小二乘问题的算法相同。

使用最小二乘曲线拟合来拟合非线性指数方程。
使用最小二乘曲线拟合来拟合非线性指数方程。

非线性方程求解

Optimization Toolbox 实现折线信赖域算法来求解非线性方程组,其中的方程个数与未知数个数一样多。该工具箱还可以使用信赖域反射算法和 Levenberg-Marquardt 算法来求解此问题。

使用非线性方程求解器来求解 n 维 Rosenbrock 函数。
使用非线性方程求解器来求解 n 维 Rosenbrock 函数。

并行计算和导数

非线性问题的 Optimization Toolbox 求解器使用梯度法最小化或最大化目标。目标函数梯度的有关信息可使用有限差通过求解器估计或由用户向求解器提供。

并行计算

Optimization Toolbox 可以与 Parallel Computing Toolbox 一起使用,对可被并行计算的问题进行求解。通过启用内置的并行计算支持或定义优化问题的自定义并行计算实现,从而使用并行计算来缩短求解时间。

借助 Optimization Toolbox 中的内置并行计算支持,用户在选择有约束非线性优化问题以及多目标的目标达到算法和极小极大问题的求解器时,可加速梯度估计步长计算。

Accelerating time to solution for an electrostatics problem using the built-in support for parallel computing.
使用非线性优化求解器中的内置并行计算支持来加速静电问题的求解。通过指定目标函数 (右中)和约束函数(右下)的 UseParallel 选项(左)来启用该内置功能,并在右上 部显示解。

通过定义优化问题以使用并行计算功能,可以自定义并行计算实现。可将目标函数或约束函数定义为使用并行计算,从而缩短评估目标或约束所需的时间。

Accelerating time to solution for a suspension system design.
通过自定义目标函数(只改变了一行代码,左上),缩短具有不确定性的悬架系统设计 (左下和右下)的求解时间(右上)。

使用并行计算加速优化问题
使用 Parallel Computing Toolbox 更快地求解优化问题。

提供导数

Optimization Toolbox 求解器通过使用有限差估计目标函数的偏导数最小化非线性函数。此外,您还可以定义计算偏导数值的函数,极大地减小导数估计步长的费用。

计算目标函数的偏导数可能是一项乏味的工作。通过使用 Symbolic Math Toolbox™ 以符号表达问题,您可以使用内置函数自动计算目标函数的偏导数。然后可生成 MATLAB 代码,与 Optimization Toolbox 求解器一起使用。

使用符号导数进行优化(技术文章)