이 페이지의 최신 내용은 아직 번역되지 않았습니다. 최신 내용은 영문으로 볼 수 있습니다.

허용오차와 중지 기준

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

Set and Change Options에 설명된 대로 optimoptions를 사용하여 허용오차와 다른 조건을 설정할 수 있습니다.

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

최적화 앱에서 디폴트 허용오차를 찾을 수 있습니다. 일부 디폴트 허용오차는 알고리즘에 따라 다를 수 있으므로 솔버와 알고리즘을 모두 설정해야 합니다.

optimoptions는 허용오차를 표시합니다. 예를 들면 다음을 입력합니다.

options = optimoptions('fmincon');
[options.OptimalityTolerance,options.FunctionTolerance,options.StepTolerance]
ans =

   1.0e-06 *

    1.0000    1.0000    0.0001

솔버 함수 도움말 페이지의 옵션 섹션에서도 디폴트 허용오차를 찾을 수 있습니다.

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

  • 일부 알고리즘의 경우 FunctionTolerance는 스텝 간 목적 함수 값의 변화량의 하한입니다. 이러한 알고리즘의 경우, |f(xi) – f(xi+1)|FunctionTolerance보다 작으면 반복이 중지됩니다. FunctionTolerance는 일반적으로 상대적 범위로 사용됩니다. 즉, |f(xi) – f(xi+1)|FunctionTolerance*(1 + |f(xi)|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다.

    참고

    다른 솔버와 달리, fminsearchTolFun(함수 허용오차)과 TolX(스텝 허용오차)가 모두 충족되는 경우 중지됩니다.

  • OptimalityTolerance는 1차 최적성 측정값에 대한 허용오차입니다. 최적성 측정값이 OptimalityTolerance보다 작으면 반복이 중지됩니다. OptimalityTolerance는 1차 최적성 측정값에 대한 상대적 한도일 수도 있습니다. 1차 최적성 측정값에 대한 정의는 1차 최적성 측정값에 나와 있습니다.

  • ConstraintTolerance는 제약 조건 함수 크기의 상한입니다. 솔버가 c(x) > ConstraintTolerance 또는 |ceq(x)| > ConstraintTolerance인 점 x를 반환하면 솔버는 x에서 제약 조건이 위반되었다고 보고합니다. ConstraintTolerance는 상대적 한도일 수도 있습니다.

    참고

    ConstraintTolerance는 다른 허용오차와 다르게 동작합니다. ConstraintTolerance가 충족되지 않으면(예: 제약 조건 함수의 크기가 ConstraintTolerance를 초과) 솔버는 다른 이유로 중단되지 않는 한 계속 진행을 시도합니다. 단순히 ConstraintTolerance가 충족된다는 이유로는 솔버가 중단되지 않습니다.

  • MaxIterations는 솔버 반복 횟수의 한도입니다. MaxFunctionEvaluations는 함수 실행 횟수의 한도입니다. 반복 횟수와 함수 실행 횟수에 대해서는 반복 횟수와 함수 실행 횟수에 설명되어 있습니다.

특정 솔버 TolPCGMaxPCGIter에 적용되는 또다른 두 개의 허용오차가 있습니다. 이들 허용오차는 선조건 적용 켤레 기울기 스텝과 관련이 있습니다. 자세한 내용은 선조건 적용 켤레 기울기법(Preconditioned Conjugate Gradient Method) 항목을 참조하십시오.

fmincon의 interior-point 알고리즘에만 적용되는 허용오차가 여러 개 있습니다. 자세한 내용은 fmincon optionsInterior-Point 알고리즘을 참조하십시오.

intlinprog에만 적용되는 허용 오차가 여러 개 있습니다. Some “Integer” Solutions Are Not Integers 항목과 분기한정(Branch-and-Bound) 항목을 참조하십시오.

관련 항목