MultiStart
Finden Sie mehrere lokale Minima
Beschreibung
Ein MultiStart-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, mehrere lokale Lösungen für ein Problem zu finden, indem er von verschiedenen Punkten aus startet.
Erstellung
Syntax
Beschreibung
ms = MultiStart erstellt ms, einen MultiStart-Solver, dessen Eigenschaften auf die Standardwerte eingestellt sind.
ms = MultiStart(Name,Value) legt Eigenschaften mithilfe von Name-Wert-Paaren fest.
ms = MultiStart(oldMS,Name,Value) erstellt eine Kopie des oldMS MultiStart-Solvers und legt Eigenschaften mithilfe von Name-Wert-Paaren fest.
ms = MultiStart(gs) erstellt ms, einen MultiStart-Solver, mit gemeinsamen Parameterwerten aus dem gs GlobalSearch-Solver.
Eigenschaften
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
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 MultiStart ausgeführt wird, angegeben als positiver Skalar. MultiStart 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
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
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.
Beispiel: 'bounds' führt nur Punkte aus, die alle Grenzen erfüllen.
Datentypen: char | string
Verteilen Sie lokale Solver-Aufrufe auf mehrere Prozessoren, angegeben als false oder true.
false– Nicht parallel ausführen.true– Verteilen Sie die lokalen Solver-Aufrufe auf mehrere Prozessoren.
Beispiel: true
Datentypen: logical
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
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 MultiStart mit dem fmincon 'sqp'-Algorithmus auf 20 Instanzen des Problems aus.
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
Erstellen Sie ein MultiStart-Objekt mit Standardeigenschaften.
ms = MultiStart
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-06
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
Erstellen Sie ein MultiStart-Objekt mit größeren Toleranzen als standardmäßig, damit der Solver weniger Lösungen zurückgibt, die nahe beieinander liegen. Lassen Sie MultiStart außerdem nur Anfangspunkte ausführen, die hinsichtlich der Grenzen und Ungleichheitsbeschränkungen durchführbar sind.
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
Erstellen Sie ein nicht standardmäßiges GlobalSearch-Objekt.
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
Erstellen Sie ein MultiStart-Objekt, das die verfügbaren Eigenschaften von gs verwendet.
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 hat den gleichen nicht standardmäßigen Wert FunctionTolerance wie gs. Aber ms verwendet die NumTrialPoints-Eigenschaft nicht.
Erstellen Sie ein MultiStart-Objekt mit einem FunctionTolerance von 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
Aktualisieren Sie die Eigenschaft XTolerance auf 1e-3 und die Eigenschaft StartPointsToRun auf '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
Sie können Eigenschaften auch einzeln aktualisieren, indem Sie die Punktnotation verwenden.
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
Algorithmen
Eine ausführliche Beschreibung des Algorithmus finden Sie unter MultiStart Algorithm.
Erweiterte Fähigkeiten
Für die parallele Ausführung setzen Sie die Option 'UseParallel' auf true.
options = optimoptions('solvername','UseParallel',true)
Weitere Informationen finden Sie unter How to Use Parallel Processing in Global Optimization Toolbox.
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)