二次规划和锥规划
求解具有二次目标和线性约束或锥约束的问题
在开始求解优化问题之前,您必须选择合适的方法:基于问题或基于求解器。有关详细信息,请参阅首先选择基于问题或基于求解器的方法。
对于基于问题的方法,请创建问题变量,然后用这些符号变量表示目标函数和约束。有关基于问题的求解步骤,请参阅基于问题的优化工作流。要求解生成的问题,请使用 solve
。
有关基于求解器的求解步骤,包括定义目标函数和约束,以及选择合适的求解器,请参阅基于求解器的优化问题设置。要求解生成的问题,请使用 quadprog
或 coneprog
。
函数
实时编辑器任务
优化 | 在实时编辑器中优化或求解方程 (自 R2020b 起) |
对象
SecondOrderConeConstraint | 二阶锥约束对象 (自 R2020b 起) |
主题
基于问题的二次规划
- 具有边界约束的二次规划问题:基于问题
说明如何使用不同算法求解具有边界约束的基于问题的二次规划问题。 - 基于问题的大型稀疏二次规划
展示如何使用基于问题的方法求解大型稀疏二次规划。 - 基于问题的有界约束二次规划
展示基于大规模问题的二次规划的示例。 - 基于问题通过二次规划进行投资组合优化
说明关于基本投资组合模型的基于问题的二次规划的示例。 - 使用 Optimization Toolbox 实现投资组合多元化
此示例展示了使用优化函数实现投资组合资产多样化的三种技术。
基于求解器的二次规划
- 有约束约束的二次最小化
具有边界约束和各种选项的二次规划示例。 - 具有多个线性约束的二次规划
这个示例展示了活动集算法在处理具有许多线性约束的问题时的好处。 - 热启动 quadprog
表明热启动在大型二次程序中是有效的。 - 热启动最佳实践
描述如何最好地利用热启动来加速重复解。 - 使用密集、结构化的 Hessian 矩阵进行二次最小化
展示如何在结构化二次程序中节省内存的示例。 - 具有内点算法的大型稀疏二次规划
该示例展示了如何使用稀疏二次矩阵来节省二次程序中的内存。 - 基于求解器的边界约束二次规划
展示基于求解器的大规模二次规划的示例。 - 基于求解器的投资组合优化问题的二次规划
说明关于基本投资组合模型的基于求解器的二次规划的示例。
基于问题的二阶锥规划
- 基于问题的锥规划最小化分段线性质量-弹簧系统的能量
提出一个基于问题的锥规划示例。 - 基于问题的离散化最优轨迹
此示例展示如何使用基于问题的方法求解离散化最佳轨迹问题。 - 比较 coneprog 算法的速度
本节提供使用各种LinearSolver
选项设置的一系列锥规划问题的计时信息。 - 为基于问题的锥编程编写约束
solve
使用coneprog
解问题的要求。
基于求解器的二阶锥规划
- 使用基于求解器的锥规划最小化分段线性质量-弹簧系统的能量
使用锥编程求解机械质量-弹簧问题。 - 将二次约束转换为二阶锥约束
将二次约束转换为coneprog
形式。 - 将二次规划问题转换为二阶锥规划
将二次规划问题转换为二阶锥问题。
代码生成
- quadprog 背景下的代码生成
为二次优化生成 C 代码的前提条件。 - 为 quadprog 生成代码
了解为quadprog
优化求解器生成代码的基础知识。 - Generate Single-Precision quadprog Code
Generate single-precision code for quadratic programming problems. - Code Generation for coneprog Background
Prerequisites to generate C code for cone programming. - Generate Code for coneprog
Provides an example of code generation inconeprog
. - 热启动最佳实践
描述如何最好地利用热启动来加速重复解。 - 实时应用的优化代码生成
探索处理生成代码中的实时需求的技术。
基于问题的算法
- 基于问题的优化算法
了解优化函数和对象如何求解优化问题。 - 为基于问题的锥编程编写约束
solve
使用coneprog
解问题的要求。 - 优化变量和表达式支持的运算
探索优化变量和表达式支持的数学和索引运算。