GlobalSearch
Trova il minimo globale
Descrizione
Un oggetto GlobalSearch
contiene proprietà (opzioni) che influenzano il modo in cui run
esegue ripetutamente un risolutore locale per generare un oggetto GlobalOptimSolution
. Una volta eseguito, il risolutore tenta di individuare una soluzione che abbia il valore più basso della funzione obiettivo.
Creazione
Sintassi
Descrizione
gs = GlobalSearch
crea gs
, un risolutore GlobalSearch
con le sue proprietà impostate sui valori predefiniti.
gs = GlobalSearch(Name,Value)
imposta le proprietà utilizzando coppie nome-valore.
gs = GlobalSearch(oldGS,Name,Value)
crea una copia del risolutore oldGS
GlobalSearch
e imposta le proprietà utilizzando coppie nome-valore.
gs = GlobalSearch(ms)
crea gs
, un risolutore GlobalSearch
, con valori di proprietà comuni al risolutore ms
MultiStart
.
Proprietà
BasinRadiusFactor
— Fattore di riduzione del raggio del bacino
0.2
(predefinito) | scalare da 0
a 1
Fattore di riduzione del raggio del bacino, specificato come uno scalare da 0
a 1
. Il raggio di un bacino diminuisce dopo che MaxWaitCycle
punti di partenza consecutivi si trovano all'interno del bacino. Il raggio del bacino diminuisce di un fattore 1 – BasinRadiusFactor
.
Impostare BasinRadiusFactor
su 0
per disabilitare gli aggiornamenti del raggio del bacino.
Esempio 0.5
Tipi di dati: double
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
DistanceThresholdFactor
— Moltiplicatore per determinare se il punto di prova si trova nel bacino esistente
0.75
(predefinito) | scalare non negativo
Moltiplicatore per determinare se un punto di prova si trova in un bacino di attrazione esistente, specificato come uno scalare non negativo. Per i dettagli, vedere Examine Stage 2 Trial Point to See if fmincon Runs .
Esempio 0.5
Tipi di dati: double
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 GlobalSearch
Inf
(predefinito) | scalare positivo
Tempo massimo in secondi per l'esecuzione di GlobalSearch, specificato come uno scalare positivo. GlobalSearch 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
MaxWaitCycle
— Parametro di controllo dell'algoritmo
20
(predefinito) | intero positivo
Parametro di controllo dell'algoritmo, specificato come numero intero positivo.
Se la funzione di penalità osservata di
MaxWaitCycle
punti di prova consecutivi è almeno la soglia di penalità, allora aumentare la soglia di penalità (vedere PenaltyThresholdFactor).Se
MaxWaitCycle
punti di prova consecutivi si trovano in un bacino, allora aggiornare il raggio di quel bacino (vedere BasinRadiusFactor).
Esempio 40
Tipi di dati: double
NumStageOnePoints
— Numero di punti Fase 1
200
(predefinito) | intero positivo
Numero di punti della Fase 1, specificato come numero intero positivo. Per i dettagli, vedere Obtain Stage 1 Start Point, Run .
Esempio 1000
Tipi di dati: double
NumTrialPoints
— Numero di potenziali punti di partenza
1000
(predefinito) | intero positivo
Numero di potenziali punti di partenza, specificato come numero intero positivo.
Esempio 3e4
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
PenaltyThresholdFactor
— Aumento della soglia di sanzione
0.2
(predefinito) | scalare positivo
Aumento della soglia di penalità, specificato come uno scalare positivo. Per maggiori dettagli, vedere Reagire a valori di contatore elevati.
Esempio 0.4
Tipi di dati: double
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.
GlobalSearch
controlla la proprietà StartPointsToRun
solo durante la Fase 2 dell'algoritmo GlobalSearch
(il ciclo principale). Per ulteriori informazioni, vedere GlobalSearch Algorithm .
Esempio 'bounds'
esegue l'analisi solo sui punti che soddisfano tutti i limiti.
Tipi di dati: char
| string
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 GlobalSearch
su un problema multidimensionale
Crea un problema di ottimizzazione che abbia diversi minimi locali e prova a trovare il minimo globale usando GlobalSearch
. L'obiettivo è il problema del dorso del cammello a sei gobbe (vedi Run the Solver).
rng default % For reproducibility gs = GlobalSearch; sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ... + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4); problem = createOptimProblem('fmincon','x0',[-1,2],... 'objective',sixmin,'lb',[-3,-3],'ub',[3,3]); x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2
-0.0898 0.7127
È possibile richiedere il valore della funzione obiettivo in x
quando si chiama run
utilizzando la seguente sintassi:
[x,fval] = run(gs,problem)
Tuttavia, se hai dimenticato di richiedere fval
, puoi comunque calcolare il valore della funzione obiettivo in x
.
fval = sixmin(x)
fval = -1.0316
Esegui GlobalSearch
sul problema 1-D
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 GlobalSearch
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); gs = GlobalSearch; [x,f] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 23 local solver runs converged with a positive local solver exit flag.
x = -0.3080
f = -3.9032
GlobalSearch
Utilizzo delle proprietà comuni da MultiStart
Crea un oggetto MultiStart
non predefinito.
ms = MultiStart('FunctionTolerance',2e-4,'UseParallel',true)
ms = MultiStart with properties: UseParallel: 1 Display: 'final' FunctionTolerance: 2.0000e-04 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
Crea un oggetto GlobalSearch
che utilizzi le proprietà disponibili da ms
.
gs = GlobalSearch(ms)
gs = GlobalSearch with properties: NumTrialPoints: 1000 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
gs
ha lo stesso valore non predefinito di FunctionTolerance
come ms
. Ma gs
non utilizza la proprietà UseParallel
.
Aggiorna le proprietà GlobalSearch
Crea un oggetto GlobalSearch
con un FunctionTolerance
di 1e-4
.
gs = GlobalSearch('FunctionTolerance',1e-4)
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 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'
.
gs = GlobalSearch(gs,'XTolerance',1e-3,'StartPointsToRun','bounds')
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 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.
gs.MaxTime = 1800
gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000e-04 MaxTime: 1800 OutputFcn: [] PlotFcn: [] StartPointsToRun: 'bounds' XTolerance: 1.0000e-03
Algoritmi
Per una descrizione dettagliata dell'algoritmo, vedere GlobalSearch Algorithm . Ugray et al. [1] descrivono sia l'algoritmo che il metodo di ricerca a dispersione per generare punti di prova.
Riferimenti
[1] Ugray, Zsolt, Leon Lasdon, John Plummer, Fred Glover, James Kelly, and Rafael Martí. Scatter Search and Local NLP Solvers: A Multistart Framework for Global Optimization. INFORMS Journal on Computing, Vol. 19, No. 3, 2007, pp. 328–340.
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)