如何让 scipy.minimize 在某个损失阈值以下终止?

计算科学 优化 scipy
2021-12-11 02:29:46

我正在查看scipy.minimize文档,看看是否可以找到一种方法来在损失低于某个截止值时终止优化,但我看不到明显的方法来做到这一点。

回调选项只允许我传递它xk,但我需要传递额外的参数来评估我的损失。

有什么想法可以直接做到这一点吗?

1个回答

所以我继续,只是修改了 scipy optimize.py 源代码来做我想做的事。我认为这不是最佳实践,但是......继续前进。所以我使用了inspect模块来找出对应的函数在哪里。所以对于鲍威尔优化程序,我发现:

def _minimize_powell

在 scipy/optimize/optimize.py 的第 2509 行。然后我转到第 2593 行,在那里我注意到了几个终止条件,我添加了自己的终止条件:

        if fval < 0.1:
        break

现在终止优化并在满足此条件时根据需要返回优化结构。