Contenuto principale

Questa pagina è stata tradotta con la traduzione automatica. Fai clic qui per vedere l'ultima versione in inglese.

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.

Vedi anche

Argomenti