aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend19
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend15
2 files changed, 23 insertions, 11 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
index 22bbb2e2..aaf14ebb 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
+++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicSolver.xtend
@@ -5,6 +5,9 @@ import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.LogicResult
5import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult 5import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult
6import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace 6import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace
7import java.util.List 7import java.util.List
8import java.util.TreeSet
9import java.util.SortedSet
10import java.math.BigDecimal
8 11
9abstract class LogicReasoner { 12abstract class LogicReasoner {
10 def abstract LogicResult solve(LogicProblem problem, LogicSolverConfiguration configuration, 13 def abstract LogicResult solve(LogicProblem problem, LogicSolverConfiguration configuration,
@@ -47,19 +50,25 @@ abstract class LogicSolverConfiguration {
47 */ 50 */
48public class TypeScopes { 51public class TypeScopes {
49 public static val Unlimited = -1; 52 public static val Unlimited = -1;
50 public var boolean ignoreIdDuringGeneration = true 53
54 public var SortedSet<Integer> knownIntegers = new TreeSet
51 /** 55 /**
52 * Sets the number of Integers that has to be used to solve the problem. 56 * Sets the number of Integers that has to be used to solve the problem.
53 */ 57 */
54 public var numberOfUseableIntegers = Unlimited 58 public var maxNewIntegers = Unlimited
59
60 public var SortedSet<BigDecimal> knownReals = new TreeSet
55 /** 61 /**
56 * Sets the number of Integers that has to be used to solve the problem. 62 * Sets the number of Reals that has to be used to solve the problem.
57 */ 63 */
58 public var numberOfUseableReals = Unlimited 64 public var maxNewReals = Unlimited
65
66 public var SortedSet<String> knownStrings = new TreeSet
59 /** 67 /**
60 * Sets the number of Strings that has to be used to solve the problem. 68 * Sets the number of Strings that has to be used to solve the problem.
61 */ 69 */
62 public var numberOfUseableStrings = Unlimited 70 public var maxNewStrings = Unlimited
71
63 /** 72 /**
64 * Defines the minimal number of newly added elements. Default value is 0. 73 * Defines the minimal number of newly added elements. Default value is 0.
65 */ 74 */
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
index 06215a2a..9ddee6a7 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/PartialInterpretationInitialiser.xtend
@@ -63,8 +63,9 @@ class PartialInterpretationInitialiser {
63 it.booleanelements += createBooleanElement => [it.name = "false" it.value = false it.valueSet = true] 63 it.booleanelements += createBooleanElement => [it.name = "false" it.value = false it.valueSet = true]
64 64
65 // Integers 65 // Integers
66 it.maxNewIntegers = typeScopes.numberOfUseableIntegers 66 it.maxNewIntegers = typeScopes.maxNewIntegers
67 for(integersInProblem : problem.eAllContents.toIterable.filter(IntLiteral).map[value].toSet) { 67 val knownIntegers = (typeScopes.knownIntegers + problem.eAllContents.toIterable.filter(IntLiteral).map[value]).toSet
68 for(integersInProblem : knownIntegers) {
68 it.integerelements += createIntegerElement => [it.name = '''«integersInProblem»''' it.value = integersInProblem it.valueSet = true] 69 it.integerelements += createIntegerElement => [it.name = '''«integersInProblem»''' it.value = integersInProblem it.valueSet = true]
69 } 70 }
70 if(maxNewIntegers>0) { 71 if(maxNewIntegers>0) {
@@ -72,8 +73,9 @@ class PartialInterpretationInitialiser {
72 } 73 }
73 74
74 // Reals 75 // Reals
75 it.maxNewReals = typeScopes.numberOfUseableReals 76 it.maxNewReals = typeScopes.maxNewReals
76 for(realsInProblem : problem.eAllContents.toIterable.filter(RealLiteral).map[value].toSet) { 77 val knownReals = (typeScopes.knownReals + problem.eAllContents.toIterable.filter(RealLiteral).map[value]).toSet
78 for(realsInProblem : knownReals) {
77 it.realelements += createRealElement => [it.name = '''«realsInProblem»''' it.value = realsInProblem it.valueSet = true] 79 it.realelements += createRealElement => [it.name = '''«realsInProblem»''' it.value = realsInProblem it.valueSet = true]
78 } 80 }
79 if(maxNewReals>0) { 81 if(maxNewReals>0) {
@@ -81,8 +83,9 @@ class PartialInterpretationInitialiser {
81 } 83 }
82 84
83 // Strings 85 // Strings
84 it.maxNewStrings = typeScopes.numberOfUseableStrings 86 it.maxNewStrings = typeScopes.maxNewStrings
85 for(stringsInProblem : problem.eAllContents.toIterable.filter(StringLiteral).map[value].toSet) { 87 val knownStrings = (typeScopes.knownStrings + problem.eAllContents.toIterable.filter(StringLiteral).map[value]).toSet
88 for(stringsInProblem : knownStrings) {
86 it.stringelement += createStringElement => [it.name = '''"«stringsInProblem»"''' it.value=stringsInProblem it.valueSet = true] 89 it.stringelement += createStringElement => [it.name = '''"«stringsInProblem»"''' it.value=stringsInProblem it.valueSet = true]
87 } 90 }
88 if(maxNewStrings>0) { 91 if(maxNewStrings>0) {