我怎样才能提前停止在给定位置进行 OpenMDAO 评估

How can I stop OpenMDAO evaluating at a given location early

我正在使用 OpenMDAO 1.7.3 解决地图上的优化问题。

我的参数是这张地图上的坐标。我做的第一件事是从一个组件中的地图插入此位置的高度。然后在其他组件中进行一些更复杂的计算。

如果 OpenMDAO 选择地图边界之外的位置,我将获得 NaN 的高度。我已经知道,其余部分不会从这个优化步骤中获得额外的信息。如何让 OpenMDAO 在进行更复杂的计算之前尽快进入下一个评估点?

在我的例子中,其他计算(在外部程序中)如果遇到 NaN 甚至会失败,所以我必须在每个组件中调用它们之前检查值并为每个组件分配 NaN 输出。有更好的方法吗?

根据您的设置,您可以在组件内部引发一个错误,该错误将终止 运行。他们您只需更改输入并启动下一个 运行。或者,修改后续代码的包装器,以便如果它看到 NAN,它会跳过 运行ning 并只报告一个易于识别的垃圾编号。