From c56d29f63df629d3c16062c92e87b265ccbea60f Mon Sep 17 00:00:00 2001 From: Andreas Date: Fri, 20 Dec 2024 12:19:31 +0100 Subject: [PATCH] Interpolator Self Consumption --- .../data/regular_grid_interpolator.pkl | Bin 0 -> 57706 bytes .../self_consumption_probability.py | 50 ++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 src/akkudoktoreos/data/regular_grid_interpolator.pkl create mode 100644 src/akkudoktoreos/prediction/self_consumption_probability.py diff --git a/src/akkudoktoreos/data/regular_grid_interpolator.pkl b/src/akkudoktoreos/data/regular_grid_interpolator.pkl new file mode 100644 index 0000000000000000000000000000000000000000..005b2ddd97291ae11ca15bd797f13c106ba267cf GIT binary patch literal 57706 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 bu&7i6c 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

ppU^yN|P$T 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 float: + """Calculate the PV self-consumption rate using RegularGridInterpolator. + + Args: + - last_1h_power: 1h power levels (W). + - pv_power: Current PV power output (W). + + Returns: + - Self-consumption rate as a float. + """ + # Generate the range of partial loads (0 to last_1h_power) + partial_loads = np.arange(0, 3500, 50) + + # Get probabilities for all partial loads + points = np.array([np.full_like(partial_loads, load_1h_power), partial_loads]).T + probabilities = interpolator(points) + probabilities = probabilities / probabilities.sum() + for i, w in enumerate(partial_loads): + print(w, ": ", probabilities[i]) + print(probabilities.sum()) + # Ensure probabilities are within [0, 1] + probabilities = np.clip(probabilities, 0, 1) + + # Mask: Only include probabilities where the load is <= PV power + mask = partial_loads <= pv_power + + # Calculate the cumulative probability for covered loads + self_consumption_rate = np.sum(probabilities[mask]) / np.sum(probabilities) + + return self_consumption_rate + + +# Test the function +# print(calculate_self_consumption(1000, 1200))