diff options
author | OszkarSemerath <semerath@mit.bme.hu> | 2023-09-07 02:07:35 +0200 |
---|---|---|
committer | OszkarSemerath <semerath@mit.bme.hu> | 2023-09-07 02:07:35 +0200 |
commit | 5bfea37c2d5af9e2dda7725a75cc073ca8283cfa (patch) | |
tree | fb42b45bcb15fffb2fc41f7a7dea4c80c4d7b680 /subprojects/store-dse/src | |
parent | Sample tests for the dse adapter (diff) | |
download | refinery-5bfea37c2d5af9e2dda7725a75cc073ca8283cfa.tar.gz refinery-5bfea37c2d5af9e2dda7725a75cc073ca8283cfa.tar.zst refinery-5bfea37c2d5af9e2dda7725a75cc073ca8283cfa.zip |
missing synchronized statements and flush added
Diffstat (limited to 'subprojects/store-dse/src')
4 files changed, 14 insertions, 10 deletions
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 b8662d8d..f28505c3 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 | |||
@@ -11,6 +11,7 @@ import tools.refinery.store.dse.transition.VersionWithObjectiveValue; | |||
11 | import tools.refinery.store.dse.transition.statespace.internal.ActivationStoreWorker; | 11 | import tools.refinery.store.dse.transition.statespace.internal.ActivationStoreWorker; |
12 | import tools.refinery.store.map.Version; | 12 | import tools.refinery.store.map.Version; |
13 | import tools.refinery.store.model.Model; | 13 | import tools.refinery.store.model.Model; |
14 | import tools.refinery.store.query.ModelQueryAdapter; | ||
14 | import tools.refinery.store.statecoding.StateCoderAdapter; | 15 | import tools.refinery.store.statecoding.StateCoderAdapter; |
15 | 16 | ||
16 | import java.util.Random; | 17 | import java.util.Random; |
@@ -21,6 +22,7 @@ public class BestFirstWorker { | |||
21 | final ActivationStoreWorker activationStoreWorker; | 22 | final ActivationStoreWorker activationStoreWorker; |
22 | final StateCoderAdapter stateCoderAdapter; | 23 | final StateCoderAdapter stateCoderAdapter; |
23 | final DesignSpaceExplorationAdapter explorationAdapter; | 24 | final DesignSpaceExplorationAdapter explorationAdapter; |
25 | final ModelQueryAdapter queryAdapter; | ||
24 | 26 | ||
25 | public BestFirstWorker(BestFirstStoreManager storeManager, Model model) { | 27 | public BestFirstWorker(BestFirstStoreManager storeManager, Model model) { |
26 | this.storeManager = storeManager; | 28 | this.storeManager = storeManager; |
@@ -28,9 +30,9 @@ public class BestFirstWorker { | |||
28 | 30 | ||
29 | explorationAdapter = model.getAdapter(DesignSpaceExplorationAdapter.class); | 31 | explorationAdapter = model.getAdapter(DesignSpaceExplorationAdapter.class); |
30 | stateCoderAdapter = model.getAdapter(StateCoderAdapter.class); | 32 | stateCoderAdapter = model.getAdapter(StateCoderAdapter.class); |
33 | queryAdapter = model.getAdapter(ModelQueryAdapter.class); | ||
31 | activationStoreWorker = new ActivationStoreWorker(storeManager.getActivationStore(), | 34 | activationStoreWorker = new ActivationStoreWorker(storeManager.getActivationStore(), |
32 | explorationAdapter.getTransformations()); | 35 | explorationAdapter.getTransformations()); |
33 | |||
34 | } | 36 | } |
35 | 37 | ||
36 | private VersionWithObjectiveValue last = null; | 38 | private VersionWithObjectiveValue last = null; |
@@ -93,7 +95,9 @@ public class BestFirstWorker { | |||
93 | 95 | ||
94 | public RandomVisitResult visitRandomUnvisited(Random random) { | 96 | public RandomVisitResult visitRandomUnvisited(Random random) { |
95 | if (!model.hasUncommittedChanges()) { | 97 | if (!model.hasUncommittedChanges()) { |
98 | queryAdapter.flushChanges(); | ||
96 | var visitResult = activationStoreWorker.fireRandomActivation(this.last, random); | 99 | var visitResult = activationStoreWorker.fireRandomActivation(this.last, random); |
100 | |||
97 | if (visitResult.successfulVisit()) { | 101 | if (visitResult.successfulVisit()) { |
98 | return new RandomVisitResult(submit(), visitResult.mayHaveMore()); | 102 | return new RandomVisitResult(submit(), visitResult.mayHaveMore()); |
99 | } else { | 103 | } else { |
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 559c715a..fbd5b17f 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 | |||
@@ -29,7 +29,7 @@ public class ActivationStoreImpl implements ActivationStore { | |||
29 | successful[0] = true; | 29 | successful[0] = true; |
30 | List<ActivationStoreEntry> result = new ArrayList<>(emptyEntrySizes.length); | 30 | List<ActivationStoreEntry> result = new ArrayList<>(emptyEntrySizes.length); |
31 | for(int emptyEntrySize : emptyEntrySizes) { | 31 | for(int emptyEntrySize : emptyEntrySizes) { |
32 | result.add(ActivationStoreListEntry.create(emptyEntrySize)); | 32 | result.add(ActivationStoreEntry.create(emptyEntrySize)); |
33 | } | 33 | } |
34 | return result; | 34 | return result; |
35 | }); | 35 | }); |
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/FastEquivalenceClassStore.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/FastEquivalenceClassStore.java index 75e117c0..faeedba5 100644 --- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/FastEquivalenceClassStore.java +++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/FastEquivalenceClassStore.java | |||
@@ -15,13 +15,14 @@ public abstract class FastEquivalenceClassStore extends AbstractEquivalenceClass | |||
15 | 15 | ||
16 | final IntHashSet codes; | 16 | final IntHashSet codes; |
17 | 17 | ||
18 | public FastEquivalenceClassStore(StateCoderStoreAdapter stateCoderStoreAdapter) { | 18 | protected FastEquivalenceClassStore(StateCoderStoreAdapter stateCoderStoreAdapter) { |
19 | super(stateCoderStoreAdapter); | 19 | super(stateCoderStoreAdapter); |
20 | this.codes = new IntHashSet(); | 20 | this.codes = new IntHashSet(); |
21 | } | 21 | } |
22 | 22 | ||
23 | @Override | 23 | @Override |
24 | protected boolean tryToAdd(StateCoderResult stateCoderResult, VersionWithObjectiveValue newVersion, int[] emptyActivations, boolean accept) { | 24 | protected synchronized boolean tryToAdd(StateCoderResult stateCoderResult, VersionWithObjectiveValue newVersion, |
25 | int[] emptyActivations, boolean accept) { | ||
25 | return this.codes.add(stateCoderResult.modelCode()); | 26 | return this.codes.add(stateCoderResult.modelCode()); |
26 | } | 27 | } |
27 | 28 | ||
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 c88a411f..2f3e142a 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 | |||
@@ -9,7 +9,6 @@ import tools.refinery.store.dse.transition.ObjectiveValues; | |||
9 | import tools.refinery.store.dse.transition.VersionWithObjectiveValue; | 9 | import tools.refinery.store.dse.transition.VersionWithObjectiveValue; |
10 | import tools.refinery.store.dse.transition.objectives.Objective; | 10 | import tools.refinery.store.dse.transition.objectives.Objective; |
11 | import tools.refinery.store.dse.transition.statespace.ObjectivePriorityQueue; | 11 | import tools.refinery.store.dse.transition.statespace.ObjectivePriorityQueue; |
12 | import tools.refinery.store.map.Version; | ||
13 | 12 | ||
14 | import java.util.Comparator; | 13 | import java.util.Comparator; |
15 | import java.util.List; | 14 | import java.util.List; |
@@ -37,27 +36,27 @@ public class ObjectivePriorityQueueImpl implements ObjectivePriorityQueue { | |||
37 | } | 36 | } |
38 | 37 | ||
39 | @Override | 38 | @Override |
40 | public void submit(VersionWithObjectiveValue versionWithObjectiveValue) { | 39 | public synchronized void submit(VersionWithObjectiveValue versionWithObjectiveValue) { |
41 | priorityQueue.add(versionWithObjectiveValue); | 40 | priorityQueue.add(versionWithObjectiveValue); |
42 | } | 41 | } |
43 | 42 | ||
44 | @Override | 43 | @Override |
45 | public void remove(VersionWithObjectiveValue versionWithObjectiveValue) { | 44 | public synchronized void remove(VersionWithObjectiveValue versionWithObjectiveValue) { |
46 | priorityQueue.remove(versionWithObjectiveValue); | 45 | priorityQueue.remove(versionWithObjectiveValue); |
47 | } | 46 | } |
48 | 47 | ||
49 | @Override | 48 | @Override |
50 | public int getSize() { | 49 | public synchronized int getSize() { |
51 | return priorityQueue.size(); | 50 | return priorityQueue.size(); |
52 | } | 51 | } |
53 | 52 | ||
54 | @Override | 53 | @Override |
55 | public VersionWithObjectiveValue getBest() { | 54 | public synchronized VersionWithObjectiveValue getBest() { |
56 | return priorityQueue.peek(); | 55 | return priorityQueue.peek(); |
57 | } | 56 | } |
58 | 57 | ||
59 | @Override | 58 | @Override |
60 | public VersionWithObjectiveValue getRandom(Random random) { | 59 | public synchronized VersionWithObjectiveValue getRandom(Random random) { |
61 | int randomPosition = random.nextInt(getSize()); | 60 | int randomPosition = random.nextInt(getSize()); |
62 | for (VersionWithObjectiveValue entry : this.priorityQueue) { | 61 | for (VersionWithObjectiveValue entry : this.priorityQueue) { |
63 | if (randomPosition-- == 0) { | 62 | if (randomPosition-- == 0) { |