首页 > 解决方案 > 是否曾经以反向模式计算偏导数?

问题描述

我知道openMDAO可以在正向或反向模式下计算模型的总导数,但是偏导数总是在正向模式下计算吗?

例如,我有一个具有 400 个输入和 4 个输出的组件。显然,这是反向模式求解的候选对象。如果我只是declare_partials(['*'], ['*'], method=fd),openMDAO 会尝试以反向模式解决这个问题吗?

标签: openmdao

解决方案


反向模式近似的部分将不起作用。当您执行有限差分时,您将输入增加少量,然后调用compute以计算输出。为了在反向模式下执行此操作,您需要能够“向后”运行组件,为其提供输出以产生输入。

所以答案是:OpenMDAO 总是在前向模式下计算近似的部分。

如果你的组件在 fd 中很慢,这可能是声明解析导数的好选择。


推荐阅读