From 7021a4d1f2805ebf3145cbc3893761d12f23361f Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 1 Aug 2019 01:00:12 +0200 Subject: Configurability and better statistics for measurements --- .../viatrasolver/reasoner/ViatraReasoner.xtend | 28 ++++++++++++++++++---- .../reasoner/ViatraReasonerConfiguration.xtend | 8 ++++--- .../dse/BestFirstStrategyForModelGeneration.java | 1 + 3 files changed, 30 insertions(+), 7 deletions(-) (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner') 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 a8db5e43..1abde0a8 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 @@ -39,6 +39,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 hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.statecoder.NeighbourhoodBasedStateCoderFactory class ViatraReasoner extends LogicReasoner { val PartialInterpretationInitialiser initialiser = new PartialInterpretationInitialiser() @@ -137,11 +138,14 @@ class ViatraReasoner extends LogicReasoner { dse.setInitialModel(emptySolution, false) - val IStateCoderFactory statecoder = if (viatraConfig.stateCoderStrategy == StateCoderStrategy.Neighbourhood) { + val IStateCoderFactory statecoder = switch (viatraConfig.stateCoderStrategy) { + case Neighbourhood: + new NeighbourhoodBasedStateCoderFactory + case PairwiseNeighbourhood: new PairwiseNeighbourhoodBasedStateCoderFactory - } else { + default: new IdentifierBasedStateCoderFactory - } + } dse.stateCoderFactory = statecoder dse.maxNumberOfThreads = 1 @@ -183,9 +187,13 @@ class ViatraReasoner extends LogicReasoner { it.name = "TransformationExecutionTime" it.value = (method.statistics.transformationExecutionTime / 1000000) as int ] + it.entries += createIntStatisticEntry => [ + it.name = "ScopePropagationTime" + it.value = (method.statistics.scopePropagationTime / 1000000) as int + ] it.entries += createIntStatisticEntry => [ it.name = "TypeAnalysisTime" - it.value = (method.statistics.PreliminaryTypeAnalisisTime / 1000000) as int + it.value = (method.statistics.preliminaryTypeAnalisisTime / 1000000) as int ] it.entries += createIntStatisticEntry => [ it.name = "StateCoderTime" @@ -199,6 +207,18 @@ class ViatraReasoner extends LogicReasoner { it.name = "SolutionCopyTime" it.value = (solutionCopier.getTotalCopierRuntime / 1000000) as int ] + it.entries += createIntStatisticEntry => [ + it.name = "States" + it.value = dse.numberOfStates as int + ] + it.entries += createIntStatisticEntry => [ + it.name = "Decisions" + it.value = method.statistics.decisionsTried + ] + it.entries += createIntStatisticEntry => [ + it.name = "ScopePropagations" + it.value = method.statistics.scopePropagatorInvocations + ] if (diversityChecker.isActive) { it.entries += createIntStatisticEntry => [ it.name = "SolutionDiversityCheckTime" diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend index 7a3a2d67..a2f9cebe 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/ViatraReasonerConfiguration.xtend @@ -14,9 +14,12 @@ import java.util.LinkedList import java.util.List import java.util.Set import org.eclipse.xtext.xbase.lib.Functions.Function1 +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorConstraints +import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.cardinality.PolyhedralScopePropagatorSolver enum StateCoderStrategy { Neighbourhood, + PairwiseNeighbourhood, NeighbourhoodWithEquivalence, IDBased, DefinedByDiversity @@ -25,7 +28,7 @@ enum StateCoderStrategy { class ViatraReasonerConfiguration extends LogicSolverConfiguration { // public var Iterable existingQueries public var nameNewElements = false - public var StateCoderStrategy stateCoderStrategy = StateCoderStrategy.Neighbourhood + public var StateCoderStrategy stateCoderStrategy = StateCoderStrategy.PairwiseNeighbourhood public var TypeInferenceMethod typeInferenceMethod = TypeInferenceMethod.PreliminaryAnalysis /** * Once per 1/randomBacktrackChance the search selects a random state. @@ -50,9 +53,8 @@ class ViatraReasonerConfiguration extends LogicSolverConfiguration { * Configuration for cutting search space. */ public var SearchSpaceConstraint searchSpaceConstraints = new SearchSpaceConstraint - - public var ScopePropagatorStrategy scopePropagatorStrategy = ScopePropagatorStrategy.PolyhedralTypeHierarchy + public var ScopePropagatorStrategy scopePropagatorStrategy = ScopePropagatorStrategy.BasicTypeHierarchy public var List costObjectives = newArrayList } 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 144e7484..5af7fc69 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 @@ -189,6 +189,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { // } logger.debug("Executing new activation: " + nextActivation); context.executeAcitvationId(nextActivation); + method.getStatistics().incrementDecisionCount(); visualiseCurrentState(); // for(ViatraQueryMatcher matcher : matchers) { -- cgit v1.2.3-54-g00ecf