Python scipy.optimize中的回调不调用第一个值
我在scipy中遇到了一个简单的回调问题 我正在使用optimize.minimize和值(func,x0,callback=callbackFunc)。 回调函数可以工作,但只返回步骤1之后的值Python scipy.optimize中的回调不调用第一个值,python,optimization,callback,scipy,minimize,Python,Optimization,Callback,Scipy,Minimize,我在scipy中遇到了一个简单的回调问题 我正在使用optimize.minimize和值(func,x0,callback=callbackFunc)。 回调函数可以工作,但只返回步骤1之后的值 x0=(240.,220.) Nfeval=0 interim_res optimize.minimize(func, x0, callback=callbackFunc) def callbackFunc(X): global Nfeval, interim_res print('{
x0=(240.,220.)
Nfeval=0
interim_res
optimize.minimize(func, x0, callback=callbackFunc)
def callbackFunc(X):
global Nfeval, interim_res
print('{0:4d} {1: 3.6f} {2: 3.6f}'.format(Nfeval, X[0], X[1]))
Nfeval += 1
interim_res.append([X[0], X[1]])
所以我认为应该从
0 240 220
...
但第一个回报是:
0 173.345 159.56
这是最小化工作的常用方法还是我以某种方式解释了一些错误?回调(强调我的):
在每次迭代之后调用,称为回调(xk),其中xk是当前参数向量
因此,它应该只是最小化工作的方式,必须是第一次迭代后的结果,而不是它开始时的值。如果你想完全确定它是以你想要的值开始的,你可以在每次调用时打印从minimize传递到func的参数。你能给我们看一下函数func,你想找到最优最小值的函数吗?@MishaVacic你可以使用任何函数,例如rosen或sphere函数,它在任何情况下都会发生