Я определил класс для минимизации стандартной функции под названием 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' не может быть вызван
Это моя первая попытка изучения ООП в Python. Что я здесь не так делаю? Я вызываю функцию вместо отправки только данных в minimal (). Что в принципе правильно.