LISTSERV mailing list manager LISTSERV 16.0

Help for ECJ-INTEREST-L Archives


ECJ-INTEREST-L Archives

ECJ-INTEREST-L Archives


ECJ-INTEREST-L@LISTSERV.GMU.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Monospaced Font

LISTSERV Archives

LISTSERV Archives

ECJ-INTEREST-L Home

ECJ-INTEREST-L Home

ECJ-INTEREST-L  October 2007

ECJ-INTEREST-L October 2007

Subject:

Re: SPEA2 with ECJ

From:

David Oranchak <[log in to unmask]>

Reply-To:

ECJ Evolutionary Computation Toolkit <[log in to unmask]>

Date:

Thu, 11 Oct 2007 00:12:32 -0400

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (126 lines)

On Oct 10, 2007, at 7:10 AM, David Robert White wrote:

> Hi,
>
> Firstly - thanks to all those who have contributed to ECJ. I've
> been using it for a while and have found it to be a great toolkit
> to work with.
> I've recently started using the SPEA2 classes with ECJ. I have two
> queries that I need help with:
>
> 1. Which one of the following correctly describes the fitness
> values held in multifitness within the SPEA2MultiObjectiveFitness
> class, inherited from the MultiObjectiveFitness class:
>
> 0 (best) to infinity (worst)
> 0 (worst) to infinity (best)
> 0 (worst) to 1 (best)
>
> I know this is a basic question, but it seems to depend on where
> you look as to which answer you receive.
>
> 2. Does anyone have an example that uses SPEA2, including their
> parameter files, that they could possibly share?
>
> Thanks,
>
> David


I have used SPEA2 for a few experiments. My parameter file does not
differ much from the one included in the ECJ distribution in the file
ec/multiobjective/spea2/spea2.params. I was using a population size
of 3000 with an archive size of 500. I have not had much luck
getting SPEA2 to work properly, probably due to some configuration
error on my part. In my SPEA2 runs on a combinatorial problem
(attacking a homophonic substitution cipher), my pareto fronts tended
to converge on a small handful of distinct multiobjective fitness
vectors. Within each cluster, the genotypes were all duplicates of
each other, so there was no diversity. For example, one of my runs
converged on the following set of multiobjective fitness vectors
after only 100 generations:

  424 33.0|4.0|23.0|
  405 26.0|8.0|28.0|
  397 34.0|0.0|18.0|
  365 31.0|8.0|25.0|
  358 27.0|10.0|23.0|
  352 28.0|10.0|19.0|

(the first number indicates the number of individuals related to the
fitness vector).

I know that there are very many more fitness vectors, particularly
non-dominated ones, in my problem space, so I am not sure what I was
doing wrong. Does anyone have any recommendations of what I should
look for?

For what it's worth, here's the parameter file I was using:

#SPEA2

verbosity = 0
flush = true
nostore = true

breedthreads = 1
evalthreads = 1
seed.0 = time

state = ec.simple.SimpleEvolutionState

pop = ec.Population
init = ec.simple.SimpleInitializer
finish = ec.simple.SimpleFinisher
breed = ec.multiobjective.spea2.SPEA2Breeder
eval = ec.multiobjective.spea2.SPEA2Evaluator
stat = org.oranchak.ZodiacESStatistics
exch = ec.simple.SimpleExchanger

exch.subpop.0.select = ec.select.TournamentSelection

generations = 200000000
quit-on-run-complete = false
checkpoint = true
checkpoint-modulo = 50

prefix = experiment214
stat.file = $experiment214.txt
stat.gather-full = true

pop.subpops = 1
pop.subpop.0 = ec.multiobjective.spea2.SPEA2Subpopulation
pop.subpop.0.archive-size = 500

pop.subpop.0.size = 3000
pop.subpop.0.duplicate-retries = 0
pop.subpop.0.species = ec.vector.IntegerVectorSpecies

pop.subpop.0.species.min-gene = 0
pop.subpop.0.species.max-gene = 499

pop.subpop.0.species.fitness =
ec.multiobjective.spea2.SPEA2MultiObjectiveFitness
pop.subpop.0.species.fitness.numobjectives = 3

pop.subpop.0.species.ind = org.oranchak.CipherWordGene

pop.subpop.0.species.genome-size = 50
pop.subpop.0.species.crossover-type = one
pop.subpop.0.species.crossover-prob = 1.0
pop.subpop.0.species.mutation-prob = 0.05

pop.subpop.0.species.pipe = ec.vector.breed.VectorMutationPipeline
pop.subpop.0.species.pipe.source.0 =
ec.vector.breed.VectorCrossoverPipeline
pop.subpop.0.species.pipe.source.0.source.0 =
ec.multiobjective.spea2.SPEA2TournamentSelection
pop.subpop.0.species.pipe.source.0.source.1 = same
select.tournament.size = 2

eval.problem = org.oranchak.ZodiacWordProblem


Regards,
-Dave