Hi Adrián, The problem is that NSGA2 expects to be working with Fitness objects that are specifically of type NSGA2Fitness (which is itself a subclass of MultiObjectiveFitness). If you have your CustomFitness class inherent from NSGA2Fitness instead of MultiObjectiveFitness, you should be good to go. Thanks, Siggy On Sun, Dec 9, 2018 at 4:38 PM Adrián Romero Cáceres < [log in to unmask]> wrote: > Hello! > > I have implemented a new betterThan operator into a CustomFitness class, > which is an extended class of MultiObjectiveFitness. I wrote > pop.subpop.0.species.fitness = ec.multiobjective.CustomFitness inside my > experiment param file. Once the execution starts, after the first > generation fails, returning the next error: > > Exception in thread "main" java.lang.ClassCastException: > ec.multiobjective.CustomFitness cannot be cast to > ec.multiobjective.nsga2.NSGA2MultiObjectiveFitness > at > > ec.multiobjective.nsga2.NSGA2Breeder.assignFrontRanks(NSGA2Breeder.java:185) > at > ec.multiobjective.nsga2.NSGA2Breeder.buildArchive(NSGA2Breeder.java:121) > at > ec.multiobjective.nsga2.NSGA2Breeder.loadElites(NSGA2Breeder.java:82) > at ec.simple.SimpleBreeder.breedPopulation(SimpleBreeder.java:225) > at > ec.multiobjective.nsga2.NSGA2Breeder.breedPopulation(NSGA2Breeder.java:113) > at > ec.simple.SimpleEvolutionState.evolve(SimpleEvolutionState.java:104) > at ec.EvolutionState.run(EvolutionState.java:482) > at ec.Evolve.main(Evolve.java:771) > > I forgot something? Is it the right way to extend the betterThan operator? > > Thanks in advance, > Adrián. > -- Doctoral Candidate, George Mason University http://mason.gmu.edu/~escott8/