From b09c2d7aa73aeece866f0cfe65a8db25b5c58834 Mon Sep 17 00:00:00 2001 From: OszkarSemerath Date: Thu, 14 Jun 2018 16:17:45 +0200 Subject: Visualisation potentionally gets the patterns --- .../application/execution/SolverLoader.xtend | 2 ++ .../viatrasolver/reasoner/ViatraReasoner.xtend | 2 +- .../dse/BestFirstStrategyForModelGeneration.java | 20 ++++++++++++++++++-- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend index 74b3b17d..2f64fc76 100644 --- a/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend +++ b/Application/hu.bme.mit.inf.dslreasoner.application/src/hu/bme/mit/inf/dslreasoner/application/execution/SolverLoader.xtend @@ -12,6 +12,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfigurat import java.util.Map import java.util.Optional import org.eclipse.xtext.xbase.lib.Functions.Function1 +import hu.bme.mit.inf.dslreasoner.visualisation.pi2graphviz.GraphvizVisualiser class SolverLoader { def loadSolver(Solver solver, Map config) { @@ -73,6 +74,7 @@ class SolverLoader { ] } else if(solver === Solver::VIATRA_SOLVER) { return new ViatraReasonerConfiguration => [c| + c.debugCongiguration.partialInterpretatioVisualiser = new GraphvizVisualiser ] } else { throw new UnsupportedOperationException('''Unknown solver: «solver»''') 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 198beabb..45379e36 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 @@ -99,7 +99,7 @@ class ViatraReasoner extends LogicReasoner{ dse.addTransformationRule(rule) } - val strategy = new BestFirstStrategyForModelGeneration(workspace,viatraConfig) + val strategy = new BestFirstStrategyForModelGeneration(workspace,viatraConfig,method) viatraConfig.progressMonitor.workedForwardTransformation val transformationTime = System.nanoTime - transformationStartTime 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 63697887..63bd3b17 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,12 +25,17 @@ 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.viatra.query.runtime.api.IPatternMatch; +import org.eclipse.viatra.query.runtime.api.IQuerySpecification; +import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine; +import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher; import hu.bme.mit.inf.dslreasoner.logic.model.builder.LogicReasoner; 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.logic2viatra.ModelGenerationMethod; 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.PartialInterpretationVisualisation; @@ -59,6 +64,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { private ThreadContext context; private ReasonerWorkspace workspace; private ViatraReasonerConfiguration configuration; + private ModelGenerationMethod method; private PartialInterpretation2Logic partialInterpretation2Logic = new PartialInterpretation2Logic(); private Comparator comparator; private Logger logger = Logger.getLogger(IStrategy.class); @@ -79,10 +85,12 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { public BestFirstStrategyForModelGeneration( ReasonerWorkspace workspace, - ViatraReasonerConfiguration configuration) + ViatraReasonerConfiguration configuration, + ModelGenerationMethod method) { this.workspace = workspace; this.configuration = configuration; + this.method = method; } public SolutionStoreWithCopy getSolutionStoreWithCopy() { @@ -99,6 +107,14 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { public void initStrategy(ThreadContext context) { this.context = context; this.solutionStore = context.getGlobalContext().getSolutionStore(); + + ViatraQueryEngine engine = context.getQueryEngine(); + // TODO: visualisation +// for(IQuerySpecification> p : this.method.getAllPatterns()) { +// ViatraQueryMatcher matcher = p.getMatcher(engine); +// matcher.getAllMatches(); +// } + this.solutionStoreWithCopy = new SolutionStoreWithCopy(); this.solutionStoreWithDiversityDescriptor = new SolutionStoreWithDiversityDescriptor(configuration.diversityRequirement); @@ -275,7 +291,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { int id = ++numberOfPrintedModel; if (id % configuration.debugCongiguration.partalInterpretationVisualisationFrequency == 0) { PartialInterpretationVisualisation visualisation = partialInterpretatioVisualiser.visualiseConcretization(p); - visualisation.writeToFile(workspace, String.format("state%09d", id)); + visualisation.writeToFile(workspace, String.format("state%09d.png", id)); } } } -- cgit v1.2.3-54-g00ecf