slsqp kullanarak bir fonksiyonun minimum bulmak için scipy en optimize modülü kullanmak çalışıyorum ve ben bazı sorunlarla çalıştırıyorum FORTRAN için. aşağıdaki gibi alıyorum hatadır NedenseOptimizasyon modülünü kullanarak Scipy hatası. Başarısızlık dönüştürme dizi
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
: işlevini çağırarak gerçek kod aşağıda gösterilmiştir İHE'ye neler oldukça emin değil
_slsqp.error: failed in converting 8th argument `g' of _slsqp.slsqp to C/Fortran array
ama koyabilirsiniz Yardım ederse faydalı olabilecek başka bir kod.
Aynı hatayı "scipy.optimize.fmin_slsqp" sürümü yerine alıyor musunuz? –
Bu sürümü kullandığımda tam olarak aynı hata. –
Gerçekten basit bir örnek sizin için çalışıyor mu? Örneğin. 'def costFunction (x): retun x [0] ** 2 + x [1] ** 2' vb. Ayrıca, hangi scipy sürümünü kullanıyorsunuz? –