Added constraints to mutate and crossover (probably has bugs)