如果你不声明任何参数会怎样?

openMDAO是否试图通过有限差分来计算所有的参数,或者是什么?

解决方案:

如果没有声明partials,OpenMDAO将不会计算给定组件的partials。

当您想让OpenMDAO通过有限差分来逼近一个组件的所有参数时,请在您组件的 setup 方法。

self.declare_partials(of='*', wrt='*', method='fd')

这里的通配符可扩展为匹配任何输入或输出名称,所以我们指示OpenMDAO使用有限差分法对每个输入的每个输出部分进行近似。

要想获得更精确的近似,您可以使用复阶法(假设您的底层数学函数与复阶法兼容)。

self.declare_partials(of='*', wrt='*', method='cs')

复杂步法 declare_partials 方法还允许你为partials指定一个默认值。 例如,如果一个组件计算函数。

outputs['z'] = 3*inputs['y']

dzdy,导数是常数,所以不需要通过逼近或在 compute_partials. 相反,我们可以只提供它的默认值在 declare_partials 调用,然后就不去管它了。

self.declare_partials(of='z', wrt='y', val=3.0)

你可以通过实验这里显示的Paraboloid例子来了解优化行为的变化。http:/openmdao.orgtwodocsversionslatestbasic_guidefirst_optimization.html。

其中使用了这里定义的Paraboloid模型。http:/openmdao.orgtwodocsversionslatestbasic_guidefirst_analysis.html。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Azure APIM VNet卡住

2022-5-13 6:00:07

解决方案

测试并返回只有当被一个范围整除的数字。

2022-5-13 6:00:14

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索