ECJ-INTEREST-L Archives

April 2013

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:
Mon, 15 Apr 2013 20:56:34 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (43 lines)
[sorry if this is a repost -- GMU has seriously messed up the email system today]

Courtney, I can't answer this for you, but I can make some guesses.  if the standardized fitness is 0.0, KozaFitness will indicate that it is ideal, and ECJ will behave like you've found below.  So the question is why the standardized fitness is zero.  One possibility is that you're never setting the fitness at all somehow, maybe throwing an exception that you're catching elsewhere, and so the fitness will by default be 0 (hence ideal).  Another possibility is that you're setting your weighted_score variable to 0.0f each time.

Sean

On Apr 15, 2013, at 1:21 PM, Courtney Falk wrote:
> 
>> I'm working on a regression problem.  The goal is to have GP evolve a
>> comparator function for ordering lists.
>> 
>> But the problem is that I changed the way I score the fitness.  Originally I
>> would give a score of 0.0 if the correct result was first in the list.  Now
>> I changed so that the score is the natural log of how far from the first
>> position that the correct result is in the hopes that a more continuous
>> fitness score would improve evolution.
>> 
>> The head-scratching problem I have is that with the new fitness score I
>> always get a evolution that halts after one generation:
>> 
>> Initializing Generation 0
>> Subpop 0 best fitness of generation: Fitness: Standardized=0.0 Adjusted=1.0
>> Hits=0
>> Found Ideal Individual
>> Subpop 0 best fitness of run: Fitness: Standardized=0.0 Adjusted=1.0 Hits=0
>> 
>> I always had multiple generations previously.  And I've debugged the code to
>> make sure that setStandardizedScore is being passed a value greater than
>> zero.  So why does it say that the standardized score is 0 when I know I'm
>> passing it non-zero values?
>> 
>> I've attached the entire class for reference.  But the gist is that:
>> 
>> sum += 1.0f;
>> 
>> changed to :
>> 
>> sum += (float) Math.log(position + 1);
> 
> 
> 
> 

ATOM RSS1 RSS2