ECJ-INTEREST-L Archives

February 2011

ECJ-INTEREST-L@LISTSERV.GMU.EDU

Options: Use Proportional Font
Show HTML Part by Default
Condense Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Sender:
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Subject:
From:
Date:
Sat, 12 Feb 2011 01:14:29 -0700
MIME-Version:
1.0
Content-Type:
multipart/alternative; boundary="_dfa34c8b-0ce5-47e5-a6eb-3274ebc6f671_"
Reply-To:
ECJ Evolutionary Computation Toolkit <[log in to unmask]>
Parts/Attachments:
text/plain (3588 bytes) , text/html (6 kB)

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