diff options
Diffstat (limited to 'src/jcgp/backend/modules/ea')
| -rw-r--r-- | src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java | 3 | ||||
| -rw-r--r-- | src/jcgp/backend/modules/ea/MuPlusLambda.java | 57 | ||||
| -rw-r--r-- | src/jcgp/backend/modules/ea/TournamentSelection.java | 18 | 
3 files changed, 40 insertions, 38 deletions
| diff --git a/src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java b/src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java index ce457ef..7719111 100644 --- a/src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java +++ b/src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java @@ -3,13 +3,12 @@ package jcgp.backend.modules.ea;  import jcgp.JCGP.Resources;  import jcgp.backend.modules.Module;  import jcgp.backend.modules.mutator.Mutator; -import jcgp.backend.population.Chromosome;  import jcgp.backend.population.Population;  public interface EvolutionaryAlgorithm extends Module {  	public abstract void evolve(Population population, Mutator mutator, Resources parameters); -	public abstract Chromosome getFittestChromosome(); +	public abstract int getFittestChromosome();  } diff --git a/src/jcgp/backend/modules/ea/MuPlusLambda.java b/src/jcgp/backend/modules/ea/MuPlusLambda.java index fcfba05..22a0876 100644 --- a/src/jcgp/backend/modules/ea/MuPlusLambda.java +++ b/src/jcgp/backend/modules/ea/MuPlusLambda.java @@ -1,13 +1,10 @@  package jcgp.backend.modules.ea; -import java.util.HashMap; -  import jcgp.JCGP.Resources;  import jcgp.backend.modules.ModuleStatus;  import jcgp.backend.modules.mutator.Mutator;  import jcgp.backend.parameters.IntegerParameter;  import jcgp.backend.parameters.Parameter; -import jcgp.backend.population.Chromosome;  import jcgp.backend.population.Population;  /** @@ -19,52 +16,54 @@ import jcgp.backend.population.Population;   */  public class MuPlusLambda implements EvolutionaryAlgorithm { -	private Chromosome fittestChromosome; +	private int fittestChromosome;  	private IntegerParameter parents, offspring; -	 -	private HashMap<String, Parameter> localParameters; -	 -	public MuPlusLambda() {		 -		parents = new IntegerParameter(1, "Parents"); -		offspring = new IntegerParameter(4, "Offspring");		 -		 -		localParameters = new HashMap<String, Parameter>(); -		localParameters.put("mu", parents); -		localParameters.put("lambda", offspring); +	public MuPlusLambda() {		 +		parents = new IntegerParameter(1, "Parents") { +			@Override +			protected void validate(int newValue) { +				 +			} +		}; +		offspring = new IntegerParameter(4, "Offspring") { +			@Override +			protected void validate(int newValue) { +				 +			} +		};  	}  	@Override -	public void evolve(Population population, Mutator mutator, Resources parameters) { +	public void evolve(Population population, Mutator mutator, Resources resources) { +		// TODO actually use parents and offspring  		// select fittest chromosome -		int fittest = 0; +		fittestChromosome = 0; -		for (int i = 1; i < parameters.getInt("popSize"); i++) { -			if (population.getChromosome(i).getFitness() >= population.getChromosome(fittest).getFitness()) { -				fittest = i; +		for (int i = 1; i < resources.getInt("popSize"); i++) { +			if (population.getChromosome(i).getFitness() >= population.getChromosome(fittestChromosome).getFitness()) { +				fittestChromosome = i;  			}  		} -		fittestChromosome = population.getChromosome(fittest); -		population.setBestIndividual(fittest); +		  		// create copies of fittest chromosome, mutate them -		Chromosome fc = population.getChromosome(fittest); -		for (int i = 0; i < parameters.getInt("popSize"); i++) { -			if (i != fittest) { -				population.getChromosome(i).copyConnections(fc); -				mutator.mutate(population.getChromosome(i), parameters); +		for (int i = 0; i < resources.getInt("popSize"); i++) { +			if (i != fittestChromosome) { +				population.copyChromosome(fittestChromosome, i); +				mutator.mutate(population.getChromosome(i), resources);  			}  		}  	}  	@Override -	public Chromosome getFittestChromosome() { +	public int getFittestChromosome() {  		return fittestChromosome;  	}  	@Override -	public HashMap<String, Parameter> getLocalParameters() { -		return localParameters; +	public Parameter[] getLocalParameters() { +		return new Parameter[] {parents, offspring};  	}  	@Override diff --git a/src/jcgp/backend/modules/ea/TournamentSelection.java b/src/jcgp/backend/modules/ea/TournamentSelection.java index 6cbaa45..3c4a539 100644 --- a/src/jcgp/backend/modules/ea/TournamentSelection.java +++ b/src/jcgp/backend/modules/ea/TournamentSelection.java @@ -7,39 +7,43 @@ import jcgp.backend.modules.ModuleStatus;  import jcgp.backend.modules.mutator.Mutator;  import jcgp.backend.parameters.IntegerParameter;  import jcgp.backend.parameters.Parameter; -import jcgp.backend.population.Chromosome;  import jcgp.backend.population.Population;  public class TournamentSelection implements EvolutionaryAlgorithm { -	private Chromosome fittestChromosome; +	private int fittestChromosome;  	private IntegerParameter tournament;  	private HashMap<String, Parameter> localParameters;  	public TournamentSelection() {		 -		tournament = new IntegerParameter(1, "Tournament size"); +		tournament = new IntegerParameter(1, "Tournament size") { +			@Override +			protected void validate(int newValue) { +				 +			} +		};  		localParameters = new HashMap<String, Parameter>();  		localParameters.put("tournament", tournament);  	}  	@Override -	public HashMap<String, Parameter> getLocalParameters() { -		return localParameters; +	public Parameter[] getLocalParameters() { +		return new Parameter[] {tournament};  	}  	@Override  	public void evolve(Population population, Mutator mutator,  			Resources parameters) {  		tournament.set(tournament.get() + 1); -		fittestChromosome = population.getChromosome(0); +		fittestChromosome = 0;  		// TODO implement this  	}  	@Override -	public Chromosome getFittestChromosome() { +	public int getFittestChromosome() {  		return fittestChromosome;  	} | 
