diff options
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 | |||
5 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult | 5 | import hu.bme.mit.inf.dslreasoner.logic.model.logicresult.ModelResult |
6 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace | 6 | import hu.bme.mit.inf.dslreasoner.workspace.ReasonerWorkspace |
7 | import java.util.List | 7 | import java.util.List |
8 | import java.util.TreeSet | ||
9 | import java.util.SortedSet | ||
10 | import java.math.BigDecimal | ||
8 | 11 | ||
9 | abstract class LogicReasoner { | 12 | abstract 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 | */ |
48 | public class TypeScopes { | 51 | public 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) { |