diff options
author | Kristóf Marussy <marussy@mit.bme.hu> | 2023-09-14 19:29:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-14 19:29:36 +0200 |
commit | 98ed3b6db5f4e51961a161050cc31c66015116e8 (patch) | |
tree | 8bfd6d9bc8d6ed23b9eb0f889dd40b6c24fe8f92 /subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java | |
parent | Merge pull request #38 from nagilooh/design-space-exploration (diff) | |
parent | Merge remote-tracking branch 'upstream/main' into partial-interpretation (diff) | |
download | refinery-98ed3b6db5f4e51961a161050cc31c66015116e8.tar.gz refinery-98ed3b6db5f4e51961a161050cc31c66015116e8.tar.zst refinery-98ed3b6db5f4e51961a161050cc31c66015116e8.zip |
Merge pull request #39 from kris7t/partial-interpretation
Implement partial interpretation based model generation
Diffstat (limited to 'subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java')
-rw-r--r-- | subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java new file mode 100644 index 00000000..b5087e86 --- /dev/null +++ b/subprojects/store-dse/src/main/java/tools/refinery/store/dse/transition/statespace/internal/AbstractEquivalenceClassStore.java | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/> | ||
3 | * | ||
4 | * SPDX-License-Identifier: EPL-2.0 | ||
5 | */ | ||
6 | package tools.refinery.store.dse.transition.statespace.internal; | ||
7 | |||
8 | import tools.refinery.store.dse.transition.VersionWithObjectiveValue; | ||
9 | import tools.refinery.store.dse.transition.statespace.EquivalenceClassStore; | ||
10 | import tools.refinery.store.statecoding.StateCoderResult; | ||
11 | import tools.refinery.store.statecoding.StateCoderStoreAdapter; | ||
12 | |||
13 | public abstract class AbstractEquivalenceClassStore implements EquivalenceClassStore { | ||
14 | protected final StateCoderStoreAdapter stateCoderStoreAdapter; | ||
15 | AbstractEquivalenceClassStore(StateCoderStoreAdapter stateCoderStoreAdapter) { | ||
16 | this.stateCoderStoreAdapter = stateCoderStoreAdapter; | ||
17 | } | ||
18 | |||
19 | protected int numberOfUnresolvedSymmetries = 0; | ||
20 | |||
21 | protected abstract void delegate(VersionWithObjectiveValue version, int[] emptyActivations, boolean accept); | ||
22 | protected abstract boolean tryToAdd(StateCoderResult stateCoderResult, VersionWithObjectiveValue newVersion, | ||
23 | int[] emptyActivations, boolean accept); | ||
24 | |||
25 | public abstract boolean tryToAdd(StateCoderResult stateCoderResult); | ||
26 | |||
27 | @Override | ||
28 | public boolean submit(StateCoderResult stateCoderResult) { | ||
29 | return tryToAdd(stateCoderResult); | ||
30 | } | ||
31 | |||
32 | @Override | ||
33 | public synchronized boolean submit(VersionWithObjectiveValue version, StateCoderResult stateCoderResult, | ||
34 | int[] emptyActivations, boolean accept) { | ||
35 | boolean hasNewVersion = tryToAdd(stateCoderResult, version, emptyActivations, accept); | ||
36 | if (hasNewVersion) { | ||
37 | delegate(version, emptyActivations, accept); | ||
38 | return true; | ||
39 | } else { | ||
40 | numberOfUnresolvedSymmetries++; | ||
41 | return false; | ||
42 | } | ||
43 | } | ||
44 | |||
45 | @Override | ||
46 | public boolean hasUnresolvedSymmetry() { | ||
47 | return numberOfUnresolvedSymmetries > 0; | ||
48 | } | ||
49 | |||
50 | @Override | ||
51 | public int getNumberOfUnresolvedSymmetries() { | ||
52 | return numberOfUnresolvedSymmetries; | ||
53 | } | ||
54 | } | ||