Main Content

optimoptions

최적화 옵션 만들기

설명

예제

options = optimoptions(SolverName)SolverName 솔버에 대한 디폴트 옵션 집합을 반환합니다.

예제

options = optimoptions(SolverName,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 설정한 지정된 파라미터를 가진 options를 반환합니다.

예제

options = optimoptions(oldoptions,Name,Value)는 명명된 파라미터가 지정된 값으로 변경된 oldoptions의 복사본을 반환합니다.

예제

options = optimoptions(SolverName,oldoptions)SolverName 솔버의 디폴트 옵션을 반환하고 oldoptions의 해당 옵션을 options로 복사합니다.

예제

options = optimoptions(prob)prob 최적화 문제 또는 방정식 문제에 대한 디폴트 옵션 집합을 반환합니다.

options = optimoptions(prob,Name,Value)는 하나 이상의 이름-값 쌍의 인수를 사용하여 설정한 지정된 파라미터를 가진 options를 반환합니다.

예제

모두 축소

fmincon 솔버에 대한 디폴트 옵션을 만듭니다.

options = optimoptions('fmincon')
options = 
  fmincon options:

   Options used by current Algorithm ('interior-point'):
   (Other available algorithms: 'active-set', 'sqp', 'sqp-legacy', 'trust-region-reflective')

   Set properties:
     No options set.

   Default properties:
                    Algorithm: 'interior-point'
           BarrierParamUpdate: 'monotone'
          ConstraintTolerance: 1.0000e-06
                      Display: 'final'
        EnableFeasibilityMode: 0
     FiniteDifferenceStepSize: 'sqrt(eps)'
         FiniteDifferenceType: 'forward'
         HessianApproximation: 'bfgs'
                   HessianFcn: []
           HessianMultiplyFcn: []
                  HonorBounds: 1
       MaxFunctionEvaluations: 3000
                MaxIterations: 1000
               ObjectiveLimit: -1.0000e+20
          OptimalityTolerance: 1.0000e-06
                    OutputFcn: []
                      PlotFcn: []
                 ScaleProblem: 0
    SpecifyConstraintGradient: 0
     SpecifyObjectiveGradient: 0
                StepTolerance: 1.0000e-10
          SubproblemAlgorithm: 'factorization'
                     TypicalX: 'ones(numberOfVariables,1)'
                  UseParallel: 0

   Options not used by current Algorithm ('interior-point')
   Default properties:
    FunctionTolerance: 1.0000e-06


sqp 알고리즘을 사용하고 최대 1500회 반복하도록 fmincon에 대한 옵션을 설정합니다.

options = optimoptions(@fmincon,'Algorithm','sqp','MaxIterations',1500)
options = 
  fmincon options:

   Options used by current Algorithm ('sqp'):
   (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective')

   Set properties:
                    Algorithm: 'sqp'
                MaxIterations: 1500

   Default properties:
          ConstraintTolerance: 1.0000e-06
                      Display: 'final'
     FiniteDifferenceStepSize: 'sqrt(eps)'
         FiniteDifferenceType: 'forward'
       MaxFunctionEvaluations: '100*numberOfVariables'
               ObjectiveLimit: -1.0000e+20
          OptimalityTolerance: 1.0000e-06
                    OutputFcn: []
                      PlotFcn: []
                 ScaleProblem: 0
    SpecifyConstraintGradient: 0
     SpecifyObjectiveGradient: 0
                StepTolerance: 1.0000e-06
                     TypicalX: 'ones(numberOfVariables,1)'
                  UseParallel: 0

   Options not used by current Algorithm ('sqp')
   Default properties:
       BarrierParamUpdate: 'monotone'
    EnableFeasibilityMode: 0
        FunctionTolerance: 1.0000e-06
     HessianApproximation: 'not applicable'
               HessianFcn: []
       HessianMultiplyFcn: []
              HonorBounds: 1
      SubproblemAlgorithm: 'factorization'


기존 옵션을 새 값으로 업데이트합니다.

levenberg-marquardt 알고리즘을 사용하고 최대 1500회 함수를 실행하도록 lsqnonlin 솔버에 대한 옵션을 설정합니다.

oldoptions = optimoptions(@lsqnonlin,'Algorithm','levenberg-marquardt',...
    'MaxFunctionEvaluations',1500)
oldoptions = 
  lsqnonlin options:

   Options used by current Algorithm ('levenberg-marquardt'):
   (Other available algorithms: 'interior-point', 'trust-region-reflective')

   Set properties:
                   Algorithm: 'levenberg-marquardt'
      MaxFunctionEvaluations: 1500

   Default properties:
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        FiniteDifferenceType: 'forward'
           FunctionTolerance: 1.0000e-06
               MaxIterations: 400
                   OutputFcn: []
                     PlotFcn: []
    SpecifyObjectiveGradient: 0
               StepTolerance: 1.0000e-06
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('levenberg-marquardt')
   Default properties:
           BarrierParamUpdate: 'monotone'
          ConstraintTolerance: 1.0000e-06
          JacobianMultiplyFcn: []
          OptimalityTolerance: 1.0000e-06
    SpecifyConstraintGradient: 0
          SubproblemAlgorithm: 'factorization'


MaxFunctionEvaluations를 2000으로 늘립니다.

options = optimoptions(oldoptions,'MaxFunctionEvaluations',2000)
options = 
  lsqnonlin options:

   Options used by current Algorithm ('levenberg-marquardt'):
   (Other available algorithms: 'interior-point', 'trust-region-reflective')

   Set properties:
                   Algorithm: 'levenberg-marquardt'
      MaxFunctionEvaluations: 2000

   Default properties:
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        FiniteDifferenceType: 'forward'
           FunctionTolerance: 1.0000e-06
               MaxIterations: 400
                   OutputFcn: []
                     PlotFcn: []
    SpecifyObjectiveGradient: 0
               StepTolerance: 1.0000e-06
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('levenberg-marquardt')
   Default properties:
           BarrierParamUpdate: 'monotone'
          ConstraintTolerance: 1.0000e-06
          JacobianMultiplyFcn: []
          OptimalityTolerance: 1.0000e-06
    SpecifyConstraintGradient: 0
          SubproblemAlgorithm: 'factorization'


점 표기법을 사용하여 기존 옵션을 새 값으로 업데이트합니다.

levenberg-marquardt 알고리즘을 사용하고 최대 1500회 함수를 실행하도록 lsqnonlin 솔버에 대한 옵션을 설정합니다.

options = optimoptions(@lsqnonlin,'Algorithm','levenberg-marquardt',...
    'MaxFunctionEvaluations',1500)
options = 
  lsqnonlin options:

   Options used by current Algorithm ('levenberg-marquardt'):
   (Other available algorithms: 'interior-point', 'trust-region-reflective')

   Set properties:
                   Algorithm: 'levenberg-marquardt'
      MaxFunctionEvaluations: 1500

   Default properties:
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        FiniteDifferenceType: 'forward'
           FunctionTolerance: 1.0000e-06
               MaxIterations: 400
                   OutputFcn: []
                     PlotFcn: []
    SpecifyObjectiveGradient: 0
               StepTolerance: 1.0000e-06
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('levenberg-marquardt')
   Default properties:
           BarrierParamUpdate: 'monotone'
          ConstraintTolerance: 1.0000e-06
          JacobianMultiplyFcn: []
          OptimalityTolerance: 1.0000e-06
    SpecifyConstraintGradient: 0
          SubproblemAlgorithm: 'factorization'


점 표기법을 사용하여 MaxFunctionEvaluations를 2000으로 늘립니다.

options.MaxFunctionEvaluations = 2000
options = 
  lsqnonlin options:

   Options used by current Algorithm ('levenberg-marquardt'):
   (Other available algorithms: 'interior-point', 'trust-region-reflective')

   Set properties:
                   Algorithm: 'levenberg-marquardt'
      MaxFunctionEvaluations: 2000

   Default properties:
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        FiniteDifferenceType: 'forward'
           FunctionTolerance: 1.0000e-06
               MaxIterations: 400
                   OutputFcn: []
                     PlotFcn: []
    SpecifyObjectiveGradient: 0
               StepTolerance: 1.0000e-06
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('levenberg-marquardt')
   Default properties:
           BarrierParamUpdate: 'monotone'
          ConstraintTolerance: 1.0000e-06
          JacobianMultiplyFcn: []
          OptimalityTolerance: 1.0000e-06
    SpecifyConstraintGradient: 0
          SubproblemAlgorithm: 'factorization'


fmincon 솔버에 대한 디폴트가 아닌 옵션을 fminunc 솔버에 대한 옵션으로 전달합니다.

sqp 알고리즘을 사용하고 최대 1500회 반복하도록 fmincon에 대한 옵션을 설정합니다.

oldoptions = optimoptions(@fmincon,'Algorithm','sqp','MaxIterations',1500)
oldoptions = 
  fmincon options:

   Options used by current Algorithm ('sqp'):
   (Other available algorithms: 'active-set', 'interior-point', 'sqp-legacy', 'trust-region-reflective')

   Set properties:
                    Algorithm: 'sqp'
                MaxIterations: 1500

   Default properties:
          ConstraintTolerance: 1.0000e-06
                      Display: 'final'
     FiniteDifferenceStepSize: 'sqrt(eps)'
         FiniteDifferenceType: 'forward'
       MaxFunctionEvaluations: '100*numberOfVariables'
               ObjectiveLimit: -1.0000e+20
          OptimalityTolerance: 1.0000e-06
                    OutputFcn: []
                      PlotFcn: []
                 ScaleProblem: 0
    SpecifyConstraintGradient: 0
     SpecifyObjectiveGradient: 0
                StepTolerance: 1.0000e-06
                     TypicalX: 'ones(numberOfVariables,1)'
                  UseParallel: 0

   Options not used by current Algorithm ('sqp')
   Default properties:
       BarrierParamUpdate: 'monotone'
    EnableFeasibilityMode: 0
        FunctionTolerance: 1.0000e-06
     HessianApproximation: 'not applicable'
               HessianFcn: []
       HessianMultiplyFcn: []
              HonorBounds: 1
      SubproblemAlgorithm: 'factorization'


적용 가능한 옵션을 fminunc 솔버로 전달합니다.

options = optimoptions(@fminunc,oldoptions)
options = 
  fminunc options:

   Options used by current Algorithm ('quasi-newton'):
   (Other available algorithms: 'trust-region')

   Set properties:
        FiniteDifferenceType: 'forward'
               MaxIterations: 1500
         OptimalityTolerance: 1.0000e-06
                     PlotFcn: []
    SpecifyObjectiveGradient: 0
               StepTolerance: 1.0000e-06

   Default properties:
                   Algorithm: 'quasi-newton'
                     Display: 'final'
    FiniteDifferenceStepSize: 'sqrt(eps)'
        HessianApproximation: 'bfgs'
      MaxFunctionEvaluations: '100*numberOfVariables'
              ObjectiveLimit: -1.0000e+20
                   OutputFcn: []
                    TypicalX: 'ones(numberOfVariables,1)'
                 UseParallel: 0

   Options not used by current Algorithm ('quasi-newton')
   Set properties:
      FunctionTolerance: 1.0000e-06
             HessianFcn: []
     HessianMultiplyFcn: []
    SubproblemAlgorithm: 'factorization'


'sqp'fminunc에 유효한 알고리즘 옵션이 아니므로, 알고리즘 옵션이 fminunc에 전달되지 않습니다.

최적화 문제를 만들고 디폴트 솔버와 옵션을 찾습니다.

rng default
x = optimvar('x',3,'LowerBound',0);
expr = x'*(eye(3) + randn(3))*x - randn(1,3)*x;
prob = optimproblem('Objective',expr);
options = optimoptions(prob)
options = 
  quadprog options:

   Options used by current Algorithm ('interior-point-convex'):
   (Other available algorithms: 'active-set', 'trust-region-reflective')

   Set properties:
     No options set.

   Default properties:
              Algorithm: 'interior-point-convex'
    ConstraintTolerance: 1.0000e-08
                Display: 'final'
           LinearSolver: 'auto'
          MaxIterations: 200
    OptimalityTolerance: 1.0000e-08
          StepTolerance: 1.0000e-12

   Options not used by current Algorithm ('interior-point-convex')
   Default properties:
      FunctionTolerance: 'default dependent on problem'
     HessianMultiplyFcn: []
         ObjectiveLimit: -1.0000e+20
    SubproblemAlgorithm: 'cg'
               TypicalX: 'ones(numberOfVariables,1)'


디폴트 솔버는 quadprog입니다.

반복 과정을 표시하도록 옵션을 설정합니다. 해를 구합니다.

options.Display = 'iter';
sol = solve(prob,'Options',options);
Solving problem using quadprog.
Your Hessian is not symmetric. Resetting H=(H+H')/2.

 Iter            Fval  Primal Infeas    Dual Infeas  Complementarity  
    0    2.018911e+00   0.000000e+00   2.757660e+00     6.535839e-01  
    1   -2.170204e+00   0.000000e+00   8.881784e-16     2.586177e-01  
    2   -3.405808e+00   0.000000e+00   8.881784e-16     2.244054e-03  
    3   -3.438788e+00   0.000000e+00   3.356973e-16     7.261144e-09  

Minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.
sol.x
ans = 3×1

    1.6035
    0.0000
    0.8029

입력 인수

모두 축소

솔버 이름으로, 문자형 벡터, string형 또는 함수 핸들로 지정됩니다.

예: 'fmincon'

예: @fmincon

데이터형: char | function_handle | string

optimoptions 함수로 생성되는 옵션으로, options 객체로 지정됩니다.

예: oldoptions = optimoptions(@fminunc)

문제 객체로, OptimizationProblem 또는 EquationProblem 객체로 지정됩니다. 문제 기반 최적화 워크플로 또는 방정식 풀이를 위한 문제 기반 워크플로의 절차에 따라 prob를 만듭니다.

prob를 사용한 구문을 통해 문제에 대한 디폴트 솔버를 확인하고 알고리즘이나 다른 옵션을 수정할 수 있습니다.

예: prob = optimproblem('Objective',myobj). 여기서 myobj는 최적화 표현식입니다.

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: optimoptions(@fmincon,'Display','iter','FunctionTolerance',1e-10)은 반복 과정을 표시하고 FunctionTolerance1e-10이 되도록 fmincon 옵션을 설정합니다.

관련된 이름-값 쌍의 인수는 해당 솔버에 대한 옵션 표를 참조하십시오.

출력 인수

모두 축소

SolverName 솔버에 대한 최적화 옵션으로, options 객체로 반환됩니다.

대체 기능

라이브 편집기 작업

최적화 라이브 편집기 작업을 사용해 옵션을 시각적으로 설정할 수 있습니다. 예제는 fmincon 솔버로 최적화 라이브 편집기 작업 사용 항목을 참조하십시오.

확장 기능

버전 내역

R2013a에 개발됨