Cố gắng sử dụng mô-đun tối ưu hóa của scipy để tìm tối thiểu hàm bằng cách sử dụng slsqp và tôi đang gặp phải một số vấn đề. Mã thực tế gọi hàm được hiển thị dưới đây:Lỗi scipy bằng mô-đun tối ưu hóa. Không chuyển đổi mảng thành 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
Đối với một số lý do lỗi tôi nhận được là như sau:
_slsqp.error: failed in converting 8th argument `g' of _slsqp.slsqp to C/Fortran array
Không khá chắc chắn những gì đang xảy ra HRE, nhưng tôi có thể đưa lên bất kỳ mã nào khác có thể hữu ích nếu nó hữu ích.
Bạn có gặp lỗi tương tự với phiên bản 'scipy.optimize.fmin_slsqp' thay thế không? –
Chính xác lỗi tương tự khi tôi sử dụng phiên bản đó. –
Ví dụ thực sự đơn giản có phù hợp với bạn không? Ví dụ. 'def costFunction (x): retun x [0] ** 2 + x [1] ** 2', v.v. Ngoài ra, bạn đang sử dụng phiên bản scipy nào? –