选择基于问题的方法还是基于解决者的方法
使用一个全局优化工具箱求解器,用于优化非光滑函数,搜索全局解,或解决多目标问题。使用基于问题的方法以更简单的方式设置和解决问题。
具体问题具体分析的特点
优势 | 限制 |
---|---|
更容易设置和调试 | 没有方程问题 |
在同一个问题上运行不同的求解器更容易 | 无自定义数据类型 |
自动获得适当的解算器 | 没有检查点文件surrogateopt |
自动加速问题的解决,其中目标和非线性约束是在相同的耗时函数中计算的(通常是模拟) | 没有向量化 |
您必须转换与基于求解器的方法相关的选项的变量 |
优点:
更容易设置和调试。在基于问题的方法中,您使用符号风格的变量来创建优化表达式和约束。看到具体问题具体分析的优化设置.在基于求解器的方法中,必须将所有变量放入一个向量中,这可能会很尴尬,特别是对于维度较大或不同的变量。
在同一个问题上运行不同的求解器更容易。一些求解器有不同的调用语法。例如,中非线性约束的语法
surrogateopt
与所有其他求解器中的语法不同。用两者来运行一个问题surrogateopt
另一个求解器在基于求解器的方法中,你必须创建目标函数的不同版本。相比之下,基于问题的方法负责翻译语法,因此只需更改求解器名称,可能还需要更改一些选项。自动获得适当的解算器。的
解决
函数会自动选择一个能够处理目标和约束条件的求解器。在基于求解器的方法中,必须选择合适的求解器。自动加速问题的解决,其中目标和非线性约束在相同的耗时函数中计算(通常是模拟)。通常,模拟或ODE求解器在同一个函数中计算目标约束和非线性约束。将耗时的函数转换为优化表达式时使用
fcn2optimexpr
时,可通过设置“ReuseEvaluation”
参数真正的
.此设置使求解器在评估目标和非线性约束时避免重新计算耗时的函数。在基于求解器的方法中实现这种时间节省可能需要额外的编程,如示例所示同一函数中的目标约束与非线性约束.
限制:
没有方程的问题。您不能使用全局优化工具箱求解型方程问题的求解器
EquationProblem
.然而,您可以通过指定零目标函数和求解器所接受的任何约束来解决可行性问题。示例请参见用基于问题的代理选项解决可行性问题.无自定义数据类型。使用自定义数据类型
遗传算法
或simulannealbnd
,您必须使用基于求解器的方法。有关示例,请参见使用遗传算法的自定义数据类型优化而且使用自定义数据类型的模拟退火进行多处理器调度.没有检查点文件
surrogateopt
.中的检查点文件使用基于求解器的方法surrogateopt
.有关详细信息,请参见使用检查点文件.没有向量化(见使用向量化).如果您的目标函数和任何非线性约束函数都是以向量化的方式编写的,那么您必须使用基于求解器的工作流来获得向量化的好处。如果你设置
UseVectorized
选项在基于问题的方法中,您得到的是警告,而不是性能改进。您必须转换与基于求解器的方法相关的选项的变量。例如,自定义输出函数使用基于求解器的语法。使用
varindex
将基于问题的变量转换为基于求解器的索引。示例请参见在基于问题的方法中使用varindex设置选项.