# How to handle infeasibility caused due to crossover and mutation in genetic algorithm for optimization?

I have chromosomes with floating-point representation with values between $$0$$ and $$1$$. For example

Let $$p_1 = [0.1, 0.2, 0.3]$$ and $$p_2 = [0.5, 0.6, 0.7]$$ be two parents. Both comply with the set of constraints. In my case, the major constraint is $$p_1[1]*p_1[2] - k*p_1[0] \geq 0$$ for any chromosome $$p_1$$. For the example above we can take $$k=0.3$$, which renders $$c_2$$ infeasible.

However, the children produced by 1 point crossover, we get $$c_1 = [0.1, 0.6, 0.7]$$ and $$c_2 = [0.5, 0.2, 0.3]$$ out of which 1 or both may not comply with the given constraints.

A similar scenario can also occur with a small perturbation of values due to mutation strategy. Correct me if I am wrong in the belief that such kind of scenarios might arise irrespective of the strategy employed for crossover and mutation.

What are the options to handle such kinds of cases?

Another option is to just let the operator violate constraints and then deal with the ramifications afterward. You don't go into details about what your constraints actually are, just that c1=[0.1, 0.6, 0.7] violates them. Let's say the constraint is that the third position should not be more than 4x greater than the first one. OK, so then let's take this offspring and adjust either the first or third item. Maybe we make the new individual into c1=[0.2, 0.6, 0.7].