package io.trygvis.acme.planning.machine; import org.optaplanner.core.api.solver.SolverFactory; import java.util.ArrayList; public class CloudPlaningMain { public static final ScalewayInstance Stardust1_s = new ScalewayInstance("Stardust1-s", 0.0025, 1000, 1000); public static final ScalewayInstance DEV1_S = new ScalewayInstance("DEV1-S", 0.01, 2000, 2000); public static final ScalewayInstance DEV1_M = new ScalewayInstance("DEV1-M", 0.02, 3000, 4000); public static final ScalewayInstance DEV1_L = new ScalewayInstance("DEV1-L", 0.04, 4000, 8000); public static final ScalewayInstance DEV1_XL = new ScalewayInstance("DEV1-XL", 0.06, 4000, 12000); public static void main(String[] args) { var solverFactory = SolverFactory.createFromXmlResource("io/trygvis/acme/planning/machine/solver-config.xml"); var solver = solverFactory.buildSolver(); var computers = new ArrayList(); computers.add(new CloudComputer("acme-1", DEV1_S)); computers.add(new CloudComputer("acme-2", DEV1_M)); computers.add(new CloudComputer("acme-3", DEV1_S)); var processes = new ArrayList(); processes.add(new CloudProcess("statera", 200, 1000)); processes.add(new CloudProcess("statera-console", 100, 50)); processes.add(new CloudProcess("4tune-web", 100, 50)); processes.add(new CloudProcess("4tune-api", 200, 200)); processes.add(new CloudProcess("pdb", 500, 500)); processes.add(new CloudProcess("mdb", 500, 200)); var unsolvedCloudBalance = new CloudBalance(computers, processes); var solvedCloudBalance = solver.solve(unsolvedCloudBalance); System.out.println("solvedCloudBalance.getScore() = " + solvedCloudBalance.getScore()); for (CloudProcess process : solvedCloudBalance.getProcessList()) { System.out.println("process.id = " + process.id); if (process.computer == null) { System.out.println("COMPUTER IS NULL"); } else { System.out.println("process.computer.host = " + process.computer.host); } } System.out.println("------------------------------------------------------------------------"); // System.out.println("\nSolved cloudBalance with 400 computers and 1200 processes:\n" // + toDisplayString(solvedCloudBalance)); } }