Options for ga() with only integer variables
Mostrar comentarios más antiguos
Hello to everyone,
I want to run a ga() with just integer variables.
The boundary conditions that I set for myself are: number of variables is 5, lb is 1 and the ub is 4. So there are 1024 possible combinations. My number of generations will be 7 with a Population of 30.
I am using gacreationuniform, crossoverlaplace and mutationpower. Also, I will try several Crossover fractions.
When I run with this set of parameters and with an crossover fraction of 0.2, I will "only" get 132 unique individuals.
Does any one have an idea to set better parameters for the ga()?
Thank you very much and greetings,
Jonas
2 comentarios
John D'Errico
el 31 de Ag. de 2022
With that few possible options, why not just evaluate the objective at every valid combination, and take the best?
Jonas
el 31 de Ag. de 2022
Respuestas (1)
Walter Roberson
el 1 de Sept. de 2022
1 voto
Suppose you had a surface that had a large bowl, but also had a narrow deeper pit. Any given initial population might happen to all be in the catch-basin for the large bowl. Optimization on that bowl might only require examining 1/8th or so of the possibilities to find the minima of the bowl.
Is cross-over and mutation guaranteed to find the narrow deep pit? No -- at least not unless you run a large population for a lot of iterations. The catch-basin for the narrow deep pit might only cover (for example) 1/256 th of the possibilities.
2 comentarios
I think this is scenario of a large bowl with a narrow pit. The deepest pit lies at
.
x = linspace(1, 7, 60001);
y = exp(-(exp(- abs((x - 4)/0.8))/0.04).^2) - exp(-(x.^4 - 16*x.^2 + 5*x).^2);
plot(x, y), grid on, xlabel('x'), ylabel('y')
fun = @(x) exp(-(exp(- abs((x - 4)/0.8))/0.04).^2) - exp(-(x.^4 - 16*x.^2 + 5*x).^2);
lb = 1;
ub = 7;
options = optimoptions('ga', 'PopulationSize', 30, 'MaxGenerations', 7);
x = ga(fun, 1, [], [], [], [], lb, ub, [], options)
Walter Roberson
el 1 de Sept. de 2022
Imagine something like
A B C
* * *
** ** * *
******** ********** * *
* **
+
D E
if you start anywhere in the range A to B, you are going to end up either at D or in the shallow bowl.
If you start in B to C you may end up at the true minima at E (but in some cases you would end up near D anyhow even if you started in B to C range.)
Categorías
Más información sobre Matrices and Arrays en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
