From b7ed3353ba34dd837bfc15f7e48c30a2cdc7ce75 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Wed, 22 May 2019 20:38:53 -0400 Subject: MDEOptimiser implementation of CPS benchmark --- .../mdeo/NonRedundantAllocationsConstraint.xtend | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.xtend (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.xtend') diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.xtend b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.xtend new file mode 100644 index 00000000..1a9286b3 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.xtend @@ -0,0 +1,29 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo + +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution +import com.google.common.collect.HashMultiset + +class NonRedundantAllocationsConstraint implements IGuidanceFunction { + override getName() { + "NonRedundantAllocations" + } + + override computeFitness(Solution solution) { + val cps = solution.model as CyberPhysicalSystem + var int cost = 0 + for (hostType : cps.hostTypes) { + for (host : hostType.instances) { + val bins = HashMultiset.create + for (app : host.applications) { + bins.add(app.requirement) + } + for (entry : bins.entrySet) { + cost += entry.count - 1 + } + } + } + cost + } +} -- cgit v1.2.3-70-g09d2