mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 08:55:15 +00:00
Awattar Price changed to more precise value; if SoC=0 discharge =1 forced. Exp Avg for siple Price Forecast
This commit is contained in:
parent
cc24904703
commit
56aa0ac2f5
@ -432,9 +432,25 @@ class optimization_problem:
|
|||||||
discharge_hours_bin, eautocharge_hours_index, washingstart_int
|
discharge_hours_bin, eautocharge_hours_index, washingstart_int
|
||||||
)
|
)
|
||||||
|
|
||||||
individual[:] = adjusted_individual # Aktualisiere das ursprüngliche individual
|
individual[:] = adjusted_individual
|
||||||
|
|
||||||
# Berechnung weiterer Metriken
|
# New check: Activate discharge when battery SoC is 0
|
||||||
|
battery_soc_per_hour = np.array(
|
||||||
|
o.get("Battery_SoC_pro_Stunde", [])
|
||||||
|
) # Example key for battery SoC
|
||||||
|
|
||||||
|
if battery_soc_per_hour is not None:
|
||||||
|
# Find hours where battery SoC is 0
|
||||||
|
zero_soc_mask = battery_soc_per_hour == 0
|
||||||
|
discharge_hours_bin[zero_soc_mask] = 1 # Activate discharge for these hours
|
||||||
|
|
||||||
|
# Merge the updated discharge_hours_bin back into the individual
|
||||||
|
adjusted_individual = self.merge_individual(
|
||||||
|
discharge_hours_bin, eautocharge_hours_index, washingstart_int
|
||||||
|
)
|
||||||
|
individual[:] = adjusted_individual
|
||||||
|
|
||||||
|
# More metrics
|
||||||
individual.extra_data = ( # type: ignore[attr-defined]
|
individual.extra_data = ( # type: ignore[attr-defined]
|
||||||
o["Gesamtbilanz_Euro"],
|
o["Gesamtbilanz_Euro"],
|
||||||
o["Gesamt_Verluste"],
|
o["Gesamt_Verluste"],
|
||||||
|
@ -98,7 +98,7 @@ class HourlyElectricityPriceForecast:
|
|||||||
|
|
||||||
# Extract the price from 00:00 of the previous day
|
# Extract the price from 00:00 of the previous day
|
||||||
previous_day_prices = [
|
previous_day_prices = [
|
||||||
entry["marketpriceEurocentPerKWh"] # + self.charges
|
entry["marketprice"] # + self.charges
|
||||||
for entry in self.prices
|
for entry in self.prices
|
||||||
if previous_day_str in entry["end"]
|
if previous_day_str in entry["end"]
|
||||||
]
|
]
|
||||||
@ -106,19 +106,16 @@ class HourlyElectricityPriceForecast:
|
|||||||
|
|
||||||
# Extract all prices for the specified date
|
# Extract all prices for the specified date
|
||||||
date_prices = [
|
date_prices = [
|
||||||
entry["marketpriceEurocentPerKWh"] # + self.charges
|
entry["marketprice"] # + self.charges
|
||||||
for entry in self.prices
|
for entry in self.prices
|
||||||
if date_str in entry["end"]
|
if date_str in entry["end"]
|
||||||
]
|
]
|
||||||
# print(f"getPrice: {len(date_prices)}")
|
|
||||||
|
|
||||||
# Add the last price of the previous day at the start of the list
|
# Add the last price of the previous day at the start of the list
|
||||||
if len(date_prices) == 23:
|
if len(date_prices) == 23:
|
||||||
date_prices.insert(0, last_price_of_previous_day)
|
date_prices.insert(0, last_price_of_previous_day)
|
||||||
# print(np.array(date_prices) / (1000.0 * 100.0))
|
|
||||||
# print("PRICE:")
|
return np.array(date_prices) / (1000.0 * 1000.0) + self.charges
|
||||||
# print(np.array(date_prices) / (1000.0 * 100.0) + self.charges)
|
|
||||||
return np.array(date_prices) / (1000.0 * 100.0) + self.charges
|
|
||||||
|
|
||||||
def get_average_price_last_7_days(self, end_date_str: Optional[str] = None) -> np.ndarray:
|
def get_average_price_last_7_days(self, end_date_str: Optional[str] = None) -> np.ndarray:
|
||||||
"""Calculate the hourly average electricity price for the last 7 days.
|
"""Calculate the hourly average electricity price for the last 7 days.
|
||||||
@ -170,8 +167,11 @@ class HourlyElectricityPriceForecast:
|
|||||||
price_matrix = price_data.reshape(-1, 24)
|
price_matrix = price_data.reshape(-1, 24)
|
||||||
|
|
||||||
# Calculate the average price for each hour across the 7 days
|
# Calculate the average price for each hour across the 7 days
|
||||||
average_prices = np.mean(price_matrix, axis=0)
|
average_prices = np.average(
|
||||||
# print("AVG:", average_prices)
|
price_matrix,
|
||||||
|
axis=0,
|
||||||
|
weights=np.array([1, 2, 4, 8, 16, 32, 64]) / np.sum(np.array([1, 2, 4, 8, 16, 32, 64])),
|
||||||
|
)
|
||||||
return average_prices
|
return average_prices
|
||||||
|
|
||||||
def get_price_for_daterange(
|
def get_price_for_daterange(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user