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à
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
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
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
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 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
Parametro di controllo dell'algoritmo, specificato come numero intero positivo.
Se la funzione di penalità osservata di
MaxWaitCyclepunti di prova consecutivi è almeno la soglia di penalità, allora aumentare la soglia di penalità (vedere PenaltyThresholdFactor).Se
MaxWaitCyclepunti di prova consecutivi si trovano in un bacino, allora aggiornare il raggio di quel bacino (vedere BasinRadiusFactor).
Esempio 40
Tipi di dati: double
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
Numero di potenziali punti di partenza, specificato come numero intero positivo.
Esempio 3e4
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
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
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:
@gsplotbestftraccia il miglior valore della funzione obiettivo.@gsplotfunccounttraccia 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.
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
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
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
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
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.
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 R2010aLa 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.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Seleziona un sito web
Seleziona un sito web per visualizzare contenuto tradotto dove disponibile e vedere eventi e offerte locali. In base alla tua area geografica, ti consigliamo di selezionare: .
Puoi anche selezionare un sito web dal seguente elenco:
Come ottenere le migliori prestazioni del sito
Per ottenere le migliori prestazioni del sito, seleziona il sito cinese (in cinese o in inglese). I siti MathWorks per gli altri paesi non sono ottimizzati per essere visitati dalla tua area geografica.
Americhe
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)