diff options
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.xtend | 85 |
1 files changed, 85 insertions, 0 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 new file mode 100644 index 00000000..1ca2343f --- /dev/null +++ b/Solvers/VIATRA-Solver/hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner/src/hu/bme/mit/inf/dslreasoner/viatrasolver/reasoner/dse/ModelGenerationCompositeObjective.xtend | |||
@@ -0,0 +1,85 @@ | |||
1 | package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse | ||
2 | |||
3 | import java.util.Comparator | ||
4 | import java.util.List | ||
5 | import org.eclipse.viatra.dse.base.ThreadContext | ||
6 | import org.eclipse.viatra.dse.objectives.Comparators | ||
7 | import org.eclipse.viatra.dse.objectives.IObjective | ||
8 | import org.eclipse.viatra.dse.objectives.impl.BaseObjective | ||
9 | |||
10 | //class ViatraReasonerNumbers { | ||
11 | // public static val scopePriority = 2 | ||
12 | // public static val unfinishedMultiplicityPriority = 2 | ||
13 | // public static val unifinshedWFPriority = 2 | ||
14 | // //public static val complexityPriority = 4 | ||
15 | // | ||
16 | // public static val scopeWeigth = 1.0 | ||
17 | // public static val unfinishedMultiplicityWeigth = 1.5 | ||
18 | // public static val unfinishedWFWeigth = 1.5 | ||
19 | // //public static val complexityWeigth = 0.1 | ||
20 | // | ||
21 | // public static val useCompositeObjective = true | ||
22 | // public static val compositePriority = 2 | ||
23 | //} | ||
24 | |||
25 | class ModelGenerationCompositeObjective implements IObjective{ | ||
26 | val ScopeObjective scopeObjective | ||
27 | val List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives | ||
28 | val UnfinishedWFObjective unfinishedWFObjective | ||
29 | |||
30 | public new( | ||
31 | ScopeObjective scopeObjective, | ||
32 | List<UnfinishedMultiplicityObjective> unfinishedMultiplicityObjectives, | ||
33 | UnfinishedWFObjective unfinishedWFObjective) | ||
34 | { | ||
35 | this.scopeObjective = scopeObjective | ||
36 | this.unfinishedMultiplicityObjectives = unfinishedMultiplicityObjectives | ||
37 | this.unfinishedWFObjective = unfinishedWFObjective | ||
38 | } | ||
39 | |||
40 | override init(ThreadContext context) { | ||
41 | this.scopeObjective.init(context) | ||
42 | this.unfinishedMultiplicityObjectives.forEach[it.init(context)] | ||
43 | this.unfinishedWFObjective.init(context) | ||
44 | } | ||
45 | |||
46 | override createNew() { | ||
47 | return new ModelGenerationCompositeObjective( | ||
48 | this.scopeObjective, this.unfinishedMultiplicityObjectives, this.unfinishedWFObjective) | ||
49 | } | ||
50 | |||
51 | override getComparator() { Comparators.LOWER_IS_BETTER } | ||
52 | override getFitness(ThreadContext context) { | ||
53 | var sum = 0.0 | ||
54 | val scopeFitnes = scopeObjective.getFitness(context) | ||
55 | //val unfinishedMultiplicitiesFitneses = unfinishedMultiplicityObjectives.map[x|x.getFitness(context)] | ||
56 | val unfinishedWFsFitness = unfinishedWFObjective.getFitness(context) | ||
57 | |||
58 | sum+=scopeFitnes | ||
59 | var multiplicity = 0.0 | ||
60 | for(multiplicityObjective : unfinishedMultiplicityObjectives) { | ||
61 | multiplicity+=multiplicityObjective.getFitness(context)//*0.5 | ||
62 | } | ||
63 | sum+=multiplicity | ||
64 | sum += unfinishedWFsFitness//*0.5 | ||
65 | |||
66 | // println('''Sum=«sum»|Scope=«scopeFitnes»|Multiplicity=«multiplicity»|WFs=«unfinishedWFsFitness»''') | ||
67 | |||
68 | return sum | ||
69 | } | ||
70 | |||
71 | override getLevel() { 2 } | ||
72 | override getName() { "CompositeUnfinishednessObjective"} | ||
73 | |||
74 | override isHardObjective() { true } | ||
75 | override satisifiesHardObjective(Double fitness) { fitness <= 0.001 } | ||
76 | |||
77 | |||
78 | override setComparator(Comparator<Double> comparator) { | ||
79 | throw new UnsupportedOperationException("TODO: auto-generated method stub") | ||
80 | } | ||
81 | override setLevel(int level) { | ||
82 | throw new UnsupportedOperationException("TODO: auto-generated method stub") | ||
83 | } | ||
84 | |||
85 | } \ No newline at end of file | ||