I am implementing NEAT (Neuroevolution of augmenting topologies) by Stanley, Original Paper. I am facing a problem during crossover of genomes. Suppose two networks with connections
Genome1 = {
(1, Input1, Output), //Numbers represent innovation numbers
(2, Input2, Output)
} //More Fit
Genome2 = {
(1, Input1, Output),
(2, Input2, Output), //Disabled
(3, Input2, Hidden1),
(4, Hidden1, Output)
}
are crossed over, then the connection (Input2, Output) in the fitter parent has a chance of being disabled,
There’s a preset chance that an inherited gene is disabled if it is disabled in either parent. (Pg. 109, Section 3.2, Figure 4)
and thus producing the following offspring:
Child = {
(1, Input1, Output),
(2, Input2, Output) //Disabled
}
and thus render the network non functional. Similarly by this chance nodes can get left in a state of uselessness after crossover (As having no outgoing connections or no connections at all). How can this be prevented or am I missing something here?