summaryrefslogtreecommitdiff
path: root/module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2021-01-25 21:29:12 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2021-01-25 21:29:12 +0100
commit912bc8b903dfa6d438c2469ecdad35c181c71830 (patch)
tree1e6ee9fdcb2b9d488914b80623d68189867533bb /module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java
parent92b957036218c03a20ba35c19a70bdf5e2333fd3 (diff)
downloadrules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.gz
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.bz2
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.tar.xz
rules-sandbox-912bc8b903dfa6d438c2469ecdad35c181c71830.zip
Improving usability, massive refactoring.
* Moving all Drools code into their own modules. This fixes ri-engine to acme dependency. * Now they all inherit from their own parent, should be used by third party code too. * Separating acme planning code into its own module. * Splitting rules code from ri-engine into ri-base. ri-engine is now a pure launcher for modules. * Dumping kogito for the most part, but it seems like the planner still requires that.
Diffstat (limited to 'module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java')
-rw-r--r--module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java45
1 files changed, 0 insertions, 45 deletions
diff --git a/module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java b/module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java
deleted file mode 100644
index 6a14372..0000000
--- a/module/acme/src/main/java/io/trygvis/acme/planning/machine/CloudBalancingEasyScoreCalculator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package io.trygvis.acme.planning.machine;
-
-import org.optaplanner.core.api.score.buildin.hardsoft.HardSoftScore;
-import org.optaplanner.core.api.score.calculator.EasyScoreCalculator;
-
-public class CloudBalancingEasyScoreCalculator implements EasyScoreCalculator<CloudBalance, HardSoftScore> {
-
- @Override
- public HardSoftScore calculateScore(CloudBalance cloudBalance) {
- int hardScore = 0;
- int softScore = 0;
- for (CloudComputer computer : cloudBalance.getComputerList()) {
- int cpu = 0;
- int memory = 0;
- boolean used = false;
-
- // Calculate usage
- for (CloudProcess process : cloudBalance.getProcessList()) {
- if (computer.equals(process.computer)) {
- cpu += process.requiredCpu;
- memory += process.requiredMemory;
- used = true;
- }
- }
-
- var instance = computer.instance;
-
- // Hard constraints
- int cpuPowerAvailable = instance.cpu - cpu;
- if (cpuPowerAvailable < 0) {
- hardScore += cpuPowerAvailable;
- }
- int memoryAvailable = instance.memory - memory;
- if (memoryAvailable < 0) {
- hardScore += memoryAvailable;
- }
-
- // Soft constraints
- if (used) {
- softScore -= instance.cost;
- }
- }
- return HardSoftScore.of(hardScore, softScore);
- }
-}