I'm working in a hyper-heuristic GA to evolve machine learning algorithms.
I was using a traditional breeding pipeline (tournament selection --> crossover --> mutation), but I decided to change it so it would look something like this: (tournament selection --> reproduction/crossover/mutation), in which there is 5% of chance of reproducing (cloning) the selected individuals, 5% of chance of mutating the individuals and 90% of chance of them suffering crossover. In other words, the probabilities should sum to 1 considering that the selected individuals will undergo one of the three operations at a time.
I edited my parameter file to look like this:
pop.subpop.0.species.pipe = ec.breed.MultiBreedingPipeline
pop.subpop.0.species.pipe.num-sources = 3
pop.subpop.0.species.pipe.source.0 = ec.breed.ReproductionPipeline
pop.subpop.0.species.pipe.source.0.prob = 0.05
pop.subpop.0.species.pipe.source.1 = ec.vector.breed.VectorCrossoverPipeline
pop.subpop.0.species.pipe.source.1.prob = 0.90
pop.subpop.0.species.pipe.source.2 = ec.vector.breed.VectorMutationPipeline
pop.subpop.0.species.pipe.source.2.prob = 0.05
pop.subpop.0.species.pipe.source.0.source.0 = ec.select.TournamentSelection
pop.subpop.0.species.pipe.source.1.source.0 = ec.select.TournamentSelection
pop.subpop.0.species.pipe.source.1.source.1 = same
pop.subpop.0.species.pipe.source.2.source.0 = ec.select.TournamentSelection
pop.subpop.0.species.crossover-type = one
pop.subpop.0.species.mutation-prob = 0.5
pop.subpop.0.species.mutation-type = reset
select.tournament.size = 2
Is this correct? Or am I missing something important? Apparently it works, but I'm not sure it is working as it should.
Thank you for your help.