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
Sintassi
Descrizione
ms = MultiStart
crea ms
, un risolutore MultiStart
con le sue proprietà impostate sui valori predefiniti.
ms = MultiStart(Name,Value)
imposta le proprietà utilizzando coppie nome-valore.
ms = MultiStart(oldMS,Name,Value)
crea una copia del risolutore oldMS
MultiStart
e imposta le proprietà utilizzando coppie nome-valore.
ms = MultiStart(gs)
crea ms
, un risolutore MultiStart
, con valori di parametri comuni dal risolutore gs
GlobalSearch
.
Proprietà
Display
— Livello di visualizzazione della finestra di comando
'final'
(predefinito) | 'iter'
| 'off'
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 dirun
.'iter'
– Segnala i risultati dopo l'esecuzione iniziale difmincon
, dopo la Fase 1, dopo ogni 200 punti di partenza e dopo ogni esecuzione difmincon
, oltre al riepilogo finale.'off'
– Nessuna visualizzazione.
Esempio 'iter'
Tipi di dati: char
| string
FunctionTolerance
— Tolleranza sui valori della funzione per considerare le soluzioni uguali
1e-6
(predefinito) | scalare non negativo
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
MaxTime
— Tempo massimo in secondi di esecuzione di MultiStart
Inf
(predefinito) | scalare positivo
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
OutputFcn
— Segnalare l'avanzamento del risolutore o interromperlo
[]
(predefinito) | @savelocalsolutions
| funzione handle | matrice di celle di funzioni handle
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
PlotFcn
— Progresso del risolutore di grafici
[]
(predefinito) | funzione handle | matrice di celle di funzioni 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
StartPointsToRun
— Punti di partenza per la corsa
'all'
(predefinito) | 'bounds'
| 'bounds-ineqs'
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
UseParallel
— Distribuisci le chiamate del risolutore locale a più processori
false
(predefinito) | true
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
XTolerance
— Tolleranza sulla distanza per considerare le soluzioni uguali
1e-6
(predefinito) | scalare non negativo
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
run | Run multiple-start solver |
Esempi
Esegui MultiStart
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
Oggetto predefinito MultiStart
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
Oggetto MultiStart
non predefinito
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
MultiStart
Utilizzo delle proprietà comuni da GlobalSearch
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
.
Aggiorna le proprietà MultiStart
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
Supporto parallelo automatico
Accelera il codice mediante esecuzione automatica dei calcoli in parallelo con Parallel Computing Toolbox™.
Per l'esecuzione in parallelo, impostare l'opzione 'UseParallel'
su true
.
options = optimoptions('
solvername
','UseParallel',true)
Per ulteriori informazioni, vedere How to Use Parallel Processing in Global Optimization Toolbox .
Cronologia versioni
Introdotto in R2010aR2024a: Funzione di uscita: Funzione di output integrata e struttura optimValues
aggiornata
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.
Nelle funzioni di output e nelle funzioni di tracciamento, optimValues Structure contiene ora il campo constrviolation
, che presenta la massima violazione del vincolo. Questo valore è 0
in caso di nessuna violazione dei vincoli.
Comando MATLAB
Hai fatto clic su un collegamento che corrisponde a questo comando MATLAB:
Esegui il comando inserendolo nella finestra di comando MATLAB. I browser web non supportano i comandi MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)