|
@@ -36,11 +36,11 @@ public class StorageProductionController {
|
|
|
// return producedEnergy;
|
|
|
// }
|
|
|
|
|
|
- public void enableStorageDischarging(final float energyNeeded) {
|
|
|
+ public void enableStorageDischarging(final double energyNeeded) {
|
|
|
Collections.sort(storages, Collections.reverseOrder());
|
|
|
// System.out.println("energy needed from storage" + energyNeeded);
|
|
|
int storagesLeft = storages.size();
|
|
|
- float energyLeftToEnabled = energyNeeded;
|
|
|
+ double energyLeftToEnabled = energyNeeded;
|
|
|
for (StorageElement se: storages) {
|
|
|
if(!se.chargeDepleted()){
|
|
|
energyLeftToEnabled = energyLeftToEnabled - se.setStatusAndSetEnergy(
|
|
@@ -68,7 +68,7 @@ public class StorageProductionController {
|
|
|
void enableStorageCharging(float energyAvailable){
|
|
|
Collections.sort(storages);
|
|
|
System.out.println("energy available to storage" + energyAvailable);
|
|
|
- float availableEnergyLeft = energyAvailable;
|
|
|
+ double availableEnergyLeft = energyAvailable;
|
|
|
for (StorageElement se: storages) {
|
|
|
if(!se.fullyCharged()){
|
|
|
availableEnergyLeft = availableEnergyLeft - se.setStatusAndSetEnergy(
|
|
@@ -81,15 +81,15 @@ public class StorageProductionController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void assessFitness(float w1, float w2, float w3, float energyNeeded){
|
|
|
- float fitness = 0f;
|
|
|
+ private void assessFitness(float w1, float w2, float w3, double energyNeeded){
|
|
|
+ double fitness = 0f;
|
|
|
|
|
|
fitness = w1 * distanceFitness() + w2 * supplyFitness(energyNeeded) + w3 * holdMaxPowerFitness();
|
|
|
System.out.println("Fitness score: " + fitness);
|
|
|
}
|
|
|
|
|
|
- private float distanceFitness(){//TODO: nicht lieber mit wiederstand?
|
|
|
- float distancePenalty = 0;
|
|
|
+ private double distanceFitness(){//TODO: nicht lieber mit wiederstand?
|
|
|
+ double distancePenalty = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
|
|
|
distancePenalty = goodDistance(ele);
|
|
@@ -98,7 +98,7 @@ public class StorageProductionController {
|
|
|
return distancePenalty;
|
|
|
}
|
|
|
|
|
|
- private float goodDistance(StorageElement ele){
|
|
|
+ private double goodDistance(StorageElement ele){
|
|
|
if(avgDistance() < ele.getHighDistance() + ele.getLowDistance()){
|
|
|
return produceTooMuch(ele);
|
|
|
}else{
|
|
@@ -106,7 +106,7 @@ public class StorageProductionController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private float produceTooMuch(StorageElement ele){
|
|
|
+ private double produceTooMuch(StorageElement ele){
|
|
|
if(avgUtilization() <= ele.getUtilization()){
|
|
|
return 0;
|
|
|
}else{
|
|
@@ -114,7 +114,7 @@ public class StorageProductionController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private float produceTooLittle(StorageElement ele){
|
|
|
+ private double produceTooLittle(StorageElement ele){
|
|
|
if(avgUtilization() >= ele.getUtilization()){
|
|
|
return 0;
|
|
|
}else{
|
|
@@ -122,8 +122,8 @@ public class StorageProductionController {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private float avgDistance(){
|
|
|
- float totalDistance = 0;
|
|
|
+ private double avgDistance(){
|
|
|
+ double totalDistance = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
|
|
|
totalDistance += ele.getHighDistance() + ele.getLowDistance();
|
|
@@ -132,8 +132,8 @@ public class StorageProductionController {
|
|
|
return totalDistance/activeStorages();
|
|
|
}
|
|
|
|
|
|
- private float avgUtilization(){
|
|
|
- float totalUtilization = 0;
|
|
|
+ private double avgUtilization(){
|
|
|
+ double totalUtilization = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
|
|
|
totalUtilization += ele.getUtilization();
|
|
@@ -142,8 +142,8 @@ public class StorageProductionController {
|
|
|
return totalUtilization/activeStorages();
|
|
|
}
|
|
|
|
|
|
- private float activeStorages(){
|
|
|
- float activeStorages = 0;
|
|
|
+ private double activeStorages(){
|
|
|
+ double activeStorages = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)){
|
|
|
activeStorages++;
|
|
@@ -152,22 +152,22 @@ public class StorageProductionController {
|
|
|
return activeStorages;
|
|
|
}
|
|
|
|
|
|
- private float supplyFitness(float energyNeeded){
|
|
|
- int activeStoragePower = 0;
|
|
|
+ private double supplyFitness(double energyNeeded){
|
|
|
+ double activeStoragePower = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)) {
|
|
|
activeStoragePower += ele.getEnergyPerElement();
|
|
|
}
|
|
|
}
|
|
|
if(activeStoragePower < energyNeeded){
|
|
|
- return (float) Math.pow(9000, 9000);//TODO:
|
|
|
+ return Math.pow(9000, 9000);//TODO:
|
|
|
}else{
|
|
|
return activeStoragePower - energyNeeded;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private float holdMaxPowerFitness(){
|
|
|
- float couldNotHoldPower = 0;
|
|
|
+ private double holdMaxPowerFitness(){
|
|
|
+ double couldNotHoldPower = 0;
|
|
|
for (StorageElement ele : storages) {
|
|
|
if(ele.getStatus().equals(StorageElement.Mode.EMIT)) {
|
|
|
couldNotHoldPower += maxPowerNextIteration(ele);
|
|
@@ -176,11 +176,11 @@ public class StorageProductionController {
|
|
|
return couldNotHoldPower;
|
|
|
}
|
|
|
|
|
|
- private float maxPowerNextIteration(StorageElement ele){
|
|
|
+ private double maxPowerNextIteration(StorageElement ele){
|
|
|
if(ele.getStateOfCharge() - ele.getEnergyPerElement() >= ele.getCurrentMaxOutRatio()){//TODO:
|
|
|
return 0;
|
|
|
}else{
|
|
|
- return (float) Math.pow(2, ele.getStateOfCharge() - ele.getEnergyPerElement());
|
|
|
+ return Math.pow(2, ele.getStateOfCharge() - ele.getEnergyPerElement());
|
|
|
}
|
|
|
}
|
|
|
|