aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-dse
diff options
context:
space:
mode:
authorLibravatar nagilooh <ficsorattila96@gmail.com>2023-09-06 17:52:45 +0200
committerLibravatar nagilooh <ficsorattila96@gmail.com>2023-09-06 17:52:45 +0200
commit167417e5c917732c8f6fd5292ec398a45c08ef6b (patch)
treeede411db35c283ed8841de3dc6a5accd1bc612ab /subprojects/store-dse
parentMerge pull request #1 from nagilooh/datastructure (diff)
downloadrefinery-167417e5c917732c8f6fd5292ec398a45c08ef6b.tar.gz
refinery-167417e5c917732c8f6fd5292ec398a45c08ef6b.tar.zst
refinery-167417e5c917732c8f6fd5292ec398a45c08ef6b.zip
Fix numerous issues with DSE
Diffstat (limited to 'subprojects/store-dse')
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstExplorer.java4
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstWorker.java6
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ActivationStoreImpl.java6
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ObjectivePriorityQueueImpl.java7
-rw-r--r--subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/SolutionStoreImpl.java11
5 files changed, 16 insertions, 18 deletions
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstExplorer.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstExplorer.java
index 03a7fca3..f82d7c06 100644
--- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstExplorer.java
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstExplorer.java
@@ -58,6 +58,10 @@ public class BestFirstExplorer extends BestFirstWorker {
58 } 58 }
59 } 59 }
60 } 60 }
61 else {
62 lastVisited = null;
63 break;
64 }
61 } 65 }
62 66
63 //final ObjectiveComparatorHelper objectiveComparatorHelper = dseAdapter.getObjectiveComparatorHelper(); 67 //final ObjectiveComparatorHelper objectiveComparatorHelper = dseAdapter.getObjectiveComparatorHelper();
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstWorker.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstWorker.java
index 4240fdf9..b8662d8d 100644
--- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstWorker.java
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstWorker.java
@@ -45,12 +45,12 @@ public class BestFirstWorker {
45 45
46 Version version = model.commit(); 46 Version version = model.commit();
47 ObjectiveValue objectiveValue = explorationAdapter.getObjectiveValue(); 47 ObjectiveValue objectiveValue = explorationAdapter.getObjectiveValue();
48 var res = new VersionWithObjectiveValue(version, objectiveValue); 48 last = new VersionWithObjectiveValue(version, objectiveValue);
49 var code = stateCoderAdapter.calculateStateCode(); 49 var code = stateCoderAdapter.calculateStateCode();
50 var accepted = explorationAdapter.checkAccept(); 50 var accepted = explorationAdapter.checkAccept();
51 boolean isNew = storeManager.getEquivalenceClassStore().submit(res, code, 51 boolean isNew = storeManager.getEquivalenceClassStore().submit(last, code,
52 activationStoreWorker.calculateEmptyActivationSize(), accepted); 52 activationStoreWorker.calculateEmptyActivationSize(), accepted);
53 return new SubmitResult(isNew, accepted, objectiveValue, isNew ? res : null); 53 return new SubmitResult(isNew, accepted, objectiveValue, isNew ? last : null);
54 } 54 }
55 55
56 public void restoreToLast() { 56 public void restoreToLast() {
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ActivationStoreImpl.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ActivationStoreImpl.java
index 1229ec15..559c715a 100644
--- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ActivationStoreImpl.java
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ActivationStoreImpl.java
@@ -66,7 +66,7 @@ public class ActivationStoreImpl implements ActivationStore {
66 activation = -1; 66 activation = -1;
67 } 67 }
68 68
69 if(hasMoreInActivation) { 69 if(!hasMoreInActivation) {
70 boolean hasMoreInOtherTransformation = false; 70 boolean hasMoreInOtherTransformation = false;
71 for (var e : entries) { 71 for (var e : entries) {
72 if (e != entry && e.getNumberOfVisitedActivations() > 0) { 72 if (e != entry && e.getNumberOfVisitedActivations() > 0) {
@@ -83,7 +83,7 @@ public class ActivationStoreImpl implements ActivationStore {
83 actionWhenAllActivationVisited.accept(from); 83 actionWhenAllActivationVisited.accept(from);
84 } 84 }
85 85
86 return new VisitResult(false, hasMore, transformation, activation); 86 return new VisitResult(successfulVisit, hasMore, transformation, activation);
87 } 87 }
88 88
89 @Override 89 @Override
@@ -116,7 +116,7 @@ public class ActivationStoreImpl implements ActivationStore {
116 var entry = entries.get(transformation); 116 var entry = entries.get(transformation);
117 int unvisited = entry.getNumberOfUnvisitedActivations(); 117 int unvisited = entry.getNumberOfUnvisitedActivations();
118 if (selected < sum2 + unvisited) { 118 if (selected < sum2 + unvisited) {
119 activation = sum2 + unvisited - selected; 119 activation = sum2 + unvisited - selected - 1;
120 break; 120 break;
121 } else { 121 } else {
122 sum2 += unvisited; 122 sum2 += unvisited;
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ObjectivePriorityQueueImpl.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ObjectivePriorityQueueImpl.java
index 249b22da..c88a411f 100644
--- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ObjectivePriorityQueueImpl.java
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/ObjectivePriorityQueueImpl.java
@@ -53,12 +53,7 @@ public class ObjectivePriorityQueueImpl implements ObjectivePriorityQueue {
53 53
54 @Override 54 @Override
55 public VersionWithObjectiveValue getBest() { 55 public VersionWithObjectiveValue getBest() {
56 var best = priorityQueue.peek(); 56 return priorityQueue.peek();
57 if (best != null) {
58 return best;
59 } else {
60 throw new IllegalArgumentException("The objective store is empty!");
61 }
62 } 57 }
63 58
64 @Override 59 @Override
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/SolutionStoreImpl.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/SolutionStoreImpl.java
index cc48864f..43548eaa 100644
--- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/SolutionStoreImpl.java
+++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/SolutionStoreImpl.java
@@ -10,17 +10,17 @@ import tools.refinery.store.dse.transition.statespace.SolutionStore;
10 10
11import java.util.ArrayList; 11import java.util.ArrayList;
12import java.util.List; 12import java.util.List;
13import java.util.SortedSet; 13import java.util.PriorityQueue;
14import java.util.TreeSet; 14
15 15
16public class SolutionStoreImpl implements SolutionStore { 16public class SolutionStoreImpl implements SolutionStore {
17 final int maxNumberSolutions; 17 final int maxNumberSolutions;
18 public static final int UNLIMITED = -1; 18 public static final int UNLIMITED = -1;
19 final SortedSet<VersionWithObjectiveValue> solutions; 19 final PriorityQueue<VersionWithObjectiveValue> solutions;
20 20
21 public SolutionStoreImpl(int maxNumberSolutions) { 21 public SolutionStoreImpl(int maxNumberSolutions) {
22 this.maxNumberSolutions = maxNumberSolutions; 22 this.maxNumberSolutions = maxNumberSolutions;
23 solutions = new TreeSet<>(ObjectivePriorityQueueImpl.c1); 23 solutions = new PriorityQueue<>(ObjectivePriorityQueueImpl.c1.reversed());
24 } 24 }
25 25
26 26
@@ -29,8 +29,7 @@ public class SolutionStoreImpl implements SolutionStore {
29 boolean removeLast = hasEnoughSolution(); 29 boolean removeLast = hasEnoughSolution();
30 solutions.add(version); 30 solutions.add(version);
31 if(removeLast) { 31 if(removeLast) {
32 var last = solutions.last(); 32 var last = solutions.poll();
33 solutions.remove(last);
34 return last != version; 33 return last != version;
35 } else { 34 } else {
36 return true; 35 return true;