package classes.holonControlUnit; import java.util.ArrayList; public class OptimizationManager { public enum OptimizationScheme { COMFORT, MIN_COST, ENERGY_CONSUMPTION, STABILITY, RECOVERY } public static final float POWER_THRESHOLD_COMFORT = 0.99f; public static final float POWER_THRESHOLD_STABILITY = 0.9f; public static final float POWER_THRESHOLD_RECOVERY = 0f; private HolonControlUnit hcu; private OptimizationScheme optimizationScheme; public OptimizationManager(HolonControlUnit hcu) { this.hcu = hcu; this.optimizationScheme = OptimizationScheme.COMFORT; } public void evaluateOptimizationScheme(int timeStep) { float power = this.hcu.getStateEstimator().getPowerUsage(); float des = this.hcu.getStateAssembler().getDesiredPowerUsage(); ArrayList prePower = this.hcu.getStateEstimator().getPredictedPowerUsage(); if(this.hcu.matchPowerRange(power, des, prePower, POWER_THRESHOLD_COMFORT)) { this.optimizationScheme = OptimizationScheme.COMFORT; } else if(this.hcu.matchPowerRange(power, des, prePower, POWER_THRESHOLD_STABILITY)) { this.optimizationScheme = OptimizationScheme.STABILITY; } else { this.optimizationScheme = OptimizationScheme.RECOVERY; } } public OptimizationScheme getOptimizationScheme() { return optimizationScheme; } public void setOptimizationScheme(OptimizationScheme optimizationScheme) { this.optimizationScheme = optimizationScheme; } public float getCurrentPowerThreshold() { switch(this.optimizationScheme) { case COMFORT: return POWER_THRESHOLD_COMFORT; case MIN_COST: return POWER_THRESHOLD_COMFORT; case ENERGY_CONSUMPTION: return POWER_THRESHOLD_COMFORT; case STABILITY: return POWER_THRESHOLD_STABILITY; case RECOVERY: return POWER_THRESHOLD_RECOVERY; default: System.err.println("Unknown optimizaion scheme "+this.optimizationScheme); } return 0f; } }