Print

Print


Are you sure that they have nothing to do with each other?

I've seen (in the code) that the fitness is stored in an Individual and SizeFairCrossover handles these Individuals. I haven't tested other BreedingPipelines yet, but I also don't want to use a different pipeline, because it's better for my rules if I use SizeFairCrossoverBreeding.

Bojan

----- Urspr√ľngliche Mail -----
Von: "Sean Luke" <[log in to unmask]>
An: [log in to unmask]
Gesendet: Freitag, 19. Juli 2013 15:51:30
Betreff: Re: Getting generation of best fitness

fitness doesn't have anything to do with SizeFairCrossover, and certainly has nothing to do with the dump below.  Did you try replacing SizeFairCrossover with some other crossover?  I'm afraid I cannot answer your question.

Sean

On Jul 19, 2013, at 9:45 AM, Bojan Janisch wrote:

> Hey Sean,
> 
> I've implemented a new Fitness which has almost the same methods like Koza-Fitness. But now ECJ is Breeding forever after the first evaluation. I'm using SizeFairCrossover BreedingPipeline and my Threaddump looks so:
> 
> "Thread-11" prio=10 tid=0x00002aef202c7000 nid=0x3a5c runnable [0x00002aef26076000]
>   java.lang.Thread.State: RUNNABLE
> 	at java.lang.Integer.hashCode(Integer.java:733)
> 	at java.util.HashMap.put(HashMap.java:372)
> 	at ec.gp.breed.SizeFairCrossoverPipeline.traverseTreeForDepth(SizeFairCrossoverPipeline.java:645)
> 	at ec.gp.breed.SizeFairCrossoverPipeline.produce(SizeFairCrossoverPipeline.java:330)
> 	at ec.breed.MultiBreedingPipeline.produce(MultiBreedingPipeline.java:135)
> 	at ec.simple.SimpleBreeder.breedPopChunk(SimpleBreeder.java:377)
> 	at ec.simple.SimpleBreederThread.run(SimpleBreeder.java:483)
> 	at java.lang.Thread.run(Thread.java:662)
> 
>   Locked ownable synchronizers:
> 	- None
> 
> 
> Does my fitness miss something crucial?
> 
> Here's an abstract of my methods:
> 
> setFitness(EvolutionState, float) //stores the fitness value and the generation in class variables
> fitness()
> isIdealFitness()
> equivalentTo(Fitness)
> betterThan(Fitness)
> fitnessToString()
> fitnessToStringForHumans()
> createdAt() //returns the generation when the fitness was created
> readFitness(EvolutionState, LineNumberReader)
> writeFitness(EvolutionState, DataOutput)
> readFitness(EvolutionState, DataInput)
> setToMeanOf(EvolutionState, Fitness[])
> 
> 
> If I change my Fitness to Koza again, I don't have any problems.
> 
> Greetings
> 
> Bojan
> 
> ----- Urspr√ľngliche Mail -----
> Von: "Sean Luke" <[log in to unmask]>
> An: [log in to unmask]
> Gesendet: Freitag, 19. Juli 2013 15:19:43
> Betreff: Re: Getting generation of best fitness
> 
> On Jul 18, 2013, at 10:10 AM, Bojan Janisch wrote:
> 
>> is there a way to get the generation of the individual which holds the best fitness?
> 
> ECJ does not do this: you'll have to store the evaluation date of individuals yourself.
> 
> Sean