I'm trying to write a genetic algorithm for pieces of ride track, and thinking about how to implement mutation/crossover. The goal is to evolve a) a complete loop and b) an exciting ride (I have criteria for this).
I have about sixty pieces to choose from but not all of them are compatible with each other. For example, a track piece may be banked left and another track piece may be banked right.
When allowing mutations, I could make an effort to only allow track pieces to mutate to other pieces with compatible angles. Or, I could only crossover two tracks at points that share the same angle. However this may limit the ability to do advanced explorations that may be fruitful down the line.
A parallel for the popular "Hello World" example would be, you are trying to generate any valid word, or any valid sentence. English has a rule (made up for this example, no idea if it's true) that a consonant can never follow a Z. Should you only allow vowels to mutate after a Z?
Does that make any sense? Or should you just allow every type of mutation and discard the bad ones?