基于问题的全局优化设置
创建优化变量,创建具有目标和约束的问题,调用
solve
Global Optimization Toolbox 有两种优化方法:基于问题和基于求解器。请参阅在基于问题的方法和基于解决方案的方法之间做出选择。在基于问题的优化中,您可以创建以符号方式表示的优化变量。然后在这些变量中创建代表目标和约束的表达式。最后,使用 solve
求解问题。有关详细信息,请参阅基于问题的优化工作流。
注意:如果您的非线性函数不是由多项式、有理式和初等函数(如 exp
)组成的,可以使用 fcn2optimexpr
将其转换为优化表达式。请参阅将非线性函数转换为优化表达式和优化变量和表达式支持的运算。
有关基本示例,请参阅比较几种基于问题的全局求解器。
函数
对象
OptimizationConstraint | 优化约束 |
OptimizationEquality | 等式和等式约束 (自 R2019b 起) |
OptimizationExpression | 关于优化变量的算术或函数表达式 |
OptimizationInequality | 不等式约束 (自 R2019b 起) |
OptimizationProblem | 优化问题 |
OptimizationValues | 优化问题的值 (自 R2022a 起) |
OptimizationVariable | 优化变量 |
主题
基于问题的步骤
- 基于问题的优化工作流
了解基于问题求解优化问题步骤。 - 优化表达式
定义目标和约束的表达式。 - 在基于问题的方法中传递额外的参数
在基于问题的方法中传递额外的参数、数据或固定变量。 - 优化变量的命名索引
创建并使用变量的命名索引。 - 检查或修改优化问题
检查或修改问题元素,如变量和约束。 - 检查优化解
评估解及其质量。
全局求解器的步骤
- 在基于问题的方法和基于解决方案的方法之间做出选择
使用 Global Optimization Toolbox 求解器探索基于问题和基于求解器的优化的考虑因素。 - Global Optimization Toolbox 默认求解器和问题类型
确定您可以在基于问题的方法中解决的问题类型及其相关的默认求解器。 - Global Optimization Toolbox 求解器的初始点
为基于问题的方法中的 Global Optimization Toolbox 求解器指定初始点。 - 基于问题的非线性优化中的整数约束
了解基于问题的优化函数prob2struct
和solve
如何处理整数约束。
设置全局优化选项
- 为 Global Optimization Toolbox 求解器设置基于问题的优化选项
如何设置和更改基于问题的方法中的 Global Optimization Toolbox 的优化选项。 - 使用 varindex 在基于问题的方法中设置选项
要在某些情况下设置选项,请使用varindex
将基于问题的变量映射到基于求解器的变量。 - 模式搜索选项
探索模式搜索的选项。 - 遗传算法选项
探索遗传算法的选项。 - 粒子群选项
探索粒子群的选项。 - 替代优化选项
探索替代优化的选项,包括算法控制、停止条件、命令行显示以及输出和绘图函数。 - 模拟退火选项
探索模拟退火的选项。
基于问题的优化技巧
- 创建有效的优化问题
当问题具有整数约束时获得更快或更准确的解,并在创建问题时避免循环。 - 将优化模型与数据分离
通过将模型与数据分离来创建可重复使用、可扩展的问题。 - 变量名称不允许重复
了解如何求解有两个同名优化变量的问题。 - 使用命名索引变量创建优化的初始点
当问题具有命名索引变量时,使用findindex
函数为solve
创建初始点。 - 表达式包含 Inf 或 NaN
包含Inf
或NaN
的优化表达式无法显示,并且可能导致意外结果。 - 具有串行或并行共同函数的目标和约束,基于问题
当基于问题的方法中的目标和非线性约束函数共享共同计算时,可以节省时间。 - 获取生成函数详细信息
查找由prob2struct
创建的非线性函数中的额外参数的值。 - 基于问题的优化的输出函数
使用基于问题的方法中的输出函数来记录迭代历史并制作自定义图表。
并行计算
- 求解器如何并行计算
了解求解器如何分配并行计算的工作。 - 如何在 Global Optimization Toolbox 中使用并行处理
指示求解器或混合函数使用多个过程。 - 使用 Parallel Computing Toolbox 最小化高成本优化问题
示例说明并行计算在两个求解器fmincon
和ga
中的有效性。 - 利用并行计算提高性能
调查加速优化的因素。
基于问题的算法
- 基于问题的优化算法
了解优化函数和对象如何求解优化问题。 - 优化变量和表达式支持的运算
探索优化变量和表达式支持的数学和索引运算。