Browse Source

bugfix in holdpowerfitness

David Heck 4 years ago
parent
commit
27cc5e0c99

+ 1 - 0
src/blackstart/controlAlgorithm.java

@@ -542,6 +542,7 @@ public class controlAlgorithm implements AddOn {
 				getStorageElements()) {
 			println(ele.getEleName() + " " + ele.getId() + ", soc: " + (ele.getStateOfCharge()/60)/1000 + "kWh, "
 					+ "SOC%: " + ele.getStateOfChargeInPercent()
+					/*+ " SOC: " + ele.getStateOfCharge() + " watt/min"*/
 					+ " nominal power: " + ele.getNominalOutRatio()/1000 + " kW, "
 					+ "currentMaxOutPower: "+ ele.getCurrentMaxOutRatio()/1000 + " kW, "
 					+ "distance: " + (ele.getLowDistance()+ele.getHighDistance()));

+ 12 - 4
src/classes/StorageElement.java

@@ -49,8 +49,8 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 
 	public float getPossibleProduction(float energyRequiredForPowerplantBlackstart) {
 		if (stateOfCharge > 0) {
-			if (stateOfCharge >= nominalOutRatio) {
-				return energyAfterResistance(nominalOutRatio, energyRequiredForPowerplantBlackstart);
+			if (stateOfCharge >= currentMaxOutRatio) {
+				return energyAfterResistance(currentMaxOutRatio, energyRequiredForPowerplantBlackstart);
 			} else {
 				return energyAfterResistance(stateOfCharge, energyRequiredForPowerplantBlackstart);
 			}
@@ -202,8 +202,12 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 	}
 
 	public double getUtilization(float energyRequiredForPowerplantBlackstart){
-		return (resistanceCalculator.calcEnergyNeededForCertainEnergyAfterResistance(getEnergyPerElement(), getLowDistance(), getHighDistance(), energyRequiredForPowerplantBlackstart)
-				* 100) / currentMaxOutRatio;
+		if(currentMaxOutRatio == 0){
+			return 0;
+		}else {
+			return (resistanceCalculator.calcEnergyNeededForCertainEnergyAfterResistance(getEnergyPerElement(), getLowDistance(), getHighDistance(), energyRequiredForPowerplantBlackstart)
+					* 100) / currentMaxOutRatio;
+		}
 	}
 
 	public float getStateOfCharge() {
@@ -226,6 +230,10 @@ public class StorageElement extends HolonElement implements Comparable<StorageEl
 		return stateOfCharge >= capacity;
 	}
 
+	public float getChargingRatio() {
+		return chargingRatio;
+	}
+
 	@Override
 	public int compareTo(StorageElement storageElement) {//TODO:!!!
 		if(this.getPossiblePower() < storageElement.getPossiblePower()){

+ 8 - 8
src/ui/controller/StorageProductionController.java

@@ -44,7 +44,7 @@ public class StorageProductionController {
         	for (StorageElement se: storages) {
 				if(!se.chargeDepleted()){
 					energyLeftToEnabled = energyLeftToEnabled - se.setStatusAndSetEnergy(
-											StorageElement.Mode.EMIT, energyLeftToEnabled / storagesLeft, energyRequiredForPowerplantBlackstart);
+											StorageElement.Mode.EMIT, energyLeftToEnabled, energyRequiredForPowerplantBlackstart);
 				}
 				storagesLeft = storagesLeft - 1;
                 if(energyLeftToEnabled <= 0){
@@ -91,7 +91,7 @@ public class StorageProductionController {
 	private double distanceFitness(){//TODO: nicht lieber mit wiederstand?
 		double distancePenalty = 0;
 		for (StorageElement ele : storages) {
-			if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
+			if(!ele.chargeDepleted()){
 				if(ele.getStatus().equals(StorageElement.Mode.EMIT)) {
 					distancePenalty += goodDistance(ele);
 				}
@@ -137,7 +137,7 @@ public class StorageProductionController {
 	private double avgUtilization(){
 		double totalUtilization = 0;
 		for (StorageElement ele : storages) {
-			if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
+			if(!ele.chargeDepleted()){
 				totalUtilization += ele.getUtilization(energyRequiredForPowerplantBlackstart);
 			}
 		}
@@ -169,20 +169,20 @@ public class StorageProductionController {
 	}
 
 	private double holdMaxPowerFitness(){
-		double couldNotHoldPower = 0;
+		double willNotHoldPower = 0;
 		for (StorageElement ele : storages) {
 			if(ele.getStatus().equals(StorageElement.Mode.EMIT)) {
-				couldNotHoldPower += maxPowerNextIteration(ele);
+				willNotHoldPower += maxPowerNextIteration(ele);
 			}
 		}
-		return couldNotHoldPower;
+		return willNotHoldPower;
 	}
 
 	private double maxPowerNextIteration(StorageElement ele){
-		if(ele.getStateOfCharge() - ele.getEnergyPerElement() >= ele.getCurrentMaxOutRatio()){//TODO:
+		if(ele.getStateOfCharge() - ele.getChargingRatio() >= ele.getNominalOutRatio()){//TODO:
 			return 0;
 		}else{
-			return ele.getCurrentMaxOutRatio() - (ele.getStateOfCharge() - ele.getEnergyPerElement());
+			return ele.getNominalOutRatio() - (ele.getStateOfCharge() - ele.getChargingRatio());
 		}
 	}