aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/backend/modules/problem/DigitalCircuitProblem.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jcgp/backend/modules/problem/DigitalCircuitProblem.java')
-rw-r--r--src/jcgp/backend/modules/problem/DigitalCircuitProblem.java8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/jcgp/backend/modules/problem/DigitalCircuitProblem.java b/src/jcgp/backend/modules/problem/DigitalCircuitProblem.java
index b615675..e2f17c3 100644
--- a/src/jcgp/backend/modules/problem/DigitalCircuitProblem.java
+++ b/src/jcgp/backend/modules/problem/DigitalCircuitProblem.java
@@ -45,13 +45,17 @@ public class DigitalCircuitProblem extends TestCaseProblem<UnsignedInteger> {
Integer output = ((UnsignedInteger) population.get(i).getOutput(o).calculate()).get();
Integer matches = ~(output ^ testCases.get(t).getOutput(o).get());
// check only the relevant bits
- int bits = (int) Math.pow(2.0, (double) resources.inputs());
+ int bits;
+ if (resources.inputs() < 5) {
+ bits = (int) Math.pow(2.0, (double) resources.inputs());
+ } else {
+ bits = 32;
+ }
for (int b = 0; b < bits; b++) {
fitness += (matches >>> b) & 1;
}
}
}
-
// assign the resulting fitness to the respective individual
population.get(i).setFitness(fitness);
}