최적화 옵션 설정하기
옵션을 설정하는 방법
optimset 함수로 options 구조체를 만들어 최적화 파라미터를 지정할 수 있습니다. 그런 다음 options를 최적화 함수에 대한 입력값으로 전달할 수 있습니다. 예를 들어, 다음 구문을 사용하여 fminbnd를 호출하거나
x = fminbnd(fun,x1,x2,options)
다음 구문을 사용하여 fminsearch를 호출할 수 있습니다.
x = fminsearch(fun,x0,options)
그리고, Display 옵션을 'iter'로 설정하여 매 반복 시 알고리즘의 출력값이 표시되도록 할 수 있습니다.
options = optimset('Display','iter');
옵션 표
| 옵션 | 설명 | 솔버 |
|---|---|---|
| 화면에 중간 단계를 표시할지 여부를 지정하는 플래그입니다.
| fminbnd, fminsearch, fzero, lsqnonneg |
| 목적 함수 값이 유효한지 여부를 확인합니다.
| fminbnd, fminsearch, fzero |
| 허용되는 최대 함수 실행 횟수입니다. 디폴트 값은 | fminbnd, fminsearch |
| 허용되는 최대 반복 횟수입니다. 디폴트 값은 | fminbnd, fminsearch |
| 솔버의 반복에 대한 정보를 표시합니다. 디폴트 값은 | fminbnd, fminsearch, fzero |
| 솔버의 반복에 대한 정보를 플로팅합니다. 디폴트 값은 | fminbnd, fminsearch, fzero |
| 함수 값에 대한 중지 허용오차입니다. 디폴트 값은 | fminsearch |
| x에 대한 중지 허용오차입니다. 디폴트 값은 | fminbnd, fminsearch, fzero, lsqnonneg |
허용오차와 중지 조건
최적화에서의 반복 횟수는 솔버의 중지 조건에 따라 달라집니다. 이러한 조건에는 사용자가 설정할 수 있는 여러 허용오차가 포함됩니다. 일반적으로, 허용오차는 이 값을 넘는 경우 솔버의 반복이 중지되는 임계값입니다.
팁
보통, TolFun과 TolX 허용오차는 eps보다 매우 높게, 그리고 1e-14보다 대체적으로 높게 설정합니다. 허용오차를 작게 설정하면 정확한 결과를 얻지 못할 수도 있습니다. 대신, 솔버가 수렴된 때를 인식하지 못하고 무의미한 반복을 계속할 수 있습니다. 허용오차 값이 eps보다 작으면 사실상 중지 조건이 비활성화됩니다. TolX의 디폴트 값으로 eps를 사용하는 fzero에는 이 팁이 적용되지 않습니다.
TolX는 스텝 크기, 즉 (xi – xi+1)의 노름의 하한을 의미합니다. 솔버가TolX보다 작은 스텝을 수행하려고 하면 반복이 중지됩니다. 솔버는 일반적으로TolX를 상대적 한도로 사용합니다. 즉, |(xi – xi+1)|이TolX*(1 + |xi|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다.
TolFun은 스텝 간 목적 함수 값의 변위의 하한입니다. |f(xi) – f(xi+1)| <TolFun이면 반복이 중지됩니다. 솔버는 일반적으로TolFun를 상대적 한도로 사용합니다. 즉, |f(xi) – f(xi+1)|이TolFun(1 + |f(xi)|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다.MaxIter는 솔버 반복 횟수의 한도입니다.MaxFunEvals는 함수 실행 횟수의 한도입니다.
참고
다른 솔버와 달리, fminsearch는 TolFun과 TolX가 모두 충족되는 경우 중지됩니다.
output 구조체
output 구조체에는 함수 실행 횟수, 반복 횟수, 그리고 알고리즘이 포함됩니다. 이 구조체는 다음과 같이 fminbnd, fminsearch, fzero 중 하나에 네 번째 출력 인수를 제공할 때 나타납니다.
[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);
각 솔버의 output 구조체에 대한 자세한 내용은 함수 도움말 페이지에 나와 있습니다.
output 구조체는 optimset에서 선택하는 옵션이 아닙니다. fminbnd, fminsearch, fzero에서 사용할 수 있는 출력값 선택 사항입니다.