我正在帮助向我提出以下问题的人,我想了解 OpenMDAO 团队的意见。
我正在使用 DOEDriver 对浮动风力涡轮机进行实验设计。我让一个组件在进入模型物理中的无效区域时引发 AnalysisError。它工作正常并且驱动程序继续良好,但有一个问题:当出现错误时,DOE 驱动程序继续下一次迭代,用默认值记录所有输出,此时这些值是上一次成功迭代的值(通过迭代我的意思是遍历整个模型)。这已经是 DOE 研究中的一个问题,因为最后一次迭代的输出被“复制”到新的迭代,并且如果这是 FOWT 的两种设计,则两种设计似乎具有相同的性能。
在 DOE 研究/设计空间扫描中,我可以过滤掉结果以排除这些迭代,但我可以想象,在使用优化驱动程序时这将是一个更大的问题,这将是“误导”。
是否有一种优雅的方法可以将所有输出的值设置为除上一次迭代的值之外的其他值,以防出现分析错误?这可能只与 DOEDriver 的使用相关。
如果模型在有问题的系统上包含非线性求解器,我们过去已经通过在求解器上使用
restart_from_successful
成功地解决了这个问题。
如果不是,我们就必须在驱动程序级别处理。我将尝试为 AnalysisDriver 类的持续开发制作一个示例。