How to solve a constrained binary multi-objective optimization problem through genetic algorithm?

Dear All,
I would like to solve a multi-objective problem that has both equality and inequality constraints and where the decision variables are binary. I would like to find the Pareto front with the help of a genetic algorithm.
The solver gamultiobj handles such binary multi-objective problems but ignores the constraints. Alternatively, I tried defining the variables' bounds to [0,1] and set all variables as integers but failed in that.
Does anybody know how to deal with this issue? Any other toolbox for MATLAB that is capable is also highly appreciated. Thank you!

1 comentario

If you have written the code would you please share it as iam trying to find the same. Thanks!

Iniciar sesión para comentar.

 Respuesta aceptada

You need to not tell it that you want integer constraints. Instead, you need to supply your own custom mutation and crossover and population files that happen to never generate non-binary values for those positions.

2 comentarios

Dear Mr. Roberson,
I very much appreciate your answer. I managed to find some hints on how to write those files you mentioned. The thread's link is as follows: https://de.mathworks.com/matlabcentral/answers/103369-is-it-possible-to-solve-a-mixed-integer-multi-objective-optimization-problem-using-global-optimizati
However, linear inequality and equality constraints are not included in the files posted there. It is just stated that it is possible to do so.
Would you mind also giving me some tips on how to do that? I know the workaround to turn equality constraints into inequality ones so my question reduces itself to only adding inequality constraints to my binary multi-objective problem.
Thank you very much!
Just pass A, b, Aeq, beq matrices as usual. Those are evaluated by plain multiplication, which does not need to know that the x values are restricted to integer since it is just multiplication and comparison.

Iniciar sesión para comentar.

Más respuestas (1)

If you have written the code would you please share it as iam trying to find the same. Thanks!

1 comentario

I found an NSGA-II implementation in MATLAB that worked for me https://de.mathworks.com/matlabcentral/fileexchange/31166-ngpm-a-nsga-ii-program-in-matlab-v1-4
In parallel, I ran a weighted sum method to test the pareto front. It worked fine until now.

Iniciar sesión para comentar.

Categorías

Preguntada:

el 28 de Dic. de 2016

Editada:

el 19 de Mzo. de 2017

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by