Azzera filtri
Azzera filtri

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

4 visualizzazioni (ultimi 30 giorni)
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!

Risposta accettata

Walter Roberson
Walter Roberson il 28 Dic 2016
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 Commenti
Atamert Arslan
Atamert Arslan il 31 Gen 2017
Modificato: Walter Roberson il 31 Gen 2017
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!
Walter Roberson
Walter Roberson il 31 Gen 2017
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.

Accedi per commentare.

Più risposte (1)

Laila Qaisi
Laila Qaisi il 19 Mar 2017
If you have written the code would you please share it as iam trying to find the same. Thanks!
  1 Commento
Atamert Arslan
Atamert Arslan il 19 Mar 2017
Modificato: Atamert Arslan il 19 Mar 2017
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.

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by