허용오차와 중지 기준
최적화에서의 반복 횟수는 솔버의 중지 기준에 따라 달라집니다. 이러한 조건에는 사용자가 설정할 수 있는 여러 허용오차가 포함됩니다. 일반적으로, 허용오차는 이 값을 넘는 경우 솔버의 반복이 중지되는 임계값입니다.
최적화 옵션 설정 및 변경하기에 설명된 대로 optimoptions
를 사용하여 허용오차와 다른 조건을 설정할 수 있습니다.
팁
보통, OptimalityTolerance
및 StepTolerance
와 같은 허용오차는 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)|) 또는 유사한 상대적 측정값보다 작을 때 반복이 중지됩니다. 허용오차 세부 정보 항목을 참조하십시오.참고
다른 솔버와 달리,
fminsearch
는TolFun
(함수 허용오차)과TolX
(스텝 허용오차)가 모두 충족되는 경우 중지됩니다.OptimalityTolerance
는 1차 최적성 측정값에 대한 허용오차입니다. 최적성 측정값이OptimalityTolerance
보다 작으면 반복이 중지됩니다.OptimalityTolerance
는 1차 최적성 측정값에 대한 상대적 한도일 수도 있습니다. 허용오차 세부 정보 항목을 참조하십시오. 1차 최적성 측정값에 대한 정의는 1차 최적성 측정값에 나와 있습니다.ConstraintTolerance
는 제약 조건 함수 크기의 상한입니다. 솔버가 c(x) >ConstraintTolerance
또는 |ceq(x)| >ConstraintTolerance
인 점 x를 반환하면 솔버는 x에서 제약 조건이 위반되었다고 보고합니다.ConstraintTolerance
는 상대적 한도일 수도 있습니다. 허용오차 세부 정보 항목을 참조하십시오.참고
ConstraintTolerance
는 다른 허용오차와 다르게 동작합니다.ConstraintTolerance
가 충족되지 않으면(예: 제약 조건 함수의 크기가ConstraintTolerance
를 초과) 솔버는 다른 이유로 중단되지 않는 한 계속 진행을 시도합니다. 단순히ConstraintTolerance
가 충족된다는 이유로는 솔버가 중단되지 않습니다.MaxIterations
는 솔버 반복 횟수의 한도입니다.MaxFunctionEvaluations
는 함수 실행 횟수의 한도입니다. 반복 횟수와 함수 실행 횟수에 대해서는 반복 횟수와 함수 실행 횟수에 설명되어 있습니다.
특정 솔버 TolPCG
와 MaxPCGIter
에 적용되는 또다른 두 개의 허용오차가 있습니다. 이들 허용오차는 선조건 적용 켤레 기울기 스텝과 관련이 있습니다. 자세한 내용은 선조건 적용 켤레 기울기법(Preconditioned Conjugate Gradient Method) 항목을 참조하십시오.
fmincon
의 interior-point 알고리즘에만 적용되는 허용오차가 여러 개 있습니다. 자세한 내용은 fmincon
options
의 Interior-Point 알고리즘을 참조하십시오.
intlinprog
에만 적용되는 허용오차가 여러 개 있습니다. Some “Integer” Solutions Are Not Integers 항목과 분기한정(Branch-and-Bound) 항목을 참조하십시오.