我使用SLSQP通过OpenMDAO来解决一个优化问题。优化工作正常;最后的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张唱片。所以这里的“迭代”实际上是指函数的计算。显然,这也可以给出收敛的想法,但是是否有任何方法可以真正地访问迭代信息,要么通过某种输出机制,要么通过反算哪个函数的评估引用迭代的结束?
发布于 2017-08-31 17:00:37
在SLSQP中,您可以从以下两种方法中获得函数调用:
Major iterations这两件事都由案件记录器记录下来,而且OpenMDAO没有任何方法来区分它们。不过,您可以过滤掉它们,因为主要的迭代总是在导数计算之前。因此,没有任何衍生工具的案件最有可能来自于线搜索。
https://stackoverflow.com/questions/45984395
复制相似问题