blob: 0fd20fa365358a9f7a4b26a960312ae2d343b823 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
package hu.bme.mit.inf.dslreasoner.viatrasolver.reasoner.dse
import org.eclipse.viatra.dse.objectives.IObjective
import org.eclipse.viatra.query.runtime.api.IPatternMatch
import org.eclipse.viatra.query.runtime.api.ViatraQueryMatcher
import org.eclipse.viatra.query.runtime.api.IQuerySpecification
import java.util.Collection
import org.eclipse.viatra.query.runtime.api.ViatraQueryEngine
import org.eclipse.viatra.query.runtime.emf.EMFScope
import org.eclipse.viatra.dse.base.ThreadContext
import java.util.List
import org.eclipse.viatra.dse.objectives.Comparators
import java.util.ArrayList
import java.util.Comparator
class UnfinishedWFObjective implements IObjective {
Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWFs
val List<ViatraQueryMatcher<?>> matchers
public new(Collection<? extends IQuerySpecification<? extends ViatraQueryMatcher<? extends IPatternMatch>>> unfinishedWFs) {
this.unfinishedWFs = unfinishedWFs
matchers = new ArrayList(unfinishedWFs.size)
}
override getName() '''unfinishedWFs'''
override createNew() {
return new UnfinishedWFObjective(unfinishedWFs)
}
override init(ThreadContext context) {
val engine = context.queryEngine//ViatraQueryEngine.on(new EMFScope(context.model))
for(unfinishedWF : unfinishedWFs) {
matchers += unfinishedWF.getMatcher(engine)
}
}
override getComparator() { Comparators.LOWER_IS_BETTER }
override getFitness(ThreadContext context) {
var sumOfMatches = 0
for(matcher : matchers) {
val number = matcher.countMatches
// println('''«matcher.patternName» = «number»''')
sumOfMatches+=number
}
return sumOfMatches.doubleValue
}
override getLevel() { 2 }
override isHardObjective() { true }
override satisifiesHardObjective(Double fitness) { return fitness <=0.01 }
override setComparator(Comparator<Double> comparator) {
throw new UnsupportedOperationException("TODO: auto-generated method stub")
}
override setLevel(int level) {
throw new UnsupportedOperationException("TODO: auto-generated method stub")
}
}
|