diff options
author | Mayer KrisztiƔn <mayer.krisztian.gabor@gmail.com> | 2017-12-02 22:52:58 +0100 |
---|---|---|
committer | Mayer KrisztiƔn <mayer.krisztian.gabor@gmail.com> | 2017-12-02 22:52:58 +0100 |
commit | 870f0a59283186350ee050f08e5082d0bb02885a (patch) | |
tree | f2c5b106b25d4bb5c2cefbe2c726662ac2a4c22b | |
parent | Objectives added (diff) | |
download | VIATRA-Generator-smartgridgenerator.tar.gz VIATRA-Generator-smartgridgenerator.tar.zst VIATRA-Generator-smartgridgenerator.zip |
Finished Realistic Generator smartgridgenerator
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 | |||
9 | Bundle-Localization: plugin | 9 | Bundle-Localization: plugin |
10 | Export-Package: hu.bme.mit.inf.dlsreasoner.alloy.reasoner, | 10 | Export-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 | ||
13 | Require-Bundle: com.google.guava, | 14 | Require-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" |
23 | Bundle-RequiredExecutionEnvironment: JavaSE-1.8 | 24 | Bundle-RequiredExecutionEnvironment: JavaSE-1.8 |
24 | Bundle-ActivationPolicy: lazy | 25 | Bundle-ActivationPolicy: lazy |
25 | Import-Package: org.apache.log4j;version="1.2.15" | 26 | Import-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 | */ |
49 | public interface PartialInterpretation extends EObject { | 49 | public 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 | */ |
69 | public class PartialInterpretationImpl extends MinimalEObjectImpl.Container implements PartialInterpretation { | 69 | public 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 | |||
12 | import java.util.HashMap | 12 | import java.util.HashMap |
13 | import org.eclipse.emf.common.util.BasicEList | 13 | import org.eclipse.emf.common.util.BasicEList |
14 | import java.util.Map | 14 | import java.util.Map |
15 | import java.util.ArrayList | ||
15 | 16 | ||
16 | public class RealismCalculator { | 17 | public 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 | |||
11 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation | 11 | import hu.bme.mit.inf.dslreasoner.logic.model.logiclanguage.Relation |
12 | import java.util.Set | 12 | import java.util.Set |
13 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.ralismcalculator.RealismCalculator | 13 | import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.ralismcalculator.RealismCalculator |
14 | import java.io.PrintStream | ||
15 | import java.io.FileOutputStream | ||
16 | import java.io.FileDescriptor | ||
14 | 17 | ||
15 | class PartialInterpretation2Gml { | 18 | class 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 | |||
6 | import org.eclipse.viatra.dse.objectives.Comparators | 6 | import org.eclipse.viatra.dse.objectives.Comparators |
7 | import org.eclipse.viatra.dse.objectives.IObjective | 7 | import org.eclipse.viatra.dse.objectives.IObjective |
8 | import org.eclipse.viatra.dse.objectives.impl.BaseObjective | 8 | import org.eclipse.viatra.dse.objectives.impl.BaseObjective |
9 | import 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 | |||
7 | import java.util.Comparator | 7 | import java.util.Comparator |
8 | import org.eclipse.viatra.dse.objectives.Comparators | 8 | import org.eclipse.viatra.dse.objectives.Comparators |
9 | 9 | ||
10 | |||
10 | class SmartGridScopeObjective implements IObjective { | 11 | class 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 } |