SimpleBreeder (starting around line 94) uses an overly elaborate bit of
math to divide the subpopulation into chunks and hand each chunk off to
a thread. Unless you're doing something fairly funky in
PlagueSimpleBreeder, this is the primary place where something is going
wrong.
Questions:
- Are you doing multithreaded breeding? If so, how many threads?
- How large is the subpopulation when this error occurs?
- What does PlagueSimpleBreeder.breedPopulation do before it calls
super.breedPopulation?
Sean
Daniel Lombraña González wrote:
> Hi,
>
> I'm going to check the ES package and try it. Adjoining is the
> backtrace (I'm using GNU/Linux with jre 1.6)
>
> Daniel
>
>
> | ECJ
> | An evolutionary computation system (version 18)
> | By Sean Luke
> | Contributors: L. Panait, G. Balan, S. Paus, Z. Skolicki, R.
> Kicinger, E. Popovici,
> | J. Harrison, J. Bassett, R. Hubley, A. Desai, and A. Chircop
> | URL: http://cs.gmu.edu/~eclab/projects/ecj/
> | Mail: [log in to unmask]
> | (better: join ECJ-INTEREST at URL above)
> | Date: June 23, 2008
> | Current Java: 1.6.0_0 / OpenJDK Server VM-1.6.0_0-b11
> | Required Minimum Java: 1.3
>
>
> Threads: breed/1 eval/1
> Seed: 4357
> Job: 0
> Setting up
> Processing GP Types
> Processing GP Node Constraints
> Processing GP Function Sets
> Processing GP Tree Constraints
> Initializing Generation 0
> Subpop 0 best fitness of generation: Fitness: Raw=24.0 Adjusted=0.04 Hits=40
> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18
> at ec.gp.koza.CrossoverPipeline.produce(CrossoverPipeline.java:422)
> at ec.breed.MultiBreedingPipeline.produce(MultiBreedingPipeline.java:130)
> at ec.simple.SimpleBreeder.breedPopChunk(SimpleBreeder.java:182)
> at ec.simple.SimpleBreeder.breedPopulation(SimpleBreeder.java:119)
> at ec.simple.PlagueSimpleBreeder.breedPopulation(PlagueSimpleBreeder.java:25)
> at ec.simple.SimpleEvolutionState.evolve(SimpleEvolutionState.java:119)
> at ec.EvolutionState.run(EvolutionState.java:371)
> at ec.Evolve.main(Evolve.java:648)
>
>
> On Mon, Oct 20, 2008 at 3:02 PM, Sean Luke <[log in to unmask]> wrote:
>> I'm sorry Daniel, I can't do much here without the full stack backtrace
>> printed out, not just the exception. Can you provide that?
>>
>> At any rate, nowhere should ECJ be relying on initial population size
>> conditions: that would definitely be a bug. Populations can and do resize
>> themselves: in fact I have an entire paper relying on that fact.
>> (http://www.cs.bham.ac.uk/~wbl/biblio/gp-html/luke_2003_gecco.html) And the
>> ES package does it as a matter of course.
>>
>> Sean
>>
>> Daniel Lombraña González wrote:
>>> Hi to all,
>>>
>>> I'm trying to use ECJ with GP and dynamic populations. I have been
>>> searching in the mailing list and I found the following conversation:
>>>
>>> https://listserv.gmu.edu/cgi-bin/wa?A2=ind0404&L=ECJ-INTEREST-L&P=R72&I=-3
>>>
>>> I have tried that solution, but I get an error when the
>>> CrossoverPipeline tries to create two new offsprings. The obtained
>>> error is the following one:
>>>
>>> Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 18
>>>
>>> It seems that the variable "q" is getting out of the bound in the inds
>>> array. I don't know how to fix this. It seems that the problem relies
>>> on the initial population length = 20, which is not varied at all
>>> during the evolution.
>>>
>>> Any ideas?
>>>
>>> PS: By the way, if using the proposed solution you increase the size
>>> of the subpopulation you get an error because ECJ tries to compute the
>>> fitness of a null individual :)
>>>
>>> --
>>>
>>> ··························································································································································
>>> PhD Candidate
>>> Cátedra Ceta-Ciemat de la Universidad de Extremadura
>>> http://gea.unex.es/catedra-ceta-ciemat/
>>> Universidad de Extremadura
>>>
>>> ··························································································································································
>>> Por favor, NO utilice formatos de archivo propietarios para el
>>> intercambio de documentos, como DOC y XLS, sino HTML, RTF, TXT, CSV
>>> o cualquier otro que no obligue a utilizar un programa de un
>>> fabricante concreto para tratar la información contenida en él.
>>>
>>> ··························································································································································
>>>
>>>
>>>
>
>
>
|