Contenuto principale

optimoptions

Creare opzioni di ottimizzazione

Descrizione

options = optimoptions(SolverName) restituisce un insieme di opzioni predefinite per il risolutore SolverName.

esempio

options = optimoptions(SolverName,Name,Value) restituisce options con i parametri specificati impostati utilizzando uno o più argomenti della coppia nome-valore.

esempio

options = optimoptions(oldoptions,Name,Value) restituisce una copia di oldoptions in cui i parametri denominati sono stati modificati con i valori specificati.

esempio

options = optimoptions(SolverName,oldoptions) restituisce le opzioni predefinite per il risolutore SolverName e copia le opzioni applicabili da oldoptions a options.

esempio

options = optimoptions(prob) restituisce un insieme di opzioni predefinite per il problema di ottimizzazione o per il problema di equazioni prob.

esempio

options = optimoptions(prob,Name,Value) restituisce le opzioni con i parametri specificati impostati utilizzando uno o più argomenti della coppia nome-valore.

Esempi

comprimi tutto

Creare opzioni predefinite per il risolutore 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 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')

Impostare le opzioni per fmincon in modo che utilizzi l'algoritmo sqp e un numero massimo di 1500 iterazioni.

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')

Aggiornare le opzioni esistenti con i nuovi valori.

Impostare le opzioni del risolutore lsqnonlin in modo che utilizzi l'algoritmo levenberg-marquardt e un numero massimo di 1500 valutazioni della funzione

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')

Aumentare MaxFunctionEvaluations a 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')

Aggiornare le opzioni esistenti con i nuovi valori utilizzando la notazione a punto.

Impostare le opzioni del risolutore lsqnonlin in modo che utilizzi l'algoritmo levenberg-marquardt e un numero massimo di 1500 valutazioni della funzione

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')

Aumentare MaxFunctionEvaluations a 2000 utilizzando la notazione a punto.

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')

Trasferire le opzioni non predefinite del risolutore fmincon alle opzioni del risolutore fminunc.

Impostare le opzioni per fmincon in modo che utilizzi l'algoritmo sqp e un numero massimo di 1500 iterazioni.

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')

Trasferire le opzioni applicabili al risolutore 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

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

L'opzione dell'algoritmo non viene trasferita a fminunc poiché "sqp" non è un'opzione dell'algoritmo valida per fminunc.

Creare un problema di ottimizzazione e identificare il risolutore e le opzioni predefiniti.

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')

Il risolutore predefinito è quadprog.

Impostare le opzioni per utilizzare la visualizzazione iterativa. Identificare la soluzione.

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

Argomenti di input

comprimi tutto

Nome del risolutore, specificato come vettore di caratteri, stringa o handle della funzione.

Esempio 'fmincon'

Esempio @fmincon

Tipi di dati: char | function_handle | string

Opzioni create con la funzione optimoptions, specificate come oggetto opzioni.

Esempio oldoptions = optimoptions(@fminunc)

Oggetto problema, specificato come un oggetto OptimizationProblem o un oggetto EquationProblem. Creare prob utilizzando il Problem-Based Optimization Workflow o Problem-Based Workflow for Solving Equations.

Le sintassi che utilizzano prob consentono di determinare il risolutore predefinito per il problema e di modificare l'algoritmo o altre opzioni.

Esempio prob = optimproblem('Objective',myobj), dove myobj è un'espressione di ottimizzazione

Argomenti nome-valore

Specificare le coppie di argomenti opzionali come Name1=Value1,...,NameN=ValueN, dove Name è il nome dell'argomento e Value è il valore corrispondente. Gli argomenti nome-valore devono seguire gli altri argomenti, ma l'ordine delle coppie non è rilevante.

Prima della release R2021a, utilizzare le virgole per separare ciascun nome e valore e racchiudere Name tra virgolette.

Esempio optimoptions(@fmincon,'Display','iter','FunctionTolerance',1e-10) imposta le opzioni fmincon per ottenere una visualizzazione iterativa e una FunctionTolerance di 1e-10.

Per gli argomenti della coppia nome-valore pertinenti, consultare la tabella delle opzioni del rispettivo risolutore:

Argomenti di output

comprimi tutto

Opzioni di ottimizzazione per il risolutore SolverName, restituite come oggetto opzioni.

Funzionalità alternativa

Attività di Live Editor

Optimize task di Live Editor consente di impostare le opzioni in modo visivo. Per un esempio, vedere Optimize Live Editor Task with fmincon Solver.

Funzionalità estese

espandi tutto

Cronologia versioni

Introdotto in R2013a