I want to use a multiobjective fitness function, like NSGA2, in our genetic programming setup. I have put this on my parameters file:
parent.0 = koza.params
parent.1 = nsga2.params
in koza.params the following is defined:
eval = ec.simple.SimpleEvaluator (via simple.params)
breed = ec.simple.SimpleBreeder (via simple.params)
pop.subpop.0.species.fitness = ec.gp.koza.KozaFitness
pop.subpop.0.species.pipe = ec.breed.MultiBreedingPipeline
pop.subpop.0.species.pipe.source.0 = ec.gp.koza.CrossoverPipeline
eval = ec.multiobjective.nsga2.NSGA2Evaluator
breed = ec.multiobjective.nsga2.NSGA2Breeder
pop.subpop.0.species.fitness = ec.multiobjective.nsga2.NSGA2MultiObjectiveFitness
pop.subpop.0.species.pipe = ec.vector.breed.VectorMutationPipeline
pop.subpop.0.species.pipe.source.0 = ec.vector.breed.VectorCrossoverPipeline
but the system gets configured using the values in koza.params, apparently ignoring those in nsga2.params.
I can't figure out how to correctly set this. Commenting out the relevant koza.params causes the following exception:
Exception in thread "main" java.lang.ClassCastException: ec.multiobjective.nsga2.NSGA2MultiObjectiveFitness cannot be cast to ec.gp.koza.KozaFitness
Its likely that the GP system its getting its configuration from some default values.
We are close to our deadline, so some quick help will be greatly appreciated!
--Pedro J. Ponce de León