Définir le nombre maximal de Generation et de Stall Generation
L'option MaxGenerations
détermine le nombre maximal de générations nécessaires à l'algorithme génétique ; voir Conditions d'arrêt de l'algorithme. L'augmentation de MaxGenerations
peut améliorer le résultat final. L'option associée MaxStallGenerations
contrôle le nombre d'étapes que ga
examine pour voir s'il progresse. L'augmentation de MaxStallGenerations
peut permettre à ga
de continuer lorsque l'algorithme a besoin de plus d'évaluations de fonctions pour trouver une meilleure solution.
Par exemple, optimisez rastriginsfcn
en utilisant 10 variables avec des paramètres par défaut. Pour observer la progression du solveur lorsqu'il s'approche de la valeur minimale de 0, optimisez le logarithme de la fonction.
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
Lorsque ga
s'approche du point optimal à l'origine, il cale. Pour obtenir une meilleure solution, définissez la limite de Stall Generation à 500 et la limite de Generation à 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
Cette fois, le solveur se rapproche beaucoup plus du vrai minimum.