设置收敛条件scipy.optimize.fmin(及其他)

2024-09-27 07:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个优化任务,其中成本函数评估非常昂贵,有些错误是可以容忍的。我正在使用一些预先打包的scipy方法scipy.optimize公司开始吧。我使用的第一个是fmin,它实现了nelder-mead单纯形算法。在

此函数有两个与收敛相关的参数xtol和ftol,这两个参数(as I understand it)指定了一个收敛条件,如果x或f(参数集和代价)在一次迭代中的变化小于xtol或ftol,则函数返回。在

但是,由于成本函数对我来说太贵了,我还希望能够指定一个成本阈值,如果它找到一个成本低于阈值的点,它将立即返回。在

是否可以为指定此阈值scipy.optimize.fmin?在

另外一个问题:我还没有详细研究过其他很多方法,但是对于那些方法,这个阈值选项似乎也不存在。这是典型的scipy优化方法吗?我尝试贡献这个功能是否有价值?在


Tags: 方法函数参数错误公司阈值scipy成本
1条回答
网友
1楼 · 发布于 2024-09-27 07:21:24

可以停止任何可以表示为x函数的条件的迭代。这里的想法是劫持callback方法并使用异常进行流控制。以下是两种利用这一理念的解决方案:

from scipy.optimize import fmin_bfgs
import numpy as np
f = lambda x: np.linalg.norm(x**2)
x0 = np.random.rand(100)

解决方案1:

^{pr2}$

解决方案2:

^{3}$

相关问题 更多 >

    热门问题