mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
37 lines
1.4 KiB
Python
37 lines
1.4 KiB
Python
import numpy as np
|
|
from pprint import pprint
|
|
|
|
class Gesamtlast:
|
|
def __init__(self, prediction_hours=24):
|
|
self.lasten = {} # Contains names and load arrays for different sources
|
|
self.prediction_hours = prediction_hours
|
|
|
|
def hinzufuegen(self, name, last_array):
|
|
"""
|
|
Adds an array of loads for a specific source.
|
|
|
|
:param name: Name of the load source (e.g., "Household", "Heat Pump")
|
|
:param last_array: Array of loads, where each entry corresponds to an hour
|
|
"""
|
|
if len(last_array) != self.prediction_hours:
|
|
raise ValueError(f"Total load inconsistent lengths in arrays: {name} {len(last_array)}")
|
|
self.lasten[name] = last_array
|
|
|
|
def gesamtlast_berechnen(self):
|
|
"""
|
|
Calculates the total load for each hour and returns an array of total loads.
|
|
|
|
:return: Array of total loads, where each entry corresponds to an hour
|
|
"""
|
|
if not self.lasten:
|
|
return []
|
|
|
|
# Assumption: All load arrays have the same length
|
|
stunden = len(next(iter(self.lasten.values())))
|
|
gesamtlast_array = [0] * stunden
|
|
|
|
for last_array in self.lasten.values():
|
|
gesamtlast_array = [gesamtlast + stundenlast for gesamtlast, stundenlast in zip(gesamtlast_array, last_array)]
|
|
|
|
return np.array(gesamtlast_array)
|