Próbujesz użyć modułu optymalizacji scipy, aby znaleźć minimum funkcji za pomocą slsqp i mam pewne problemy. Rzeczywisty kod wywołanie funkcji znajduje się poniżej:Błąd Scipy przy użyciu modułu optymalizacji. Niepowodzenie konwersji tablicy na fortran
def minimizeWebEnergyLost(x, parameters):
"""values = [theta, velocity]"""
firstTerm = lambda values: (x * values[1]**2/2.0)
sqrtTerm = lambda values: np.sqrt((parameters.gravity**2 * x**2)/(4 * values[1]**4 * np.cos(values[0])**4) + 1)
secondTerm = lambda values: (values[1]**4 * np.cos(values[0])**2)/parameters.gravity
arcsinhTerm = lambda values: np.arcsinh((parameters.gravity * x)/(2 * values[1]**2 * np.cos(values[0])**2))
costFunction = lambda values: firstTerm(values)*sqrtTerm(values)+secondTerm(values)*arcsinhTerm(values)
bounds = ((-math.pi/2,math.pi/2),(0,parameters.maxSlingSpeed))
minimum = minimize(costFunction, (pi/4, 20), method="SLSQP", bounds=bounds)
return minimum
Z jakiegoś powodu błędu Dostaję się następująco:
_slsqp.error: failed in converting 8th argument `g' of _slsqp.slsqp to C/Fortran array
niekoniecznie pewny co się dzieje HRE, ale mogę umieścić każdy dodatkowy kod, który może być przydatny, jeśli pomaga.
Czy pojawia się ten sam błąd w wersji 'scipy.optimize.fmin_slsqp'? –
Dokładnie ten sam błąd, gdy używam tej wersji. –
Czy naprawdę prosty przykład działa dla Ciebie? Na przykład. 'def costFunction (x): retun x [0] ** 2 + x [1] ** 2', itd. Jakiej wersji scipy używasz? –