diff options
Diffstat (limited to 'Solvers/VIATRA-Solver')
2 files changed, 13 insertions, 20 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend index 613c68b3..198beabb 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasoner.xtend | |||
@@ -29,6 +29,7 @@ import org.eclipse.viatra.dse.api.DesignSpaceExplorer | |||
29 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel | 29 | import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel |
30 | import org.eclipse.viatra.dse.solutionstore.SolutionStore | 30 | import org.eclipse.viatra.dse.solutionstore.SolutionStore |
31 | import org.eclipse.viatra.dse.statecode.IStateCoderFactory | 31 | import org.eclipse.viatra.dse.statecode.IStateCoderFactory |
32 | import javax.security.auth.login.Configuration.Parameters | ||
32 | 33 | ||
33 | class ViatraReasoner extends LogicReasoner{ | 34 | class ViatraReasoner extends LogicReasoner{ |
34 | val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() | 35 | val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() |
@@ -79,7 +80,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
79 | 80 | ||
80 | dse.setInitialModel(emptySolution,false) | 81 | dse.setInitialModel(emptySolution,false) |
81 | 82 | ||
82 | var IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { | 83 | val IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { |
83 | new NeighbourhoodBasedStateCoderFactory | 84 | new NeighbourhoodBasedStateCoderFactory |
84 | } else { | 85 | } else { |
85 | new IdentifierBasedStateCoderFactory | 86 | new IdentifierBasedStateCoderFactory |
@@ -98,11 +99,12 @@ class ViatraReasoner extends LogicReasoner{ | |||
98 | dse.addTransformationRule(rule) | 99 | dse.addTransformationRule(rule) |
99 | } | 100 | } |
100 | 101 | ||
101 | val strategy = new BestFirstStrategyForModelGeneration( | 102 | val strategy = new BestFirstStrategyForModelGeneration(workspace,viatraConfig) |
102 | workspace,viatraConfig) | 103 | viatraConfig.progressMonitor.workedForwardTransformation |
103 | 104 | ||
104 | val transformationTime = System.nanoTime - transformationStartTime | 105 | val transformationTime = System.nanoTime - transformationStartTime |
105 | val solverStartTime = System.nanoTime | 106 | val solverStartTime = System.nanoTime |
107 | |||
106 | var boolean stoppedByTimeout | 108 | var boolean stoppedByTimeout |
107 | var boolean stoppedByException | 109 | var boolean stoppedByException |
108 | try{ | 110 | try{ |
@@ -112,10 +114,9 @@ class ViatraReasoner extends LogicReasoner{ | |||
112 | stoppedByTimeout = false | 114 | stoppedByTimeout = false |
113 | stoppedByException = true | 115 | stoppedByException = true |
114 | } | 116 | } |
115 | |||
116 | val solverTime = System.nanoTime - solverStartTime | 117 | val solverTime = System.nanoTime - solverStartTime |
118 | viatraConfig.progressMonitor.workedSearchFinished | ||
117 | 119 | ||
118 | val statecoderFinal = statecoder | ||
119 | //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches | 120 | //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches |
120 | val statistics = createStatistics => [ | 121 | val statistics = createStatistics => [ |
121 | //it.solverTime = viatraConfig.runtimeLimit | 122 | //it.solverTime = viatraConfig.runtimeLimit |
@@ -134,7 +135,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
134 | it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int | 135 | it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int |
135 | ] | 136 | ] |
136 | it.entries += createIntStatisticEntry => [ | 137 | it.entries += createIntStatisticEntry => [ |
137 | it.name = "StateCoderTime" it.value = (statecoderFinal.runtime/1000000) as int | 138 | it.name = "StateCoderTime" it.value = (statecoder.runtime/1000000) as int |
138 | ] | 139 | ] |
139 | it.entries += createIntStatisticEntry => [ | 140 | it.entries += createIntStatisticEntry => [ |
140 | it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFail | 141 | it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFail |
@@ -152,6 +153,8 @@ class ViatraReasoner extends LogicReasoner{ | |||
152 | } | 153 | } |
153 | ] | 154 | ] |
154 | 155 | ||
156 | viatraConfig.progressMonitor.workedBackwardTransformationFinished | ||
157 | |||
155 | if(stoppedByTimeout) { | 158 | if(stoppedByTimeout) { |
156 | return createInsuficientResourcesResult=>[ | 159 | return createInsuficientResourcesResult=>[ |
157 | it.problem = problem | 160 | it.problem = problem |
@@ -165,12 +168,7 @@ class ViatraReasoner extends LogicReasoner{ | |||
165 | it.statistics = statistics | 168 | it.statistics = statistics |
166 | ] | 169 | ] |
167 | } else { | 170 | } else { |
168 | 171 | return createModelResult => [ | |
169 | /*solutionStore.solutions.head.trajectories.head | ||
170 | solutionTrajectory.doTransformation(emptySolution) | ||
171 | * | ||
172 | */ | ||
173 | return factory.createModelResult => [ | ||
174 | it.problem = problem | 172 | it.problem = problem |
175 | it.trace = strategy.solutionStoreWithCopy.copyTraces | 173 | it.trace = strategy.solutionStoreWithCopy.copyTraces |
176 | it.representation += strategy.solutionStoreWithCopy.solutions | 174 | it.representation += strategy.solutionStoreWithCopy.solutions |
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java index f7a840f0..63697887 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/BestFirstStrategyForModelGeneration.java | |||
@@ -25,22 +25,16 @@ import org.eclipse.viatra.dse.base.ThreadContext; | |||
25 | import org.eclipse.viatra.dse.objectives.Fitness; | 25 | import org.eclipse.viatra.dse.objectives.Fitness; |
26 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; | 26 | import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; |
27 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; | 27 | import org.eclipse.viatra.dse.solutionstore.SolutionStore; |
28 | import org.eclipse.xtend.lib.annotations.AccessorType; | ||
29 | import org.eclipse.xtend.lib.annotations.Accessors; | ||
30 | 28 | ||
31 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; | 29 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; |
32 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration; | ||
33 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; | 30 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; |
34 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.InconsistencyResult; | 31 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.InconsistencyResult; |
35 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; | 32 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; |
36 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult; | 33 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult; |
37 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.PartialInterpretation2Logic; | 34 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.PartialInterpretation2Logic; |
38 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; | 35 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; |
39 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml; | ||
40 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualisation; | 36 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualisation; |
41 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualiser; | 37 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualiser; |
42 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DebugConfiguration; | ||
43 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor; | ||
44 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration; | 38 | import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration; |
45 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; | 39 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; |
46 | 40 | ||
@@ -138,7 +132,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
138 | TrajectoryWithFitness currentTrajectoryWithFittness = new TrajectoryWithFitness(firstTrajectory, firstFittness); | 132 | TrajectoryWithFitness currentTrajectoryWithFittness = new TrajectoryWithFitness(firstTrajectory, firstFittness); |
139 | trajectoiresToExplore.add(currentTrajectoryWithFittness); | 133 | trajectoiresToExplore.add(currentTrajectoryWithFittness); |
140 | 134 | ||
141 | mainLoop: while (!isInterrupted) { | 135 | mainLoop: while (!isInterrupted && !configuration.progressMonitor.isCancelled()) { |
142 | 136 | ||
143 | if (currentTrajectoryWithFittness == null) { | 137 | if (currentTrajectoryWithFittness == null) { |
144 | if (trajectoiresToExplore.isEmpty()) { | 138 | if (trajectoiresToExplore.isEmpty()) { |
@@ -163,7 +157,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
163 | List<Object> activationIds = selectActivation(); | 157 | List<Object> activationIds = selectActivation(); |
164 | Iterator<Object> iterator = activationIds.iterator(); | 158 | Iterator<Object> iterator = activationIds.iterator(); |
165 | 159 | ||
166 | while (!isInterrupted && iterator.hasNext()) { | 160 | while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { |
167 | final Object nextActivation = iterator.next(); | 161 | final Object nextActivation = iterator.next(); |
168 | // if (!iterator.hasNext()) { | 162 | // if (!iterator.hasNext()) { |
169 | // logger.debug("Last untraversed activation of the state."); | 163 | // logger.debug("Last untraversed activation of the state."); |
@@ -239,6 +233,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { | |||
239 | solutionStoreWithCopy.newSolution(context); | 233 | solutionStoreWithCopy.newSolution(context); |
240 | solutionStoreWithDiversityDescriptor.newSolution(context); | 234 | solutionStoreWithDiversityDescriptor.newSolution(context); |
241 | solutionStore.newSolution(context); | 235 | solutionStore.newSolution(context); |
236 | configuration.progressMonitor.workedModelFound(configuration.solutionScope.numberOfRequiredSolution); | ||
242 | 237 | ||
243 | logger.debug("Found a solution."); | 238 | logger.debug("Found a solution."); |
244 | } | 239 | } |