From be2fd000db012b3738211ebee8db36001235c918 Mon Sep 17 00:00:00 2001
From: Aren Babikian
Date: Thu, 14 Jan 2021 13:11:21 -0500
Subject: complete change of real representation BigDecimal->Double
---
.../partialinterpretation/RealElement.java | 8 +++----
.../impl/PartialinterpretationPackageImpl.java | 2 +-
.../impl/RealElementImpl.java | 17 ++++++--------
.../model/PartialInterpretation.ecore | 2 +-
.../InstanceModel2PartialInterpretation.xtend | 27 +++++++++++-----------
.../PartialInterpretationInitialiser.xtend | 4 ++--
.../viatrasolver/reasoner/ViatraReasoner.xtend | 2 +-
.../viatrasolver/reasoner/dse/NumericSolver.xtend | 7 +++---
.../dse/PartialModelAsLogicInterpretation.xtend | 8 ++++---
9 files changed, 37 insertions(+), 40 deletions(-)
(limited to 'Solvers')
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
index 65b40808..c30314d5 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/RealElement.java
@@ -2,8 +2,6 @@
*/
package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation;
-import java.math.BigDecimal;
-
/**
*
* A representation of the model object 'Real Element'.
@@ -30,12 +28,12 @@ public interface RealElement extends PrimitiveElement {
*
*
* @return the value of the 'Value' attribute.
- * @see #setValue(BigDecimal)
+ * @see #setValue(double)
* @see hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage#getRealElement_Value()
* @model required="true"
* @generated
*/
- BigDecimal getValue();
+ double getValue();
/**
* Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement#getValue Value}' attribute.
@@ -45,6 +43,6 @@ public interface RealElement extends PrimitiveElement {
* @see #getValue()
* @generated
*/
- void setValue(BigDecimal value);
+ void setValue(double value);
} // RealElement
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
index 1ea3a11d..cb97c5ad 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialinterpretationPackageImpl.java
@@ -1069,7 +1069,7 @@ public class PartialinterpretationPackageImpl extends EPackageImpl implements Pa
initEAttribute(getIntegerElement_Value(), ecorePackage.getEInt(), "value", null, 1, 1, IntegerElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(realElementEClass, RealElement.class, "RealElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
- initEAttribute(getRealElement_Value(), ecorePackage.getEBigDecimal(), "value", null, 1, 1, RealElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEAttribute(getRealElement_Value(), ecorePackage.getEDouble(), "value", null, 1, 1, RealElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(stringElementEClass, StringElement.class, "StringElement", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getStringElement_Value(), ecorePackage.getEString(), "value", null, 1, 1, StringElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
index 67cff5a2..d1ff754f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/RealElementImpl.java
@@ -4,9 +4,6 @@ package hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.pa
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationPackage;
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.RealElement;
-
-import java.math.BigDecimal;
-
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EClass;
@@ -35,7 +32,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
* @ordered
*/
- protected static final BigDecimal VALUE_EDEFAULT = null;
+ protected static final double VALUE_EDEFAULT = 0.0;
/**
* The cached value of the '{@link #getValue() Value}' attribute.
@@ -45,7 +42,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
* @ordered
*/
- protected BigDecimal value = VALUE_EDEFAULT;
+ protected double value = VALUE_EDEFAULT;
/**
*
@@ -72,7 +69,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
*/
@Override
- public BigDecimal getValue() {
+ public double getValue() {
return value;
}
@@ -82,8 +79,8 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
* @generated
*/
@Override
- public void setValue(BigDecimal newValue) {
- BigDecimal oldValue = value;
+ public void setValue(double newValue) {
+ double oldValue = value;
value = newValue;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, PartialinterpretationPackage.REAL_ELEMENT__VALUE, oldValue, value));
@@ -112,7 +109,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
public void eSet(int featureID, Object newValue) {
switch (featureID) {
case PartialinterpretationPackage.REAL_ELEMENT__VALUE:
- setValue((BigDecimal)newValue);
+ setValue((Double)newValue);
return;
}
super.eSet(featureID, newValue);
@@ -142,7 +139,7 @@ public class RealElementImpl extends PrimitiveElementImpl implements RealElement
public boolean eIsSet(int featureID) {
switch (featureID) {
case PartialinterpretationPackage.REAL_ELEMENT__VALUE:
- return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value);
+ return value != VALUE_EDEFAULT;
}
return super.eIsSet(featureID);
}
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
index 47d54258..b2398acd 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/model/PartialInterpretation.ecore
@@ -83,7 +83,7 @@
-
+
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
index cb5b587f..94959025 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretation2logic/InstanceModel2PartialInterpretation.xtend
@@ -13,7 +13,6 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.Par
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.Problem2PartialInterpretationTrace
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialRelationInterpretation
import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialinterpretationFactory
-import java.math.BigDecimal
import java.util.HashMap
import java.util.HashSet
import java.util.List
@@ -148,7 +147,7 @@ class InstanceModel2PartialInterpretation {
private def createTypeScopesFromKnownAttributeValues(List objects, Set attributesUsed) {
val Set integers = new HashSet
- val Set reals = new HashSet
+ val Set reals = new HashSet
val Set strings = new HashSet
for(object: objects) {
for(attribute : object.eClass.EAllAttributes.filter[attributesUsed.contains(it)]) {
@@ -170,28 +169,28 @@ class InstanceModel2PartialInterpretation {
it.knownStrings += strings
]
}
- private def dispatch shortValue(Boolean value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Boolean value, Set integers, Set reals, Set strings) {
// Do nothing
}
- private def dispatch shortValue(Integer value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Integer value, Set integers, Set reals, Set strings) {
integers += value
}
- private def dispatch shortValue(Short value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Short value, Set integers, Set reals, Set strings) {
integers += Integer.valueOf(value)
}
- private def dispatch shortValue(Float value, Set integers, Set reals, Set strings) {
- reals += BigDecimal.valueOf(value)
+ private def dispatch shortValue(Float value, Set integers, Set reals, Set strings) {
+ reals += Double.valueOf(value)
}
- private def dispatch shortValue(Double value, Set integers, Set reals, Set strings) {
- reals += BigDecimal.valueOf(value)
+ private def dispatch shortValue(Double value, Set integers, Set reals, Set strings) {
+ reals += value
}
- private def dispatch shortValue(String value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(String value, Set integers, Set reals, Set strings) {
strings += value
}
- private def dispatch shortValue(Void value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Void value, Set integers, Set reals, Set strings) {
// Do nothing
}
- private def dispatch shortValue(Object value, Set integers, Set reals, Set strings) {
+ private def dispatch shortValue(Object value, Set integers, Set reals, Set strings) {
// Do nothing
}
@@ -220,11 +219,11 @@ class InstanceModel2PartialInterpretation {
}
dispatch protected def translateValue(Double value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
- BigDecimal.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
+ value.lookup(partialInterpretationTrace.primitiveValues.realMap)
}
dispatch protected def translateValue(Float value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
- BigDecimal.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
+ Double.valueOf(value).lookup(partialInterpretationTrace.primitiveValues.realMap)
}
dispatch protected def translateValue(String value, Ecore2Logic_Trace ecore2LogicTrace, Problem2PartialInterpretationTrace partialInterpretationTrace) {
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 20ff58f2..92db5c18 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
@@ -52,7 +52,7 @@ import static extension hu.bme.mit.inf.dslreasoner.util.CollectionsUtil.*
PartialIntegerInterpretation integerInterpretation
Map integerMap
PartialRealInterpretation realInterpretation
- Map realMap
+ Map realMap
PartialStringInterpretation stringInterpretation
Map stringMap
}
@@ -146,7 +146,7 @@ class PartialInterpretationInitialiser {
return integerInterpretation
}
- def protected initReals(PartialInterpretation partialInterpretation, SortedSet knownReals, int minNewReals, int maxNewReals) {
+ def protected initReals(PartialInterpretation partialInterpretation, SortedSet knownReals, int minNewReals, int maxNewReals) {
val realInterpretation = createPartialRealInterpretation
partialInterpretation.partialtypeinterpratation += realInterpretation
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 144e5e6f..d386241d 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
@@ -110,7 +110,7 @@ class ViatraReasoner extends LogicReasoner {
new SolutionStore(numberOfRequiredSolutions)
}
solutionStore.registerSolutionFoundHandler(new LoggerSolutionFoundHandler(viatraConfig))
- val numericSolver = new NumericSolver(method, viatraConfig, false)
+ val numericSolver = new NumericSolver(method, viatraConfig, true)//was formerly hard-coded to false for caching
val solutionSaver = method.solutionSaver
solutionSaver.numericSolver = numericSolver
val solutionCopier = solutionSaver.solutionCopier
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
index 4b0ea544..ab3e6601 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/NumericSolver.xtend
@@ -98,11 +98,12 @@ class NumericSolver {
finalResult=true
} else {
val propagatedConstraints = new HashMap
+ println("------ Any matches?")
for(entry : matches.entrySet) {
val constraint = entry.key
- //println(constraint)
+ println("------ " + constraint)
val allMatches = entry.value.allMatches.map[it.toArray]
- //println(allMatches.toList)
+ println("------ " + allMatches.toList)
propagatedConstraints.put(constraint,allMatches)
}
if(propagatedConstraints.values.forall[empty]) {
@@ -198,6 +199,6 @@ class NumericSolver {
def protected dispatch fillWithValue(BooleanElement e, Object value) {e.valueSet=true e.value=value as Boolean}
def protected dispatch fillWithValue(IntegerElement e, Object value) {e.valueSet=true e.value=value as Integer}
- def protected dispatch fillWithValue(RealElement e, Object value) {e.valueSet=true e.value=BigDecimal.valueOf(value as Double) }
+ def protected dispatch fillWithValue(RealElement e, Object value) {e.valueSet=true e.value=value as Double }
def protected dispatch fillWithValue(StringElement e, Object value) {e.valueSet=true e.value=value as String}
}
\ No newline at end of file
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
index b48d0831..4484052d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/PartialModelAsLogicInterpretation.xtend
@@ -36,7 +36,7 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
val Map elementBackwardTrace
val Map booleanForwardTrace
val Map integerForwardTrace
- val Map realForwardTrace
+ val Map realForwardTrace
val Map stringForwardTrace
new(PartialInterpretation partialInterpretation, Map forwardMap) {
@@ -51,7 +51,9 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
integerForwardTrace = initialisePrimitiveElementTrace(
0,[it+1],[it],partialInterpretation.newElements.filter(IntegerElement),[it.value])
realForwardTrace = initialisePrimitiveElementTrace(
- BigDecimal::ZERO,[it.add(BigDecimal.ONE)],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
+ 0.0,[it+1.0],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
+// realForwardTrace = initialisePrimitiveElementTrace(
+// BigDecimal::ZERO,[it.add(BigDecimal.ONE)],[it],partialInterpretation.newElements.filter(RealElement),[it.value])
stringForwardTrace = initialisePrimitiveElementTrace(
0,[it+1],['''StringĀ«itĀ»'''],partialInterpretation.newElements.filter(StringElement),[it.value])
}
@@ -116,7 +118,7 @@ class PartialModelAsLogicInterpretation implements LogicModelInterpretation{
def dispatch elementLookupForward(Integer e) {
this.integerForwardTrace.get(e)
}
- def dispatch elementLookupForward(BigDecimal e) {
+ def dispatch elementLookupForward(Double e) {
this.realForwardTrace.get(e)
}
def dispatch elementLookupForward(String e) {
--
cgit v1.2.3-70-g09d2