OpenMDAO v1.x 功能请求:导数检查方法中的有限差分法选项

OpenMDAO v1.x feature request: finite difference method option in derivative check methods

我们发现我们代码的几个组件在使用前向或后向差分时未能通过梯度检查,但在使用更准确的中心差分时通过。为了解决这个问题,我们在我们的代码版本中修改了这些函数的默认值以使用中心差分。

我们要求将导数检查方法使用的有限差分法作为一个选项,以便在其他用户 运行 时测试可以通过。

您应该已经能够通过在 add_param 中为您想要集中差异的变量指定 form 来在单个变量的基础上执行此操作。

self.add_param('x2', 3.0, form = 'central')

或者,您可以通过以下方式为单个组件中的所有参数设置它们:

self.fd_options['form'] = 'central'

check_partial_derivatives 肯定会选择这个。最终 check_total_derivatives 也应该选择它,但是仍然存在一个突出的错误,即当您在连接到单个 IndepVarComp 源的多个目标中指定不同的值时会发生什么 - 它使用哪个 - 它使用它现在找到的第一个。

你也可以这样设置step_typestep_size

虽然您可以通过元数据控制单个变量级别的行为,或通过 FD 选项控制整个组件级别的行为,但通过 kwargs 将特定选项设置为 check_partial_derivs 也是合理的。这是我们可以努力的事情,尽管目前它对我们来说不是超高优先级。