aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/ea
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-04-03 15:29:24 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-04-03 15:29:24 +0100
commit0dbf126fc524bc029d9f5803d849b7c8f43fe389 (patch)
tree35d7c23b371614388cbb7a4bc247374759b95a33 /src/jcgp/backend/modules/ea
parent02fd2bc7059da416937beb1abe67e5ca60379030 (diff)
Visual feedback for parameters implemented.
Diffstat (limited to 'src/jcgp/backend/modules/ea')
-rw-r--r--src/jcgp/backend/modules/ea/EvolutionaryAlgorithm.java3
-rw-r--r--src/jcgp/backend/modules/ea/MuPlusLambda.java57
-rw-r--r--src/jcgp/backend/modules/ea/TournamentSelection.java18
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;
}