您如何选择使用伴随法计算偏音?

How do you choose to compute partials with the adjoint method?

有具体的选项吗?您可以选择正向或反向模式吗?这无关紧要,因为在后台 openMDAO 使用统一方法计算导数吗?

当您调用 Problem.setup 时,您可以包含参数 mode,它是“fwd”、'rev' 或 'auto'.

之一

请注意,正向或反向(伴随)导数的选择会影响导数(优化器和求解器需要的那些)是如何从偏导数(那些由组件提供)。不过,它不会影响 compute_partialslinearize 方法中偏导数的提供方式。

选择正确的模式会对性能产生很大的影响,在大多数用例中'auto'会根据设计变量的数量和约束的数量+[=47=找出正确的模式].

具有很多约束和很少设计变量(很多行,总雅可比列很少)的问题通常在正向模式下会快得多。

那些约束很少但设计变量很多(行数少,列数多)的反向速度会快得多。

高级双向导数

OpenMDAO 还将尝试找出通过 "coloring" 总雅可比计算总计的最快方法。类比是,在有限差分中,有时您可以同时扰动多个设计变量以加速雅可比矩阵的计算,假设这些变量不会对相同的 constraints/objective.

传统上,如果总雅可比矩阵有一个密集的列,那么它就不能在反向模式下有效地着色(多个约束 "impact" 相同的设计变量)。

同样,密集的行会降低在正向模式下对雅可比着色的效率。

但是,OpenMDAO 可以找出哪些导数可以在正向模式下有效着色,哪些可以在反向模式下着色,使用这两种方法来填充总雅可比矩阵。

您可以在此处阅读有关此功能的更多信息:http://openmdao.org/twodocs/versions/3.0.0/features/core_features/working_with_derivatives/simul_derivs.html