Print

Print


Hi!

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
...

in nsga2.params:

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!

Best,
--Pedro J. Ponce de León