Print

Print


Hi again,

First, thanks for your help and support.

I think I have not explained myself correctly. I have left the first
proposed solution and now I'm using only the ES package. So, the empty
population problem relies on the ES package. I'm working with it just
right now, so let me study and learn a bit more about the ES package
and I tell you if I still having the problem due to a ECJ bug or
because I was doing something wrong.

Daniel

On Mon, Oct 20, 2008 at 10:45 PM, Sean Luke <[log in to unmask]> wrote:
> I'm misunderstanding.  You're saying you reduce the population size to zero,
> and then see the error?  That would obviously produce some odd problems --
> but I doubt it's the case as the error is indicating it's looking for slot
> #18.
>
> There's something else funky going on here, so rather than jump off to the
> ES package, it'd be helpful for me to have some more data here on what your
> Plague code is doing during its breedPopulation method.
>
> Sean
>
> Daniel Lombraña González wrote:
>>
>> I'm working just right now with the ES package. It's doing more or
>> less what I need (the same as in your paper), but now I have to figure
>> out how I can reduce the population in the specific amount that I
>> want, for example: eliminate the worst individual in each generation.
>> Now I have achieved to reduce the population size by removing 2
>> individuals each generation. However, when the population is empty and
>> there are more generations to be computed you get an exception. So, I
>> think I will try to work with the ES package because it seems to be
>> what I need to build the Plague.
>>
>> Daniel
>>
>> On Mon, Oct 20, 2008 at 4:47 PM, Sean Luke <[log in to unmask]> wrote:
>>>
>>> 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.
>>>>>>
>>>>>>
>>>>>>
>>>>>> ··························································································································································
>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>
>>
>



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