首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenMDAO SciPy SLSQP中迭代和函数计算的区别

OpenMDAO SciPy SLSQP中迭代和函数计算的区别
EN

Stack Overflow用户
提问于 2017-08-31 14:51:49
回答 1查看 503关注 0票数 3

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

代码语言:javascript
复制
Optimization terminated successfully.    (Exit mode 0)
            Current function value: [-0.07475851]
            Iterations: 44
            Function evaluations: 87
            Gradient evaluations: 44
Optimization Complete

我现在试图对结果进行后置处理,并在迭代过程中检查优化的收敛性。当我通过sqlite字典访问迭代时,通过

代码语言:javascript
复制
db = sqlitedict.SqliteDict('opt_record.sqlite','iterations')
db.keys()

然后我看到了87张唱片。所以这里的“迭代”实际上是指函数的计算。显然,这也可以给出收敛的想法,但是是否有任何方法可以真正地访问迭代信息,要么通过某种输出机制,要么通过反算哪个函数的评估引用迭代的结束?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-31 17:00:37

在SLSQP中,您可以从以下两种方法中获得函数调用:

  1. 迭代,或Major iterations
  2. 线搜索

这两件事都由案件记录器记录下来,而且OpenMDAO没有任何方法来区分它们。不过,您可以过滤掉它们,因为主要的迭代总是在导数计算之前。因此,没有任何衍生工具的案件最有可能来自于线搜索。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45984395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档