MATLAB: Using genetic algorithm (ga) function for integer and linear inequality constrained optimization. Candidate solutions are violating the inequality constraints

genetic algorithmGlobal Optimization Toolboxlinear constraints

I am using the ga() function in the Global Optimisation Toolbox. The problem is constrained by a linear inequality and all the optimisation variables must be integers:
problem.Aineq=[1 1 1 1 1 1];
problem.bineq = 12;
problem.intcon=[1 2 3 4 5 6];
However by looking at the population at various points through the evolution I can see that there are some candidate solutions being generated that violate the inequality constraint.
E.g. A candidate_solution might be: [3 2 2 2 2 2]
I am concerned that the ga() function is "wasting" computing time by evaluating the fitness of solutions that are outside the constrained solution space. Can anyone confirm if this is the case?
From reading the MATLAB documentation for ga() and constrained optimisation it states: "All the linear constraints and bounds are satisfied throughout the optimization." https://uk.mathworks.com/help/gads/examples/constrained-minimization-using-the-genetic-algorithm.html.
Am I misusing ga() if it is violating the constraints?
Thanks

Best Answer

Sorry about that, this is a documentation problem. Thank you for reporting the problem. I will fix the documentation soon.
According to a developer, when there are integer constraints, ga strictly enforces bound constraints, but no longer strictly enforces linear constraints. The linear constraints become part of the penalty function that attempts to keep things feasible, but, indeed, the population can be infeasible.
As for what you can do about it, I suppose that you could give a large fitness value for infeasible members as has already been suggested. Or, since your linear constraint is particularly simple, you could write your own mutation, crossover, and creation functions that ensure both an integer-feasible and linear-feasible population, and dispense with the built-in ga version. You see, it is not so easy to satisfy general linear and integer constraints, but your constraint is not at all hard to satisfy.
Again, sorry for the erroneous information in the doc.
Alan Weiss
MATLAB mathematical toolbox documentation