来自梁示例的伴随成本

Adjoint Cost from the Beam Example

人们常说伴随法的计算成本不会随着设计变量数量的增加而增加。但是,增加问题的规模似乎应该对计算产生一些影响。例如,通过增加 ''Beam optimization Using the Adjoint Method'' 示例中输入的元素数量,FEM 矩阵的大小会增加,并且应该有更多相关的计算成本。

那么为什么说伴随成本随着设计变量数量的增加而大致不变呢?这似乎很不协调。

要了解伴随法的计算成本,您需要先了解如何使用线性求解来计算全导数。您应该阅读有关计算解析导数的各种方法的 OpenMDAO theory manual for a short (but still more complete) summary. You can also read the seminal paper非常 简而言之,当您想要计算全导数时,您执行线性求解 (Ax=b),其中 A 矩阵由偏导数组成。

偏导数很便宜并且相对容易计算。它的总数昂贵且难以计算。如果您使用直接法,那么您形成的特定线性系统 (Ax=b) 需要在预先设计变量时求解一次(类似于有限差分)。使用伴随法,您可以求解不同的系统 (A^T x = c),每个 objective/constraint 只需要求解一次。

因此,对于伴随法,您执行的线性求解次数不会随着您更改设计变量的数量而变化。出于这个原因,我们经常说它的成本与设计变量的数量无关。这在某些情况下可能有点不精确,当线性系统的大小随着您更改设计的大小 space 而显着变化时(即,如果您要使 FEM 更大并具有更多独立元素)。在那种情况下,任何一个线性求解的成本都在增加,但线性求解的数量仍然保持不变。

从广义上讲,线性求解的数量是总体计算成本中最重要的因素,因此对于一阶近似,可以合理地说基于伴随方法的成本与设计的大小无关space。