OptimizationManager.java 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package classes.holonControlUnit;
  2. import java.util.ArrayList;
  3. public class OptimizationManager {
  4. public enum OptimizationScheme {
  5. COMFORT, STABILITY, RECOVERY
  6. }
  7. public static final float POWER_THRESHOLD_COMFORT = 0.99f;
  8. public static final float POWER_THRESHOLD_STABILITY = 0.9f;
  9. public static final float POWER_THRESHOLD_RECOVERY = 0f;
  10. private HolonControlUnit hcu;
  11. private OptimizationScheme optimizationScheme;
  12. public OptimizationManager(HolonControlUnit hcu) {
  13. this.hcu = hcu;
  14. this.optimizationScheme = OptimizationScheme.COMFORT;
  15. }
  16. public void evaluateOptimizationScheme(int timeStep) {
  17. float power = this.hcu.getStateEstimator().getPowerUsage();
  18. float des = this.hcu.getStateAssembler().getDesiredPowerUsage(timeStep);
  19. ArrayList<Float> prePower = this.hcu.getStateEstimator().getPredictedPowerUsage();
  20. if(this.hcu.matchPowerRange(power, des, prePower, POWER_THRESHOLD_COMFORT)) {
  21. this.optimizationScheme = OptimizationScheme.COMFORT;
  22. } else if(this.hcu.matchPowerRange(power, des, prePower, POWER_THRESHOLD_STABILITY)) {
  23. this.optimizationScheme = OptimizationScheme.STABILITY;
  24. } else {
  25. this.optimizationScheme = OptimizationScheme.RECOVERY;
  26. }
  27. }
  28. public OptimizationScheme getOptimizationScheme() {
  29. return optimizationScheme;
  30. }
  31. public void setOptimizationScheme(OptimizationScheme optimizationScheme) {
  32. this.optimizationScheme = optimizationScheme;
  33. }
  34. public float getCurrentPowerThreshold() {
  35. switch(this.optimizationScheme) {
  36. case COMFORT:
  37. return POWER_THRESHOLD_COMFORT;
  38. case STABILITY:
  39. return POWER_THRESHOLD_STABILITY;
  40. case RECOVERY:
  41. return POWER_THRESHOLD_RECOVERY;
  42. default:
  43. System.err.println("Unknown optimizaion scheme "+this.optimizationScheme);
  44. }
  45. return 0f;
  46. }
  47. }