# GA results obtains "Function Tolerance but constraints are not satisfied."

6 views (last 30 days)
Matlab Noob on 10 Oct 2016
Commented: Alan Weiss on 11 Oct 2016
I tried to solve fitness function and nonlinear constraints. variables are almost 200 (150 variables are integer value)
GA optoolbox shows me this message.
Objective function value: 1612176.7897540922
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance
but constraints are not satisfied.
However, if i set 250 generations, i got this message.
Optimization running.
Objective function value: 1592795.7559062957
Optimization terminated: maximum number of generations exceeded.
I do not fully understand why ga obtains wrong answer during long iterations.
Can you help me which one i should follow?

Walter Roberson on 10 Oct 2016
Edited: Walter Roberson on 10 Oct 2016
Your population is getting stuck in a local minima, in which all of the function values for the population are so close together that ga cannot figure out which direction to go to get out of the minima. But at the same time, the local minima it is stuck in is one where the constraints are not being met. It could be the case that none of the generated values ever meet the constraints and it spends its time hunting for a place the constraints are met. At the end of 250 generations it has not yet given up on the possibility of finding a place where the constraints are met, but with the larger number of iterations it decides "No, I tried everything reasonable under the options I was given, and I am sure now that I cannot find anywhere near here that meets the constraints."
##### 3 CommentsShow 1 older commentHide 1 older comment
Walter Roberson on 11 Oct 2016
Without knowing more about your function and your constraints, it is difficult to say. Sometimes the randomly generated populations just don't happen to satisfy the constraints. Sometimes the constraints are not feasible.
Alan Weiss on 11 Oct 2016
You might want to try to find some initial feasible points and give them to ga as part of an initial population. The more feasible initial points you find, the better ga will do.
Alan Weiss
MATLAB mathematical toolbox documentation