Hauptinhalt

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

Maximale Anzahl von Generationen festlegen und Generationen anhalten

Die Option MaxGenerations bestimmt die maximale Anzahl von Generationen, die der genetische Algorithmus benötigt; siehe Abbruchbedingungen für den Algorithmus. Eine Erhöhung von MaxGenerations kann das Endergebnis verbessern. Die zugehörige Option MaxStallGenerations steuert die Anzahl der Schritte, die ga überprüft, um festzustellen, ob es Fortschritte macht. Durch Erhöhen von MaxStallGenerations kann ga aktiviert werden, um fortzufahren, wenn der Algorithmus mehr Funktionsauswertungen benötigt, um eine bessere Lösung zu finden.

Optimieren Sie beispielsweise rastriginsfcn mithilfe von 10 Variablen mit Standardparametern. Um den Fortschritt des Lösers zu beobachten, wenn er sich dem Mindestwert 0 nähert, optimieren Sie den Logarithmus der Funktion.

rng default % For reproducibility
fun = @(x)log(rastriginsfcn(x));
nvar = 10;
options = optimoptions('ga','PlotFcn',"gaplotbestf");
[x,fval] = ga(fun,nvar,[],[],[],[],[],[],[],options)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.

x = 1×10

   -0.0495   -0.0670   -0.0485    0.0174   -0.0087    0.0275   -0.0383    0.0620   -1.0047   -0.0298

fval = 1.4540

Wenn sich ga dem optimalen Punkt am Ursprung nähert, bleibt es stehen. Um eine bessere Lösung zu erhalten, legen Sie das Stall-Generierungslimit auf 500 und das Generierungslimit auf 1000 fest.

options = optimoptions(options,'MaxStallGenerations',500,'MaxGenerations',1000);
rng default % For reproducibility
[x,fval] = ga(fun,nvar,[],[],[],[],[],[],[],options)
ga stopped because it exceeded options.MaxGenerations.

x = 1×10

    0.0025   -0.0039    0.0021   -0.0030   -0.0053    0.0033    0.0080    0.0012    0.0006    0.0088

fval = -3.1467

Dieses Mal nähert sich der Löser dem wahren Minimum viel näher.

Siehe auch

Themen