Hauptinhalt

optimoptions

Erstellen von Optimierungsoptionen

Beschreibung

options = optimoptions(SolverName) gibt eine Reihe von Standardoptionen für den SolverName-Solver zurück.

Beispiel

options = optimoptions(SolverName,Name,Value) gibt ein options-Objekt zurück, bei dem die angegebenen Parameter durch ein oder mehrere Name-Wert-Argumente festgelegt wurden.

Beispiel

options = optimoptions(oldoptions,Name,Value) gibt eine Kopie von oldoptions zurück, bei der die benannten Parameter durch die angegebenen Werte ersetzt wurden.

Beispiel

options = optimoptions(SolverName,oldoptions) gibt die Standardoptionen für den SolverName-Solver zurück und kopiert die entsprechenden Optionen von oldoptions in options.

Beispiel

options = optimoptions(prob) gibt eine Reihe von Standardoptionen für das Optimierungs- oder Gleichungsproblem prob zurück.

Beispiel

options = optimoptions(prob,Name,Value) gibt Optionen zurück, bei denen die angegebenen Parameter durch ein oder mehrere Name-Wert-Argumente festgelegt wurden.

Beispiele

alle reduzieren

Erstellen Sie Standardoptionen für den fmincon-Solver.

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 properties.

   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

   Show options not used by current Algorithm ('interior-point')

Legen Sie die Optionen für fmincon so fest, dass der sqp-Algorithmus verwendet wird und maximal 1500 Iterationen ausgeführt werden.

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)'
             UseCodegenSolver: 0
                  UseParallel: 0

   Show options not used by current Algorithm ('sqp')

Aktualisieren Sie vorhandene Optionen mit neuen Werten.

Legen Sie die Optionen für den lsqnonlin-Solver so fest, dass der levenberg-marquardt-Algorithmus verwendet wird und maximal 1500 Funktionsauswertungen ausgeführt werden.

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)'
            UseCodegenSolver: 0
                 UseParallel: 0

   Show options not used by current Algorithm ('levenberg-marquardt')

Erhöhen Sie MaxFunctionEvaluations auf 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)'
            UseCodegenSolver: 0
                 UseParallel: 0

   Show options not used by current Algorithm ('levenberg-marquardt')

Aktualisieren Sie vorhandene Optionen mit neuen Werten mithilfe der Punktnotation.

Legen Sie die Optionen für den lsqnonlin-Solver so fest, dass der levenberg-marquardt-Algorithmus verwendet wird und maximal 1500 Funktionsauswertungen ausgeführt werden.

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)'
            UseCodegenSolver: 0
                 UseParallel: 0

   Show options not used by current Algorithm ('levenberg-marquardt')

Erhöhen Sie MaxFunctionEvaluations mithilfe der Punktnotation auf 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)'
            UseCodegenSolver: 0
                 UseParallel: 0

   Show options not used by current Algorithm ('levenberg-marquardt')

Übertragen Sie nicht-standardmäßige Optionen des fmincon-Solvers auf die Optionen des fminunc-Solvers.

Legen Sie die Optionen für fmincon so fest, dass der sqp-Algorithmus verwendet wird und maximal 1500 Iterationen ausgeführt werden.

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)'
             UseCodegenSolver: 0
                  UseParallel: 0

   Show options not used by current Algorithm ('sqp')

Übertragen Sie die entsprechenden Optionen auf den fminunc-Solver.

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

   Show options not used by current Algorithm ('quasi-newton')

Die Algorithmus-Option wird nicht auf fminunc übertragen, da "sqp" keine gültige Algorithmusoption für fminunc darstellt.

Erstellen Sie ein Optimierungsproblem und ermitteln Sie den Standard-Solver und die Standardoptionen.

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 properties.

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

   Show options not used by current Algorithm ('interior-point-convex')

Der Standard-Solver ist quadprog.

Stellen Sie die Optionen so ein, dass die iterative Anzeige verwendet wird. Ermitteln Sie die Lösung.

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.356690e-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.

<stopping criteria details>
sol.x
ans = 3×1

    1.6035
    0.0000
    0.8029

Eingabeargumente

alle reduzieren

Name des Solvers, angegeben als Zeichenvektor, Zeichenfolge oder Function Handle.

Beispiel: 'fmincon'

Beispiel: @fmincon

Datentypen: char | function_handle | string

Mit der optimoptions-Funktion erstellte Optionen, angegeben als Optionsobjekt.

Beispiel: oldoptions = optimoptions(@fminunc)

Problemobjekt, angegeben als OptimizationProblem-Objekt oder EquationProblem-Objekt. Erstellen Sie prob mithilfe von Problem-Based Optimization Workflow oder Problem-Based Workflow for Solving Equations.

Die Syntaxen mit prob ermöglichen es Ihnen, den Standard-Solver für Ihr Problem festzulegen und den Algorithmus oder andere Optionen anzupassen.

Beispiel: prob = optimproblem('Objective',myobj), wobei myobj ein Optimierungsausdruck ist

Name-Wert-Argumente

Geben Sie optionale Argumentpaare in der Form Name1=Value1,...,NameN=ValueN an, wobei Name der Argumentname und Value der zugehörige Wert ist. Name-Wert-Argumente müssen nach allen anderen Argumenten stehen; die Reihenfolge der Name-Wert-Paare ist jedoch beliebig.

Für Versionen vor R2021a: Trennen Sie die einzelnen Namen und Werte durch Kommas und schließen Sie Name in Anführungszeichen ein.

Beispiel: optimoptions(@fmincon,'Display','iter','FunctionTolerance',1e-10) legt für die fmincon-Optionen eine iterative Anzeige und eine FunctionTolerance (Funktionstoleranz) von 1e-10 fest.

Die entsprechenden Name-Wert-Argumente entnehmen Sie bitte der Optionstabelle für Ihren Solver:

Ausgabeargumente

alle reduzieren

Optimierungsoptionen für den SolverName-Solver, zurückgegeben als Optionsobjekt.

Alternative Funktionalität

Live-Editor Task

Mit dem Live-Editor Task Optimize können Sie Optionen visuell festlegen. Ein Beispiel finden Sie unter Optimize Live Editor Task with fmincon Solver.

Erweiterte Fähigkeiten

alle erweitern

Versionsverlauf

Eingeführt in R2013a