aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/population/Chromosome.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/population/Chromosome.java')
-rw-r--r--src/jcgp/backend/population/Chromosome.java20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/jcgp/backend/population/Chromosome.java b/src/jcgp/backend/population/Chromosome.java
index f8830fa..9e53f85 100644
--- a/src/jcgp/backend/population/Chromosome.java
+++ b/src/jcgp/backend/population/Chromosome.java
@@ -5,7 +5,7 @@ import java.util.ArrayList;
import jcgp.backend.exceptions.ParameterMismatchException;
import jcgp.backend.resources.Resources;
-public class Chromosome {
+public class Chromosome implements Comparable<Chromosome> {
private Resources resources;
@@ -276,7 +276,7 @@ public class Chromosome {
}
}
- public boolean compareTo(Chromosome chromosome) {
+ public boolean compareGenesTo(Chromosome chromosome) {
for (int r = 0; r < resources.rows(); r++) {
for (int c = 0; c < resources.columns(); c++) {
if (!(nodes[r][c].copyOf(chromosome.getNode(r, c)))) {
@@ -294,7 +294,7 @@ public class Chromosome {
return true;
}
- public boolean compareActiveTo(Chromosome chromosome) {
+ public boolean compareActiveGenesTo(Chromosome chromosome) {
// update list if it is out of date
computeActiveNodes();
@@ -310,7 +310,6 @@ public class Chromosome {
}
public void printNodes() {
- // TODO make this proper
int arity = resources.arity();
for (int r = 0; r < resources.rows(); r++) {
@@ -320,7 +319,7 @@ public class Chromosome {
for (int i = 0; i < arity; i++) {
System.out.print("C" + i + ": (" + nodes[r][c].getConnection(i).toString() + ") ");
}
- System.out.print("F: " + nodes[r][c].getFunction().getName() + "\t");
+ System.out.print("F: " + nodes[r][c].getFunction() + "\t");
}
System.out.print("\n");
}
@@ -335,4 +334,15 @@ public class Chromosome {
public Resources getResources() {
return resources;
}
+
+ @Override
+ public int compareTo(Chromosome o) {
+ if (fitness < o.getFitness()) {
+ return -1;
+ } else if (fitness > o.getFitness()) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
}