문제

사용 기능을 최소화하려는 일부 코드를 상속했습니다. scipy.optimize.minimize. 나는 일부 입력을 이해하는 데 어려움을 겪고 있습니다. fun 그리고 jac 논쟁

최소화하려는 호출은 다음과 같습니다.

result = minimize(func, jac=jac_func, args=(D_neg, D, C), method = 'TNC' ...other arguments)

func 다음과 같습니다.

def func(G, D_neg, D, C):
#do stuff

jac_func 다음 구조가 있습니다.

def jac_func(G, D_neg, D, C):
#do stuff

내가 이해하지 못하는 것은 어디에 있습니다 G 입력 func 그리고 jac_func 오고 있습니다. 그것은 어떻게 든 지정되어 있습니다 minimize 기능 또는 사실에 의해 method 로 지정됩니다 TNC? 이 최적화 기능의 구조에 대한 연구를 시도했지만 필요한 답을 찾는 데 어려움이 있습니다. 모든 도움은 대단히 감사합니다

도움이 되었습니까?

해결책

짧은 대답은 그 것입니다 G 최소화 프로세스의 일부로 Optimizer에 의해 유지되는 반면 (D_neg, D, and C) 인수는 as-is에서 전달됩니다 args 튜플.

기본적으로, scipy.optimize.minimize 기능을 취합니다 fun(x) 그것은 하나의 주장을 받아들입니다 x (배열 등 일 수 있음) 스칼라를 반환합니다. scipy.optimize.minimize 그런 다음 인수 값을 찾습니다 xp 그렇게 fun(xp) 보다 적습니다 fun(x) 다른 값의 경우 x. Optimizer는 값을 만드는 책임이 있습니다 x 그리고 그들을 전달합니다 fun 평가를 위해.

그러나 당신이 함수가 있다면 어떨까요? fun(x, y) 추가 매개 변수가 있습니다 y 그것은 별도로 전달되어야합니다 (그러나 최적화의 목적으로 상수로 간주됩니다)? 이것이 바로 args 튜플을위한 것입니다. 그만큼 선적 서류 비치 Args 튜플이 어떻게 사용되는지 설명하려고하지만 구문 분석하기가 조금 어려울 수 있습니다.

Args : 튜플, 선택 사항

추가 인수는 객관적인 기능과 그 파생 상품 (Jacobian, Hessian)으로 전달되었습니다.

효과적으로, scipy.optimize.minimize 있는 모든 것을 통과합니다 args 논쟁의 나머지 부분으로 fun, 별표 인수 표기법 사용 : 그 기능은 다음과 같이 호출됩니다. fun(x, *args) 최적화 중. 그만큼 x 부분은 최적화에 의해 전달됩니다. args 튜플은 나머지 인수로 주어집니다.

따라서 코드에서 G 가능한 값을 평가하면서 최적화에 의해 요소가 유지됩니다. G, 그리고 (D_neg, D, C) 튜플은 AS-IS로 전달됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top