run_driver() / run_problem() "converged" 反馈

run_driver() / run_problem() "converged" feedback

我的问题有时无法达成共识。我的问题被设置为 Dymos 问题。我正在使用 IPOPT 作为我的优化器。如果我只 运行 解决问题一次,我可以检查 IPOPT.out 的收敛字符串,没关系。

我经常想要 运行 参数扫描,其中我改变边界条件和问题选项。我使用 Ray https://www.ray.io/,一个 python 库,用于 运行ning 并行进程来执行这些操作。我为此关闭了所有文件 I/O,否则多个进程会相互干扰写入文件。

但是,很难知道特定过程/案例是否没有收敛。出于这个原因,实际上拥有 run_problem() return 有关收敛的信息会很有用。它似乎并没有这样做,那么有没有其他方法可以不涉及读取文件来获取收敛信息?

我知道有为 OpenMDAO 设置的整个 DOE 驱动程序系统。然而,学习曲线看起来相当陡峭。我在几个小时内就使用 Ray 进行了并行处理,除了这个问题外,它工作得很好。

如果优化成功,

prob.driver.fail 应该是 False,并且不需要从文件中读取。但是,考虑到优化器的各种成功程度,这可能并不完全准确。例如,solved to acceptable toleranceoptimal solution found 在简单的布尔输出中有点难以捕捉,我们可能应该找到一种更好的方法来报告优化器的成功。