Establecer el número máximo de generaciones y generaciones de bloqueo
La opción MaxGenerations determina el número máximo de generaciones que toma el algoritmo genético; consulte Condiciones de detención del algoritmo. Aumentar MaxGenerations puede mejorar el resultado final. La opción relacionada MaxStallGenerations controla el número de pasos que ga revisa para ver si está progresando. Aumentar MaxStallGenerations puede permitir que ga continúe cuando el algoritmo necesita más evaluaciones de funciones para encontrar una mejor solución.
Por ejemplo, optimice rastriginsfcn utilizando 10 variables con parámetros predeterminados. Para observar el progreso del solucionador a medida que se acerca al valor mínimo de 0, optimice el logaritmo de la función.
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
A medida que ga se acerca al punto óptimo en el origen, se detiene. Para obtener una mejor solución, establezca el límite de generación de pérdida en 500 y el límite de generación en 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
Esta vez el solucionador se aproxima mucho más al mínimo verdadero.