基于问题的优化和方程快速入门
基于问题的设置快速入门
要使用基于问题的方法求解问题,请执行以下步骤。
使用
optimproblem
创建一个优化问题,或使用eqnproblem
创建一个方程求解问题。使用
optimvar
创建优化变量。使用表示目标、约束或方程的优化变量创建表达式。使用圆点表示法将表达式放入问题中,例如
prob.Objective = expression1; probl.Constraints.ineq = ineq1;
对于非线性问题,创建一个初始点
x0
作为结构体,将优化变量的名称作为字段。通过调用
solve
求解问题。
要改进您的设置、提高性能或了解有关基于问题的设置的详细信息,请参阅改进基于问题的组织和性能。
有关 Optimization Toolbox™ 中并行计算的信息,请参阅上一节;有关 Global Optimization Toolbox 中并行计算的信息,请参阅如何在 Global Optimization Toolbox 中使用并行处理 (Global Optimization Toolbox)。
函数
对象
EquationProblem | 非线性方程组 |
OptimizationConstraint | 优化约束 |
OptimizationEquality | 等式和等式约束 |
OptimizationExpression | 关于优化变量的算术或函数表达式 |
OptimizationInequality | 不等式约束 |
OptimizationProblem | 优化问题 |
OptimizationValues | 优化问题的值 (自 R2022a 起) |
OptimizationVariable | 优化变量 |
实时编辑器任务
优化 | 在实时编辑器中优化或求解方程 (自 R2020b 起) |
主题
基于问题的过程
- 基于问题的优化工作流
了解基于问题求解优化问题步骤。 - 基于问题的方程求解工作流
了解基于问题的求解方程步骤。 - 优化表达式
定义目标和约束的表达式。 - 在基于问题的方法中传递额外的参数
在基于问题的方法中传递额外的参数、数据或固定变量。 - 编写基于问题的最小二乘法的目标函数
基于问题的最小二乘法的语法规则。 - 为基于问题的锥编程编写约束
solve
使用coneprog
解问题的要求。 - 检查或修改优化问题
检查或修改问题元素,如变量和约束。 - 检查优化解
评估解及其质量。
局限性
- 变量名称不允许重复
了解如何求解有两个同名优化变量的问题。 - 表达式包含 Inf 或 NaN
包含Inf
或NaN
的优化表达式无法显示,并且可能导致意外结果。
调整和监控求解过程
- 设置基于问题的优化选项
如何在基于问题的方法中设置和更改优化选项。 - 基于问题的优化的输出函数
使用基于问题的方法中的输出函数来记录迭代历史并制作自定义图表。
算法
- 基于问题的优化算法
了解优化函数和对象如何求解优化问题。 - fcn2optimexpr 算法描述
fcn2optimexpr
的工作原理。 - 自动微分背景
了解自动微分的工作原理。 - 优化变量和表达式支持的运算
探索优化变量和表达式支持的数学和索引运算。
Optimization Toolbox 中的并行计算
- Optimization Toolbox 中的并行计算是什么?
使用多个处理器进行优化。 - 在 Optimization Toolbox 中使用并行计算
并行执行梯度估计。 - 使用 Parallel Computing Toolbox 最小化高成本优化问题
示例说明并行计算在两个求解器fmincon
和ga
中的有效性。 - 利用并行计算提高性能
调查加速优化的因素。