모든 알고리즘 |
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 이 반환하는 두 번째 인수입니다. lsqnonlin 함수는 데이터 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 로 설정된 경우, lsqnonlin 는 유한 차분으로 비선형 제약 조건의 기울기를 추정합니다. true 로 설정된 경우, lsqnonlin 에서 제약 조건 함수가 4개의 출력값을 가져야 합니다. 이에 대한 설명은 nonlcon 에 나와 있습니다. optimset 의 경우, 이 이름은 GradConstr 이고 값은 'on' 또는 'off' 입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|
SubproblemAlgorithm | 반복 스텝이 계산되는 방식을 결정합니다. 디폴트 값 'factorization' 은 일반적으로 'cg' (켤레 기울기)보다 빠릅니다. 하지만 조밀한 헤세 행렬이 포함된 대규모 문제에서는 'cg' 가 더 빠를 수도 있습니다. fmincon의 Interior Point 알고리즘 항목을 참조하십시오. optimset 의 경우 값은 'cg' 및 'ldl-factorization' 입니다. 현재 옵션 이름과 이전 옵션 이름 항목을 참조하십시오.
|