ECJ-INTEREST-L Archives

June 2006

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, 28 Jun 2006 10:29:09 -0400
Content-Type:
text/plain
Parts/Attachments:
text/plain (47 lines)
On Jun 28, 2006, at 10:02 AM, Stefan Wappler wrote:

> I'm interested in initializing the initial population by using
> randomly generated individuals at the one hand (using grow, half,
> or uniform), and by reusing individuals from previous optimizations
> on the other hand. Is this basically possible? Is there any
> documentation about seeding?

Not much, but we're here. What do you want to know?

It works like this:
1. ECJ cals Initializer.initialPopulation(...)
2. Initializer.initialPopulation(...) calls Population.populate(...)
3. Population(...) calls Subpopulation.populate(...)
4. Subpopulation.populate(...) either generates random individuals or
loads from a file

All you have to do is make a subclass of Subpopulation, override the
populate method to fill the subpopulation as you like, and set the
parameter pop.subpop.n=your.new.SubpopulationClassname for each
subpopulation n that your'e using (likely you're only using one, so n
would be 0). The existing code in Subpopulation.populate(...) is
small and easy to understand. Use it to roll your own.

> As far as I know, when specifying pop.subpop.0.file=$myFile the
> initial population will be created from the individuals from the
> given file. Why is it important to have the fitness value also
> saved to this file? The current optimization could use a different
> fitness function and hence this value would be irrelevant.

Because ECJ doesn't know if you need the fitness or not. Almost
certainly you *will* need the fitness, so throwing it out would be
unwelcome. In the case that you want a different fitness, you can
just replace it on initialization; override
Initializer.initialPopulation(...) to call super, and then change the
fitness as you like.

> Furthermore, I'd like to have an initial population containing 50
> individuals. The seeding file contains only 10 individuals. How can
> I specify that the remaining 40 individuals shall be generated
> using a built-in tree builder (such as grow)?

You can't: you'll need to write that code, but it's easy. See the
discussion above.

Sean

ATOM RSS1 RSS2