在 check_total_derivatives 中指定未知数
Specifying unknowns in check_total_derivatives
我正在为我在 OpenMDAO 中编写的程序创建一个 Unitest v1.x+。我一直在使用 check_total_derivatives 函数来获取导数并与有限差分进行比较来检查它们。然而,我只关心检查最后六个左右的未知数,但我总共有大约 90 个。是否可以向 check_total_derivatives 函数添加一个选项来指定您希望该函数检查哪些未知数?现在需要很长时间才能完成所有事情。我在我自己的 OpenMDAO 版本中创建了这个功能,但这个程序是为其他用户设计的,除非它是内置的,否则不会有这个功能。
我们现在有办法做到这一点。如果您通过在驱动程序上调用 add_constraint
或 add_objective
来指定未知数的任何约束或目标,然后随后调用 check_total_derivatives,它将只计算这些未知数的导数。类似地,如果您使用 add_desvar
指定设计变量,它将仅针对这些输入计算导数。
添加此功能主要是因为您可能想要检查优化器看到的梯度。如果您不进行优化,API 仍然允许您向基本 Driver
添加约束等;这不应该改变执行,但仍然允许您限制 check_total_derivatives.
的范围
请注意,我认为您的请求仍然是一个很好的功能请求 -- 只是想暂时提供一个解决方法。
我正在为我在 OpenMDAO 中编写的程序创建一个 Unitest v1.x+。我一直在使用 check_total_derivatives 函数来获取导数并与有限差分进行比较来检查它们。然而,我只关心检查最后六个左右的未知数,但我总共有大约 90 个。是否可以向 check_total_derivatives 函数添加一个选项来指定您希望该函数检查哪些未知数?现在需要很长时间才能完成所有事情。我在我自己的 OpenMDAO 版本中创建了这个功能,但这个程序是为其他用户设计的,除非它是内置的,否则不会有这个功能。
我们现在有办法做到这一点。如果您通过在驱动程序上调用 add_constraint
或 add_objective
来指定未知数的任何约束或目标,然后随后调用 check_total_derivatives,它将只计算这些未知数的导数。类似地,如果您使用 add_desvar
指定设计变量,它将仅针对这些输入计算导数。
添加此功能主要是因为您可能想要检查优化器看到的梯度。如果您不进行优化,API 仍然允许您向基本 Driver
添加约束等;这不应该改变执行,但仍然允许您限制 check_total_derivatives.
请注意,我认为您的请求仍然是一个很好的功能请求 -- 只是想暂时提供一个解决方法。