区分OpenMDAO SciPy SLSQP中的迭代和功能评估

时间:2017-08-31 14:51:50

标签: scipy openmdao

我通过OpenMDAO使用SLSQP来解决优化问题。优化工作正常;最后的SLSQP输出显示:

Optimization terminated successfully.    (Exit mode 0)
            Current function value: [-0.07475851]
            Iterations: 44
            Function evaluations: 87
            Gradient evaluations: 44
Optimization Complete

我现在正在尝试对结果进行后处理,并在整个迭代过程中检查优化的收敛性。当我通过sqlite字典通过

访问迭代时
db = sqlitedict.SqliteDict('opt_record.sqlite','iterations')
db.keys()

然后我看到87条记录。所以"迭代"这里真的是指功能评估。显然,这也可以给出收敛的想法,但有没有办法真正访问迭代信息,通过一些输出机制或反向计算哪些函数评估指的是迭代的结束?

1 个答案:

答案 0 :(得分:1)

在SLSQP中,您可以通过以下两种方式之一获取函数调用:

  1. 迭代,或Major iterations
  2. 行搜索
  3. 这两件事都由案例记录器记录下来,OpenMDAO没有办法区分它们。你可以过滤它们,因为主要的迭代总是在衍生计算之前。所以没有任何衍生物的案例最有可能来自线下搜索者。