From 2809374210839fb72f455d846cd483c711b5dcb0 Mon Sep 17 00:00:00 2001 From: nagilooh Date: Tue, 5 Sep 2023 20:49:41 +0200 Subject: Add minor improvements and fixes for explorer --- .../modification/internal/ModificationStoreAdapterImpl.java | 2 +- .../refinery/store/dse/strategy/BestFirstExplorer.java | 13 +++++-------- .../refinery/store/dse/strategy/BestFirstStoreManager.java | 4 ++-- .../tools/refinery/store/dse/strategy/BestFirstWorker.java | 7 ++----- 4 files changed, 10 insertions(+), 16 deletions(-) (limited to 'subprojects/store-dse/src/main') diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/modification/internal/ModificationStoreAdapterImpl.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/modification/internal/ModificationStoreAdapterImpl.java index 913cb33f..62e4227b 100644 --- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/modification/internal/ModificationStoreAdapterImpl.java +++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/modification/internal/ModificationStoreAdapterImpl.java @@ -24,6 +24,6 @@ public class ModificationStoreAdapterImpl implements ModificationStoreAdapter { @Override public ModelAdapter createModelAdapter(Model model) { - return null; + return new ModificationAdapterImpl(this, model); } } 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 72bbbc55..03a7fca3 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 @@ -5,7 +5,6 @@ */ package tools.refinery.store.dse.strategy; -import tools.refinery.store.dse.transition.ObjectiveValue; import tools.refinery.store.dse.transition.VersionWithObjectiveValue; import tools.refinery.store.model.Model; @@ -32,13 +31,11 @@ public class BestFirstExplorer extends BestFirstWorker { public void explore() { VersionWithObjectiveValue lastVisited = submit().newVersion(); - mainLoop: while (shouldRun()) { + while (shouldRun()) { if (lastVisited == null) { - var restored = this.restoreToBest(); - if(restored != null) { - lastVisited = restored; - } else { + lastVisited = this.restoreToBest(); + if(lastVisited == null) { return; } } @@ -47,7 +44,7 @@ public class BestFirstExplorer extends BestFirstWorker { while(tryActivation && shouldRun()) { RandomVisitResult randomVisitResult = this.visitRandomUnvisited(random); - tryActivation &= randomVisitResult.shouldRetry(); + tryActivation = randomVisitResult.shouldRetry(); var newSubmit = randomVisitResult.submitResult(); if(newSubmit != null) { if(!newSubmit.include()) { @@ -57,7 +54,7 @@ public class BestFirstExplorer extends BestFirstWorker { int compareResult = compare(lastVisited,newVisit); if(compareResult >= 0) { lastVisited = newVisit; - continue mainLoop; + break; } } } diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstStoreManager.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstStoreManager.java index d1fd7884..3795daa4 100644 --- a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstStoreManager.java +++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/strategy/BestFirstStoreManager.java @@ -35,7 +35,7 @@ public class BestFirstStoreManager { objectiveStore = new ObjectivePriorityQueueImpl(storeAdapter.getObjectives()); Procedure whenAllActivationsVisited = x -> objectiveStore.remove(x); activationStore = new ActivationStoreImpl(storeAdapter.getTransformations().size(), whenAllActivationsVisited); - solutionStore = new SolutionStoreImpl(1); + solutionStore = new SolutionStoreImpl(10); equivalenceClassStore = new FastEquivalenceClassStore(modelStore.getAdapter(StateCoderStoreAdapter.class)) { @Override protected void delegate(VersionWithObjectiveValue version, int[] emptyActivations, boolean accept) { @@ -56,7 +56,7 @@ public class BestFirstStoreManager { return activationStore; } - SolutionStore getSolutionStore() { + public SolutionStore getSolutionStore() { return solutionStore; } 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 ea7fe43f..4240fdf9 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 @@ -13,7 +13,6 @@ import tools.refinery.store.map.Version; import tools.refinery.store.model.Model; import tools.refinery.store.statecoding.StateCoderAdapter; - import java.util.Random; public class BestFirstWorker { @@ -31,6 +30,7 @@ public class BestFirstWorker { stateCoderAdapter = model.getAdapter(StateCoderAdapter.class); activationStoreWorker = new ActivationStoreWorker(storeManager.getActivationStore(), explorationAdapter.getTransformations()); + } private VersionWithObjectiveValue last = null; @@ -48,12 +48,9 @@ public class BestFirstWorker { var res = new VersionWithObjectiveValue(version, objectiveValue); var code = stateCoderAdapter.calculateStateCode(); var accepted = explorationAdapter.checkAccept(); - boolean isNew = storeManager.getEquivalenceClassStore().submit(res, code, activationStoreWorker.calculateEmptyActivationSize(), accepted); - - last = new VersionWithObjectiveValue(version, objectiveValue); - return new SubmitResult(isNew, accepted, objectiveValue, last); + return new SubmitResult(isNew, accepted, objectiveValue, isNew ? res : null); } public void restoreToLast() { -- cgit v1.2.3-54-g00ecf