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 --- .../logic/model/logiclanguage/RealLiteral.java | 8 +++---- .../impl/LogiclanguagePackageImpl.java | 2 +- .../model/logiclanguage/impl/RealLiteralImpl.java | 17 ++++++-------- .../model/logiclanguage.ecore | 2 +- .../model/builder/LogicModelInterpretation.xtend | 4 ++-- .../logic/model/builder/LogicProblemBuilder.xtend | 6 ++--- .../logic/model/builder/LogicSolver.xtend | 2 +- .../model/builder/LogicStructureBuilder.xtend | 4 ++-- .../inf/dslreasoner/logic2ecore/Logic2Ecore.xtend | 15 ++++++------ .../viatra2logic/NumericDrealProblemSolver.java | 7 +++--- .../viatra2logic/NumericZ3ProblemSolver.java | 2 +- .../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 ++++--- 20 files changed, 70 insertions(+), 76 deletions(-) diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java index 0ba0a6ca..fd289abb 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/RealLiteral.java @@ -2,8 +2,6 @@ */ package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage; -import java.math.BigDecimal; - /** * * A representation of the model object 'Real Literal'. @@ -30,12 +28,12 @@ public interface RealLiteral extends AtomicTerm { *

* * @return the value of the 'Value' attribute. - * @see #setValue(BigDecimal) + * @see #setValue(double) * @see hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage#getRealLiteral_Value() * @model required="true" * @generated */ - BigDecimal getValue(); + double getValue(); /** * Sets the value of the '{@link hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral#getValue Value}' attribute. @@ -45,6 +43,6 @@ public interface RealLiteral extends AtomicTerm { * @see #getValue() * @generated */ - void setValue(BigDecimal value); + void setValue(double value); } // RealLiteral diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java index 03a679e4..48cb3efb 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/LogiclanguagePackageImpl.java @@ -2351,7 +2351,7 @@ public class LogiclanguagePackageImpl extends EPackageImpl implements Logiclangu initEAttribute(getBoolLiteral_Value(), ecorePackage.getEBoolean(), "value", null, 1, 1, BoolLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(realLiteralEClass, RealLiteral.class, "RealLiteral", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); - initEAttribute(getRealLiteral_Value(), ecorePackage.getEBigDecimal(), "value", null, 1, 1, RealLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getRealLiteral_Value(), ecorePackage.getEDouble(), "value", null, 1, 1, RealLiteral.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); initEClass(variableEClass, Variable.class, "Variable", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); initEReference(getVariable_Range(), this.getTypeReference(), null, "range", null, 1, 1, Variable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java index ffb2b97f..08791e2a 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/ecore-gen/hu/bme/mit/inf/dslreasoner/logic/model/logiclanguage/impl/RealLiteralImpl.java @@ -4,9 +4,6 @@ package hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.impl; import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.LogiclanguagePackage; import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.RealLiteral; - -import java.math.BigDecimal; - import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.ecore.EClass; @@ -35,7 +32,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral { * @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 RealLiteralImpl extends AtomicTermImpl implements RealLiteral { * @generated * @ordered */ - protected BigDecimal value = VALUE_EDEFAULT; + protected double value = VALUE_EDEFAULT; /** * @@ -72,7 +69,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral { * @generated */ @Override - public BigDecimal getValue() { + public double getValue() { return value; } @@ -82,8 +79,8 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral { * @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, LogiclanguagePackage.REAL_LITERAL__VALUE, oldValue, value)); @@ -112,7 +109,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral { public void eSet(int featureID, Object newValue) { switch (featureID) { case LogiclanguagePackage.REAL_LITERAL__VALUE: - setValue((BigDecimal)newValue); + setValue((Double)newValue); return; } super.eSet(featureID, newValue); @@ -142,7 +139,7 @@ public class RealLiteralImpl extends AtomicTermImpl implements RealLiteral { public boolean eIsSet(int featureID) { switch (featureID) { case LogiclanguagePackage.REAL_LITERAL__VALUE: - return VALUE_EDEFAULT == null ? value != null : !VALUE_EDEFAULT.equals(value); + return value != VALUE_EDEFAULT; } return super.eIsSet(featureID); } diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore index a91d4407..4db42c27 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/model/logiclanguage.ecore @@ -55,7 +55,7 @@ - + getAllRealsInStructure() + def SortedSet getAllRealsInStructure() - def Map getAllRealsWithInterpretation() { + def Map getAllRealsWithInterpretation() { allRealsInStructure.toMap [ real | (LogiclanguageFactory.eINSTANCE.createRealLiteral => [value = real]) as TermDescription ] diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend index fa97cbef..c8ff0b28 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicProblemBuilder.xtend @@ -481,9 +481,9 @@ class LogicProblemBuilder{ def Pow(TermDescription left, TermDescription right) {createPow => [leftOperand = left.toTerm rightOperand = right.toTerm]} def asTerm(boolean value) { createBoolLiteral => [x|x.value = value] } def asTerm(int value) { createIntLiteral => [x|x.value = value] } - def asTerm(double value) { BigDecimal.valueOf(value).asTerm } - def asTerm(float value) { BigDecimal.valueOf(value).asTerm } - def asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] } + def asTerm(double value) { createRealLiteral => [x|x.value = value] } + def asTerm(float value) { createRealLiteral => [x|x.value = value] } +// def asTerm(BigDecimal value) { createRealLiteral => [x|x.value = value] } def asTerm(String value) { createStringLiteral => [x|x.value = value]} def InstanceOf(TermDescription term, TypeDescriptor type) { createInstanceOf => [ 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 e62a3cb7..51d315b4 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 @@ -96,7 +96,7 @@ public class TypeScopes { public var minNewIntegers = 0 public var maxNewIntegers = Unlimited - public var SortedSet knownReals = new TreeSet + public var SortedSet knownReals = new TreeSet /** * Sets the number of Reals that has to be used to solve the problem. */ diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend index 7ca67d83..507e4bfd 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic.model/src/hu/bme/mit/inf/dslreasoner/logic/model/builder/LogicStructureBuilder.xtend @@ -146,7 +146,7 @@ class LogicStructureBuilder{ } def protected dispatch Term toTerm(Integer o) { createIntLiteral=>[value = o] } - def protected dispatch Term toTerm(BigDecimal o) { createRealLiteral=>[value = o]} + def protected dispatch Term toTerm(Double o) { createRealLiteral=>[value = o]} def protected dispatch Term toTerm(Boolean o) { createBoolLiteral=>[value = o]} def protected dispatch Term toTerm(SymbolicDeclaration o) { createSymbolicValue=>[symbolicReference = o]} def public Term termDescriptiontoTerm(TermDescription term) { @@ -171,7 +171,7 @@ class LogicStructureBuilder{ // Atomic resoulutions def protected dispatch Object resolve(IntLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as Integer } def protected dispatch Object resolve(BoolLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value } - def protected dispatch Object resolve(RealLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as BigDecimal } + def protected dispatch Object resolve(RealLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value as Double } def protected dispatch Object resolve(StringLiteral literal, LogicModelInterpretation interpretation, Map variableBinding) { return literal.value } def protected dispatch Object resolve(Not not, LogicModelInterpretation interpretation, Map variableBinding) { diff --git a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend index 8d6b565a..3a74963f 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend +++ b/Framework/hu.bme.mit.inf.dslreasoner.logic2ecore/src/hu/bme/mit/inf/dslreasoner/logic2ecore/Logic2Ecore.xtend @@ -109,13 +109,14 @@ class Logic2Ecore { } def translateType(EDataType type, Object value) { - if(type == EcorePackage.eINSTANCE.EFloat) { - val bd = value as BigDecimal - return bd.floatValue - } else if( type == EcorePackage.eINSTANCE.EDouble ) { - val bd = value as BigDecimal - return bd.doubleValue - } else return value +// if(type == EcorePackage.eINSTANCE.EFloat) { +// val bd = value as BigDecimal +// return bd.floatValue +// } else if( type == EcorePackage.eINSTANCE.EDouble ) { +// val bd = value as BigDecimal +// return bd.doubleValue +// } else + return value } protected dispatch def Map getAllElementsOfDatatype(EEnum type, Ecore2Logic_Trace forwardTrace, LogicModelInterpretation interpretation) { diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java index 55d52031..f410cc6d 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericDrealProblemSolver.java @@ -171,7 +171,8 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{ if (isInt) { expr = Integer.toString(((IntegerElement) matchedObj).getValue()); } else { - expr = Double.toString(((RealElement) matchedObj).getValue().doubleValue()); + expr = Double.toString(((RealElement) matchedObj).getValue()); +// expr = Double.toString(((RealElement) matchedObj).getValue().doubleValue()); } varMap.put(matchedObj, expr); } @@ -301,7 +302,7 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{ private Map parseDrealOutput(List output) { Map res = new HashMap(); - String re = "(\\w+) : \\[([0-9\\-.e]+), ([0-9\\-.e]+)\\]"; + String re = "(\\w+) : \\[([0-9\\-+.e]+), ([0-9\\-+.e]+)\\]"; Pattern p = Pattern.compile(re); for (String varVal : output) { Matcher m = p.matcher(varVal); @@ -350,7 +351,7 @@ public class NumericDrealProblemSolver extends NumericProblemSolver{ } else { String varName = varMap.get(obj); String value = solMap.get(varName); - sol.put(obj, Integer.parseInt(value)); + sol.put(obj, Double.parseDouble(value)); } } else { diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java index ab7f6ddc..db33804e 100644 --- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java +++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java @@ -174,7 +174,7 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{ int value = ((IntegerElement) matchedObj).getValue(); expr = (ArithExpr) ctx.mkInt(value); } else { - double value = ((RealElement) matchedObj).getValue().doubleValue(); + double value = ((RealElement) matchedObj).getValue(); expr = (ArithExpr) ctx.mkReal(String.valueOf(value)); } varMap.put(matchedObj, expr); 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-54-g00ecf