Main Content

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

MultiStart

Trova più minimi locali

Descrizione

Un oggetto MultiStart contiene proprietà (opzioni) che influenzano il modo in cui run esegue ripetutamente un risolutore locale per generare un oggetto GlobalOptimSolution. Quando viene eseguito, il risolutore tenta di trovare più soluzioni locali a un problema partendo da punti diversi.

Creazione

Descrizione

ms = MultiStart crea ms, un risolutore MultiStart con le sue proprietà impostate sui valori predefiniti.

esempio

ms = MultiStart(Name,Value) imposta le proprietà utilizzando coppie nome-valore.

esempio

ms = MultiStart(oldMS,Name,Value) crea una copia del risolutore oldMS MultiStart e imposta le proprietà utilizzando coppie nome-valore.

esempio

ms = MultiStart(gs) crea ms, un risolutore MultiStart, con valori di parametri comuni dal risolutore gs GlobalSearch.

esempio

Proprietà

espandi tutto

Livello di visualizzazione della finestra di comando, specificato come uno dei seguenti vettori di caratteri o stringhe:

  • 'final' – Riepilogo dei risultati del report dopo il completamento di run.

  • 'iter' – Segnala i risultati dopo l'esecuzione iniziale di fmincon, dopo la Fase 1, dopo ogni 200 punti di partenza e dopo ogni esecuzione di fmincon, oltre al riepilogo finale.

  • 'off' – Nessuna visualizzazione.

Esempio 'iter'

Tipi di dati: char | string

Tolleranza sui valori della funzione per considerare le soluzioni uguali, specificata come uno scalare non negativo. I risolutori considerano due soluzioni identiche se si trovano entro una distanza relativa XTolerance l'una dall'altra e hanno valori della funzione obiettivo entro una differenza relativa FunctionTolerance l'una dall'altra. Se entrambe le condizioni non sono soddisfatte, i risolutori segnalano le soluzioni come distinte. Impostare FunctionTolerance su 0 per ottenere i risultati di ogni esecuzione del risolutore locale. Imposta FunctionTolerance su un valore più grande per ottenere meno risultati. Per i dettagli su GlobalSearch, vedere Update Solution Set in When fmincon Runs . Per i dettagli su MultiStart, vedere Create GlobalOptimSolution Object .

Esempio 1e-4

Tipi di dati: double

Tempo massimo in secondi per l'esecuzione di MultiStart, specificato come uno scalare positivo. MultiStart e i suoi risolutori locali si interrompono quando sono trascorsi MaxTime secondi dall'inizio dell'esecuzione, come misurato da tic e toc.

MaxTime non interrompe i risolutori locali durante un'esecuzione, quindi il tempo totale può superare MaxTime.

Esempio 180 arresta il risolutore la prima volta che una chiamata al risolutore locale termina dopo 180 secondi.

Tipi di dati: double

Segnala l'avanzamento del risolutore o l'interruzione del risolutore, specificato come funzione handle o matrice di celle di funzione handle. Le funzioni di output vengono eseguite dopo ogni chiamata del risolutore locale. Vengono eseguiti anche all'avvio e alla fine del risolutore globale. Scrivere le funzioni di output utilizzando la sintassi descritta in OutputFcn . Vedi Custom GlobalSearch Output Function .

La funzione di output integrata @savelocalsolutions salva tutte le soluzioni locali nella variabile localSolTable nell'area di lavoro di base. Questa funzione di output salva sia le soluzioni locali non realizzabili che quelle realizzabili. Per un esempio, vedere Collect All Local Solutions .

Tipi di dati: cell | function_handle

Avanzamento del risolutore di grafici, specificato come funzione handle o matrice di celle di funzione handle. Le funzioni di grafico vengono eseguite dopo ogni chiamata del risolutore locale. Vengono eseguiti anche all'avvio e alla fine del risolutore globale. Scrivere le funzioni del grafico utilizzando la sintassi descritta in OutputFcn .

Sono disponibili due funzioni di grafico integrate:

  • @gsplotbestf traccia il miglior valore della funzione obiettivo.

  • @gsplotfunccount traccia il numero di valutazioni della funzione.

Vedi MultiStart Plot Function .

Esempio @gsplotbestf

Tipi di dati: cell | function_handle

Punti di partenza da eseguire, specificati come:

  • 'all' — Esegue tutti i punti di partenza.

  • 'bounds' — Esegue solo i punti di partenza che soddisfano i limiti.

  • 'bounds-ineqs' — Esegue solo i punti di partenza che soddisfano i limiti e i vincoli di disuguaglianza.

Esempio 'bounds' esegue l'analisi solo sui punti che soddisfano tutti i limiti.

Tipi di dati: char | string

Distribuire le chiamate del risolutore locale a più processori, specificati come false o true.

  • false — Non eseguire in parallelo.

  • true — Distribuisce le chiamate del risolutore locale a più processori.

Esempio true

Tipi di dati: logical

Tolleranza sulla distanza per considerare le soluzioni uguali, specificata come uno scalare non negativo. I risolutori considerano due soluzioni identiche se si trovano entro una distanza relativa XTolerance l'una dall'altra e hanno valori della funzione obiettivo entro una differenza relativa FunctionTolerance l'una dall'altra. Se entrambe le condizioni non sono soddisfatte, i risolutori segnalano le soluzioni come distinte. Impostare XTolerance su 0 per ottenere i risultati di ogni esecuzione del risolutore locale. Imposta XTolerance su un valore più grande per ottenere meno risultati. Per i dettagli su GlobalSearch, vedere Update Solution Set in When fmincon Runs . Per i dettagli su MultiStart, vedere Create GlobalOptimSolution Object .

Esempio 2e-4

Tipi di dati: double

Funzioni oggetto

runRun multiple-start solver

Esempi

comprimi tutto

Consideriamo una funzione con diversi minimi locali.

fun = @(x) x.^2 + 4*sin(5*x);
fplot(fun,[-5,5])

Per cercare il minimo globale, eseguire MultiStart su 20 istanze del problema utilizzando l'algoritmo fmincon 'sqp'.

rng default % For reproducibility
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
    fun,'x0',3,'lb',-5,'ub',5,'options',opts);
ms = MultiStart;
[x,f] = run(ms,problem,20)
MultiStart completed the runs from all start points. 

All 20 local solver runs converged with a positive local solver exitflag.
x = -0.3080
f = -3.9032

Crea un oggetto MultiStart con proprietà predefinite.

ms = MultiStart
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-06
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

Crea un oggetto MultiStart con tolleranze più ampie rispetto a quelle predefinite, in modo che il risolutore restituisca meno soluzioni vicine tra loro. Inoltre, fai in modo che MultiStart esegua solo i punti iniziali che sono fattibili rispetto ai limiti e ai vincoli di disuguaglianza.

ms = MultiStart('FunctionTolerance',2e-4,'XTolerance',5e-3,...
    'StartPointsToRun','bounds-ineqs')
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 2.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds-ineqs'
           XTolerance: 0.0050

Crea un oggetto GlobalSearch non predefinito.

gs = GlobalSearch('FunctionTolerance',2e-4,'NumTrialPoints',2000)
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 2000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 2.0000e-04
                    MaxTime: Inf
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'all'
                 XTolerance: 1.0000e-06

Crea un oggetto MultiStart che utilizzi le proprietà disponibili da gs .

ms = MultiStart(gs)
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 2.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

ms ha lo stesso valore non predefinito di FunctionTolerance come gs . Ma ms non utilizza la proprietà NumTrialPoints.

Crea un oggetto MultiStart con un FunctionTolerance di 1e-4 .

ms = MultiStart('FunctionTolerance',1e-4)
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

Aggiornare la proprietà XTolerance in 1e-3 e la proprietà StartPointsToRun in 'bounds'.

ms = MultiStart(ms,'XTolerance',1e-3,'StartPointsToRun','bounds')
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds'
           XTolerance: 1.0000e-03

È anche possibile aggiornare le proprietà una alla volta utilizzando la notazione con punto.

ms.MaxTime = 1800
ms = 
  MultiStart with properties:

          UseParallel: 0
              Display: 'final'
    FunctionTolerance: 1.0000e-04
              MaxTime: 1800
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'bounds'
           XTolerance: 1.0000e-03

Algoritmi

Per una descrizione dettagliata dell'algoritmo, vedere MultiStart Algorithm .

Funzionalità estese

Cronologia versioni

Introdotto in R2010a

espandi tutto