aboutsummaryrefslogtreecommitdiffstats
path: root/subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java')
-rw-r--r--subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java190
1 files changed, 106 insertions, 84 deletions
diff --git a/subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java b/subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java
index 1d757a5f..87c3892a 100644
--- a/subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java
+++ b/subprojects/store-dse/src/test/java/tools/refinery/store/dse/DebugTest.java
@@ -5,9 +5,27 @@
5 */ 5 */
6package tools.refinery.store.dse; 6package tools.refinery.store.dse;
7 7
8import org.junit.jupiter.api.Disabled;
9import org.junit.jupiter.api.Test;
10import tools.refinery.store.dse.modification.ModificationAdapter;
11import tools.refinery.store.dse.strategy.BestFirstStoreManager;
12import tools.refinery.store.dse.tests.DummyCriterion;
13import tools.refinery.store.dse.tests.DummyObjective;
14import tools.refinery.store.dse.tests.DummyRandomCriterion;
15import tools.refinery.store.dse.tests.DummyRandomObjective;
16import tools.refinery.store.dse.transition.DesignSpaceExplorationAdapter;
17import tools.refinery.store.dse.transition.TransformationRule;
18import tools.refinery.store.model.ModelStore;
19import tools.refinery.store.query.ModelQueryAdapter;
20import tools.refinery.store.query.dnf.Query;
21import tools.refinery.store.query.viatra.ViatraModelQueryAdapter;
8import tools.refinery.store.query.view.AnySymbolView; 22import tools.refinery.store.query.view.AnySymbolView;
9import tools.refinery.store.query.view.KeyOnlyView; 23import tools.refinery.store.query.view.KeyOnlyView;
10import tools.refinery.store.representation.Symbol; 24import tools.refinery.store.representation.Symbol;
25import tools.refinery.store.statecoding.StateCoderAdapter;
26import tools.refinery.store.tuple.Tuple;
27import tools.refinery.visualization.ModelVisualizerAdapter;
28import tools.refinery.visualization.internal.FileFormat;
11 29
12class DebugTest { 30class DebugTest {
13 private static final Symbol<Boolean> classModel = Symbol.of("ClassModel", 1); 31 private static final Symbol<Boolean> classModel = Symbol.of("ClassModel", 1);
@@ -29,88 +47,92 @@ class DebugTest {
29 private static final AnySymbolView classesView = new KeyOnlyView<>(classes); 47 private static final AnySymbolView classesView = new KeyOnlyView<>(classes);
30 48
31 49
32// @Test 50 @Test
33// @Disabled("This test is only for debugging purposes") 51 @Disabled("This test is only for debugging purposes")
34// void BFSTest() { 52 void BFSTest() {
35// var createClassPrecondition = Query.of("CreateClassPrecondition", 53 var createClassPrecondition = Query.of("CreateClassPrecondition",
36// (builder, model) -> builder.clause( 54 (builder, model) -> builder.clause(
37// classModelView.call(model) 55 classModelView.call(model)
38// )); 56 ));
39// 57
40// var createClassRule = new TransformationRule("CreateClass", 58 var createClassRule = new TransformationRule("CreateClass",
41// createClassPrecondition, 59 createClassPrecondition,
42// (model) -> { 60 (model) -> {
43// var classesInterpretation = model.getInterpretation(classes); 61 var classesInterpretation = model.getInterpretation(classes);
44// var classElementInterpretation = model.getInterpretation(classElement); 62 var classElementInterpretation = model.getInterpretation(classElement);
45// return ((Tuple activation) -> { 63 return ((Tuple activation) -> {
46// var dseAdapter = model.getAdapter(DesignSpaceExplorationAdapter.class); 64 var dseAdapter = model.getAdapter(ModificationAdapter.class);
47// var modelElement = activation.get(0); 65 var modelElement = activation.get(0);
48// 66
49// var newClassElement = dseAdapter.createObject(); 67 var newClassElement = dseAdapter.createObject();
50// var newClassElementId = newClassElement.get(0); 68 var newClassElementId = newClassElement.get(0);
51// 69
52// classesInterpretation.put(Tuple.of(modelElement, newClassElementId), true); 70 classesInterpretation.put(Tuple.of(modelElement, newClassElementId), true);
53// classElementInterpretation.put(Tuple.of(newClassElementId), true); 71 classElementInterpretation.put(Tuple.of(newClassElementId), true);
54// }); 72 });
55// }); 73 });
56// 74
57// var createFeaturePrecondition = Query.of("CreateFeaturePrecondition", 75 var createFeaturePrecondition = Query.of("CreateFeaturePrecondition",
58// (builder, model) -> builder.clause( 76 (builder, model) -> builder.clause(
59// classModelView.call(model) 77 classModelView.call(model)
60// )); 78 ));
61// 79
62// var createFeatureRule = new TransformationRule("CreateFeature", 80 var createFeatureRule = new TransformationRule("CreateFeature",
63// createFeaturePrecondition, 81 createFeaturePrecondition,
64// (model) -> { 82 (model) -> {
65// var featuresInterpretation = model.getInterpretation(features); 83 var featuresInterpretation = model.getInterpretation(features);
66// var featureInterpretation = model.getInterpretation(feature); 84 var featureInterpretation = model.getInterpretation(feature);
67// return ((Tuple activation) -> { 85 return ((Tuple activation) -> {
68// var dseAdapter = model.getAdapter(DesignSpaceExplorationAdapter.class); 86 var dseAdapter = model.getAdapter(ModificationAdapter.class);
69// var modelElement = activation.get(0); 87 var modelElement = activation.get(0);
70// 88
71// var newClassElement = dseAdapter.createObject(); 89 var newClassElement = dseAdapter.createObject();
72// var newClassElementId = newClassElement.get(0); 90 var newClassElementId = newClassElement.get(0);
73// 91
74// featuresInterpretation.put(Tuple.of(modelElement, newClassElementId), true); 92 featuresInterpretation.put(Tuple.of(modelElement, newClassElementId), true);
75// featureInterpretation.put(Tuple.of(newClassElementId), true); 93 featureInterpretation.put(Tuple.of(newClassElementId), true);
76// }); 94 });
77// }); 95 });
78// 96
79// var store = ModelStore.builder() 97 var store = ModelStore.builder()
80// .symbols(classModel, classElement, feature, isEncapsulatedBy, encapsulates, classes, features) 98 .symbols(classModel, classElement, feature, isEncapsulatedBy, encapsulates, classes, features)
81// .with(ViatraModelQueryAdapter.builder() 99 .with(ViatraModelQueryAdapter.builder()
82// .queries(createClassPrecondition, createFeaturePrecondition)) 100 .queries(createClassPrecondition, createFeaturePrecondition))
83// .with(ModelVisualizerAdapter.builder() 101 .with(ModelVisualizerAdapter.builder()
84// .withOutputpath("test_output") 102 .withOutputpath("test_output")
85// .withFormat(FileFormat.DOT) 103 .withFormat(FileFormat.DOT)
86// .withFormat(FileFormat.SVG) 104 .withFormat(FileFormat.SVG)
87// .saveStates() 105 .saveStates()
88// .saveDesignSpace() 106 .saveDesignSpace()
89// ) 107 )
90// .with(DesignSpaceExplorationAdapter.builder() 108 .with(StateCoderAdapter.builder())
91// .transformations(createClassRule, createFeatureRule) 109 .with(ModificationAdapter.builder())
92// .objectives(new AlwaysSatisfiedRandomHardObjective()) 110 .with(DesignSpaceExplorationAdapter.builder()
93// .strategy(new DepthFirstStrategy().withDepthLimit(4).continueIfHardObjectivesFulfilled() 111 .transformations(createClassRule, createFeatureRule)
94//// .strategy(new BestFirstStrategy().withDepthLimit(4).continueIfHardObjectivesFulfilled() 112 .objectives(new DummyRandomObjective())
95//// .goOnOnlyIfFitnessIsBetter() 113 .accept(new DummyRandomCriterion())
96// )) 114 .exclude(new DummyRandomCriterion())
97// .build(); 115 )
98// 116 .build();
99// var model = store.createEmptyModel(); 117
100// var dseAdapter = model.getAdapter(DesignSpaceExplorationAdapter.class); 118 var model = store.createEmptyModel();
101//// dseAdapter.setRandom(1); 119 var dseAdapter = model.getAdapter(ModificationAdapter.class);
102// var queryEngine = model.getAdapter(ModelQueryAdapter.class); 120// dseAdapter.setRandom(1);
103// 121 var queryEngine = model.getAdapter(ModelQueryAdapter.class);
104// var modelElementInterpretation = model.getInterpretation(classModel); 122
105// var classElementInterpretation = model.getInterpretation(classElement); 123 var modelElementInterpretation = model.getInterpretation(classModel);
106// var modelElement = dseAdapter.createObject(); 124 var classElementInterpretation = model.getInterpretation(classElement);
107// modelElementInterpretation.put(modelElement, true); 125 var modelElement = dseAdapter.createObject();
108// classElementInterpretation.put(modelElement, true); 126 modelElementInterpretation.put(modelElement, true);
109// queryEngine.flushChanges(); 127 classElementInterpretation.put(modelElement, true);
110// 128 var initialVersion = model.commit();
111// 129 queryEngine.flushChanges();
112// var states = dseAdapter.explore(); 130
113// System.out.println("states size: " + states.size()); 131
114// 132 var bestFirst = new BestFirstStoreManager(store);
115// } 133 bestFirst.startExploration(initialVersion);
134 var resultStore = bestFirst.getSolutionStore();
135 System.out.println("states size: " + resultStore.getSolutions().size());
136
137 }
116} 138}