mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-08-25 06:52:23 +00:00
EAuto mit unterschiedlicher Ladeleistung (auch Optimierung)
2 stufige Optimierung, erst binär, dann mit float
This commit is contained in:
@@ -30,8 +30,9 @@ class EAuto:
|
||||
return
|
||||
|
||||
for moeglich in self.laden_moeglich:
|
||||
if moeglich == 1 and self.soc < 100:
|
||||
geladene_energie = min(self.ladegeschwindigkeit, (100 - self.soc) / 100 * self.akku_kapazitaet)
|
||||
if moeglich > 0.0 and self.soc < 100:
|
||||
# Berechnung der geladenen Energie basierend auf dem Anteil der Lademöglichkeit
|
||||
geladene_energie = min(self.ladegeschwindigkeit * moeglich, (100 - self.soc) / 100 * self.akku_kapazitaet)
|
||||
self.soc += geladene_energie / self.akku_kapazitaet * 100
|
||||
self.soc = min(100, self.soc)
|
||||
self.stuendliche_last.append(geladene_energie)
|
||||
@@ -42,6 +43,24 @@ class EAuto:
|
||||
# Umwandlung der stündlichen Last in ein NumPy-Array
|
||||
self.stuendliche_last = np.array(self.stuendliche_last)
|
||||
|
||||
# def berechne_ladevorgang(self):
|
||||
# if self.laden_moeglich is None:
|
||||
# print("Lademöglichkeit wurde nicht gesetzt.")
|
||||
# return
|
||||
|
||||
# for moeglich in self.laden_moeglich:
|
||||
# if moeglich > 1 and self.soc < 100:
|
||||
# geladene_energie = min(self.ladegeschwindigkeit, (100 - self.soc) / 100 * self.akku_kapazitaet)
|
||||
# self.soc += geladene_energie / self.akku_kapazitaet * 100
|
||||
# self.soc = min(100, self.soc)
|
||||
# self.stuendliche_last.append(geladene_energie)
|
||||
# else:
|
||||
# self.stuendliche_last.append(0) # Keine Ladung in dieser Stunde
|
||||
# self.stuendlicher_soc.append(self.soc)
|
||||
|
||||
# # Umwandlung der stündlichen Last in ein NumPy-Array
|
||||
# self.stuendliche_last = np.array(self.stuendliche_last)
|
||||
|
||||
def get_stuendliche_last(self):
|
||||
"""Gibt das NumPy-Array mit der stündlichen Last zurück."""
|
||||
return self.stuendliche_last
|
||||
|
@@ -4,9 +4,10 @@ import numpy as np
|
||||
from pprint import pprint
|
||||
|
||||
class Gesamtlast:
|
||||
def __init__(self):
|
||||
def __init__(self, prediction_hours=24):
|
||||
self.lasten = {} # Enthält Namen und Lasten-Arrays für verschiedene Quellen
|
||||
|
||||
self.prediction_hours=prediction_hours
|
||||
|
||||
def hinzufuegen(self, name, last_array):
|
||||
"""
|
||||
Fügt ein Array von Lasten für eine bestimmte Quelle hinzu.
|
||||
@@ -14,8 +15,11 @@ class Gesamtlast:
|
||||
:param name: Name der Lastquelle (z.B. "Haushalt", "Wärmepumpe")
|
||||
:param last_array: Array von Lasten, wobei jeder Eintrag einer Stunde entspricht
|
||||
"""
|
||||
if(len(last_array) != self.prediction_hours):
|
||||
raise ValueError(f"Gesamtlast Inkonsistente Längen bei den Arrays: ", name," ", len(last_array) )
|
||||
self.lasten[name] = last_array
|
||||
|
||||
|
||||
def gesamtlast_berechnen(self):
|
||||
"""
|
||||
Berechnet die gesamte Last für jede Stunde und gibt ein Array der Gesamtlasten zurück.
|
||||
|
@@ -63,11 +63,11 @@ def visualisiere_ergebnisse(gesamtlast,leistung_haushalt,leistung_wp, pv_forecas
|
||||
|
||||
ax1 = plt.subplot(3, 2, 5)
|
||||
for hour, value in enumerate(discharge_hours):
|
||||
if value == 1:
|
||||
ax1.axvspan(hour, hour+1, color='red', alpha=0.3, label='Entlademöglichkeit' if hour == 0 else "")
|
||||
#if value == 1:
|
||||
ax1.axvspan(hour, hour+1, color='red',ymax=value, alpha=0.3, label='Entlademöglichkeit' if hour == 0 else "")
|
||||
for hour, value in enumerate(laden_moeglich):
|
||||
if value == 1:
|
||||
ax1.axvspan(hour, hour+1, color='green', alpha=0.3, label='Lademöglichkeit' if hour == 0 else "")
|
||||
#if value == 1:
|
||||
ax1.axvspan(hour, hour+1, color='green',ymax=value, alpha=0.3, label='Lademöglichkeit' if hour == 0 else "")
|
||||
ax1.legend(loc='upper left')
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user