aboutsummaryrefslogtreecommitdiffstats
path: root/Domains/hu.bme.mit.inf.dslreasoner.domains.satellite/src/hu/bme/mit/inf/dslreasoner/domains/satellite/mdeo/PatternMatchConstraint.xtend
blob: b238e64fa2b44708a16f4ba97af6831af860b277 (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
package hu.bme.mit.inf.dslreasoner.domains.satellite.mdeo

import com.google.common.collect.ImmutableList
import hu.bme.mit.inf.dslreasoner.domains.satellite.queries.SatelliteQueries
import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction
import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution

class PatternMatchConstraint implements IGuidanceFunction {
	static val CONSTRAINT_ANNOTATION_NAME = "Constraint"

	val queries = ImmutableList.copyOf(SatelliteQueries.instance.specifications.filter [
		allAnnotations.exists[name == CONSTRAINT_ANNOTATION_NAME]
	])

	override getName() {
		"PatternMatch"
	}

	override computeFitness(Solution solution) {
		val model = solution.model
		val queryEngine = LocalSearchEngineManager.INSTANCE.getEngine(model)
		var int matchCount = 0
		for (query : queries) {
			val matcher = query.getMatcher(queryEngine)
			matchCount += matcher.countMatches
		}
		matchCount
	}
}