Genetic Algorithm hardly converges in a large Integer optimization problem

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

Antworten (2)

Alan Weiss
Alan Weiss am 2 Dez. 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 am 2 Dez. 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 Kommentar

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

Melden Sie sich an, um zu kommentieren.

Gefragt:

am 29 Nov. 2019

Kommentiert:

am 3 Dez. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by