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:04:44 +0200
Content-Type:
text/plain
Parts/Attachments:
text/plain (96 lines)
Now that I think about it, I would call super.postEvaluationStatistics(state) AFTER you do the manipulation.  That way no statistics are outputted until you have had a chance to manipulate the fitness values.

Sean

> My suggestion would be to create a Statistics class:
> 
> public MyStatistics extends Statistics
> 	{
>   	public void postEvaluationStatistics(final EvolutionState state)
>        	{
> 		super.postEvaluationStatistics(state);  // always call this
> 
> 		// Here you can manipulate state.population.subpops[0].individuals
> 		// however you like
> 		}
> 	}
> 
> Then I'd just add this class to the Statistics chain:
> 
> stat.num-children = 1
> stat.child.0 = MyStatistics
> 
> Sean
> 
> On Jul 29, 2014, at 5:23 PM, Eric 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/
> 

ATOM RSS1 RSS2