aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/population/Population.java
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/population/Population.java
parent02fd2bc7059da416937beb1abe67e5ca60379030 (diff)
Visual feedback for parameters implemented.
Diffstat (limited to 'src/jcgp/backend/population/Population.java')
-rw-r--r--src/jcgp/backend/population/Population.java53
1 files changed, 43 insertions, 10 deletions
diff --git a/src/jcgp/backend/population/Population.java b/src/jcgp/backend/population/Population.java
index 7049d79..7b62d27 100644
--- a/src/jcgp/backend/population/Population.java
+++ b/src/jcgp/backend/population/Population.java
@@ -6,27 +6,41 @@ import jcgp.JCGP.Resources;
public class Population {
private Chromosome[] chromosomes;
- private int fittest;
+ private Resources resources;
+ /**
+ * Initialise a random population according to the parameters specified
+ * in the resources.
+ *
+ * @param resources the CGP resources
+ */
public Population(Resources resources) {
+ this.resources = resources;
+
chromosomes = new Chromosome[(resources.getInt("popSize"))];
for (int c = 0; c < chromosomes.length; c++) {
chromosomes[c] = new Chromosome(resources);
}
}
+ /**
+ * Initialise a population of copies of the given chromosome.
+ *
+ * @param parent
+ * @param resources
+ */
public Population(Chromosome parent, Resources resources) {
+ this.resources = resources;
+
chromosomes = new Chromosome[(resources.getInt("popSize"))];
- // make a clone for safety
- this.chromosomes[0] = new Chromosome(parent);
// generate the rest of the individuals
- for (int c = 1; c < chromosomes.length; c++) {
- chromosomes[c] = new Chromosome(chromosomes[0]);
+ for (int c = 0; c < chromosomes.length; c++) {
+ chromosomes[c] = new Chromosome(parent);
}
}
/**
- * Returns all chromosomes, parents first, then offspring.
+ * Returns the indexed chromosome.
*
* @param index
* @return
@@ -35,11 +49,30 @@ public class Population {
return chromosomes[index];
}
- public void setBestIndividual(int index) {
- fittest = index;
+ /**
+ * @return a random chromosome from this population.
+ */
+ public Chromosome getRandomChromosome() {
+ return chromosomes[resources.getRandomInt(chromosomes.length)];
}
+
- public Chromosome getBestIndividual() {
- return chromosomes[fittest];
+ /**
+ * Copy a chromosome into a different position.
+ * After this returns, the target chromosome has
+ * identical connections and functions to the source
+ * one, though they are separate instances.
+ *
+ * This method does nothing if source == target.
+ *
+ * @param source
+ * @param target
+ */
+ public void copyChromosome(int source, int target) {
+ if (source != target) {
+ chromosomes[target].copyGenes(chromosomes[source]);
+ }
}
+
+
}