A genetic algorithm code with constraints on individuals

3 views (last 30 days)
Ezzat on 23 Dec 2021
Answered: Alan Weiss on 23 Dec 2021
Hi all, I hope you all be in good health and doing well.
I developed a code for minimizing a multi-valued function F(x1,x2,...,x7)
the first solution set (or individual in terms of GA): x=[0.8,-0.001,0.001,0.0,0.2,-0.005,-0.0005]; and the suggested range is limited to a ratio of the initial solution: R(xi)= 0.2*xi.
I tried the ga, the results was at first few points convergent, giving descending curve, but the next was divergent, the curve was steady.
Finally, I performed that well using fminsearch in a short time. but I guess that I've been in a local minimum trapp, so, I want to write a mixed algorithm of fminsearch for local search and ga to move the solution out the local.
I suggest that my problem with ga is the need for constrains on the individual itself as shown above.
So, I need any optimization technique, favourably ga, with the availability to put constrains on the individuals in all generations with range =0.2 of each individual component.
Thank you.

Answers (1)

Alan Weiss
Alan Weiss on 23 Dec 2021
I cannot understand much of what you say, but it sounds as if you are trying to give bounds on the solution. If I understand you (which I might not), you have an initial point
x0 = [0.8,-0.001,0.001,0.0,0.2,-0.005,-0.0005];
and you want to limit your population to +-20% from this initial point. So give bounds. Take into account the signs of the x0 entries:
posx0 = x0 > 0;
negx0 = x0 < 0;
lb = zeros(size(x0));
ub = lb;
lb(posx0) = 0.8*x0(posx0);
lb(negx0) = 1.2*x0(negx0);
ub(posx0) = 1.2*x0(posx0);
ub(negx0) = 0.8*x0(negx0);
Notice that lb(4) = ub(4) = 0, meaning x(4) = 0 for any solution point x.
Alan Weiss
MATLAB mathematical toolbox documentation

Community Treasure Hunt

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

Start Hunting!

Translated by