ECJ-INTEREST-L Archives

March 2007

ECJ-INTEREST-L@LISTSERV.GMU.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Sean Luke <[log in to unmask]>
Reply To:
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Date:
Wed, 7 Mar 2007 09:46:37 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (61 lines)
Pipelines are more flexible than you imagine, but they're really an  
abstraction for EC-style population modification. That's not what
you want. You want to create an entire population at a time under a
distribution specified by the EDA model.

To do this, abandon pipelines entirely, and simply write your own
Breeder subclass, EDABreeder (or perhaps a better name, as there are
many EDA algorithms) which creates one population from another.
That's what we did for PSO, if you look out on CVS you'll see the PSO
code. It's very simple, just override the method

public Population breedPopulation(EvolutionState state)

This should return a revised Population based on the current
EvolutionState. It's probably best not to reuse the existing
Population located at state.population (in case someone's weird code
relies on its existence). You can get a fresh, empty copy with
state.population.emptyClone()

Sean


On Mar 7, 2007, at 5:51 AM, Petr Posik wrote:

> Hi, folks.
>
> I'm new to ECJ, just discovering its basic functionality. Besides,
> I work in
> the field of EDAs. (For those who are not aware of them: they do
> not use
> crossover and mutation, rather they fit a probabilistic model to
> selected
> individuals and create offspring by sampling from that model).
>
> I understand the idea behind pipelines like this:
> I need to create N new individuals. I instruct ECJ to run N times
> (or N/2
> times, it depends) e.g. the following pipeline:
> 1] For each (or each pair of) offspring, ask the mutation to create
> it (them).
> 2] Mutation asks crossover to create and individual(s) which it can
> mutate.
> 3] Crossover asks selection methods to provide parents.
> (If I am wrong, pls. correct me.)
>
> IMHO, to create an EDA in ECJ, I would have to use a huge pipeline
> since all
> the selected individuals become parents of all the offspring
> produced. It
> also means that the pipeline would not be called repeatedly, but
> only once
> per generation.
>
> Does ECJ allow me to do that? How do I set up such a "pipeline for
> population" (as opposed to "pipeline for individuals")?
>
> Thanks a lot for any suggestions or pointers.
> Best regards,
>
> Petr Posik

ATOM RSS1 RSS2