aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Mayer KrisztiƔn <mayer.krisztian.gabor@gmail.com>2017-12-02 22:52:58 +0100
committerLibravatar Mayer KrisztiƔn <mayer.krisztian.gabor@gmail.com>2017-12-02 22:52:58 +0100
commit870f0a59283186350ee050f08e5082d0bb02885a (patch)
treef2c5b106b25d4bb5c2cefbe2c726662ac2a4c22b
parentObjectives added (diff)
downloadVIATRA-Generator-smartgridgenerator.tar.gz
VIATRA-Generator-smartgridgenerator.tar.zst
VIATRA-Generator-smartgridgenerator.zip
Finished Realistic Generator smartgridgenerator
-rw-r--r--Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/META-INF/MANIFEST.MF21
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java4
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java12
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/ralismcalculator/RealismCalculator.xtend61
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend51
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend12
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SmartGridScopeObjective.xtend54
7 files changed, 180 insertions, 35 deletions
diff --git a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/META-INF/MANIFEST.MF b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/META-INF/MANIFEST.MF
index 5bf3fa5a..b2b0474e 100644
--- a/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/META-INF/MANIFEST.MF
+++ b/Solvers/Alloy-Solver/hu.bme.mit.inf.dlsreasoner.alloy.reasoner/META-INF/MANIFEST.MF
@@ -9,17 +9,18 @@ Bundle-Vendor: %providerName
9Bundle-Localization: plugin 9Bundle-Localization: plugin
10Export-Package: hu.bme.mit.inf.dlsreasoner.alloy.reasoner, 10Export-Package: hu.bme.mit.inf.dlsreasoner.alloy.reasoner,
11 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder, 11 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.builder,
12 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.queries 12 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.queries,
13 hu.bme.mit.inf.dlsreasoner.alloy.reasoner.queries.util
13Require-Bundle: com.google.guava, 14Require-Bundle: com.google.guava,
14 org.eclipse.xtend.lib, 15 org.eclipse.xtend.lib,
15 org.eclipse.xtext.xbase.lib, 16 org.eclipse.xtext.xbase.lib,
16 org.eclipse.core.runtime, 17 org.eclipse.core.runtime,
17 org.eclipse.emf.ecore;visibility:=reexport, 18 org.eclipse.emf.ecore;visibility:=reexport,
18 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0";visibility:=reexport, 19 hu.bme.mit.inf.dslreasoner.logic.model;bundle-version="1.0.0";visibility:=reexport,
19 hu.bme.mit.inf.dslreasoner.alloy.language;bundle-version="1.0.0", 20 hu.bme.mit.inf.dslreasoner.alloy.language;bundle-version="1.0.0",
20 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.3.0", 21 org.eclipse.viatra.query.runtime.base.itc;bundle-version="1.3.0",
21 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0", 22 hu.bme.mit.inf.dslreasoner.ecore2logic;bundle-version="1.0.0",
22 org.eclipse.viatra.query.runtime;bundle-version="2.0.0" 23 org.eclipse.viatra.query.runtime;bundle-version="1.7.0"
23Bundle-RequiredExecutionEnvironment: JavaSE-1.8 24Bundle-RequiredExecutionEnvironment: JavaSE-1.8
24Bundle-ActivationPolicy: lazy 25Bundle-ActivationPolicy: lazy
25Import-Package: org.apache.log4j;version="1.2.15" 26Import-Package: org.apache.log4j;version="1.2.15"
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java
index 07a4e05e..2556b96f 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/PartialInterpretation.java
@@ -48,8 +48,8 @@ import org.eclipse.emf.ecore.EObject;
48 */ 48 */
49public interface PartialInterpretation extends EObject { 49public interface PartialInterpretation extends EObject {
50 50
51// int getAverageRepeater(); 51 public long getElapsedTime();
52// int getAverageNumberHops(); 52 public void increaseElapsedTime(long nanoTime);
53 /** 53 /**
54 * Returns the value of the '<em><b>Problem</b></em>' reference. 54 * Returns the value of the '<em><b>Problem</b></em>' reference.
55 * <!-- begin-user-doc --> 55 * <!-- begin-user-doc -->
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java
index dd744606..3ce2141d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/ecore-gen/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/partialinterpretation/impl/PartialInterpretationImpl.java
@@ -67,6 +67,8 @@ import org.eclipse.emf.ecore.util.InternalEList;
67 * @generated 67 * @generated
68 */ 68 */
69public class PartialInterpretationImpl extends MinimalEObjectImpl.Container implements PartialInterpretation { 69public class PartialInterpretationImpl extends MinimalEObjectImpl.Container implements PartialInterpretation {
70 private static long elapsedTime = 0;
71
70 /** 72 /**
71 * The cached value of the '{@link #getProblem() <em>Problem</em>}' reference. 73 * The cached value of the '{@link #getProblem() <em>Problem</em>}' reference.
72 * <!-- begin-user-doc --> 74 * <!-- begin-user-doc -->
@@ -1040,4 +1042,14 @@ public class PartialInterpretationImpl extends MinimalEObjectImpl.Container impl
1040 return result.toString(); 1042 return result.toString();
1041 } 1043 }
1042 1044
1045 @Override
1046 public long getElapsedTime() {
1047 return elapsedTime;
1048 }
1049
1050 @Override
1051 public void increaseElapsedTime(long nanoTime) {
1052 elapsedTime += nanoTime;
1053 }
1054
1043} //PartialInterpretationImpl 1055} //PartialInterpretationImpl
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/ralismcalculator/RealismCalculator.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/ralismcalculator/RealismCalculator.xtend
index a9b31cef..5958ddca 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/ralismcalculator/RealismCalculator.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/ralismcalculator/RealismCalculator.xtend
@@ -12,6 +12,7 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.par
12import java.util.HashMap 12import java.util.HashMap
13import org.eclipse.emf.common.util.BasicEList 13import org.eclipse.emf.common.util.BasicEList
14import java.util.Map 14import java.util.Map
15import java.util.ArrayList
15 16
16public class RealismCalculator { 17public class RealismCalculator {
17 18
@@ -262,16 +263,70 @@ public class RealismCalculator {
262 return maxDegree 263 return maxDegree
263 } 264 }
264 265
266 public static def calculateAverageNumberOfHops(PartialInterpretation partialInterpretation){
267 val hops = new ArrayList<Integer>
268 var sum = 0
269 for (element : partialInterpretation.newElements) {
270 val hop = calculateNumberOfHopsForSmartGridElement(element)
271 hops.add(hop)
272 }
273 for(hop : hops){
274 sum += hop.intValue
275 }
276 return (sum as double)/hops.size
277 }
278
265 public static def calculateMinimumNumberOfHops(PartialInterpretation partialInterpretation){ 279 public static def calculateMinimumNumberOfHops(PartialInterpretation partialInterpretation){
280 var minHop = -1
266 for (element : partialInterpretation.newElements) { 281 for (element : partialInterpretation.newElements) {
267 282 val hop = calculateNumberOfHopsForSmartGridElement(element)
283 if(hop < minHop || minHop == -1){
284 minHop = hop
285 }
268 } 286 }
287 return minHop
269 } 288 }
270 289
271 public static def calculateMaximumNumberOfHops(PartialInterpretation partialInterpretation){ 290 public static def calculateMaximumNumberOfHops(PartialInterpretation partialInterpretation){
272 291 var maxHop = 0
292 for (element : partialInterpretation.newElements) {
293 val hop = calculateNumberOfHopsForSmartGridElement(element)
294 if(hop > maxHop)
295 maxHop = hop.intValue
296 }
297 return maxHop
273 } 298 }
274 299
300 public static def calculateAverageRepeaterDegree(PartialInterpretation partialInterpretation){
301 var degrees = calculateDegreeOfNodes(partialInterpretation)
302 var numberOfRepeaters = 0
303 var sum = 0
304 var typeIterator = degrees.entrySet.iterator
305 while(typeIterator.hasNext){
306 var outerpair = typeIterator.next as Map.Entry<PartialTypeInterpratation, HashMap<DefinedElement, Integer>>;
307 if(outerpair.key.interpretationOf.name.equals("SmartMeter class")){
308 var defElementIterator = outerpair.value.entrySet.iterator
309 while (defElementIterator.hasNext){
310 var innerpair = defElementIterator.next
311
312 if(elementIsRepeater(innerpair.key, partialInterpretation)){
313 numberOfRepeaters++
314 sum += (innerpair.value as Integer).intValue
315 }
316 defElementIterator.remove
317 }
318 }
319 typeIterator.remove
320 }
321 return (sum as double)/numberOfRepeaters
322 }
323
324 public static def calculateAverageConcentratorDegree(PartialInterpretation partialInterpretation){
325 // TODO metamodell now only contains 1 concentrator, so the average is going to be it's degree
326 // Implement this function to calculate average for multiple concentrators...
327 return calculateMaximumDegreeOfConcentrators(partialInterpretation)
328 }
329
275 public static def calculatePercentageOfRepeatersInSmartGrid(PartialInterpretation partialInterpretation){ 330 public static def calculatePercentageOfRepeatersInSmartGrid(PartialInterpretation partialInterpretation){
276 var numberOfElements = getNumberOfElements(partialInterpretation) 331 var numberOfElements = getNumberOfElements(partialInterpretation)
277 var numberOfRepeaters = getNumberOfRepeaters(partialInterpretation) 332 var numberOfRepeaters = getNumberOfRepeaters(partialInterpretation)
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend
index c4bd4515..54a05e63 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage/src/hu/bme/mit/inf/dslreasoner/viatrasolver/partialinterpretationlanguage/visualisation/PartialInterpretation2Gml.xtend
@@ -11,16 +11,53 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.par
11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation 11import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation
12import java.util.Set 12import java.util.Set
13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.ralismcalculator.RealismCalculator 13import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.ralismcalculator.RealismCalculator
14import java.io.PrintStream
15import java.io.FileOutputStream
16import java.io.FileDescriptor
14 17
15class PartialInterpretation2Gml { 18class PartialInterpretation2Gml {
16 def public transform(PartialInterpretation i) { 19 def public transform(PartialInterpretation i) {
17 System.out.println("SumElements: " + RealismCalculator.getNumberOfElements(i)) 20 var postGenCalculationStartTime = System.nanoTime();
18 System.out.println("Repeaters: " + RealismCalculator.getNumberOfRepeaters(i)) 21// System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)))
19 System.out.println("percentage: " + RealismCalculator.calculatePercentageOfRepeatersInSmartGrid(i)) 22// System.out.print("_____________")
20 System.out.println("MinRepeaterDegree: " + RealismCalculator.calculateMinimumDegreeOfRepeaters(i)); 23 var numberOfElements = RealismCalculator.getNumberOfElements(i)
21 System.out.println("MaxRepeaterDegree: " + RealismCalculator.calculateMaximumDegreeOfRepeaters(i)); 24 var numberOfRepeaters = RealismCalculator.getNumberOfRepeaters(i)
22 System.out.println("MinConcentratorDegree: " + RealismCalculator.calculateMinimumDegreeOfConcentrators(i)); 25 var percentageOfRepeaters = RealismCalculator.calculatePercentageOfRepeatersInSmartGrid(i)
23 System.out.println("MaxConcentratorDegree: " + RealismCalculator.calculateMaximumDegreeOfConcentrators(i)); 26 System.out.print("SumElements;" + numberOfElements + ";")
27 System.out.print("Repeaters;" + numberOfRepeaters + ";")
28 System.out.print("RepPercentage;" + percentageOfRepeaters + ";")
29// System.out.print("_____________")
30 var minimumRepeaterDegree = RealismCalculator.calculateMinimumDegreeOfRepeaters(i)
31 var maximumRepeaterDegree = RealismCalculator.calculateMaximumDegreeOfRepeaters(i)
32 var averageRepeaterDegree = RealismCalculator.calculateAverageRepeaterDegree(i)
33 System.out.print("MinRepeaterDegree;" + minimumRepeaterDegree + ";");
34 System.out.print("MaxRepeaterDegree;" + maximumRepeaterDegree + ";");
35 System.out.print("AvgRepeaterDegree;" + averageRepeaterDegree + ";");
36// System.out.print("_____________")
37 var minimumConcentratorDegree = RealismCalculator.calculateMinimumDegreeOfConcentrators(i)
38 var maximumConcentratorDegree = RealismCalculator.calculateMaximumDegreeOfConcentrators(i)
39 var avgConcentratorDegree = RealismCalculator.calculateAverageConcentratorDegree(i)
40 System.out.print("MinConcentratorDegree;" + minimumConcentratorDegree + ";");
41 System.out.print("MaxConcentratorDegree;" + maximumConcentratorDegree + ";");
42 System.out.print("AvgConcentratorDegree;" + avgConcentratorDegree + ";");
43// System.out.print("_____________")
44 var maxHops = RealismCalculator.calculateMaximumNumberOfHops(i)
45 var minHops= RealismCalculator.calculateMinimumNumberOfHops(i)
46 var avgHops= RealismCalculator.calculateAverageNumberOfHops(i)
47 System.out.print("MaxHops;" + maxHops + ";");
48 System.out.print("MinHops;" + minHops + ";");
49 System.out.print("AvgHops;" + avgHops + ";");
50// System.out.print("_____________")
51 var postGenElapsedTime = (System.nanoTime()-postGenCalculationStartTime)
52 System.out.print("Post Generation Realism Calculation Time;" + postGenElapsedTime + ";")
53 System.out.print("Post Generation Realism Calculation Time In Seconds;" + postGenElapsedTime *0.000000001 + ";")
54 var generationCalculationTime = i.elapsedTime
55 System.out.print("Realism Calculation Time During Generation;" + generationCalculationTime + ";")
56 System.out.print("Realism Calculation Time During Generation In Seconds;" + generationCalculationTime *0.000000001 + ";")
57 var totalCalculationTime = postGenElapsedTime + generationCalculationTime
58 System.out.print("Total Realism Calculation Time;" + totalCalculationTime + ";")
59 System.out.print("Total Realism Calculation Time In Seconds;" + totalCalculationTime*0.000000001 + ";")
60// System.out.print("_____________")
24 val p = i.problem 61 val p = i.problem
25 val Map<DefinedElement, Integer> objectToID = new HashMap 62 val Map<DefinedElement, Integer> objectToID = new HashMap
26 val containmentRelations = p.containmentHierarchies.map[it.containmentRelations].flatten.toSet 63 val containmentRelations = p.containmentHierarchies.map[it.containmentRelations].flatten.toSet
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
index 8e56a8d9..c58e221d 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
@@ -6,6 +6,7 @@ import org.eclipse.viatra.dse.base.ThreadContext
6import org.eclipse.viatra.dse.objectives.Comparators 6import org.eclipse.viatra.dse.objectives.Comparators
7import org.eclipse.viatra.dse.objectives.IObjective 7import org.eclipse.viatra.dse.objectives.IObjective
8import org.eclipse.viatra.dse.objectives.impl.BaseObjective 8import org.eclipse.viatra.dse.objectives.impl.BaseObjective
9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
9 10
10//class ViatraReasonerNumbers { 11//class ViatraReasonerNumbers {
11// public static val scopePriority = 2 12// public static val scopePriority = 2
@@ -57,11 +58,14 @@ class ModelGenerationCompositeObjective implements IObjective{
57 override getFitness(ThreadContext context) { 58 override getFitness(ThreadContext context) {
58 var sum = 0.0 59 var sum = 0.0
59 val scopeFitnes = scopeObjective.getFitness(context) 60 val scopeFitnes = scopeObjective.getFitness(context)
60 //val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)] 61 val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)]
61 val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context) 62 val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context)
63 var startTime = System.nanoTime();
62 val realistic = smartgridObjective.getFitness(context) 64 val realistic = smartgridObjective.getFitness(context)
63 sum += realistic*4 65 var elapsedTime = System.nanoTime() - startTime;
64 sum+=scopeFitnes 66 (context.model as PartialInterpretation).increaseElapsedTime(elapsedTime);
67 sum += realistic*5 //real2 -> *5, real1 -> *4
68 sum += scopeFitnes
65 var multiplicity = 0.0 69 var multiplicity = 0.0
66 for(multiplicityObjective : unfinishedMultiplicityObjectives) { 70 for(multiplicityObjective : unfinishedMultiplicityObjectives) {
67 multiplicity+=multiplicityObjective.getFitness(context)//*0.5 71 multiplicity+=multiplicityObjective.getFitness(context)//*0.5
@@ -78,7 +82,7 @@ class ModelGenerationCompositeObjective implements IObjective{
78 override getName() { "CompositeUnfinishednessObjective"} 82 override getName() { "CompositeUnfinishednessObjective"}
79 83
80 override isHardObjective() { true } 84 override isHardObjective() { true }
81 override satisifiesHardObjective(Double fitness) { fitness <= 10 } 85 override satisifiesHardObjective(Double fitness) { fitness <= 10 } //TODO tweak
82 86
83 87
84 override setComparator(Comparator<Double> comparator) { 88 override setComparator(Comparator<Double> comparator) {
diff --git a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SmartGridScopeObjective.xtend b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SmartGridScopeObjective.xtend
index 36706033..36099735 100644
--- a/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SmartGridScopeObjective.xtend
+++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/SmartGridScopeObjective.xtend
@@ -7,19 +7,55 @@ import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.ral
7import java.util.Comparator 7import java.util.Comparator
8import org.eclipse.viatra.dse.objectives.Comparators 8import org.eclipse.viatra.dse.objectives.Comparators
9 9
10
10class SmartGridScopeObjective implements IObjective { 11class SmartGridScopeObjective implements IObjective {
12 private enum setting {
13 original, real1, real2, real3
14 }
15 val settings = setting.real2
16 public static final double desiredAvgDegreeOfRepeaters = 3.75
17 public static final double desiredAvgDegreeOfConcentrators = 21.3
18 public static final double desiredAvgNumberOfHops = 2.6
11 public static final double desiredPercentageOfRepeaters = 30.2 19 public static final double desiredPercentageOfRepeaters = 30.2
12 public static final double maxDeviation = 5 20 public static final double maxDeviation = 5
13 //static double percentageOfRepeaters = 30.2 21
14
15 override getFitness(ThreadContext context) { 22 override getFitness(ThreadContext context) {
16 val interpretation = context.model as PartialInterpretation 23 val interpretation = context.model as PartialInterpretation
17 val r = RealismCalculator.calculatePercentageOfRepeatersInSmartGrid(interpretation) 24
18 var deviation = desiredPercentageOfRepeaters - r 25 val repPerc = RealismCalculator.calculatePercentageOfRepeatersInSmartGrid(interpretation)
19 deviation = Math.abs(deviation) 26 var repeaterPercentageDeviation = desiredPercentageOfRepeaters - repPerc
20// System.out.println(deviation) 27 repeaterPercentageDeviation = Math.abs(repeaterPercentageDeviation)
21 return deviation.doubleValue 28
22//return 1.0 29 val repDegree = RealismCalculator.calculateAverageRepeaterDegree(interpretation)
30 var repeaterDegreeDeviation = desiredAvgDegreeOfRepeaters - repDegree
31 repeaterDegreeDeviation = Math.abs(repeaterDegreeDeviation)
32
33 val concDegree = RealismCalculator.calculateAverageConcentratorDegree(interpretation)
34 var concentratorDegreeDeviation = desiredAvgDegreeOfConcentrators - concDegree
35 concentratorDegreeDeviation = Math.abs(concentratorDegreeDeviation)
36
37 val avgHop = RealismCalculator.calculateAverageNumberOfHops(interpretation)
38 var avgHopDeviation = desiredAvgNumberOfHops - avgHop
39 avgHopDeviation = Math.abs(avgHopDeviation)
40 //println("____repDev: " + repeaterDegreeDeviation + " concDev: " + concentratorDegreeDeviation + " repPerc: " + repeaterPercentageDeviation + " avgHops: " + avgHopDeviation)
41
42 switch (settings) {
43 case original: {
44 return 0.0; //No Reality fitness
45 }
46 case real1: { // Only add deviation of the percentage of repeaters to reality fitness
47 return repeaterPercentageDeviation.doubleValue
48 }
49 case real2: { // Add all with same weight
50 return (repeaterPercentageDeviation.doubleValue + repeaterDegreeDeviation + concentratorDegreeDeviation + avgHopDeviation)/4;
51 }
52 case real3: {
53 return 0.0;
54 }
55 default: {
56 return 0.0;
57 }
58 }
23 } 59 }
24 60
25 override isHardObjective() { true } 61 override isHardObjective() { true }