Optimization Toolbox

求解线性、二次、整型及非线性最优化问题

Optimization Toolbox™ 提供了寻找最小化或最大化目标并同时满足约束条件的函数。工具箱中包括了线性规划 (LP)、混合整数线性规划 (MILP)、二次规划 (QP)、非线性规划 (NLP)、约束线性最小二乘法、非线性最小二乘和非线性方程的求解器。可以利用函数和矩阵或通过指定反映底层数学原理的变量表达式来定义您的优化问题。

您可以使用该工具箱求解器寻找连续与离散问题的优化解决方案、执行折衷分析、以及将优化的方法结合到算法和应用程序中。该工具箱能够执行优化设计的任务,包括参数估计、组件选择和参数调优。可用来寻找投资组合优化、资源分配、生产计划与调度等应用中的最优解决方案。

开始:

定义优化问题

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

建模

通过定义优化变量、目标和约束,将问题描述转换为数学形式,以便通过优化技术求解。

基于问题的优化

使用反映数学形式的表达式在 MATLAB 中创建目标和约束。使用优化变量、数学运算符、矩阵运算和变量函数构建。应用自动选择的求解器。

基于求解器的优化

当处于线性状态时,使用函数在 MATLAB 中创建目标和约束;当处于非线性状态时,使用系数矩阵创建目标和约束。使用 MATLAB 矩阵运算、数学运算符和函数构建这些过程并使用相应的求解器。

解决优化问题

应用求解器求解优化问题,确定最优解:生成目标函数最优值(如果有)且符合约束(如果有)的一组优化变量值。

选择求解器

根据优化问题的目标和约束类型,使用非线性、二次、线性、混合整数、最小二乘或多目标求解器求解。在基于问题的方法中,会自动选择求解器。

非线性函数在优化过程中产生的评估点。

设置选项

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

查看并改进结果

查看最优性测量和迭代结果显示,以评估解决方案。使用退出消息中的链接,以了解更多信息。通过提供梯度或使用并行计算估算梯度,提高求解非线性问题的性能。

使用迭代结果显示监控求解器进度。

非线性规划

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

求解器

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

应用

使用非线性优化估算和调整参数、找到最优设计、计算最优轨迹、打造稳健投资组合以及用于变量间存在非线性关系的其他应用形式。

线性规划和二次规划

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

线性规划求解器

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

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

二次规划求解器

应用内点算法或信赖域反射算法求解二次规划。

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

应用

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

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

混合整数线性规划

求解具有线性目标(不仅受线性约束,还受部分或全部变量必须为整数值约束)的优化问题。

求解器

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

应用分枝定界算法。 

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

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

仅此一次游览各城市的最短旅程。

应用

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

调度电价不同的两种发电机。

多目标优化

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

求解器

将问题阐述为目标达到或极小极大。当每个目标均具有可选加权目标值时,使用目标达到。使用极小极大最小化一组目标函数的最差情况值。

使用 fgoalattain 函数扫描目标权重的结果。

应用

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

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

最小二乘和方程求解

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

局部和全局方法比较。

线性最小二乘应用

使用线性最小二乘求解器通过线性模型拟合采集的数据或求解线性方程组,参数受有界线性约束时也不例外。

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

非线性最小二乘应用

使用非线性最小二乘求解器通过非线性模型拟合采集的数据或求解非线性方程组,参数受有界约束时也不例外。

使用环路拟合常微分方程的 Lorenz 系统。

部署

构建基于优化的决策支持和设计工具。

MATLAB Compiler 支持

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

计算最优发电调度方案的应用。

代码生成

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

一个轨迹优化函数的 MATLAB Coder 报告。

最新特性

Optimize Live Editor Task

Interactively create and solve optimization problems

Automatic Differentiation

Solve problems faster and more accurately using automatically computed gradients of objective and constraint functions

Second-Order Cone Programming

Solve convex optimization problems with second-order cone constraints, linear constraints, and a linear objective

Code Generation

Generate C/C++ code to solve systems of nonlinear equations with fsolve (requires MATLAB Coder)

Code Generation

Generate C/C++ code to solve nonlinear least-squares problems with lsqcurvefit or lsqnonlin (requires MATLAB Coder)

See release notes for details on any of these features and corresponding functions.