| 모든 알고리즘 |
Algorithm
| 'trust-region-reflective'(디폴트 값), 'levenberg-marquardt', 'interior-point' 중에서 선택합니다.
Algorithm 옵션은 사용할 알고리즘에 대한 기본 설정을 지정합니다. 각 알고리즘을 사용하려면 특정 조건이 충족되어야 하기 때문에 이는 단지 기본적인 설정에 불과합니다. trust-region-reflective 알고리즘의 경우, fun으로 반환되는 F의 요소 개수는 x의 길이보다 크거나 같아야 합니다.
'interior-point' 알고리즘은 선형 제약 조건 또는 비선형 제약 조건이 있는 문제를 풀 수 있는 유일한 알고리즘입니다. 문제에 이러한 제약 조건을 포함시키고 알고리즘을 지정하지 않으면 솔버는 자동으로 'interior-point' 알고리즘으로 전환합니다. 'interior-point' 알고리즘은 fmincon 'interior-point' 알고리즘의 수정된 버전을 호출합니다.
알고리즘을 선택하는 방법에 대한 자세한 내용은 알고리즘 선택하기 항목을 참조하십시오. |
| CheckGradients | 사용자 제공 도함수(목적 함수 또는 제약 조건의 기울기)를 유한 차분 도함수와 비교합니다. false(디폴트 값) 또는 true를 선택할 수 있습니다. optimset의 경우, 이 이름은 DerivativeCheck이고 값은 'on' 또는 'off'입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오. CheckGradients 옵션은 향후 릴리스에서 제거될 예정입니다. 도함수를 검사하려면 checkGradients 함수를 사용하십시오. |
| Diagnostics | 최소화하거나 풀려는 함수에 대한 진단 정보를 표시합니다. 'off'(디폴트 값) 또는 'on'을 선택할 수 있습니다. |
| DiffMaxChange | 유한 차분 기울기에 대한 변수의 최대 변화량입니다(양의 스칼라). 디폴트 값은 Inf입니다. |
| DiffMinChange | 유한 차분 기울기에 대한 변수의 최소 변화량입니다(양의 스칼라). 디폴트 값은 0입니다. |
Display
| 표시 수준입니다(반복 과정 표시 참조):
'off' 또는 'none'은 출력값을 표시하지 않습니다.
'iter'는 각 반복마다 출력값을 표시하고 디폴트 종료 메시지를 제공합니다.
'iter-detailed'는 각 반복마다 출력값을 표시하고 기술적인 종료 메시지를 제공합니다.
'final'(디폴트 값)은 최종 출력값만 표시하고 디폴트 종료 메시지를 제공합니다.
'final-detailed'는 최종 출력값만 표시하고 기술적인 종료 메시지를 제공합니다.
|
FiniteDifferenceStepSize | 유한 차분에 대한 스칼라 또는 벡터 스텝 크기 인자입니다. FiniteDifferenceStepSize를 벡터 v로 설정하는 경우 전향 유한 차분 delta는 다음과 같습니다. delta = v.*sign′(x).*max(abs(x),TypicalX);
여기서 sign′(x) = sign(x)입니다(단, sign′(0) = 1임). 중심 유한 차분은 다음과 같습니다.delta = v.*max(abs(x),TypicalX);
스칼라 FiniteDifferenceStepSize는 벡터로 확장됩니다. 디폴트 값은 전향 유한 차분의 경우 sqrt(eps)이고 중심 유한 차분의 경우 eps^(1/3)입니다. optimset의 경우, 이 이름은 FinDiffRelStep입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
FiniteDifferenceType | 기울기를 추정하는 데 사용되는 유한 차분으로, 'forward'(디폴트 값) 또는 'central'(중심화됨)입니다. 'central'은 함수 실행 횟수가 2배 더 많지만 더 정확합니다. 알고리즘은 두 유형의 유한 차분을 모두 추정하는 경우 범위를 준수하려고 노력합니다. 예를 들어, 범위 외부에 있는 점에서 실행되는 것을 방지하기 위해 전향 차분이 아니라 후향 차분을 사용할 수 있습니다. optimset의 경우, 이 이름은 FinDiffType입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
FunctionTolerance
| 함수 값에 대한 종료 허용오차로, 음이 아닌 스칼라입니다. 디폴트 값은 1e-6입니다. 허용오차와 중지 기준 항목을 참조하십시오. optimset의 경우, 이 이름은 TolFun입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
| FunValCheck | 함수 값이 유효한지 여부를 확인합니다. 'on'은 함수가 complex, Inf 또는 NaN 값을 반환하는 경우에 오류를 표시합니다. 디폴트 값인 'off'는 오류를 표시하지 않습니다. |
MaxFunctionEvaluations
| 허용되는 함수 실행의 최대 횟수로, 음이 아닌 정수입니다. 디폴트 값은 'trust-region-reflective' 알고리즘의 경우 100*numberOfVariables이고, 'levenberg-marquardt' 알고리즘의 경우 200*numberOfVariables이고, 'interior-point' 알고리즘의 경우 3000입니다. 허용오차와 중지 기준 항목과 반복 횟수와 함수 실행 횟수 항목을 참조하십시오. optimset의 경우, 이 이름은 MaxFunEvals입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
MaxIterations
| 허용되는 최대 반복 횟수로, 음이 아닌 정수입니다. 디폴트 값은 'trust-region-reflective' 알고리즘과 'levenberg-marquardt' 알고리즘의 경우 400이고 'interior-point' 알고리즘의 경우 1000입니다. 허용오차와 중지 기준 항목과 반복 횟수와 함수 실행 횟수 항목을 참조하십시오. optimset의 경우, 이 이름은 MaxIter입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
OptimalityTolerance | 1차 최적성에 대한 종료 허용오차(음이 아닌 스칼라)입니다. 디폴트 값은 1e-6입니다. 1차 최적성 측정값 항목을 참조하십시오. 내부적으로, 'levenberg-marquardt' 알고리즘은 최적성 허용오차(중지 기준) 1e-4와 FunctionTolerance를 곱한 값을 사용하고 OptimalityTolerance는 사용하지 않습니다. optimset의 경우, 이 이름은 TolFun입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
OutputFcn | 각 반복마다 최적화 함수가 호출하는 하나 이상의 사용자 정의 함수를 지정합니다. 함수 핸들 또는 함수 핸들 셀형 배열을 전달합니다. 디폴트 값은 없음([])입니다. Output Function and Plot Function Syntax 항목을 참조하십시오. |
PlotFcn
| 알고리즘이 실행되는 동안 다양한 진행률 측정값을 플로팅합니다. 미리 정의된 플롯에서 선택하거나 사용자가 직접 작성할 수 있습니다. 이름, 함수 핸들 또는 이름이나 함수 핸들로 구성된 셀형 배열을 전달합니다. 사용자 지정 플롯 함수의 경우, 함수 핸들을 전달하십시오. 디폴트 값은 없음([])입니다.
'optimplotx'는 현재 점을 플로팅합니다.
'optimplotfunccount'는 함수 실행 횟수를 플로팅합니다.
'optimplotfval'은 함수 값을 플로팅합니다.
'optimplotresnorm'은 잔차에 대한 노름을 플로팅합니다.
'optimplotstepsize'는 스텝 크기를 플로팅합니다.
'optimplotfirstorderopt'는 1차 최적성 측정값을 플로팅합니다.
사용자 지정 플롯 함수는 출력 함수와 동일한 구문을 사용합니다. Optimization Toolbox의 출력 함수 항목과 Output Function and Plot Function Syntax 항목을 참조하십시오. optimset의 경우, 이 이름은 PlotFcns입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
SpecifyObjectiveGradient | false(디폴트 값)인 경우, 솔버는 유한 차분을 사용하여 야코비 행렬의 근삿값을 계산합니다. true인 경우, 솔버는 목적 함수에 대해 사용자 정의 야코비 행렬(fun에서 정의됨)을 사용하거나 야코비 행렬 정보(JacobMult를 사용하는 경우)를 사용합니다. optimset의 경우, 이 이름은 Jacobian이고 값은 'on' 또는 'off'입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
StepTolerance
| x에 대한 종료 허용오차로, 음이 아닌 스칼라입니다. 디폴트 값은 'trust-region-reflective' 알고리즘과 'levenberg-marquardt' 알고리즘의 경우 1e-6이고 'interior-point' 알고리즘의 경우 1e-10입니다. 허용오차와 중지 기준 항목을 참조하십시오.
optimset의 경우, 이 이름은 TolX입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
TypicalX
| 일반적인 x 값입니다. TypicalX의 요소 개수는 시작점 x0의 요소 개수와 같습니다. 디폴트 값은 ones(numberofvariables,1)입니다. 솔버는 기울기 추정 시 유한 차분을 스케일링하는 데 TypicalX를 사용합니다. |
UseParallel | true인 경우, 솔버는 기울기를 병렬로 추정합니다. 디폴트 값 false로 설정하면 비활성화됩니다. 병렬 연산 항목을 참조하십시오.
|
| Trust-Region-Reflective 알고리즘 |
JacobianMultiplyFcn | 야코비 행렬의 곱셈 함수로, 함수 핸들로 지정됩니다. 특정 구조를 가진 대규모 문제의 경우, 이 함수는 J를 실제로 구성하지 않고 야코비 행렬 곱 J*Y, J'*Y 또는 J'*(J*Y)를 계산합니다. lsqnonlin의 경우 함수의 형식은 다음과 같습니다. 여기서 Jinfo는 J*Y (또는 J'*Y나 J'*(J*Y))를 계산하는 데 도움이 되는 데이터를 포함합니다. lsqcurvefit의 경우 함수의 형식은 다음과 같습니다. 여기서 xdata는 xdata 인수에 전달된 데이터입니다. 데이터 Jinfo는 목적 함수 fun이 반환하는 두 번째 인수입니다. lsqcurvefit 함수는 데이터 Jinfo, Y, flag, xdata(lsqcurvefit의 경우)를 전달하고, 함수 jmfun은 다음에 지정된 대로 결과를 계산합니다. Y는 flag의 값에 따라 크기가 달라지는 행렬입니다. m이 목적 함수 fun의 성분 개수를 지정하도록 하고 n이 x의 문제 변수 개수를 지정하도록 합니다. 야코비 행렬의 크기는 fun에 설명된 대로 m×n입니다. jmfun 함수는 다음 결과 중 하나를 반환합니다.
flag == 0이면 W = J'*(J*Y)이고 Y의 크기는 n×2입니다.
flag > 0이면 W = J*Y이고 Y의 크기는 n×1입니다.
flag < 0이면 W = J'*Y이고 Y의 크기는 m×1입니다.
어느 경우든 J가 명시적으로 구성되지는 않습니다. 솔버는 Jinfo를 사용하여 곱셈을 계산합니다. jmfun에 필요한 추가 파라미터의 값을 제공하는 방법에 대한 자세한 내용은 추가 파라미터 전달하기 항목을 참조하십시오. 참고 솔버가 Jinfo를 fun에서 jmfun으로 전달하도록 하려면 'SpecifyObjectiveGradient'가 true로 설정되어야 합니다. 이와 유사한 예제를 보려면 Minimization with Dense Structured Hessian, Linear Equalities 항목과 Jacobian Multiply Function with Linear Least Squares 항목을 참조하십시오. optimset의 경우, 이 이름은 JacobMult입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
| JacobPattern | 유한 차분을 위한 야코비 행렬의 희소성 패턴입니다. fun(i)가 x(j)에 종속되는 경우 JacobPattern(i,j) = 1을 설정합니다. 그렇지 않은 경우 JacobPattern(i,j) = 0을 설정합니다. 다시 말해, ∂fun(i)/∂x(j) ≠ 0이 성립하는 경우 JacobPattern(i,j) = 1을 설정합니다. JacobPattern은 fun에서 야코비 행렬 J를 계산하는 것이 번거롭고 fun(i)가 x(j)에 종속된다는 사실은 (조사를 통해) 확인할 수 있는 경우에 사용합니다. JacobPattern을 제공하는 경우 솔버는 희소 유한 차분을 통해 J의 근삿값을 계산할 수 있습니다.
구조를 알 수 없는 경우 JacobPattern을 설정하지 마십시오. 이 경우 기본적으로 JacobPattern이 1로 구성된 조밀 행렬인 것처럼 동작합니다. 그러면 솔버가 각 반복마다 비희소 유한 차분 근삿값을 계산합니다. 이 과정은 대규모 문제의 경우 시간이 오래 걸릴 수 있으므로 희소성 구조를 확인하는 것이 일반적으로 더 좋습니다. |
| MaxPCGIter | 최대 PCG(선조건 적용 켤레 기울기) 반복 횟수로, 양의 스칼라입니다. 디폴트 값은 max(1,numberOfVariables/2)입니다. 자세한 내용은 대규모 비선형 최소제곱 항목을 참조하십시오. |
| PrecondBandWidth | PCG에 대한 선조건자의 상부 대역폭으로, 음이 아닌 정수입니다. 디폴트 값 PrecondBandWidth는 Inf이며, 이는 직접 분해(촐레스키)가 켤레 기울기(CG) 대신 사용된다는 것을 의미합니다. 직접 분해는 CG보다 계산량이 더 많지만 해에 다가가는 데 있어 더 나은 품질의 스텝을 생성합니다. 대각 선조건 지정에서는 PrecondBandWidth를 0으로 설정합니다(상부 대역폭: 0). 일부 문제의 경우, 중간 대역폭을 사용하면 PCG 반복 횟수가 줄어듭니다. |
SubproblemAlgorithm | 반복 스텝이 계산되는 방식을 결정합니다. 디폴트 값 'factorization'은 'cg'보다 더 느리지만 더 정확한 스텝을 실행합니다. Trust-Region-Reflective 최소제곱 항목을 참조하십시오. |
| TolPCG | PCG 반복에 대한 종료 허용오차로, 양의 스칼라입니다. 디폴트 값은 0.1입니다. |
| Levenberg-Marquardt 알고리즘 |
| InitDamping | Levenberg-Marquardt 파라미터의 초기값으로, 양의 스칼라입니다. 디폴트 값은 1e-2입니다. 자세한 내용은 Levenberg-Marquardt 방법 항목을 참조하십시오. |
| ScaleProblem | 'jacobian'을 사용하면 잘못 스케일링된 문제의 수렴이 향상될 수도 있습니다. 디폴트 값은 'none'입니다.
|
| Interior-Point 알고리즘 |
BarrierParamUpdate | fmincon이 장벽 파라미터를 업데이트하는 방법을 지정합니다(fmincon의 Interior Point 알고리즘 참조). 옵션은 다음과 같습니다.
'monotone'(디폴트 값)
'predictor-corrector'
이 옵션은 솔버의 속도와 수렴에 영향을 줄 수 있지만, 그 영향을 예측하기가 쉽지 않습니다. |
ConstraintTolerance | 제약 조건 위반에 대한 허용오차로, 음이 아닌 스칼라입니다. 디폴트 값은 1e-6입니다. 허용오차와 중지 기준 항목을 참조하십시오. optimset의 경우, 이 이름은 TolCon입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
| InitBarrierParam | 초기 장벽 값으로, 양의 스칼라입니다. 경우에 따라 디폴트 값 0.1보다 높은 값을 사용하는 것이 도움이 될 수 있습니다. 특히, 목적 함수 또는 제약 조건의 규모가 큰 경우 그렇습니다. |
SpecifyConstraintGradient | 사용자가 정의하는 비선형 제약 조건 함수의 기울기입니다. 디폴트 값 false로 설정된 경우, lsqcurvefit는 유한 차분으로 비선형 제약 조건의 기울기를 추정합니다. true로 설정된 경우, lsqcurvefit에서 제약 조건 함수가 4개의 출력값을 가져야 합니다. 이에 대한 설명은 nonlcon에 나와 있습니다. optimset의 경우, 이 이름은 GradConstr이고 값은 'on' 또는 'off'입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
SubproblemAlgorithm | 반복 스텝이 계산되는 방식을 결정합니다. 디폴트 값 'factorization'은 일반적으로 'cg'(켤레 기울기)보다 빠릅니다. 하지만 조밀한 헤세 행렬이 포함된 대규모 문제에서는 'cg'가 더 빠를 수도 있습니다. fmincon의 Interior Point 알고리즘 항목을 참조하십시오. optimset의 경우 값은 'cg' 및 'ldl-factorization'입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|