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 --- .../cps/mdeo/TooLowAverageMemoryConstraint.xtend | 33 ++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.xtend (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.xtend') diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.xtend b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.xtend new file mode 100644 index 00000000..e9b47d4c --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.xtend @@ -0,0 +1,33 @@ +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 + +class TooLowAverageMemoryConstraint implements IGuidanceFunction { + static val THRESHOLD = 0.25 + + override getName() { + "TooLowAverageMemory" + } + + override computeFitness(Solution solution) { + val cps = solution.model as CyberPhysicalSystem + var double sumUtilization + var int numHosts + for (hostType : cps.hostTypes) { + numHosts += hostType.instances.size + for (host : hostType.instances) { + val utilization = ResourceUtilizationUtil.getMemoryUtilization(host) + sumUtilization += (utilization as double) / hostType.defaultMemory + } + } + val averageUtilization = sumUtilization / numHosts + val difference = THRESHOLD - averageUtilization + if (difference > 0) { + difference + } else { + 0 + } + } +} -- cgit v1.2.3-70-g09d2