主要特性

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


定义和求解优化问题

使用优化技术寻找给出可能的最佳结果的一组设计参数或决策。优化问题是设计或决策问题的一个模型。您可以将设计参数或决策建模为优化参数。优化问题的其他组成部分包括目标函数和约束条件(如果适用)。目标函数计算要最小化或最大化的所需数量。约束条件限制优化变量的可能取值。

最小二乘问题和非线性方程属于优化问题,是因为它们可以通过最小化平方和来求解。

将问题描述转换为可以使用优化求解的数学规划(使用蒸汽发电厂示例)。

基于问题的优化建模

利用通过优化变量构建表达式的基于问题的工作流程来定义您的目标和约束条件。此方法可用于线性和混合整数线性优化问题。

使用 Optimization Toolbox 求解器基于问题导向性的求解线性规划(使用蒸汽发电厂示例)。

使用基于问题的建模确定最优发电计划。


基于求解器的优化建模

使用基于求解器的工作流程定义您的目标和约束条件。您可以使用函数或矩阵,其中含有您选择的求解器需要的优化变量。此方法可用于 Optimization Toolbox 中的所有求解器。

使用 Optimization Toolbox™ 求解器求解线性规划(使用蒸汽发电厂示例)。

使用基于求解器的建模确定最优投资组合。


选择求解器

Optimization Toolbox 包含对不同类型目标和约束的求解器。在使用基于求解器的方法时,优化决策表可帮助您选择适合您问题的最佳求解器。在使用基于问题的方法时,会自动为您选择适当的求解器。

Optimization Toolbox 提供了范围广泛的函数,使您通过一次函数调用便能解决许多类型的优化问题。您还可以使用这些函数构造更加复杂的优化算法,比如列生成算法,或用于某些算法,在这些算法中优化只是其中的一个步骤,比如机器人的运动规划。

使用列生成算法求解下料问题。


设置选项

求解器选项使您能调节或调整优化进程和可视化求解器进度。

在 Optimization Toolbox 中使用 optimoptions 设置选项,调节求解器和监控优化进度。

设置选项

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

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


提供导数

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


非线性优化

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


无约束非线性优化

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

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

约束非线性优化

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

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

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

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

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

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

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

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

用于设计最佳悬架系统的约束非线性优化。


线性规划和二次规划

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


线性规划

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

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

  • 对偶单纯形算法是一种单纯形算法。单纯形算法是一种系统规划,用于生成并测试线性规划的候选顶点解,是进行线性规划的最常用算法。
  • 内点算法基于用来求解线性规划问题的原始-对偶预估-校正算法。内点法尤其适合于具有特殊结构或可通过稀疏性矩阵定义的大规模问题。

在一家蒸汽发电厂的设计中使用的线性规划。


二次规划

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

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

  • 内点凸包算法求解具有任何约束组合的凸包问题。
  • 信赖域反射算法求解边界约束问题或线性等式约束问题。
本次网络技术交流会通过一个二次优化问题示例和 MATLAB 中的符号运算工具,带您了解如何使用 MATLAB 求解优化问题。

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

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


混合整数线性规划

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

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

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

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

  • 执行整型规划预处理,紧缩可行区域
  • 应用切割平面紧缩可行区域
  • 使用启发式搜索整型可行解
  • 验证分枝定界算法求解一系列线性规划松驰问题不可能存在更好的可行解
开始使用MATLAB®优化工具改进您的设计,以做出更好的商业决策。了解设置和解决优化问题的最佳实践。

多目标优化

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

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

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

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

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


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

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


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

该工具箱包含两种用于求解约束线性最小二乘问题的算法:

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

该工具箱包含两种用于求解非线性最小二乘问题的算法:

  • 信赖域反射算法实现专用于非线性最小二乘问题的信赖域方法。它用于无约束和有边界约束的问题。
  • Levenberg-Marquardt 算法用于无约束问题。

使用非线性最小二乘拟合超越方程。


数据拟合

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

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


非线性方程求解

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

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


并行计算

非线性问题的 Optimization Toolbox 求解器使用梯度法最小化或最大化目标。目标函数梯度的有关信息可使用有限差通过求解器估计或由用户向求解器提供。 通过启用内置的并行计算支持或通过定义优化问题的自定义并行计算实现,从而能够缩短求解时间。

借助 Optimization Toolbox 中的内置并行计算支持,对于一般非线性优化问题、非线性最小二乘和方程、非线性方程组以及多目标问题的求解器,在求解器中可加速梯度估计步长计算。

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

使用 Parallel Computing Toolbox 更快地求解优化问题。

使用非线性优化求解器中的内置并行计算支持来加速静电问题的求解。通过指定目标函数(右上)和约束函数(右下)的 UseParallel 选项(左)来启用该内置功能,并在左侧显示解。