ECJ-INTEREST-L Archives

February 2011

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, 14 Feb 2011 14:31:47 -0500
Content-Type:
text/plain
Parts/Attachments:
text/plain (125 lines)
Check out ec/app/ecsuite/de.params

Sean

On Feb 12, 2011, at 3:14 AM, K S wrote:

> Is there a tutorial / example that demonstrates differential  
> evolution setup?  I read the DE part of the manual, but I think my  
> setup is still wrong.  If I had to guess, I think my breeding  
> pipeline is setup incorrectly as I think the DEBreeder class is  
> supposed to perform the crossover, not  
> ec.vector.breed.VectorCrossoverPipeline.  However, replacing causes  
> an error.  When running, the best individual in the population at  
> end of run is best individual in population after 1st generation.
>
> # Copyright 2006 by Sean Luke and George Mason University
> # Licensed under the Academic Free License version 3.0
> # See the file "LICENSE" for more information
>
> # The parameters that were laid out in Tutorial 1 (see the  
> documentation)
>
> verbosity    = 0
>
> breedthreads    = 1
> evalthreads    = 1
> seed.0        = 4357
>
> state        = ec.simple.SimpleEvolutionState
>
> pop        = ec.Population
> init        = ec.simple.SimpleInitializer
> finish        = ec.simple.SimpleFinisher
> breed        = ec.de.DEBreeder
> eval        = ec.de.DEEvaluator
> stat        = ec.simple.SimpleStatistics
> exch        = ec.simple.SimpleExchanger
>
> generations        = 2000
> quit-on-run-complete    = true
> checkpoint        = false
> prefix            = ec
> checkpoint-modulo    = 1
>
> breed.f = 0.1
> breed.cr = 0.1
> pop.subpop.0.species.mutation-bounded = true
>
> stat.file        = $out.stat
>
> pop.subpops        = 1
> pop.subpop.0        = ec.Subpopulation
>
> pop.subpop.0.size         = 100
> pop.subpop.0.duplicate-retries     = 0
> pop.subpop.0.species         = ec.vector.FloatVectorSpecies
> pop.subpop.0.species.crossover-type    = one
> pop.subpop.0.species.mutation-prob    = 0.5
>
> 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.select.TournamentSelection
> pop.subpop.0.species.pipe.source.0.source.1    =  
> ec.select.TournamentSelection
> pop.subpop.0.species.max-gene = 10
> pop.subpop.0.species.min-gene = 0
>
> select.tournament.size        = 2
>
> pop.subpop.0.species.fitness     = ec.simple.SimpleFitness
> pop.subpop.0.species.ind    = ec.vector.DoubleVectorIndividual
>
> pop.subpop.0.species.genome-size    = 4
> eval.problem        = ec.app.evolvedm.ClosestToHalf
>
> /*
>   Copyright 2006 by Sean Luke
>   Licensed under the Academic Free License version 3.0
>   See the file "LICENSE" for more information
>  */
>
>
> package ec.app.evolvedm;
> import ec.*;
> import ec.simple.*;
> import ec.vector.*;
>
> public class ClosestToHalf extends Problem implements  
> SimpleProblemForm
> {
>     public void evaluate(final EvolutionState state,
>             final Individual ind,
>             final int subpopulation,
>             final int threadnum)
>     {
>         if (ind.evaluated) return;
>
>         if (!(ind instanceof DoubleVectorIndividual))
>             state.output.fatal("Whoa!  It's not a  
> DoubleVectorIndividual!!!",null);
>
>         double sum=0;
>         DoubleVectorIndividual ind2 = (DoubleVectorIndividual)ind;
>
>         for(int x=0; x<ind2.genome.length; x++)
>             sum += Math.abs(0.5 - ind2.genome[x]);
>         System.out.println(100-sum);
>
>         if (!(ind2.fitness instanceof SimpleFitness))
>             state.output.fatal("Whoa!  It's not a  
> SimpleFitness!!!",null);
>         ((SimpleFitness)ind2.fitness).setFitness(state,
>                 /// ...the fitness...
>                 (float)(100-sum),
>                 ///... is the individual ideal?  Indicate here...
>                 sum < 0.2);
>         ind2.evaluated = true;
>     }
> }
>
>

ATOM RSS1 RSS2