Imposta il numero massimo di generazioni e generazioni di stallo
L'opzione MaxGenerations
determina il numero massimo di generazioni che l'algoritmo genetico può richiedere; vedere Condizioni di arresto per l'algoritmo. Aumentando MaxGenerations
è possibile migliorare il risultato finale. L'opzione correlata MaxStallGenerations
controlla il numero di passaggi che ga
esamina per verificare se sta facendo progressi. Aumentando MaxStallGenerations
è possibile consentire a ga
di continuare quando l'algoritmo necessita di più valutazioni di funzioni per trovare una soluzione migliore.
Ad esempio, ottimizza rastriginsfcn
utilizzando 10 variabili con parametri predefiniti. Per osservare i progressi del risolutore man mano che si avvicina al valore minimo di 0, ottimizzare il logaritmo della funzione.
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
Quando ga
si avvicina al punto ottimale nell'origine, si blocca. Per ottenere una soluzione migliore, impostare il limite di generazione dello stallo a 500 e il limite di generazione a 1000.
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
Questa volta il risolutore si avvicina molto di più al minimo reale.