Hauptinhalt

Diese Seite wurde mithilfe maschineller Übersetzung übersetzt. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

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

Beschreibung

ms = MultiStart erstellt ms, einen MultiStart-Solver, dessen Eigenschaften auf die Standardwerte eingestellt sind.

Beispiel

ms = MultiStart(Name,Value) legt Eigenschaften mithilfe von Name-Wert-Paaren fest.

Beispiel

ms = MultiStart(oldMS,Name,Value) erstellt eine Kopie des oldMS MultiStart-Solvers und legt Eigenschaften mithilfe von Name-Wert-Paaren fest.

Beispiel

ms = MultiStart(gs) erstellt ms, einen MultiStart-Solver, mit gemeinsamen Parameterwerten aus dem gs GlobalSearch-Solver.

Beispiel

Eigenschaften

alle erweitern

Anzeigeebene für das Befehlsfenster, angegeben als einer der folgenden Zeichenvektoren oder Zeichenfolgen:

  • 'final' – Berichten Sie die zusammenfassenden Ergebnisse, nachdem run fertig ist.

  • 'iter' – Berichten Sie die Ergebnisse nach dem ersten fmincon-Lauf, nach Phase 1, nach jeweils 200 Startpunkten und nach jedem Lauf von fmincon, 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:

  • @gsplotbestf stellt den besten Zielfunktionswert dar.

  • @gsplotfunccount stellt 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

runRun multiple-start solver

Beispiele

alle reduzieren

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

alle erweitern

Versionsverlauf

Eingeführt in R2010a

alle erweitern