gpt4 book ai didi

python - Scipy最小化错误: 'numpy.float64' object is not callable

转载 作者:行者123 更新时间:2023-11-30 22:00:13 28 4
gpt4 key购买 nike

我定义了一个类来最小化一个名为rosen的标准函数,为了最小化rosen, scipy.minimize 函数需要重复调​​用 rosen 来最小化它。

from scipy.optimize import minimize
import numpy as np


class LocalMultivariateOptimization:

def __init__(self, initial_guess_parameters, xtol, method):
self.xtol = xtol
self.method = method
self.x = initial_guess_parameters

def minimize(self):
res = minimize(self.rosen(self.x), self.x, method=self.method, options={'xtol': self.xtol, 'disp': True})

def rosen(self, x):
return sum(100.0 * (x[1:] - x[:-1] ** 2.0) ** 2.0 + (1 - x[:-1]) ** 2.0)


args0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
xtol = 1e-8
method = 'nelder-mead'

LocalMultivariateOptimizationObject = LocalMultivariateOptimization(args0, xtol, method)
LocalMultivariateOptimizationObject.minimize()

结果

TypeError: 'numpy.float64' object is not callable

这是我第一次尝试使用 Python 进行 OOP 学习。我在这里做错了什么?我正在调用该函数,而不是仅发送最小化()中的数据。这基本上是正确的。

最佳答案

first parameter至:

scipy.optimize.minimize()

是一个可调用。这基本上意味着您需要传递一个可由优化代码调用的函数或方法。然而你通过了:

self.rosen(self.x)

它已经被调用,而你需要:

self.rosen

此外,您的 minimize() 方法不会返回任何内容,应该看起来更像:

def minimize(self):
return minimize(self.rosen, self.x, method=self.method,
options={'xtol': self.xtol, 'disp': True})

关于python - Scipy最小化错误: 'numpy.float64' object is not callable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380352/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com