您如何选择使用伴随法计算偏音?
How do you choose to compute partials with the adjoint method?
有具体的选项吗?您可以选择正向或反向模式吗?这无关紧要,因为在后台 openMDAO 使用统一方法计算导数吗?
当您调用 Problem.setup
时,您可以包含参数 mode
,它是“fwd”、'rev' 或 'auto'.
之一
请注意,正向或反向(伴随)导数的选择会影响总导数(优化器和求解器需要的那些)是如何从偏导数(那些由组件提供)。不过,它不会影响 compute_partials
或 linearize
方法中偏导数的提供方式。
选择正确的模式会对性能产生很大的影响,在大多数用例中'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
有具体的选项吗?您可以选择正向或反向模式吗?这无关紧要,因为在后台 openMDAO 使用统一方法计算导数吗?
当您调用 Problem.setup
时,您可以包含参数 mode
,它是“fwd”、'rev' 或 'auto'.
请注意,正向或反向(伴随)导数的选择会影响总导数(优化器和求解器需要的那些)是如何从偏导数(那些由组件提供)。不过,它不会影响 compute_partials
或 linearize
方法中偏导数的提供方式。
选择正确的模式会对性能产生很大的影响,在大多数用例中'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