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 --- .../domains/cps/cplex/.CbcCpsMain.xtendbin | Bin 5693 -> 6363 bytes .../domains/cps/cplex/.CpsToLpTranslator.xtendbin | Bin 11104 -> 11104 bytes .../inf/dslreasoner/domains/cps/cplex/.gitignore | 4 ++ .../dslreasoner/domains/cps/cplex/CbcCpsMain.java | 22 ++++++- .../domains/cps/dse/.CpsStateCoder.xtendbin | Bin 7626 -> 7626 bytes .../domains/cps/dse/.RuleBasedCpsMain.xtendbin | Bin 5189 -> 5189 bytes .../domains/cps/dse/.RuleBasedCpsSolver.xtendbin | Bin 7336 -> 7336 bytes .../mit/inf/dslreasoner/domains/cps/dse/.gitignore | 6 ++ .../domains/cps/generator/.CpsGenerator.xtendbin | Bin 8807 -> 8807 bytes .../dslreasoner/domains/cps/generator/.gitignore | 2 + .../domains/cps/mdeo/.CpsMdeOptimiserMain.xtendbin | Bin 0 -> 4969 bytes .../mdeo/.ExcludedOptimisationInterpreter.xtendbin | Bin 0 -> 7559 bytes .../.NonRedundantAllocationsConstraint.xtendbin | Bin 0 -> 3332 bytes .../.NotAllocatedAppInstancesConstraint.xtendbin | Bin 0 -> 3440 bytes .../.NotSatisfiedRequirementsConstraint.xtendbin | Bin 0 -> 3412 bytes .../cps/mdeo/.ResourceUtilizationUtil.xtendbin | Bin 0 -> 3546 bytes .../cps/mdeo/.TooLowAverageHddConstraint.xtendbin | Bin 0 -> 3790 bytes .../mdeo/.TooLowAverageMemoryConstraint.xtendbin | Bin 0 -> 3797 bytes .../cps/mdeo/.TotalCostFitnessFunction.xtendbin | Bin 0 -> 2975 bytes .../cps/mdeo/.UnavailableHddConstraint.xtendbin | Bin 0 -> 3131 bytes .../cps/mdeo/.UnavailableMemoryConstraint.xtendbin | Bin 0 -> 3130 bytes .../inf/dslreasoner/domains/cps/mdeo/.gitignore | 15 +++++ .../domains/cps/mdeo/CpsMdeOptimiserMain.java | 46 ++++++++++++++ .../domains/cps/mdeo/ExcludedMoeaOptimisation.java | 54 +++++++++++++++++ .../cps/mdeo/ExcludedOptimisationInterpreter.java | 31 ++++++++++ .../dslreasoner/domains/cps/mdeo/ExcludedRun.java | 24 ++++++++ .../mdeo/NonRedundantAllocationsConstraint.java | 54 +++++++++++++++++ .../mdeo/NotAllocatedAppInstancesConstraint.java | 47 +++++++++++++++ .../mdeo/NotSatisfiedRequirementsConstraint.java | 55 +++++++++++++++++ .../domains/cps/mdeo/ResourceUtilizationUtil.java | 67 +++++++++++++++++++++ .../cps/mdeo/TooLowAverageHddConstraint.java | 59 ++++++++++++++++++ .../cps/mdeo/TooLowAverageMemoryConstraint.java | 59 ++++++++++++++++++ .../domains/cps/mdeo/TotalCostFitnessFunction.java | 44 ++++++++++++++ .../domains/cps/mdeo/UnavailableHddConstraint.java | 45 ++++++++++++++ .../cps/mdeo/UnavailableMemoryConstraint.java | 45 ++++++++++++++ 35 files changed, 678 insertions(+), 1 deletion(-) create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.CpsMdeOptimiserMain.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ExcludedOptimisationInterpreter.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NonRedundantAllocationsConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotAllocatedAppInstancesConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotSatisfiedRequirementsConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ResourceUtilizationUtil.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageHddConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageMemoryConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TotalCostFitnessFunction.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableHddConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableMemoryConstraint.xtendbin create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.gitignore create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/CpsMdeOptimiserMain.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedMoeaOptimisation.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedOptimisationInterpreter.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedRun.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotAllocatedAppInstancesConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotSatisfiedRequirementsConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ResourceUtilizationUtil.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageHddConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TotalCostFitnessFunction.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableHddConstraint.java create mode 100644 Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableMemoryConstraint.java (limited to 'Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps') diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CbcCpsMain.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CbcCpsMain.xtendbin index 3f9e895d..1ba73ccf 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CbcCpsMain.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CbcCpsMain.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CpsToLpTranslator.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CpsToLpTranslator.xtendbin index d8814a3b..b8ff0f95 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CpsToLpTranslator.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.CpsToLpTranslator.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.gitignore index 9f908c7a..011600b4 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.gitignore +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/.gitignore @@ -1,2 +1,6 @@ /.CpsToLpTranslator.java._trace /.CbcCpsMain.java._trace +/.CbcCpsMain.xtendbin +/.CpsToLpTranslator.xtendbin +/CbcCpsMain.java +/CpsToLpTranslator.java diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.java index d36cdccd..00a4887b 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.java +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/cplex/CbcCpsMain.java @@ -2,12 +2,15 @@ package hu.bme.mit.inf.dslreasoner.domains.cps.cplex; import hu.bme.mit.inf.dslreasoner.domains.cps.CpsPackage; import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.Request; +import hu.bme.mit.inf.dslreasoner.domains.cps.Requirement; import hu.bme.mit.inf.dslreasoner.domains.cps.cplex.CpsToLpTranslator; import hu.bme.mit.inf.dslreasoner.domains.cps.generator.CpsGenerator; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; +import java.util.List; import java.util.Map; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; @@ -15,7 +18,11 @@ import org.eclipse.emf.ecore.EPackage; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; import org.eclipse.xtext.xbase.lib.Exceptions; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.Functions.Function2; import org.eclipse.xtext.xbase.lib.InputOutput; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import org.eclipse.xtext.xbase.lib.ListExtensions; @SuppressWarnings("all") public class CbcCpsMain { @@ -33,7 +40,7 @@ public class CbcCpsMain { XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); _extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, _xMIResourceFactoryImpl); EPackage.Registry.INSTANCE.put(CpsPackage.eNS_URI, CpsPackage.eINSTANCE); - final CpsGenerator generator = new CpsGenerator(1, 4, 1); + final CpsGenerator generator = new CpsGenerator(1, 4, 2); final CyberPhysicalSystem problem = generator.generateCpsProblem(); final CpsToLpTranslator toLp = new CpsToLpTranslator(problem, 10, true); final CharSequence lp = toLp.getLpProblem(); @@ -70,6 +77,19 @@ public class CbcCpsMain { } finally { reader.close(); } + final Function1> _function_1 = (Request it) -> { + final Function1 _function_2 = (Requirement it_1) -> { + return Integer.valueOf(it_1.getCount()); + }; + return ListExtensions.map(it.getRequirements(), _function_2); + }; + final Function2 _function_2 = (Integer p1, Integer p2) -> { + return Integer.valueOf(((p1).intValue() + (p2).intValue())); + }; + Integer _reduce = IterableExtensions.reduce(IterableExtensions.flatMap(problem.getRequests(), _function_1), _function_2); + int _multiply = ((_reduce).intValue() * 5); + String _plus_1 = ("Additional cost: " + Integer.valueOf(_multiply)); + InputOutput.println(_plus_1); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.CpsStateCoder.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.CpsStateCoder.xtendbin index cdfe3921..a727fe17 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.CpsStateCoder.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.CpsStateCoder.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsMain.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsMain.xtendbin index 9be64b30..8217bf52 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsMain.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsMain.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsSolver.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsSolver.xtendbin index 02fb74ef..1462e776 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsSolver.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.RuleBasedCpsSolver.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.gitignore index e24f10f4..2338336b 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.gitignore +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/dse/.gitignore @@ -1,3 +1,9 @@ /.RuleBasedCpsSolver.java._trace /.RuleBasedCpsMain.java._trace /.CpsStateCoder.java._trace +/.CpsStateCoder.xtendbin +/.RuleBasedCpsMain.xtendbin +/.RuleBasedCpsSolver.xtendbin +/CpsStateCoder.java +/RuleBasedCpsMain.java +/RuleBasedCpsSolver.java diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.CpsGenerator.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.CpsGenerator.xtendbin index d975ffab..306f031b 100644 Binary files a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.CpsGenerator.xtendbin and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.CpsGenerator.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.gitignore index d5d16f2e..716ffd30 100644 --- a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.gitignore +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/generator/.gitignore @@ -1 +1,3 @@ /.CpsGenerator.java._trace +/.CpsGenerator.xtendbin +/CpsGenerator.java diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.CpsMdeOptimiserMain.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.CpsMdeOptimiserMain.xtendbin new file mode 100644 index 00000000..9d288343 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.CpsMdeOptimiserMain.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ExcludedOptimisationInterpreter.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ExcludedOptimisationInterpreter.xtendbin new file mode 100644 index 00000000..46cce8d1 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ExcludedOptimisationInterpreter.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NonRedundantAllocationsConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NonRedundantAllocationsConstraint.xtendbin new file mode 100644 index 00000000..667c165b Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NonRedundantAllocationsConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotAllocatedAppInstancesConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotAllocatedAppInstancesConstraint.xtendbin new file mode 100644 index 00000000..b1b1967a Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotAllocatedAppInstancesConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotSatisfiedRequirementsConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotSatisfiedRequirementsConstraint.xtendbin new file mode 100644 index 00000000..b4385fa3 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.NotSatisfiedRequirementsConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ResourceUtilizationUtil.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ResourceUtilizationUtil.xtendbin new file mode 100644 index 00000000..a46e86d4 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.ResourceUtilizationUtil.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageHddConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageHddConstraint.xtendbin new file mode 100644 index 00000000..5a6b7da0 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageHddConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageMemoryConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageMemoryConstraint.xtendbin new file mode 100644 index 00000000..5b1f5002 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TooLowAverageMemoryConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TotalCostFitnessFunction.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TotalCostFitnessFunction.xtendbin new file mode 100644 index 00000000..fdfd8717 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.TotalCostFitnessFunction.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableHddConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableHddConstraint.xtendbin new file mode 100644 index 00000000..43ca6549 Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableHddConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableMemoryConstraint.xtendbin b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableMemoryConstraint.xtendbin new file mode 100644 index 00000000..aff12eca Binary files /dev/null and b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.UnavailableMemoryConstraint.xtendbin differ diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.gitignore b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.gitignore new file mode 100644 index 00000000..51a2537b --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/.gitignore @@ -0,0 +1,15 @@ +/.TotalCostFitnessFunction.java._trace +/.CpsMdeOptimiserMain.java._trace +/.ExcludedOptimisationInterpreter.java._trace +/.ExcludedMoeaOptimisation.java._trace +/.ExcludedRun.java._trace +/.SatisfiedRequirementsConstraint.java._trace +/.NotSatisfiedRequirementsConstraint.java._trace +/.NotAllocatedAppInstancesConstraint.java._trace +/.NonRedundantAllocationsConstraint.java._trace +/.UnavailableMemoryConstraint.java._trace +/.ResourceUtilizationUtil.java._trace +/.UnavailableHddConstraint.java._trace +/.TooLowAverageMemoryConstraint.java._trace +/.TooLowAverageHddUtilization.java._trace +/.TooLowAverageHddConstraint.java._trace diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/CpsMdeOptimiserMain.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/CpsMdeOptimiserMain.java new file mode 100644 index 00000000..288505a1 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/CpsMdeOptimiserMain.java @@ -0,0 +1,46 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import com.google.inject.Injector; +import hu.bme.mit.inf.dslreasoner.domains.cps.CpsPackage; +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.generator.CpsGenerator; +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ExcludedRun; +import java.util.Map; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl; +import org.eclipse.xtext.xbase.lib.CollectionLiterals; +import org.eclipse.xtext.xbase.lib.Exceptions; +import uk.ac.kcl.inf.mdeoptimiser.languages.MoptStandaloneSetup; + +@SuppressWarnings("all") +public class CpsMdeOptimiserMain { + private static final String PROJECT_PATH = "."; + + private static final String PROBLEM_PATH = "model/problem.xmi"; + + private static final String MOPT_PATH = "src/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/cps.mopt"; + + private CpsMdeOptimiserMain() { + new IllegalStateException("This is a static utility class and should not be instantiated directly."); + } + + public static void main(final String[] args) { + try { + Map _extensionToFactoryMap = Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap(); + XMIResourceFactoryImpl _xMIResourceFactoryImpl = new XMIResourceFactoryImpl(); + _extensionToFactoryMap.put(Resource.Factory.Registry.DEFAULT_EXTENSION, _xMIResourceFactoryImpl); + EPackage.Registry.INSTANCE.put(CpsPackage.eNS_URI, CpsPackage.eINSTANCE); + final CpsGenerator generator = new CpsGenerator(1, 4, 2); + final CyberPhysicalSystem problem = generator.generateCpsProblem(); + Resource _eResource = problem.eResource(); + _eResource.setURI(URI.createFileURI(CpsMdeOptimiserMain.PROBLEM_PATH)); + problem.eResource().save(CollectionLiterals.emptyMap()); + final Injector injector = new MoptStandaloneSetup().createInjectorAndDoEMFRegistration(); + injector.getInstance(ExcludedRun.class).run(CpsMdeOptimiserMain.PROJECT_PATH, CpsMdeOptimiserMain.MOPT_PATH); + } catch (Throwable _e) { + throw Exceptions.sneakyThrow(_e); + } + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedMoeaOptimisation.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedMoeaOptimisation.java new file mode 100644 index 00000000..52d3f665 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedMoeaOptimisation.java @@ -0,0 +1,54 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import java.util.Properties; +import org.moeaframework.Executor; +import org.moeaframework.Instrumenter; +import org.moeaframework.algorithm.PeriodicAction; +import org.moeaframework.core.TerminationCondition; +import org.moeaframework.core.spi.AlgorithmFactory; +import uk.ac.kcl.inf.mdeoptimiser.languages.mopt.AlgorithmSpec; +import uk.ac.kcl.inf.mdeoptimiser.languages.mopt.SolverSpec; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.executor.SolutionGenerator; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.moea.MoeaOptimisation; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.moea.algorithms.MoeaOptimisationAlgorithmProvider; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.moea.instrumentation.PopulationCollector; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.moea.problem.MoeaOptimisationProblem; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.operators.adaptation.MutationStepSizeStrategy; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.operators.adaptation.MutationStepSizeStrategyFactory; + +@SuppressWarnings("all") +public class ExcludedMoeaOptimisation extends MoeaOptimisation { + private SolutionGenerator solutionGenerator; + + private Instrumenter algorithmStepSizeInstrumenter; + + @Override + public Instrumenter execute(final SolverSpec solverSpec, final SolutionGenerator solutionGenerator) { + Instrumenter _xblockexpression = null; + { + this.solutionGenerator = solutionGenerator; + _xblockexpression = super.execute(solverSpec, solutionGenerator); + } + return _xblockexpression; + } + + @Override + public Instrumenter runOptimisation(final SolverSpec solverSpec, final Properties optimisationProperties) { + final AlgorithmFactory algorithmFactory = new AlgorithmFactory(); + MoeaOptimisationAlgorithmProvider _moeaOptimisationAlgorithmProvider = new MoeaOptimisationAlgorithmProvider(); + algorithmFactory.addProvider(_moeaOptimisationAlgorithmProvider); + Instrumenter _attachPopulationSizeCollector = new Instrumenter().addExcludedPackage("org.eclipse").withProblemClass( + MoeaOptimisationProblem.class, this.solutionGenerator).attachApproximationSetCollector().attachElapsedTimeCollector().attachPopulationSizeCollector(); + PopulationCollector _populationCollector = new PopulationCollector(); + this.algorithmStepSizeInstrumenter = _attachPopulationSizeCollector.attach(_populationCollector).withFrequency(1).withFrequencyType( + PeriodicAction.FrequencyType.STEPS); + AlgorithmSpec _algorithm = solverSpec.getAlgorithm(); + MutationStepSizeStrategy stepSizeStrategy = new MutationStepSizeStrategyFactory(_algorithm, this.algorithmStepSizeInstrumenter).getStrategy(); + this.solutionGenerator.setMutationStepSizeStrategy(stepSizeStrategy); + this.algorithmStepSizeInstrumenter.addExcludedPackage("jdk"); + Object _get = optimisationProperties.get("terminationCondition"); + new Executor().usingAlgorithmFactory(algorithmFactory).withAlgorithm(solverSpec.getAlgorithm().getName()).withProblemClass(MoeaOptimisationProblem.class, this.solutionGenerator).withProperties(optimisationProperties).withInstrumenter(this.algorithmStepSizeInstrumenter).withTerminationCondition( + ((TerminationCondition) _get)).run(); + return this.algorithmStepSizeInstrumenter; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedOptimisationInterpreter.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedOptimisationInterpreter.java new file mode 100644 index 00000000..90641d73 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedOptimisationInterpreter.java @@ -0,0 +1,31 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ExcludedMoeaOptimisation; +import java.util.List; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.henshin.model.Unit; +import org.moeaframework.Instrumenter; +import uk.ac.kcl.inf.mdeoptimiser.languages.mopt.Optimisation; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IModelProvider; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.OptimisationInterpreter; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.executor.SolutionGenerator; + +@SuppressWarnings("all") +public class ExcludedOptimisationInterpreter extends OptimisationInterpreter { + private final Optimisation model; + + public ExcludedOptimisationInterpreter(final String projectPath, final Optimisation model) { + super(projectPath, model); + this.model = model; + } + + @Override + public Instrumenter start() { + List _breedingOperators = this.getBreedingOperators(); + List _mutationOperators = this.getMutationOperators(); + IModelProvider _modelProvider = this.getModelProvider(); + EPackage _metamodel = this.getMetamodel(); + SolutionGenerator solutionGenerator = new SolutionGenerator(this.model, _breedingOperators, _mutationOperators, _modelProvider, _metamodel); + return new ExcludedMoeaOptimisation().execute(this.model.getSolver(), solutionGenerator); + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedRun.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedRun.java new file mode 100644 index 00000000..76f12e79 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ExcludedRun.java @@ -0,0 +1,24 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ExcludedOptimisationInterpreter; +import java.util.List; +import java.util.Map; +import org.eclipse.emf.ecore.EPackage; +import org.moeaframework.Instrumenter; +import uk.ac.kcl.inf.mdeoptimiser.interfaces.cli.Run; +import uk.ac.kcl.inf.mdeoptimiser.languages.mopt.Optimisation; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.output.MDEOBatch; + +@SuppressWarnings("all") +public class ExcludedRun extends Run { + @Override + public MDEOBatch runBatch(final String moptProjectPath, final Optimisation optimisationModel, final Integer batch, final boolean singleBatch) { + final ExcludedOptimisationInterpreter optimisationInterpreter = new ExcludedOptimisationInterpreter(moptProjectPath, optimisationModel); + final long startTime = System.nanoTime(); + final Instrumenter optimisationOutcome = optimisationInterpreter.start(); + final long endTime = System.nanoTime(); + final long experimentDuration = ((endTime - startTime) / 1000000); + final Map> generatedRules = optimisationInterpreter.getRulegenOperators(); + return new MDEOBatch(batch, experimentDuration, optimisationOutcome, generatedRules, singleBatch); + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.java new file mode 100644 index 00000000..6100d821 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NonRedundantAllocationsConstraint.java @@ -0,0 +1,54 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import com.google.common.collect.HashMultiset; +import com.google.common.collect.Multiset; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.Requirement; +import java.util.Set; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class NonRedundantAllocationsConstraint implements IGuidanceFunction { + @Override + public String getName() { + return "NonRedundantAllocations"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + EList _instances = hostType.getInstances(); + for (final HostInstance host : _instances) { + { + final HashMultiset bins = HashMultiset.create(); + EList _applications = host.getApplications(); + for (final ApplicationInstance app : _applications) { + bins.add(app.getRequirement()); + } + Set> _entrySet = bins.entrySet(); + for (final Multiset.Entry entry : _entrySet) { + int _cost = cost; + int _count = entry.getCount(); + int _minus = (_count - 1); + cost = (_cost + _minus); + } + } + } + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotAllocatedAppInstancesConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotAllocatedAppInstancesConstraint.java new file mode 100644 index 00000000..e9ade5de --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotAllocatedAppInstancesConstraint.java @@ -0,0 +1,47 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import com.google.common.base.Objects; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationType; +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.ResourceRequirement; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class NotAllocatedAppInstancesConstraint implements IGuidanceFunction { + @Override + public String getName() { + return "NotAllocatedAppInstances"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _applicationTypes = cps.getApplicationTypes(); + for (final ApplicationType appType : _applicationTypes) { + EList _instances = appType.getInstances(); + for (final ApplicationInstance app : _instances) { + if (((app.getAllocatedTo() == null) || (!IterableExtensions.exists(appType.getRequirements(), ((Function1) (ResourceRequirement it) -> { + HostType _hostType = it.getHostType(); + HostType _type = app.getAllocatedTo().getType(); + return Boolean.valueOf(Objects.equal(_hostType, _type)); + }))))) { + cost++; + } + } + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotSatisfiedRequirementsConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotSatisfiedRequirementsConstraint.java new file mode 100644 index 00000000..34f73952 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/NotSatisfiedRequirementsConstraint.java @@ -0,0 +1,55 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import com.google.common.base.Objects; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationType; +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.Request; +import hu.bme.mit.inf.dslreasoner.domains.cps.Requirement; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class NotSatisfiedRequirementsConstraint implements IGuidanceFunction { + @Override + public String getName() { + return "NotSatisfiedRequirements"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _requests = cps.getRequests(); + for (final Request request : _requests) { + EList _requirements = request.getRequirements(); + for (final Requirement requirement : _requirements) { + { + int _cost = cost; + int _count = requirement.getCount(); + int _size = requirement.getInstances().size(); + int _minus = (_count - _size); + int _abs = Math.abs(_minus); + cost = (_cost + _abs); + EList _instances = requirement.getInstances(); + for (final ApplicationInstance app : _instances) { + ApplicationType _type = app.getType(); + ApplicationType _type_1 = requirement.getType(); + boolean _notEquals = (!Objects.equal(_type, _type_1)); + if (_notEquals) { + cost++; + } + } + } + } + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ResourceUtilizationUtil.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ResourceUtilizationUtil.java new file mode 100644 index 00000000..a03213e3 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/ResourceUtilizationUtil.java @@ -0,0 +1,67 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import com.google.common.base.Objects; +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.ResourceRequirement; +import org.eclipse.emf.common.util.EList; +import org.eclipse.xtext.xbase.lib.Functions.Function1; +import org.eclipse.xtext.xbase.lib.IterableExtensions; + +@SuppressWarnings("all") +public class ResourceUtilizationUtil { + private ResourceUtilizationUtil() { + new IllegalStateException("This is a static utility class and should not be instantiated directly."); + } + + public static int getMemoryUtilization(final HostInstance host) { + int _xblockexpression = (int) 0; + { + int utilization = 0; + EList _applications = host.getApplications(); + for (final ApplicationInstance app : _applications) { + { + final Function1 _function = (ResourceRequirement it) -> { + HostType _hostType = it.getHostType(); + HostType _type = host.getType(); + return Boolean.valueOf(Objects.equal(_hostType, _type)); + }; + final ResourceRequirement req = IterableExtensions.findFirst(app.getType().getRequirements(), _function); + if ((req != null)) { + int _utilization = utilization; + int _requiredMemory = req.getRequiredMemory(); + utilization = (_utilization + _requiredMemory); + } + } + } + _xblockexpression = utilization; + } + return _xblockexpression; + } + + public static int getHddUtilization(final HostInstance host) { + int _xblockexpression = (int) 0; + { + int utilization = 0; + EList _applications = host.getApplications(); + for (final ApplicationInstance app : _applications) { + { + final Function1 _function = (ResourceRequirement it) -> { + HostType _hostType = it.getHostType(); + HostType _type = host.getType(); + return Boolean.valueOf(Objects.equal(_hostType, _type)); + }; + final ResourceRequirement req = IterableExtensions.findFirst(app.getType().getRequirements(), _function); + if ((req != null)) { + int _utilization = utilization; + int _requiredHdd = req.getRequiredHdd(); + utilization = (_utilization + _requiredHdd); + } + } + } + _xblockexpression = utilization; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageHddConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageHddConstraint.java new file mode 100644 index 00000000..0ff3c795 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageHddConstraint.java @@ -0,0 +1,59 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ResourceUtilizationUtil; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class TooLowAverageHddConstraint implements IGuidanceFunction { + private static final double THRESHOLD = 0.25; + + @Override + public String getName() { + return "TooLowAverageHdd"; + } + + @Override + public double computeFitness(final Solution solution) { + double _xblockexpression = (double) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + double sumUtilization = 0; + int numHosts = 0; + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + { + int _numHosts = numHosts; + int _size = hostType.getInstances().size(); + numHosts = (_numHosts + _size); + EList _instances = hostType.getInstances(); + for (final HostInstance host : _instances) { + { + final int utilization = ResourceUtilizationUtil.getHddUtilization(host); + double _sumUtilization = sumUtilization; + int _defaultHdd = hostType.getDefaultHdd(); + double _divide = (((double) utilization) / _defaultHdd); + sumUtilization = (_sumUtilization + _divide); + } + } + } + } + final double averageUtilization = (sumUtilization / numHosts); + final double difference = (TooLowAverageHddConstraint.THRESHOLD - averageUtilization); + double _xifexpression = (double) 0; + if ((difference > 0)) { + _xifexpression = difference; + } else { + _xifexpression = 0; + } + _xblockexpression = _xifexpression; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.java new file mode 100644 index 00000000..341925bc --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TooLowAverageMemoryConstraint.java @@ -0,0 +1,59 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ResourceUtilizationUtil; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class TooLowAverageMemoryConstraint implements IGuidanceFunction { + private static final double THRESHOLD = 0.25; + + @Override + public String getName() { + return "TooLowAverageMemory"; + } + + @Override + public double computeFitness(final Solution solution) { + double _xblockexpression = (double) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + double sumUtilization = 0; + int numHosts = 0; + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + { + int _numHosts = numHosts; + int _size = hostType.getInstances().size(); + numHosts = (_numHosts + _size); + EList _instances = hostType.getInstances(); + for (final HostInstance host : _instances) { + { + final int utilization = ResourceUtilizationUtil.getMemoryUtilization(host); + double _sumUtilization = sumUtilization; + int _defaultMemory = hostType.getDefaultMemory(); + double _divide = (((double) utilization) / _defaultMemory); + sumUtilization = (_sumUtilization + _divide); + } + } + } + } + final double averageUtilization = (sumUtilization / numHosts); + final double difference = (TooLowAverageMemoryConstraint.THRESHOLD - averageUtilization); + double _xifexpression = (double) 0; + if ((difference > 0)) { + _xifexpression = difference; + } else { + _xifexpression = 0; + } + _xblockexpression = _xifexpression; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TotalCostFitnessFunction.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TotalCostFitnessFunction.java new file mode 100644 index 00000000..7bb80ca8 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/TotalCostFitnessFunction.java @@ -0,0 +1,44 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.ApplicationType; +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class TotalCostFitnessFunction implements IGuidanceFunction { + @Override + public String getName() { + return "TotalCost"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _applicationTypes = cps.getApplicationTypes(); + for (final ApplicationType appType : _applicationTypes) { + int _cost = cost; + int _size = appType.getInstances().size(); + int _multiply = (5 * _size); + cost = (_cost + _multiply); + } + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + int _cost_1 = cost; + int _cost_2 = hostType.getCost(); + int _size_1 = hostType.getInstances().size(); + int _multiply_1 = (_cost_2 * _size_1); + cost = (_cost_1 + _multiply_1); + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableHddConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableHddConstraint.java new file mode 100644 index 00000000..00d1c4e6 --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableHddConstraint.java @@ -0,0 +1,45 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ResourceUtilizationUtil; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class UnavailableHddConstraint implements IGuidanceFunction { + @Override + public String getName() { + return "UnavailableHdd"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + EList _instances = hostType.getInstances(); + for (final HostInstance host : _instances) { + { + final int utilization = ResourceUtilizationUtil.getHddUtilization(host); + int _defaultHdd = hostType.getDefaultHdd(); + final int difference = (utilization - _defaultHdd); + if ((difference > 0)) { + int _cost = cost; + cost = (_cost + difference); + } + } + } + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} diff --git a/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableMemoryConstraint.java b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableMemoryConstraint.java new file mode 100644 index 00000000..a9be9f1f --- /dev/null +++ b/Domains/hu.bme.mit.inf.dslreasoner.domains.cps/xtend-gen/hu/bme/mit/inf/dslreasoner/domains/cps/mdeo/UnavailableMemoryConstraint.java @@ -0,0 +1,45 @@ +package hu.bme.mit.inf.dslreasoner.domains.cps.mdeo; + +import hu.bme.mit.inf.dslreasoner.domains.cps.CyberPhysicalSystem; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostInstance; +import hu.bme.mit.inf.dslreasoner.domains.cps.HostType; +import hu.bme.mit.inf.dslreasoner.domains.cps.mdeo.ResourceUtilizationUtil; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EObject; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.IGuidanceFunction; +import uk.ac.kcl.inf.mdeoptimiser.libraries.core.optimisation.interpreter.guidance.Solution; + +@SuppressWarnings("all") +public class UnavailableMemoryConstraint implements IGuidanceFunction { + @Override + public String getName() { + return "UnavailableMemory"; + } + + @Override + public double computeFitness(final Solution solution) { + int _xblockexpression = (int) 0; + { + EObject _model = solution.getModel(); + final CyberPhysicalSystem cps = ((CyberPhysicalSystem) _model); + int cost = 0; + EList _hostTypes = cps.getHostTypes(); + for (final HostType hostType : _hostTypes) { + EList _instances = hostType.getInstances(); + for (final HostInstance host : _instances) { + { + final int utilization = ResourceUtilizationUtil.getMemoryUtilization(host); + int _defaultMemory = hostType.getDefaultMemory(); + final int difference = (utilization - _defaultMemory); + if ((difference > 0)) { + int _cost = cost; + cost = (_cost + difference); + } + } + } + } + _xblockexpression = cost; + } + return _xblockexpression; + } +} -- cgit v1.2.3-54-g00ecf