aboutsummaryrefslogtreecommitdiffstats
path: root/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
diff options
context:
space:
mode:
authorLibravatar Oszkar Semerath <semerath@mit.bme.hu>2020-05-17 20:53:49 +0200
committerLibravatar Oszkar Semerath <semerath@mit.bme.hu>2020-05-17 20:53:49 +0200
commit3c8c3c84b7160b26ceb6e9daf0d6638c5ec3fecb (patch)
tree270c3f29b7d0445f9129539bb7586690767a5f6f /Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend
parentdetailed runtimes + counting defined objects only (diff)
downloadVIATRA-Generator-3c8c3c84b7160b26ceb6e9daf0d6638c5ec3fecb.tar.gz
VIATRA-Generator-3c8c3c84b7160b26ceb6e9daf0d6638c5ec3fecb.tar.zst
VIATRA-Generator-3c8c3c84b7160b26ceb6e9daf0d6638c5ec3fecb.zip
TransformationExecutionTime + weights can be controlled from config
Diffstat (limited to 'Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend')
-rw-r--r--Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend53
1 files changed, 43 insertions, 10 deletions
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 2a4294ad..a10530c7 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
@@ -7,6 +7,7 @@ import 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 9import hu.bme.mit.inf.dslreasoner.viatrasolver.partialinterpretationlanguage.partialinterpretation.PartialInterpretation
10import hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.ViatraReasonerConfiguration
10 11
11//class ViatraReasonerNumbers { 12//class ViatraReasonerNumbers {
12// public static val scopePriority = 2 13// public static val scopePriority = 2
@@ -28,15 +29,43 @@ class ModelGenerationCompositeObjective implements IObjective{
28 val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives 29 val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives
29 val UnfinishedWFObjective unfinishedWFObjective 30 val UnfinishedWFObjective unfinishedWFObjective
30 var PartialInterpretation model=null; 31 var PartialInterpretation model=null;
32 val boolean punishSize
33 val int scopeWeight
34 val int conaintmentWeight
35 val int nonContainmentWeight
36 val int unfinishedWFWeight
31 37
32 public new( 38 new(
33 ScopeObjective scopeObjective, 39 ScopeObjective scopeObjective,
34 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives, 40 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives,
35 UnfinishedWFObjective unfinishedWFObjective) 41 UnfinishedWFObjective unfinishedWFObjective,
42 ViatraReasonerConfiguration configuration)
36 { 43 {
37 this.scopeObjective = scopeObjective 44 this.scopeObjective = scopeObjective
38 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives 45 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives
39 this.unfinishedWFObjective = unfinishedWFObjective 46 this.unfinishedWFObjective = unfinishedWFObjective
47
48 this.punishSize = configuration.punishSize
49 this.scopeWeight = configuration.scopeWeight
50 this.conaintmentWeight = configuration.conaintmentWeight
51 this.nonContainmentWeight = configuration.nonContainmentWeight
52 this.unfinishedWFWeight = configuration.unfinishedWFWeight
53 }
54 new(
55 ScopeObjective scopeObjective,
56 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives,
57 UnfinishedWFObjective unfinishedWFObjective,
58 boolean punishSize, int scopeWeight, int conaintmentWeight, int nonContainmentWeight, int unfinishedWFWeight)
59 {
60 this.scopeObjective = scopeObjective
61 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives
62 this.unfinishedWFObjective = unfinishedWFObjective
63
64 this.punishSize = punishSize
65 this.scopeWeight = scopeWeight
66 this.conaintmentWeight = conaintmentWeight
67 this.nonContainmentWeight = nonContainmentWeight
68 this.unfinishedWFWeight = unfinishedWFWeight
40 } 69 }
41 70
42 override init(ThreadContext context) { 71 override init(ThreadContext context) {
@@ -48,7 +77,8 @@ class ModelGenerationCompositeObjective implements IObjective{
48 77
49 override createNew() { 78 override createNew() {
50 return new ModelGenerationCompositeObjective( 79 return new ModelGenerationCompositeObjective(
51 this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective) 80 this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective,
81 this.punishSize, this.scopeWeight, this.conaintmentWeight, this.nonContainmentWeight, this.unfinishedWFWeight)
52 } 82 }
53 83
54 override getComparator() { Comparators.LOWER_IS_BETTER } 84 override getComparator() { Comparators.LOWER_IS_BETTER }
@@ -67,16 +97,19 @@ class ModelGenerationCompositeObjective implements IObjective{
67 nonContainmentMultiplicity+=multiplicityObjective.getFitness(context) 97 nonContainmentMultiplicity+=multiplicityObjective.getFitness(context)
68 } 98 }
69 } 99 }
70 val size = 0.9/model.newElements.size 100 val size = if(punishSize) {
101 0.9/model.newElements.size
102 } else {
103 0
104 }
105
71 var sum = 0.0 106 var sum = 0.0
72 sum += scopeFitnes 107 sum += scopeFitnes*scopeWeight
73 sum += containmentMultiplicity*2 108 sum += containmentMultiplicity*conaintmentWeight
74 sum += nonContainmentMultiplicity 109 sum += nonContainmentMultiplicity*nonContainmentWeight
75 sum += unfinishedWFsFitness 110 sum += unfinishedWFsFitness*unfinishedWFWeight
76 sum+=size 111 sum+=size
77 112
78
79
80 //println('''Sum=«sum»|Scope=«scopeFitnes»|ContainmentMultiplicity=«containmentMultiplicity»|NonContainmentMultiplicity=«nonContainmentMultiplicity»|WFs=«unfinishedWFsFitness»''') 113 //println('''Sum=«sum»|Scope=«scopeFitnes»|ContainmentMultiplicity=«containmentMultiplicity»|NonContainmentMultiplicity=«nonContainmentMultiplicity»|WFs=«unfinishedWFsFitness»''')
81 114
82 return sum 115 return sum