diff options
Diffstat (limited to 'subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java')
-rw-r--r-- | subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java b/subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java index 785fda7a..1442c915 100644 --- a/subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java +++ b/subprojects/store/src/main/java/tools/refinery/store/statecoding/neighbourhood/NeighbourhoodCalculator.java | |||
@@ -18,21 +18,25 @@ import java.util.List; | |||
18 | import java.util.Objects; | 18 | import java.util.Objects; |
19 | 19 | ||
20 | public class NeighbourhoodCalculator extends AbstractNeighbourhoodCalculator implements StateCodeCalculator { | 20 | public class NeighbourhoodCalculator extends AbstractNeighbourhoodCalculator implements StateCodeCalculator { |
21 | private ObjectCodeImpl previousObjectCode = new ObjectCodeImpl(); | ||
22 | private ObjectCodeImpl nextObjectCode = new ObjectCodeImpl(); | ||
23 | |||
21 | public NeighbourhoodCalculator(List<? extends Interpretation<?>> interpretations, IntSet individuals) { | 24 | public NeighbourhoodCalculator(List<? extends Interpretation<?>> interpretations, IntSet individuals) { |
22 | super(interpretations, individuals); | 25 | super(interpretations, individuals); |
23 | } | 26 | } |
24 | 27 | ||
25 | public StateCoderResult calculateCodes() { | 28 | public StateCoderResult calculateCodes() { |
26 | ObjectCodeImpl previousObjectCode = new ObjectCodeImpl(); | 29 | previousObjectCode.clear(); |
30 | nextObjectCode.clear(); | ||
27 | initializeWithIndividuals(previousObjectCode); | 31 | initializeWithIndividuals(previousObjectCode); |
28 | 32 | ||
29 | int rounds = 0; | 33 | int rounds = 0; |
30 | do { | 34 | do { |
31 | final ObjectCodeImpl nextObjectCode = rounds == 0 ? new ObjectCodeImpl() : | ||
32 | new ObjectCodeImpl(previousObjectCode.getSize()); | ||
33 | |||
34 | constructNextObjectCodes(previousObjectCode, nextObjectCode); | 35 | constructNextObjectCodes(previousObjectCode, nextObjectCode); |
36 | var tempObjectCode = previousObjectCode; | ||
35 | previousObjectCode = nextObjectCode; | 37 | previousObjectCode = nextObjectCode; |
38 | nextObjectCode = tempObjectCode; | ||
39 | nextObjectCode.clear(); | ||
36 | rounds++; | 40 | rounds++; |
37 | } while (rounds <= 7 && rounds <= previousObjectCode.getEffectiveSize()); | 41 | } while (rounds <= 7 && rounds <= previousObjectCode.getEffectiveSize()); |
38 | 42 | ||
@@ -43,7 +47,7 @@ public class NeighbourhoodCalculator extends AbstractNeighbourhoodCalculator imp | |||
43 | private long calculateLastSum(ObjectCode codes) { | 47 | private long calculateLastSum(ObjectCode codes) { |
44 | long result = 0; | 48 | long result = 0; |
45 | for (var nullImpactValue : nullImpactValues) { | 49 | for (var nullImpactValue : nullImpactValues) { |
46 | result = result * 31 + Objects.hashCode(((Interpretation<?>) nullImpactValue).get(Tuple0.INSTANCE)); | 50 | result = result * PRIME + Objects.hashCode(((Interpretation<?>) nullImpactValue).get(Tuple0.INSTANCE)); |
47 | } | 51 | } |
48 | 52 | ||
49 | for (int i = 0; i < codes.getSize(); i++) { | 53 | for (int i = 0; i < codes.getSize(); i++) { |