123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package algo;
- import classes.AbstractCpsObject;
- import java.util.ArrayList;
- public class StorageProductionController {
- private ArrayList<StorageElement> storages;
- public StorageProductionController(ArrayList<StorageElement> storages) {
- this.storages = storages;
- }
- public float currentPossibleStorageProduction() {
- float possibleEnergy = 0;
- for (StorageElement so : storages) {
- possibleEnergy += so.getPossibleProduction();
- }
- return possibleEnergy;
- }
- public float currentStorageProduction() {
- float producedEnergy = 0;
- for (StorageElement so : storages) {
- if (so.getStatus().equals(StorageElement.Mode.EMIT)) {
- producedEnergy += so.getEnergyPerElement();
- }
- }
- return producedEnergy;
- }
- public void enableStorageProduction(final float energyNeeded) {
- System.out.println("energy needed from storage" + energyNeeded);
- float energyLeftToEnabled = energyNeeded;
- if(currentStorageProduction() < energyNeeded){//TODO: das if muss ich nochmal ueberdenken
- for (StorageElement se: storages) {
- if (se.getStatus().equals(StorageElement.Mode.STANDBY)
- || se.getStatus().equals(StorageElement.Mode.COLLECT)) {
- // TODO: den groesten zuerst aktivieren? > unterversorgung
- // TODO: den kleinsten zuerst aktivieren > ueberversorgung
- energyLeftToEnabled = energyLeftToEnabled - se.setStatusAndSetEnergy(StorageElement.Mode.EMIT, energyLeftToEnabled);
- }
- if(energyLeftToEnabled <= 0){
- System.out.println("enabled energy from storage" + energyLeftToEnabled);
- return;
- }
- }
- }else{
- disableStorageProduction(energyNeeded - currentStorageProduction());
- }
- }
- public void disableStorageProduction(float energyNotNeeded) {
- if(energyNotNeeded == -1) {
- for (StorageElement se : storages) {
- se.setStatusAndSetEnergy(StorageElement.Mode.STANDBY, 0);
- }
- }
- // float disabledEnergy = 0;
- // StorageElement.Mode lastMode = null;
- // float lastEnergy = 0;
- //
- // for (StorageElement so : storages) {
- // if (so.getStatus().equals(StorageElement.Mode.EMIT)) {
- // // TODO: den groesten zuerst deaktivieren? > ein bissen verschwendung
- // lastEnergy = so.getEnergyAtTimeStep(0);
- // disabledEnergy += so.getEnergyAtTimeStep(0); // TODO:timestep
- // lastMode = so.getStatus();
- // so.setStatus(StorageElement.Mode.STANDBY, 0);
- // }
- // // das vermutet der groeste wurde zuerste deaktiviert damit moeglichst
- // // wenig engery verschwendet wird
- // if (disabledEnergy > energyNotNeeded) {
- // so.setStatus(lastMode, 0);
- // disabledEnergy -= lastEnergy;
- // }
- // }
- }
- public boolean batteriesFull() {
- return false;
- }
- }
|