Scipy Optimize SLSQP метод TypeError: _slsqp.slsqp() 6-й аргумент (f) нельзя преобразовать в двойной
Я попытался запустить оптимизацию с использованием метода оптимизации SLSQP Scipy. Но я столкнулся с ошибкой, которая "TypeError: _slsqp.slsqp() 6th argument (f) can't be converted to double
". Мне просто интересно, что может быть причиной ошибки этого типа. Код, соответствующий части оптимизации, показан ниже,
def obj_SLSQP(x):
A,Iz,Iy,J,kz,ky,Zc,Yc,Zg,Yg=x
Sum_squares=0.0
for i in range(0,12):
Sum_squares=Sum_squares+(K_P_modal_diag[i] - K_modal_diag[i])**2
norm=sympy.sqrt(Sum_squares)
return norm
def off_diag_add(x):
K_P_modal_off_diag_sum=0.0
A,Iz,Iy,J,kz,ky,Zc,Yc,Zg,Yg=x
for i in range(0,12):
for j in range(0,12):
if(i==j):
continue
else:
K_P_modal_off_diag_sum=K_P_modal_off_diag_sum+K_P_modal[j,i]+K_P_modal[i,j]
return (K_P_modal_off_diag_sum-off_diagonal_sum)
C_1=lambdify([A,Iz,Iy,J,kz,ky,Zc,Yc,Zg,Yg],K_P_modal_diag[0])
C_2=lambdify([A,Iz,Iy,J,kz,ky,Zc,Yc,Zg,Yg],K_P_modal_diag[1])
cons = ({'type': 'eq', 'fun': off_diag_add},{'type': 'eq', 'fun': lambda x: C_1(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9])-846540},{'type': 'ineq', 'fun': lambda x: C_1(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9])-C_2(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7], x[8], x[9])}) #,{'type': 'ineq', 'fun': lambda x: K_P_modal_diag[1]-K_P_modal_diag[2]},{'type': 'ineq', 'fun': lambda x: K_P_modal_diag[2]-K_P_modal_diag[3]},{'type': 'ineq', 'fun': lambda x: K_P_modal_diag[3]-K_P_modal_diag[4]},{'type': 'ineq', 'fun': lambda x: K_P_modal_diag[4]-K_P_modal_diag[5]},{'type': 'ineq', 'fun': lambda x: K_P_modal_diag[5]-K_P_modal_diag[6]},{'type': 'eq', 'fun': lambda x: K_P_modal_diag[11]-0}
initial_guess_SLSQP=[5.0,0.1,0.1,5.0,0.001,0.001,0.0,0.0,0.0,0.0]
bnds_SLSQP = ((0.01, 10.0),(0.001, 5.0), (0.001, 5.0),(1, 100.0),(0.0001, 2),(0.0001, 2),(0.0, 1.0),(0.0, 1),(0.0, 1),(0.0, 1))
SLSQP_result=optimize.minimize(obj_SLSQP, initial_guess_SLSQP, method='SLSQP', bounds=bnds_SLSQP, constraints=cons)
print(SLSQP_result)
Любая помощь будет оценена.