From d03c841f2e4114a442deb08946c391c823745953 Mon Sep 17 00:00:00 2001 From: Oszkar Semerath Date: Sun, 17 May 2020 01:35:57 +0200 Subject: detailed runtimes + counting defined objects only --- .../viatrasolver/reasoner/ViatraReasoner.xtend | 8 ++++- .../dse/BestFirstStrategyForModelGeneration.java | 35 +++++++++++++++++----- .../dse/ModelGenerationCompositeObjective.xtend | 15 +++++++--- 3 files changed, 45 insertions(+), 13 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 1fe65afe..5df28edd 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 @@ -137,10 +137,16 @@ class ViatraReasoner extends LogicReasoner{ it.transformationTime = (transformationTime/1000000) as int for(x : 0.. [ - it.name = '''_Solution«x»FoundAt''' + it.name = '''Solution«x+1»FoundAt''' it.value = (strategy.solutionStoreWithCopy.allRuntimes.get(x)/1000000) as int ] } + for(x: 0.. [ + it.name = '''Solution«x+1»DetailedStatistics''' + it.value = strategy.times.get(x) + ] + } it.entries += createIntStatisticEntry => [ it.name = "ExplorationInitializationTime" it.value = ((strategy.explorationStarted-transformationFinished)/1000000) as int ] 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 75ce7f10..710996a9 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 @@ -44,6 +44,7 @@ import hu.bme.mit.inf.dslreasoner.viatra2logic.NumericProblemSolver; 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.statecoder.NeighbourhoodBasedPartialInterpretationStateCoder; 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.ViatraReasonerConfiguration; @@ -112,7 +113,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { public int getNumberOfStatecoderFail() { return numberOfStatecoderFail; } - + //LinkedList> matchers; @Override public void initStrategy(ThreadContext context) { this.context = context; @@ -120,7 +121,7 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { // ViatraQueryEngine engine = context.getQueryEngine(); // // TODO: visualisation -// LinkedList> matchers = new LinkedList>(); +// matchers = new LinkedList>(); // for(IQuerySpecification> p : this.method.getAllPatterns()) { // //System.out.println(p.getSimpleName()); // ViatraQueryMatcher matcher = p.getMatcher(engine); @@ -213,12 +214,11 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { visualiseCurrentState(); // for(ViatraQueryMatcher matcher : matchers) { -// System.out.println(matcher.getPatternName()); -// System.out.println("---------"); -// for(IPatternMatch m : matcher.getAllMatches()) { -// System.out.println(m); +// int c = matcher.countMatches(); +// if(c>=100) { +// System.out.println(c+ " " +matcher.getPatternName()); // } -// System.out.println("---------"); +// // } boolean consistencyCheckResult = checkConsistency(currentTrajectoryWithFittness); @@ -292,12 +292,31 @@ public class BestFirstStrategyForModelGeneration implements IStrategy { solutionStoreWithDiversityDescriptor.newSolution(context); solutionStore.newSolution(context); configuration.progressMonitor.workedModelFound(configuration.solutionScope.numberOfRequiredSolution); - + saveTimes(); logger.debug("Found a solution."); } } } } + public List times = new LinkedList(); + private void saveTimes() { + long statecoderTime = ((NeighbourhoodBasedPartialInterpretationStateCoder)this.context.getStateCoder()).getStatecoderRuntime()/1000000; + long solutionCopy = solutionStoreWithCopy.getSumRuntime()/1000000; + long activationSelection = this.activationSelector.getRuntime()/1000000; + long numericalSolverSumTime = this.numericSolver.getRuntime()/1000000; + long numericalSolverProblemForming = this.numericSolver.getSolverSolvingProblem()/1000000; + long numericalSolverSolving = this.numericSolver.getSolverSolvingProblem()/1000000; + long numericalSolverInterpreting = this.numericSolver.getSolverSolution()/1000000; + this.times.add( + "(StateCoderTime:"+statecoderTime+ + "|SolutionCopyTime:"+solutionCopy+ + "|ActivationSelectionTime:"+activationSelection+ + "|NumericalSolverSumTime:"+numericalSolverSumTime+ + "|NumericalSolverProblemFormingTime:"+numericalSolverProblemForming+ + "|NumericalSolverSolvingTime:"+numericalSolverSolving+ + "|NumericalSolverInterpretingSolution:"+numericalSolverInterpreting+")"); + + } @Override public void interruptStrategy() { diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend index e75cae41..2a4294ad 100644 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend @@ -6,6 +6,7 @@ import org.eclipse.viatra.dse.base.ThreadContext import org.eclipse.viatra.dse.objectives.Comparators import org.eclipse.viatra.dse.objectives.IObjective import org.eclipse.viatra.dse.objectives.impl.BaseObjective +import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation //class ViatraReasonerNumbers { // public static val scopePriority = 2 @@ -26,6 +27,7 @@ class ModelGenerationCompositeObjective implements IObjective{ val ScopeObjective scopeObjective val List unfinishedMultiplicityObjectives val UnfinishedWFObjective unfinishedWFObjective + var PartialInterpretation model=null; public new( ScopeObjective scopeObjective, @@ -38,6 +40,7 @@ class ModelGenerationCompositeObjective implements IObjective{ } override init(ThreadContext context) { + model = context.model as PartialInterpretation this.scopeObjective.init(context) this.unfinishedMultiplicityObjectives.forEach[it.init(context)] this.unfinishedWFObjective.init(context) @@ -64,11 +67,15 @@ class ModelGenerationCompositeObjective implements IObjective{ nonContainmentMultiplicity+=multiplicityObjective.getFitness(context) } } + val size = 0.9/model.newElements.size var sum = 0.0 sum += scopeFitnes - sum += containmentMultiplicity - sum += Math.sqrt(nonContainmentMultiplicity) - sum += unfinishedWFsFitness//*0.5 + sum += containmentMultiplicity*2 + sum += nonContainmentMultiplicity + sum += unfinishedWFsFitness + sum+=size + + //println('''Sum=«sum»|Scope=«scopeFitnes»|ContainmentMultiplicity=«containmentMultiplicity»|NonContainmentMultiplicity=«nonContainmentMultiplicity»|WFs=«unfinishedWFsFitness»''') @@ -79,7 +86,7 @@ class ModelGenerationCompositeObjective implements IObjective{ override getName() { "CompositeUnfinishednessObjective"} override isHardObjective() { true } - override satisifiesHardObjective(Double fitness) { fitness <= 0.001 } + override satisifiesHardObjective(Double fitness) { fitness < 0.95 } override setComparator(Comparator comparator) { -- cgit v1.2.3-54-g00ecf