더북(TheBook)

만일 여러 변수의 범위를 정한다면 튜플 bnd에 여러 개의 범위 튜플을 넣어야 한다. 이번 예제는 변수가 한 개이므로 하나의 범위 튜플만 담는다(범위 튜플이 하나라고 해도 뒤의 쉼표(,)는 붙여야 한다).

bnd = ( b, )

이제 제약조건을 딕셔너리 { } 형태로 만든다. 'type' 키는 'eq' 또는 'ineq' 중 하나다. 'eq'는 제약식 함수 값이 0과 같다는 의미이고, 'ineq'는 제약식 함수 값이 0과 같지 않다는 의미다. 'fun' 키는 제약식 함수를 값으로 입력한다(종종 함수명 앞뒤로 작은따옴표를 붙여 문자열로 만드는 실수를 하므로 주의한다).

con = { 'type':'ineq', 'fun':constraint }

이제 minimized() 함수를 사용해 최적화를 수행한다.

sol = minimize( objective, x0, method='SLSQP', bounds=bnd, constraints=con )

최적화 결과는 sol 변수에 저장된다. sol에는 여러 가지 결과 정보가 들어가 있는데, 가장 관심이 있는 y 값을 최소화하는 x 값은 sol.x에 있다.

print( sol.x )
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.