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:
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.xtend22
1 files changed, 18 insertions, 4 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 2489c751..9fc6853c 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
@@ -26,15 +26,22 @@ class ModelGenerationCompositeObjective implements IObjective{
26 val ScopeObjective scopeObjective 26 val ScopeObjective scopeObjective
27 val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives 27 val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives
28 val UnfinishedWFObjective unfinishedWFObjective 28 val UnfinishedWFObjective unfinishedWFObjective
29 var boolean isWFOptional = false;
29 30
30 public new( 31 public new(
31 ScopeObjective scopeObjective, 32 ScopeObjective scopeObjective,
32 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives, 33 List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives,
33 UnfinishedWFObjective unfinishedWFObjective) 34 UnfinishedWFObjective unfinishedWFObjective,
35 boolean isWFOptional)
34 { 36 {
35 this.scopeObjective = scopeObjective 37 this.scopeObjective = scopeObjective
36 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives 38 this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives
37 this.unfinishedWFObjective = unfinishedWFObjective 39 this.unfinishedWFObjective = unfinishedWFObjective
40 this.isWFOptional = isWFOptional;
41 }
42
43 def getIsWFOptional(){
44 return this.isWFOptional;
38 } 45 }
39 46
40 override init(ThreadContext context) { 47 override init(ThreadContext context) {
@@ -45,7 +52,7 @@ class ModelGenerationCompositeObjective implements IObjective{
45 52
46 override createNew() { 53 override createNew() {
47 return new ModelGenerationCompositeObjective( 54 return new ModelGenerationCompositeObjective(
48 this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective) 55 this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective, this.isWFOptional)
49 } 56 }
50 57
51 override getComparator() { Comparators.LOWER_IS_BETTER } 58 override getComparator() { Comparators.LOWER_IS_BETTER }
@@ -53,7 +60,6 @@ class ModelGenerationCompositeObjective implements IObjective{
53 var sum = 0.0 60 var sum = 0.0
54 val scopeFitnes = scopeObjective.getFitness(context) 61 val scopeFitnes = scopeObjective.getFitness(context)
55 //val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)] 62 //val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)]
56 val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context)
57 63
58 sum+=scopeFitnes 64 sum+=scopeFitnes
59 var multiplicity = 0.0 65 var multiplicity = 0.0
@@ -61,7 +67,12 @@ class ModelGenerationCompositeObjective implements IObjective{
61 multiplicity+=multiplicityObjective.getFitness(context)//*0.5 67 multiplicity+=multiplicityObjective.getFitness(context)//*0.5
62 } 68 }
63 sum+=multiplicity 69 sum+=multiplicity
64 sum += unfinishedWFsFitness//*0.5 70
71 // the WF can be optional when generating realistic models
72 if(!isWFOptional){
73 val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context)
74 sum += unfinishedWFsFitness//*0.5
75 }
65 76
66 //println('''Sum=«sum»|Scope=«scopeFitnes»|Multiplicity=«multiplicity»|WFs=«unfinishedWFsFitness»''') 77 //println('''Sum=«sum»|Scope=«scopeFitnes»|Multiplicity=«multiplicity»|WFs=«unfinishedWFsFitness»''')
67 78
@@ -70,6 +81,9 @@ class ModelGenerationCompositeObjective implements IObjective{
70 81
71 override getLevel() { 2 } 82 override getLevel() { 2 }
72 override getName() { "CompositeUnfinishednessObjective"} 83 override getName() { "CompositeUnfinishednessObjective"}
84 def getObjective(){
85 return this.unfinishedMultiplicityObjectives;
86 }
73 87
74 override isHardObjective() { true } 88 override isHardObjective() { true }
75 override satisifiesHardObjective(Double fitness) { fitness <= 0.001 } 89 override satisifiesHardObjective(Double fitness) { fitness <= 0.001 }