Python scipy.optimize中的回调不调用第一个值

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('{

我在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('{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函数,它在任何情况下都会发生