Hello,
I'm a new user to several subjects such as genetic algortihms, deap and python, so I have to apologize for really newbie questions. However, despite being new to all of this, I've been able to get into
work quickly thanks to the deap tool and its documentation, which I
really appreciate.
I'm trying to optimize a multi-objective problem as follows. I have a fortran function (called from python) that when I introduce three real numbers (three inputs) I get 11 real numbers (indeed, some of the are arrays), which are the solutions to the three inputs. In my problem I know the solutions and I want to find the three inputs. In my evaluation function I'm only performing a division between the eleven results I'm obtaining introducing the three inputs of the current individual into the Fortran function, with the desired ones, and I subtract one to each result. When the results are similar to the desired ones, the evaluation function returns eleven values close to zero, obtaining then the function I have to minimize. Otherwise they are more or less far from zero depending on the initial values. A general question about this is if this is a suitable fitness function or it should be improved by using a different and more sophisticated technique? I find it really simple and I'm not sure if it is good enough.
And two more questions more focused on deap. I started using a code similar to the one given in the
One Max Problem example (only modifying the mutate function to mutGaussian), since it was easy to understand and begin with. However, I didn't get to obtain good results with it, even though I tried with several combinations of the variables CXPB, MUTPB, NGEN and MU, and also with mu, sigma and indpb of mutGaussian. After studying some examples given with deap, I modified the code, obtaining one similar to the example of NSGA2 (which main difference is the selection function), then with better results, but, from my point of view, not optimal ones. Since I've spent several hours with it, I would like to ask if anyone can help with the functions I need to modify in order to improve the results in a situation like the one I've described. Any comment or suggestion would be really helpful.
Thank you very much in advance!