Genetic Algorithm hardly converges in a large Integer optimization problem

2 views (last 30 days)
My problem has 30-50 integer decision variables, and around 100 nonlinear constraints.
I run it with pupulation size = 300, elite count = 30, function tolerance=1e-11.
Usually, the algorithm stops without finding a feasible solution (exitflag=-2, "average change in the penalty fitness value less than options.FunctionTolerance but constraints are not satisfied")
When I run it many times, with different random numbe seed, it finds a fesible solution which is a local minimun (there are around 10 local minima).
Only if I run it about 50-100 times, it finds the global solution. This approach is very inefficient, since I got a large class of similar problems in structure, but with different numeric data sets.
I played with the parameters (e.g., changed populationsize between 100 to 1000) - there qasn't much change in GA's ability to find a fesible solution in less trials.
I can send the code for your inspection if you give me your email.
Thanks,
Miki

Answers (2)

Alan Weiss
Alan Weiss on 2 Dec 2019
This type of problem is challenging for ga. If you have a recent MATLAB version, you could try using surrogateopt with integer variables, using the workaround for nonlinear constraints shown here. But I am not sure that surrogateopt will work any more efficiently, if it works for this problem at all.
Good luck,
Alan Weiss
MATLAB mathematical toolbox documentation

Miki Weiss
Miki Weiss on 2 Dec 2019
Thanks Allan,
My version is R2017b, does it support it?
I am enclosing the m. files you can try them,
Run Main.m, it will call the functions
Miki Weiss
  1 Comment
Alan Weiss
Alan Weiss on 3 Dec 2019
Sorry, surrogateopt was introduced in R2018b, and integer constraints in surrogateopt were introduced in R2019b, as you can see in the release notes.
I don't have any other suggestions to give, sorry.
Alan Weiss
MATLAB mathematical toolbox documentation

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!