【发布时间】:2019-03-30 07:02:10
【问题描述】:
我一直在使用 SLSQP 算法来运行一些仅与 ExplicitComponents 相关的 MDO 问题。每个组件的运行时间约为 10 秒和 60-100 个输入变量。大多数输入变量是静态输入变量,在整个优化过程中将保持不变。静态输入变量源自IndepVarComp。 ExplicitComponents 是黑盒子,因此没有关于部分的信息。
我注意到,当在 compute_totals() 中计算雅可比行列式时,分量相对于它们的所有输入值都是线性化的。在compute_approximations() 中,计算所有输入值的有限差分,包括静态输入值。所以,我的问题是:为什么要对这些静态输入变量进行有限差分计算?由于值保持不变,我不确定为什么这些信息会有用?
此外,如果我理解正确,组件会被线性化以获得子雅可比,然后用于计算总雅可比。但是,是否可以直接计算整个组的有限差分而不是线性化每个分量?随着我的组件的运行时间和输入变量的数量,执行每个组件的线性化需要很长时间。然而,优化问题只有 3 个设计变量。因此,如果我可以在整个 MDA 上执行三个有限差分计算来计算总雅可比行列式,那么总运行时间将显着减少。
【问题讨论】: