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.