|
@@ -1,6 +1,8 @@
|
|
|
-package ui.controller;
|
|
|
+package classes;
|
|
|
|
|
|
import classes.StorageElement;
|
|
|
+import classes.comparator.StorageElemCompOnCharge;
|
|
|
+import classes.comparator.StorageElemCompOnDistance;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Collections;
|
|
@@ -62,7 +64,7 @@ public class StorageProductionController {
|
|
|
|
|
|
//TODO: selbe probleme wie discharging
|
|
|
void enableStorageCharging(float energyAvailable){
|
|
|
- Collections.sort(storages);
|
|
|
+ Collections.sort(storages, new StorageElemCompOnCharge());
|
|
|
System.out.println("energy available to storage" + energyAvailable);
|
|
|
double availableEnergyLeft = energyAvailable;
|
|
|
for (StorageElement se: storages) {
|
|
@@ -198,14 +200,17 @@ public class StorageProductionController {
|
|
|
|
|
|
public void scheduleDischarging(final double energyNeeded){
|
|
|
ArrayList<StorageElement> lowRisk = new ArrayList<StorageElement>();
|
|
|
+ ArrayList<StorageElement> middleRisk = new ArrayList<StorageElement>();
|
|
|
ArrayList<StorageElement> highRisk = new ArrayList<StorageElement>();
|
|
|
|
|
|
//vorsortieren
|
|
|
for (StorageElement ele : storages) {
|
|
|
- if(ele.getStateOfCharge() - ele.getCurrentMaxOutRatio() < ele.getCurrentMaxOutRatio()
|
|
|
- || ele.getStateOfChargeInPercent() < 0.2){
|
|
|
- if(!ele.chargeDepleted()){
|
|
|
+ if(ele.getStateOfChargeInPercent() < 0.2){
|
|
|
+ if(!ele.chargeDepleted()
|
|
|
+ && ele.getStateOfCharge() - ele.getCurrentMaxOutRatio() < ele.getCurrentMaxOutRatio()){
|
|
|
highRisk.add(ele);
|
|
|
+ }else{
|
|
|
+ middleRisk.add(ele);
|
|
|
}
|
|
|
}else{
|
|
|
lowRisk.add(ele);
|
|
@@ -214,14 +219,32 @@ public class StorageProductionController {
|
|
|
|
|
|
double energyLeftToEnabled = energyNeeded;
|
|
|
//activate with lowRisk
|
|
|
+ lowRisk.sort(new StorageElemCompOnDistance());
|
|
|
for (StorageElement ele : lowRisk) {
|
|
|
- energyLeftToEnabled = energyLeftToEnabled - ele.setStatusAndSetEnergy(
|
|
|
+ energyLeftToEnabled -= ele.setStatusAndSetEnergy(
|
|
|
StorageElement.Mode.EMIT, energyLeftToEnabled, energyRequiredForPowerplantBlackstart);
|
|
|
if(energyLeftToEnabled <=0) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ double middleRiskEnable = 0;
|
|
|
+ middleRisk.sort(new StorageElemCompOnCharge());
|
|
|
+ if(energyLeftToEnabled <=0){
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ for(StorageElement ele : middleRisk){
|
|
|
+ energyLeftToEnabled -= ele.setStatusAndSetEnergy(
|
|
|
+ StorageElement.Mode.EMIT, energyLeftToEnabled, energyRequiredForPowerplantBlackstart);
|
|
|
+ if(energyLeftToEnabled <=0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ energyLeftToEnabled -= middleRiskEnable;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
double highRiskenable = 0;
|
|
|
//activate with highRisk
|
|
|
if(energyLeftToEnabled <=0){
|