Main Content

최적화 옵션 설정하기

옵션을 설정하는 방법

optimset 함수로 options 구조체를 만들어 최적화 파라미터를 지정할 수 있습니다. 그런 다음 options를 최적화 함수에 대한 입력값으로 전달할 수 있습니다. 예를 들어, 다음 구문을 사용하여 fminbnd를 호출하거나

x = fminbnd(fun,x1,x2,options)

다음 구문을 사용하여 fminsearch를 호출할 수 있습니다.

x = fminsearch(fun,x0,options)

그리고, Display 옵션을 'iter'로 설정하여 매 반복 시 알고리즘의 출력값이 표시되도록 할 수 있습니다.

options = optimset('Display','iter');

옵션 표

옵션설명솔버

Display

화면에 중간 단계를 표시할지 여부를 지정하는 플래그입니다.

  • 'notify'(디폴트 값)는 함수가 수렴하지 않는 경우에만 출력값을 표시합니다.

  • 'iter'는 중간 단계를 모두 표시합니다(lsqnonneg에는 사용할 수 없음). 최적화 솔버 반복 표시를 참조하십시오.

  • 'off' 또는 'none'은 중간 단계를 표시하지 않습니다.

  • 'final'은 최종 출력값만 표시합니다.

fminbnd, fminsearch, fzero, lsqnonneg

FunValCheck

목적 함수 값이 유효한지 여부를 확인합니다.

  • 'on'은 목적 함수나 제약 조건이 복소수 또는 NaN을 반환하는 경우에 오류를 표시합니다.

  • 'off'(디폴트 값)는 오류를 표시하지 않습니다.

fminbnd, fminsearch, fzero

MaxFunEvals

허용되는 최대 함수 실행 횟수입니다. 디폴트 값은 fminbnd의 경우 500이고, fminsearch의 경우 200*length(x0)입니다.

fminbnd, fminsearch

MaxIter

허용되는 최대 반복 횟수입니다. 디폴트 값은 fminbnd의 경우 500이고, fminsearch의 경우 200*length(x0)입니다.

fminbnd, fminsearch

OutputFcn

솔버의 반복에 대한 정보를 표시합니다. 디폴트 값은 [](안 함)입니다. 최적화 솔버 출력 함수를 참조하십시오.

fminbnd, fminsearch, fzero

PlotFcns

솔버의 반복에 대한 정보를 플로팅합니다. 디폴트 값은 [](안 함)입니다. 사용 가능한 미리 정의된 함수에 대해서는 최적화 솔버 플롯 함수 항목을 참조하십시오.

fminbnd, fminsearch, fzero

TolFun

함수 값에 대한 중지 허용오차입니다. 디폴트 값은 1.e-4입니다. 허용오차와 중지 조건를 참조하십시오.

fminsearch

TolX

x에 대한 중지 허용오차입니다. 디폴트 값은 1.e-4이며, 예외적으로 fzero는 디폴트 값 eps(= 2.2204e-16)를 갖고 lsqnonneg는 디폴트 값 10*eps*norm(c,1)*length(c)를 가집니다. 허용오차와 중지 조건를 참조하십시오.

fminbnd, fminsearch, fzero, lsqnonneg

허용오차와 중지 조건

최적화에서의 반복 횟수는 솔버의 중지 조건에 따라 달라집니다. 이러한 조건에는 사용자가 설정할 수 있는 여러 허용오차가 포함됩니다. 일반적으로, 허용오차는 이 값을 넘는 경우 솔버의 반복이 중지되는 임계값입니다.

보통, TolFunTolX 허용오차는 eps보다 매우 높게, 그리고 1e-14보다 대체적으로 높게 설정합니다. 허용오차를 작게 설정하면 정확한 결과를 얻지 못할 수도 있습니다. 대신, 솔버가 수렴된 때를 인식하지 못하고 무의미한 반복을 계속할 수 있습니다. 허용오차 값이 eps보다 작으면 사실상 중지 조건이 비활성화됩니다. TolX의 디폴트 값으로 eps를 사용하는 fzero에는 이 팁이 적용되지 않습니다.

  • TolX는 스텝 크기, 즉 (xi – xi+1)의 노름의 하한을 의미합니다. 솔버가 TolX보다 작은 스텝을 수행하려고 하면 반복이 중지됩니다. 솔버는 일반적으로 TolX상대적 한도로 사용합니다. 즉, |(xi – xi+1)|TolX*(1 + |xi|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다.

    Plot showing how iterations end when the last step is smaller than TolFun or TolX.

  • TolFun은 스텝 간 목적 함수 값의 변위의 하한입니다. |f(xi) – f(xi+1)| < TolFun이면 반복이 중지됩니다. 솔버는 일반적으로 TolFun상대적 한도로 사용합니다. 즉, |f(xi) – f(xi+1)|TolFun(1 + |f(xi)|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다.

  • MaxIter는 솔버 반복 횟수의 한도입니다. MaxFunEvals는 함수 실행 횟수의 한도입니다.

참고

다른 솔버와 달리, fminsearchTolFunTolX모두 충족되는 경우 중지됩니다.

output 구조체

output 구조체에는 함수 실행 횟수, 반복 횟수, 그리고 알고리즘이 포함됩니다. 이 구조체는 다음과 같이 fminbnd, fminsearch, fzero 중 하나에 네 번째 출력 인수를 제공할 때 나타납니다.

[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);

각 솔버의 output 구조체에 대한 자세한 내용은 함수 도움말 페이지에 나와 있습니다.

output 구조체는 optimset에서 선택하는 옵션이 아닙니다. fminbnd, fminsearch, fzero에서 사용할 수 있는 출력값 선택 사항입니다.

관련 항목