From a575e7d063ef1776d620fe6318b8ba2f30d82a11 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Sat, 3 Mar 2018 02:02:21 -0500 Subject: ViatraSolver reports progress and stops at cancel --- .../viatrasolver/reasoner/ViatraReasoner.xtend | 22 ++++++++++------------ .../dse/BestFirstStrategyForModelGeneration.java | 11 +++-------- 2 files changed, 13 insertions(+), 20 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver') 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 import org.eclipse.viatra.dse.api.DesignSpaceExplorer.DseLoggingLevel import org.eclipse.viatra.dse.solutionstore.SolutionStore import org.eclipse.viatra.dse.statecode.IStateCoderFactory +import javax.security.auth.login.Configuration.Parameters class ViatraReasoner extends LogicReasoner{ val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() @@ -79,7 +80,7 @@ class ViatraReasoner extends LogicReasoner{ dse.setInitialModel(emptySolution,false) - var IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { + val IStateCoderFactory statecoder = if(viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { new NeighbourhoodBasedStateCoderFactory } else { new IdentifierBasedStateCoderFactory @@ -98,11 +99,12 @@ class ViatraReasoner extends LogicReasoner{ dse.addTransformationRule(rule) } - val strategy = new BestFirstStrategyForModelGeneration( - workspace,viatraConfig) + val strategy = new BestFirstStrategyForModelGeneration(workspace,viatraConfig) + viatraConfig.progressMonitor.workedForwardTransformation val transformationTime = System.nanoTime - transformationStartTime val solverStartTime = System.nanoTime + var boolean stoppedByTimeout var boolean stoppedByException try{ @@ -112,10 +114,9 @@ class ViatraReasoner extends LogicReasoner{ stoppedByTimeout = false stoppedByException = true } - val solverTime = System.nanoTime - solverStartTime + viatraConfig.progressMonitor.workedSearchFinished - val statecoderFinal = statecoder //additionalMatches = strategy.solutionStoreWithCopy.additionalMatches val statistics = createStatistics => [ //it.solverTime = viatraConfig.runtimeLimit @@ -134,7 +135,7 @@ class ViatraReasoner extends LogicReasoner{ it.name = "TypeAnalysisTime" it.value = (method.statistics.PreliminaryTypeAnalisisTime/1000000) as int ] it.entries += createIntStatisticEntry => [ - it.name = "StateCoderTime" it.value = (statecoderFinal.runtime/1000000) as int + it.name = "StateCoderTime" it.value = (statecoder.runtime/1000000) as int ] it.entries += createIntStatisticEntry => [ it.name = "StateCoderFailCount" it.value = strategy.numberOfStatecoderFail @@ -152,6 +153,8 @@ class ViatraReasoner extends LogicReasoner{ } ] + viatraConfig.progressMonitor.workedBackwardTransformationFinished + if(stoppedByTimeout) { return createInsuficientResourcesResult=>[ it.problem = problem @@ -165,12 +168,7 @@ class ViatraReasoner extends LogicReasoner{ it.statistics = statistics ] } else { - - /*solutionStore.solutions.head.trajectories.head - solutionTrajectory.doTransformation(emptySolution) - * - */ - return factory.createModelResult => [ + return createModelResult => [ it.problem = problem it.trace = strategy.solutionStoreWithCopy.copyTraces 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; import org.eclipse.viatra.dse.objectives.Fitness; import org.eclipse.viatra.dse.objectives.ObjectiveComparatorHelper; import org.eclipse.viatra.dse.solutionstore.SolutionStore; -import org.eclipse.xtend.lib.annotations.AccessorType; -import org.eclipse.xtend.lib.annotations.Accessors; import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; -import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicSolverConfiguration; import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem; import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.InconsistencyResult; import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult; import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult; import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretation2logic.PartialInterpretation2Logic; import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation; -import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretation2Gml; import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualisation; import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.visualisation.PartialInterpretationVisualiser; -import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DebugConfiguration; -import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.DiversityDescriptor; import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration; import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace; @@ -138,7 +132,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { TrajectoryWithFitness currentTrajectoryWithFittness = new TrajectoryWithFitness(firstTrajectory, firstFittness); trajectoiresToExplore.add(currentTrajectoryWithFittness); - mainLoop: while (!isInterrupted) { + mainLoop: while (!isInterrupted && !configuration.progressMonitor.isCancelled()) { if (currentTrajectoryWithFittness == null) { if (trajectoiresToExplore.isEmpty()) { @@ -163,7 +157,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { List activationIds = selectActivation(); Iterator iterator = activationIds.iterator(); - while (!isInterrupted && iterator.hasNext()) { + while (!isInterrupted && !configuration.progressMonitor.isCancelled() && iterator.hasNext()) { final Object nextActivation = iterator.next(); // if (!iterator.hasNext()) { // logger.debug("Last untraversed activation of the state."); @@ -239,6 +233,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { solutionStoreWithCopy.newSolution(context); solutionStoreWithDiversityDescriptor.newSolution(context); solutionStore.newSolution(context); + configuration.progressMonitor.workedModelFound(configuration.solutionScope.numberOfRequiredSolution); logger.debug("Found a solution."); } -- cgit v1.2.3-54-g00ecf