diff options
author | 20001LastOrder <boqi.chen@mail.mcgill.ca> | 2020-11-04 01:16:22 -0500 |
---|---|---|
committer | 20001LastOrder <boqi.chen@mail.mcgill.ca> | 2020-11-04 01:16:22 -0500 |
commit | 93243cb3faf1ccd733081fcf380559ac03c9ad35 (patch) | |
tree | 421f9f174eb77c387b5acaa05f01e64a62cab3a7 /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend | |
parent | add realistic solver (diff) | |
parent | Optimizing generator with linear objective functions (diff) | |
download | VIATRA-Generator-93243cb3faf1ccd733081fcf380559ac03c9ad35.tar.gz VIATRA-Generator-93243cb3faf1ccd733081fcf380559ac03c9ad35.tar.zst VIATRA-Generator-93243cb3faf1ccd733081fcf380559ac03c9ad35.zip |
merge with current master, comment numerical solver related logging
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend')
-rw-r--r-- | Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend | 108 |
1 files changed, 0 insertions, 108 deletions
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend deleted file mode 100644 index 7e78c27e..00000000 --- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra/src/hu/bme/mit/inf/dslreasoner/viatrasolver/logic2viatra/ModelGenerationMethodProvider.xtend +++ /dev/null | |||
@@ -1,108 +0,0 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra | ||
2 | |||
3 | import hu.bme.mit.inf.dslreasoner.logic.model.builder.DocumentationLevel | ||
4 | import hu.bme.mit.inf.dslreasoner.logic.model.logicproblem.LogicProblem | ||
5 | import hu.bme.mit.inf.dslreasoner.viatra2logic.viatra2logicannotations.TransfomedViatraQuery | ||
6 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.patterns.PatternProvider | ||
7 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.GoalConstraintProvider | ||
8 | import hu.bme.mit.inf.dslreasoner.viatrasolver.logic2viatra.rules.RefinementRuleProvider | ||
9 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation | ||
10 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | ||
11 | import java.util.Collection | ||
12 | import java.util.List | ||
13 | import java.util.Set | ||
14 | import org.eclipse.viatra.query.runtime.api.IPatternMatch | ||
15 | import org.eclipse.viatra.query.runtime.api.IQuerySpecification | ||
16 | import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher | ||
17 | import org.eclipse.viatra.query.runtime.matchers.psystem.queries.PQuery | ||
18 | import org.eclipse.viatra.transformation.runtime.emf.rules.batch.BatchTransformationRule | ||
19 | import org.eclipse.xtend.lib.annotations.Data | ||
20 | import org.eclipse.viatra.query.runtime.matchers.psystem.PConstraint | ||
21 | import java.util.Map | ||
22 | |||
23 | class ModelGenerationStatistics { | ||
24 | public var long transformationExecutionTime = 0 | ||
25 | public var long metricCalculationTime = 0 | ||
26 | |||
27 | synchronized def addExecutionTime(long amount) { | ||
28 | transformationExecutionTime+=amount | ||
29 | } | ||
30 | |||
31 | synchronized def addMetricCalculationTime(long amount) { | ||
32 | metricCalculationTime+=amount | ||
33 | } | ||
34 | |||
35 | public var long PreliminaryTypeAnalisisTime = 0 | ||
36 | } | ||
37 | @Data class ModelGenerationMethod { | ||
38 | ModelGenerationStatistics statistics | ||
39 | |||
40 | Collection<? extends BatchTransformationRule<?,?>> objectRefinementRules | ||
41 | Collection<? extends BatchTransformationRule<?,?>> relationRefinementRules | ||
42 | |||
43 | List<MultiplicityGoalConstraintCalculator> unfinishedMultiplicities | ||
44 | Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWF | ||
45 | |||
46 | Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> invalidWF | ||
47 | |||
48 | Map<PConstraint, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> mustUnitPropagationPreconditions | ||
49 | Map<PConstraint, IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> currentUnitPropagationPreconditions | ||
50 | |||
51 | Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> allPatterns | ||
52 | } | ||
53 | enum TypeInferenceMethod { | ||
54 | Generic, PreliminaryAnalysis | ||
55 | } | ||
56 | |||
57 | class ModelGenerationMethodProvider { | ||
58 | private val PatternProvider patternProvider = new PatternProvider | ||
59 | private val RefinementRuleProvider refinementRuleProvider = new RefinementRuleProvider | ||
60 | private val GoalConstraintProvider goalConstraintProvider = new GoalConstraintProvider | ||
61 | |||
62 | public def ModelGenerationMethod createModelGenerationMethod( | ||
63 | LogicProblem logicProblem, | ||
64 | PartialInterpretation emptySolution, | ||
65 | ReasonerWorkspace workspace, | ||
66 | boolean nameNewElements, | ||
67 | TypeInferenceMethod typeInferenceMethod, | ||
68 | ScopePropagator scopePropagator, | ||
69 | DocumentationLevel debugLevel, | ||
70 | boolean objectCreationCosts | ||
71 | ) { | ||
72 | val statistics = new ModelGenerationStatistics | ||
73 | val writeFiles = (debugLevel === DocumentationLevel.NORMAL || debugLevel === DocumentationLevel.FULL) | ||
74 | |||
75 | val Set<PQuery> existingQueries = logicProblem | ||
76 | .relations | ||
77 | .map[annotations] | ||
78 | .flatten | ||
79 | .filter(TransfomedViatraQuery) | ||
80 | .map[it.patternPQuery as PQuery] | ||
81 | .toSet | ||
82 | |||
83 | val queries = patternProvider.generateQueries(logicProblem,emptySolution,statistics,existingQueries,workspace,typeInferenceMethod,writeFiles) | ||
84 | val //LinkedHashMap<Pair<Relation, ? extends Type>, BatchTransformationRule<GenericPatternMatch, ViatraQueryMatcher<GenericPatternMatch>>> | ||
85 | objectRefinementRules = refinementRuleProvider.createObjectRefinementRules(logicProblem, emptySolution, queries,scopePropagator,nameNewElements,statistics) | ||
86 | val relationRefinementRules = refinementRuleProvider.createRelationRefinementRules(queries,statistics) | ||
87 | |||
88 | val unfinishedMultiplicities = goalConstraintProvider.getUnfinishedMultiplicityQueries(logicProblem,queries,objectCreationCosts) | ||
89 | val unfinishedWF = queries.getUnfinishedWFQueries.values | ||
90 | |||
91 | val invalidWF = queries.getInvalidWFQueries.values | ||
92 | |||
93 | val mustUnitPropagationPreconditions = queries.getMustUnitPropagationPreconditionPatterns | ||
94 | val currentUnitPropagationPreconditions = queries.getCurrentUnitPropagationPreconditionPatterns | ||
95 | |||
96 | return new ModelGenerationMethod( | ||
97 | statistics, | ||
98 | objectRefinementRules.values, | ||
99 | relationRefinementRules.values, | ||
100 | unfinishedMultiplicities, | ||
101 | unfinishedWF, | ||
102 | invalidWF, | ||
103 | mustUnitPropagationPreconditions, | ||
104 | currentUnitPropagationPreconditions, | ||
105 | queries.allQueries | ||
106 | ) | ||
107 | } | ||
108 | } | ||