ECJ-INTEREST-L Archives

July 2014

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:
Tue, 29 Jul 2014 23:08:23 +0200
Content-Type:
text/plain
Parts/Attachments:
text/plain (183 lines)
That's right, finishEvaluating is really meant for threads.  While Siggy and others have suggested subclassing SimpleEvaluator, it's more general to just add a Statistics object; that way you can switch evaluators without having to subclass yet another one just to add this feature. Composition, not subclassing!

Sean

On Jul 29, 2014, at 9:02 PM, Eric Scott <[log in to unmask]> wrote:

> PS: There is a Problem.finishEvaluating() method that users can override to do post-processing, but it's called each time a thread completes, not after the whole population is done evaluating.  So you probably don't want to use it.
> 
> 
> On Tue, Jul 29, 2014 at 2:56 PM, Eric 'Siggy' Scott <[log in to unmask]> wrote:
> You can find that behavior in SimpleEvaluator.evaluatePopulation(), which evaluates the population in parallel via a number of SimpleEvaluatorThreads that call SimpleEvaluator.evalPopChunk().  The actual "for loop" you are looking for is in evalPopChunk(),  but it only runs on the portion of the population that belongs to its thread.
> 
> It really is simpler to use inheritance and add on your functionality after all that logic gets executed.
> 
> Siggy
> 
> 
> On Tue, Jul 29, 2014 at 2:29 PM, Márcio Basgalupp <[log in to unmask]> wrote:
> Thanks. But it's not clear for me. It should have an easier way, a
> place (a loop already done) where I can just set the new fitness for
> each individual. A loop where ECJ calls evaluate() method for each
> individual, something like children[i].evaluate().
> --------
> Prof. Dr. Márcio Porto Basgalupp
> Instituto de Ciência e Tecnologia (ICT)
> Universidade Federal de São Paulo (UNIFESP)
> Tel: +55 12 3309-9582
> 
> 
> On Tue, Jul 29, 2014 at 2:48 PM, Eric 'Siggy' Scott <[log in to unmask]> wrote:
> > The loop proper is in EvolutionState.run().
> >
> > SimpleEvolutionState.evolve() contains the logic for a single iteration of
> > the loop.  In particular, it calls evaluator.evalutePopulation() once each
> > generation.  So you want to inherit from SimpleEvaluator and override
> > evaluatePopulation(), adding your logic after the call to
> > super.evaluatePopulation().
> >
> > Siggy
> >
> >
> >
> >
> > On Tue, Jul 29, 2014 at 1:29 PM, Márcio Basgalupp <[log in to unmask]>
> > wrote:
> >>
> >> Thanks, but there is no loop in the method evolve() of my
> >> EvolutionState.java.
> >>
> >> public int evolve()
> >>
> >>         throws InternalError, FileNotFoundException, IOException,
> >> Exception { return R_NOTDONE; }
> >>
> >>
> >> The same for SimpleEvolutionState.java
> >>
> >>
> >> This loop (varying the children/individuals) is exactly what I'm looking
> >> for.
> >>
> >> Best,
> >> Márcio
> >>
> >>
> >>
> >> --------
> >> Prof. Dr. Márcio Porto Basgalupp
> >> Instituto de Ciência e Tecnologia (ICT)
> >> Universidade Federal de São Paulo (UNIFESP)
> >> Tel: +55 12 3309-9582
> >>
> >>
> >> On Tue, Jul 29, 2014 at 12:23 PM, Eric 'Siggy' Scott <[log in to unmask]>
> >> wrote:
> >> > The post-evaluation stage is only for running statistics.
> >> >
> >> > Look in the evolve() method of your EvolutionState -- that has the
> >> > high-level loop.  You'll probably want to customize your Evaluator to
> >> > add a
> >> > post-processing step, leaving the EvolutionState as is.
> >> >
> >> > Siggy
> >> >
> >> >
> >> > On Tue, Jul 29, 2014 at 11:02 AM, Márcio Basgalupp <[log in to unmask]>
> >> > wrote:
> >> >>
> >> >> Thank you Ye.
> >> >>
> >> >> That's true.
> >> >>
> >> >> But my question is: where (in the code) is this post-evaluation stage?
> >> >>
> >> >> Best,
> >> >> Márcio
> >> >> --------
> >> >> Prof. Dr. Márcio Porto Basgalupp
> >> >> Instituto de Ciência e Tecnologia (ICT)
> >> >> Universidade Federal de São Paulo (UNIFESP)
> >> >> Tel: +55 12 3309-9582
> >> >>
> >> >>
> >> >> On Tue, Jul 29, 2014 at 11:40 AM, Xiaomeng Ye <[log in to unmask]>
> >> >> wrote:
> >> >> > It has been a while since I last used ECJ. I could be totally wrong.
> >> >> >
> >> >> > I remember there is a post-evaluation stage for each generation in
> >> >> > the
> >> >> > evolution. If I am going to divide all fitness values by the biggest
> >> >> > one. I
> >> >> > will do it in this post-evaluation stage.
> >> >> >
> >> >> > This post-evaluation stage is probably between the evaluation stage
> >> >> > (where
> >> >> > the fitness are calculated) and the breeding stage (where
> >> >> > crossover/mutation
> >> >> > happens).
> >> >> >
> >> >> >
> >> >> > On Tue, Jul 29, 2014 at 10:18 AM, Márcio Basgalupp
> >> >> > <[log in to unmask]>
> >> >> > wrote:
> >> >> >>
> >> >> >> Dear all,
> >> >> >>
> >> >> >> I'm using ECJ for implementing a GP based-program. After evaluating
> >> >> >> (compute fitness) all individuals, I would like to "update" these
> >> >> >> fitness values (for example, divide all fitness values by the
> >> >> >> biggest
> >> >> >> one). However, I couldn't find where (which class) I have to do
> >> >> >> that.
> >> >> >> It should be where ECJ calls the method evaluate() for each
> >> >> >> individual, then I could update before proceeding to the next steps
> >> >> >> (select, genetic operators, ...).
> >> >> >>
> >> >> >> I would appreciate if someone help me.
> >> >> >>
> >> >> >> Best,
> >> >> >> Márcio
> >> >> >>
> >> >> >> --------
> >> >> >> Prof. Dr. Márcio Porto Basgalupp
> >> >> >> Instituto de Ciência e Tecnologia (ICT)
> >> >> >> Universidade Federal de São Paulo (UNIFESP)
> >> >> >> Tel: +55 12 3309-9582
> >> >> >
> >> >> >
> >> >
> >> >
> >> >
> >> >
> >> > --
> >> >
> >> > Ph.D student in Computer Science
> >> > George Mason University
> >> > http://mason.gmu.edu/~escott8/
> >
> >
> >
> >
> > --
> >
> > Ph.D student in Computer Science
> > George Mason University
> > http://mason.gmu.edu/~escott8/
> 
> 
> 
> -- 
> 
> Ph.D student in Computer Science
> George Mason University
> http://mason.gmu.edu/~escott8/
> 
> 
> 
> -- 
> 
> Ph.D student in Computer Science
> George Mason University
> http://mason.gmu.edu/~escott8/

ATOM RSS1 RSS2