In this paper, we introduce the concept of non-dominance (commonly used in
multiobjective optimization) as a way to incorporate constraints into the f
itness function of a genetic algorithm. Each individual is assigned a rank
based on its degree of dominance over the rest of the population. Feasible
individuals are always ranked higher than infeasible ones, and the degree o
f constraint violation determines the rank among infeasible individuals. Th
e proposed technique does not require fine tuning of factors like the tradi
tional penalty function and uses a self-adaptation mechanism that avoids th
e traditional empirical adjustment of the main genetic operators (i.e., cro
ssover and mutation).