람다 함수로 내 제약 조건을 지정하지 않고 scipy.optimize.minimize 함수를 사용하고 싶습니다. 이것이 가능한가? 표준 예를 들어람다 함수없이 scipy.optimize.minimize 사용
예 :
from scipy.optimize import minimize
def fun(x):
return (x[0] - 1) ** 2 + (x[1] - 2.5)**2.
x = (2, 0)
def c_0(x):
return x[0] - 2. * x[1] + 2.
def c_1(x):
return -x[0] - 2. * x[1] + 6.
def c_2(x):
return -x[0] + 2. * x[1] + 2.
cons = ({'type': 'ineq', 'fun': c_0(x)},
{'type': 'ineq', 'fun': c_1(x)},
{'type': 'ineq', 'fun': c_2(x)})
bnds = ((0, None), (0, None))
res = minimize(fun(x), x, method='SLSQP', bounds=bnds, constraints=cons)
내가 람다 함수를 사용하지 않도록하려는 이유는 내 제약 번호가 아니라면, 그래서 내 문제 (자유도 2 * 번호)에 대해 매우 빠르게 성장이다 내 제약 조건을위한 "람다 (lambda)"팩토리를 만드는 방법을 명시 적으로 작성하면 매우 빨리 지루해집니다.
위의 코드를 반환 :
TypeError: 'float' object is not callable
유의 사항 : fun는 함수입니다. fun (x)는 x에서의 값입니다. – FTP
설명해 주셔서 감사합니다! – user2770149