Optimization Toolbox

求解线性、二次、锥、整数及非线性优化问题

Optimization Toolbox™ 提供各种函数,可用于求最小化或最大化目标且满足约束的参数。该工具箱包含用于线性规划 (LP)、混合整数线性规划 (MILP)、二次规划 (QP)、二阶锥规划 (SOCP)、非线性规划 (NLP)、约束线性最小二乘、非线性最小二乘和非线性方程的求解器。

您可以用函数和矩阵来定义优化问题,也可以通过指定反映底层数学关系的变量表达式来定义。使用目标函数和约束函数自动微分,更快、更准确地求解。

您可以使用该工具箱提供的求解器求连续与离散问题的最优解、执行权衡分析,并将优化方法整合到算法和应用中。该工具箱能够执行设计优化任务,包括参数估计、分量选择和参数调整。它能帮助您在投资组合优化、能源管理和交易以及生产规划等各种应用中求最优解。

开始:

定义优化问题

将设计或决策问题建模为优化问题。将设计参数或决策方案设置为优化变量。使用它们定义要优化的目标函数,并使用约束来限定可能的变量值。

建模

通过定义变量、目标和约束,将问题描述转换为数学表达,从而运用优化方法求解。

基于问题的优化

将目标和约束写作优化变量表达式。对非线性表达式运用自动微分,更快、更稳健地求解。应用自动选择的求解器。

基于求解器的优化

将非线性目标和约束写作函数,将线性目标和约束写作系数矩阵。使用实时编辑器中的“优化”任务以交互方式创建并求解问题,然后生成代码,以便与他人共享或整合到应用。

求解优化问题

应用求解器处理优化问题,确定最优解,即一组优化变量值,可实现目标函数最优值(如有)且满足约束(如有)。

选择求解器

使用基于求解器的方法时,实时编辑器中的“优化”任务可帮助您选择适合该类问题的求解器。在基于问题的方法中,会自动选择求解器。

设置选项

设置优化选项以调整优化过程,例如选择求解器使用的优化算法,或设置终止条件。设置选项以监控并绘制优化求解器进度。

查看并改进结果

查看退出消息、最优性度量和迭代输出,对解进行评估。提高求解器处理非线性问题的性能,可以使用自动微分、直接提供梯度,或使用并行计算估计梯度。

通过迭代输出监控求解器的进度。

非线性规划

求解具有非线性目标或非线性约束的优化问题。

求解器

应用拟牛顿法、信赖域法或 Nelder-Mead 单纯形算法求解无约束问题。应用内点、序列二次规划 (SQP) 或信赖域反射算法求解约束问题。

应用

将非线性优化用于变量间存在非线性关系的各种应用,如估计和调整参数、寻找最优设计、计算最优轨迹、构建稳健投资组合等。

线性、二次和锥规划

求解具有线性或二次目标且具有线性或二阶锥约束的凸优化问题。

线性规划求解器

应用对偶单纯形或内点算法求解线性规划。

线性规划的可行域和最优解。

二次和二阶锥规划求解器

应用内点、活动集或信赖域反射算法来求解二次规划。应用内点法求解二阶锥规划。

二次规划的可行域和最优解。

应用

使用线性规划求解问题,如资源分配、生产规划、配料及投资规划。使用二次和二阶锥规划,求解设计优化、投资组合优化及水电站大坝的控制等问题。

使用二次规划确定最优控制策略。

混合整数线性规划

求解具有线性目标和线性约束、且另有约束规定部分或全部变量必须为整数值的优化问题。

求解器

使用分支定界算法求解混合整数线性规划问题,包含预处理、使用启发式方法生成可行点,以及割平面。

应用分支定界算法。

基于混合整数线性规划的算法

使用混合整数线性规划求解器构建专用算法。

最短行程,每座城市只经过一次。

应用

使用整数变量建模,求解开/关决策、逻辑约束以及其他变量值必须为整数的问题。路由、调度、规划、分配及资本预算问题均为典型应用。

在浮动电价下调度两台发电机。

多目标优化

求解具有多个目标函数和一组约束的优化问题。

求解器

将问题构造为目标达到问题或极小化极大问题。当每个目标均有权重可选的加权目标值时,使用目标达到。需要最小化一组目标函数的最差情形值时,使用极小化极大。

使用 fgoalattain 函数计算帕雷托前沿

应用

当需要对冲突目标做出权衡时,使用多目标优化算法。例如,结构设计中的重量与强度,以及投资组合优化中的风险与回报。

初始和优化滤波器系数的幅值响应。

最小二乘和方程求解

求解非线性最小二乘问题和具有边界约束的非线性方程组。求解具有边界和线性约束的线性最小二乘问题。

求解器

应用 Levenberg-Marquardt、信赖域、活动集或内点算法。

局部和全局方法比较。

线性最小二乘应用

使用线性最小二乘求解器,您可以对采集的数据进行线性模型拟合,或者求解线性方程组,包括参数具有边界和线性约束的情形。

通过求解线性最小二乘问题还原模糊图像。

非线性最小二乘应用

使用非线性最小二乘求解器,您可以对采集的数据进行非线性模型拟合,或者求解非线性方程组,包括参数具有边界约束的情形。

对洛仑兹常微分方程组进行圆周轨迹拟合。

部署

构建基于优化的决策支持和设计工具,与企业系统进行集成,并将优化算法部署到嵌入式系统中。

MATLAB Compiler 支持

使用 MATLAB Compiler™MATLAB Compiler SDK™,可将 MATLAB® 优化模型部署为独立可执行文件、Web App、C++ 共享库、Microsoft® .NET 程序集、Java® 类和 Python® 包。

一款用于计算最优发电调度方案的 App。

代码生成

使用 MATLAB Coder™ 生成可移植且可读的 C 或 C++ 代码,以求解优化问题。为包括嵌入式系统在内的各种硬件编译生成的代码。

MATLAB Coder 轨迹优化函数报告。

最新特性

实时编辑器中的“优化”任务

以交互方式创建和求解优化问题

自动微分

使用自动计算的目标函数和约束函数梯度,更快速更准确地求解问题

二阶锥规划

求解具有二阶锥约束、线性约束和线性目标的凸优化问题

代码生成

生成 C/C++ 代码,以使用 fsolve 求解非线性方程组(需要 MATLAB Coder)

代码生成

生成 C/C++ 代码,以使用 lsqcurvefitlsqnonlin 求解非线性最小二乘问题(需要 MATLAB Coder)

关于这些特性和相应函数的详细信息,请参阅发行说明