GlobalSearch
Globales Minimum finden
Beschreibung
Ein GlobalSearch-Objekt enthält Eigenschaften (Optionen), die beeinflussen, wie run wiederholt einen lokalen Solver ausführt, um ein GlobalOptimSolution-Objekt zu generieren. Beim Ausführen versucht der Solver, eine Lösung mit dem niedrigsten Zielfunktionswert zu finden.
Erstellung
Syntax
Beschreibung
gs = GlobalSearch erstellt gs, einen GlobalSearch-Solver, dessen Eigenschaften auf die Standardwerte eingestellt sind.
gs = GlobalSearch(Name,Value) legt Eigenschaften mithilfe von Name-Wert-Paaren fest.
gs = GlobalSearch(oldGS,Name,Value) erstellt eine Kopie des oldGS GlobalSearch-Solvers und legt Eigenschaften mithilfe von Name-Wert-Paaren fest.
gs = GlobalSearch(ms) erstellt gs, einen GlobalSearch-Solver, mit gemeinsamen Eigenschaftswerten aus dem ms MultiStart-Solver.
Eigenschaften
Faktor zur Verringerung des Beckenradius, angegeben als Skalar von 0 bis 1. Der Radius eines Beckens verringert sich, nachdem MaxWaitCycle aufeinanderfolgende Startpunkte innerhalb des Beckens liegen. Der Beckenradius verringert sich um den Faktor 1 – BasinRadiusFactor.
Setzen Sie BasinRadiusFactor auf 0, um Aktualisierungen des Beckenradius zu deaktivieren.
Beispiel: 0.5
Datentypen: double
Anzeigeebene für das Befehlsfenster, angegeben als einer der folgenden Zeichenvektoren oder Zeichenfolgen:
'final'– Berichten Sie die zusammenfassenden Ergebnisse, nachdemrunfertig ist.'iter'– Berichten Sie die Ergebnisse nach dem erstenfmincon-Lauf, nach Phase 1, nach jeweils 200 Startpunkten und nach jedem Lauf vonfmincon, zusätzlich zur abschließenden Zusammenfassung.'off'– Keine Anzeige.
Beispiel: 'iter'
Datentypen: char | string
Multiplikator zur Bestimmung, ob sich ein Testpunkt in einem vorhandenen Anziehungsbecken befindet, angegeben als nicht negativer Skalar. Einzelheiten finden Sie unter Examine Stage 2 Trial Point to See if fmincon Runs.
Beispiel: 0.5
Datentypen: double
Toleranz für Funktionswerte zur Betrachtung gleicher Lösungen, angegeben als nicht negativer Skalar. Löser betrachten zwei Lösungen als identisch, wenn sie innerhalb einer relativen Distanz von XTolerance zueinander liegen und die Zielfunktionswerte innerhalb einer relativen Differenz von FunctionTolerance zueinander liegen. Wenn beide Bedingungen nicht erfüllt sind, melden die Löser die Lösungen als unterschiedlich. Setzen Sie FunctionTolerance auf 0, um die Ergebnisse jedes lokalen Solver-Laufs zu erhalten. Setzen Sie FunctionTolerance auf einen größeren Wert, um weniger Ergebnisse zu erhalten. Weitere Einzelheiten zu GlobalSearch finden Sie unter Update Solution Set in When fmincon Runs. Weitere Einzelheiten zu MultiStart finden Sie unter Create GlobalOptimSolution Object.
Beispiel: 1e-4
Datentypen: double
Maximale Zeit in Sekunden, die GlobalSearch ausgeführt wird, angegeben als positiver Skalar. GlobalSearch und seine lokalen Solver werden angehalten, wenn seit dem Beginn des Laufs MaxTime Sekunden vergangen sind, gemessen mit tic und toc.
MaxTime unterbricht lokale Solver während eines Laufs nicht, daher kann die Gesamtzeit MaxTime überschreiten.
Beispiel: 180 stoppt den Solver, wenn ein lokaler Solver-Aufruf nach 180 Sekunden zum ersten Mal beendet wird.
Datentypen: double
Algorithmus-Steuerungsparameter, angegeben als positive Ganzzahl.
Wenn die beobachtete Straffunktion von
MaxWaitCycleaufeinanderfolgenden Testpunkten mindestens der Strafschwelle entspricht, erhöhen Sie die Strafschwelle (siehe PenaltyThresholdFactor).Wenn sich
MaxWaitCycleaufeinanderfolgende Testpunkte in einem Becken befinden, aktualisieren Sie den Radius dieses Beckens (siehe BasinRadiusFactor).
Beispiel: 40
Datentypen: double
Anzahl der Punkte der Stufe 1, angegeben als positive Ganzzahl. Einzelheiten finden Sie unter Obtain Stage 1 Start Point, Run.
Beispiel: 1000
Datentypen: double
Anzahl der möglichen Startpunkte, angegeben als positive Ganzzahl.
Beispiel: 3e4
Datentypen: double
Bericht über den Solver-Fortschritt oder den Solver-Stopp, angegeben als Funktions-Handle oder Zellen-Array von Funktions-Handles. Ausgabefunktionen werden nach jedem lokalen Solver-Aufruf ausgeführt. Sie werden auch ausgeführt, wenn der globale Solver gestartet und beendet wird. Schreiben Sie Ausgabefunktionen mit der in OutputFcn beschriebenen Syntax. Siehe Custom GlobalSearch Output Function.
Die integrierte @savelocalsolutions-Ausgabefunktion speichert alle lokalen Lösungen in der Variable localSolTable im Basisarbeitsbereich. Diese Ausgabefunktion speichert sowohl die nicht realisierbaren lokalen Lösungen als auch die realisierbaren lokalen Lösungen. Ein Beispiel finden Sie unter Collect All Local Solutions.
Datentypen: cell | function_handle
Erhöhung der Strafschwelle, angegeben als positiver Skalar. Einzelheiten hierzu finden Sie unter Auf große Zählerwerte reagieren.
Beispiel: 0.4
Datentypen: double
Plot-Solver-Fortschritt, angegeben als Funktions-Handle oder Zellen-Array von Funktions-Handles. Plotfunktionen werden nach jedem lokalen Solver-Aufruf ausgeführt. Sie werden auch ausgeführt, wenn der globale Solver gestartet und beendet wird. Schreiben Sie Plotfunktionen mit der in OutputFcn beschriebenen Syntax.
Es gibt zwei integrierte Plotfunktionen:
@gsplotbestfstellt den besten Zielfunktionswert dar.@gsplotfunccountstellt die Anzahl der Funktionsauswertungen dar.
Siehe MultiStart Plot Function.
Beispiel: @gsplotbestf
Datentypen: cell | function_handle
Zu laufende Startpunkte, angegeben als:
'all'— Alle Startpunkte ausführen.'bounds'– Führen Sie nur Startpunkte aus, die die Grenzen einhalten.'bounds-ineqs'– Führen Sie nur Startpunkte aus, die Grenzwerte und Ungleichheitsbeschränkungen erfüllen.
GlobalSearch überprüft die StartPointsToRun-Eigenschaft nur während Phase 2 des GlobalSearch-Algorithmus (der Hauptschleife). Weitere Informationen finden Sie unter GlobalSearch Algorithm.
Beispiel: 'bounds' führt nur Punkte aus, die alle Grenzen erfüllen.
Datentypen: char | string
Distanztoleranz für die Betrachtung gleicher Lösungen, angegeben als nicht negativer Skalar. Löser betrachten zwei Lösungen als identisch, wenn sie innerhalb einer relativen Distanz von XTolerance zueinander liegen und die Zielfunktionswerte innerhalb einer relativen Differenz von FunctionTolerance zueinander liegen. Wenn beide Bedingungen nicht erfüllt sind, melden die Löser die Lösungen als unterschiedlich. Setzen Sie XTolerance auf 0, um die Ergebnisse jedes lokalen Solver-Laufs zu erhalten. Setzen Sie XTolerance auf einen größeren Wert, um weniger Ergebnisse zu erhalten. Weitere Einzelheiten zu GlobalSearch finden Sie unter Update Solution Set in When fmincon Runs. Weitere Einzelheiten zu MultiStart finden Sie unter Create GlobalOptimSolution Object.
Beispiel: 2e-4
Datentypen: double
Objektfunktionen
run | Run multiple-start solver |
Beispiele
Erstellen Sie ein Optimierungsproblem mit mehreren lokalen Minima und versuchen Sie, das globale Minimum mit GlobalSearch zu finden. Das Ziel ist das Sechshöcker-Kamelrückenproblem (siehe 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
Sie können den Zielfunktionswert bei x anfordern, wenn Sie run aufrufen, indem Sie die folgende Syntax verwenden:
[x,fval] = run(gs,problem)
Wenn Sie jedoch vergessen haben, fval anzufordern, können Sie den Zielfunktionswert trotzdem bei x berechnen.
fval = sixmin(x)
fval = -1.0316
Betrachten Sie eine Funktion mit mehreren lokalen Minima.
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

Um nach dem globalen Minimum zu suchen, führen Sie GlobalSearch mit dem fmincon 'sqp'-Algorithmus aus.
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
Erstellen Sie ein nicht standardmäßiges MultiStart-Objekt.
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
Erstellen Sie ein GlobalSearch-Objekt, das die verfügbaren Eigenschaften von ms verwendet.
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 hat den gleichen nicht standardmäßigen Wert FunctionTolerance wie ms. Aber gs verwendet die UseParallel-Eigenschaft nicht.
Erstellen Sie ein GlobalSearch-Objekt mit einem FunctionTolerance von 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
Aktualisieren Sie die Eigenschaft XTolerance auf 1e-3 und die Eigenschaft StartPointsToRun auf '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
Sie können Eigenschaften auch einzeln aktualisieren, indem Sie die Punktnotation verwenden.
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
Algorithmen
Eine ausführliche Beschreibung des Algorithmus finden Sie unter GlobalSearch Algorithm. Ugray et al. [1] beschreiben sowohl den Algorithmus als auch die Scatter-Search-Methode zur Generierung von Testpunkten.
Referenzen
[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.
Versionsverlauf
Eingeführt in R2010aDie integrierte @savelocalsolutions-Ausgabefunktion speichert alle lokalen Lösungen in der Variable localSolTable im Basisarbeitsbereich. Diese Ausgabefunktion speichert sowohl die nicht realisierbaren lokalen Lösungen als auch die realisierbaren lokalen Lösungen.
Das optimValues Structure in Ausgabefunktionen und Plotfunktionen enthält jetzt das constrviolation-Feld, das die maximale Einschränkungsverletzung aufweist. Dieser Wert ist 0, wenn keine Einschränkungsverletzungen vorliegen.
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.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- 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)