From 05e5b270e51a38db6a6f12229c6c90fb5d88ff87 Mon Sep 17 00:00:00 2001 From: Trefor Southwell <48591903+springfall2008@users.noreply.github.com> Date: Sun, 7 Jan 2024 17:21:13 +0000 Subject: [PATCH 1/2] Set calculate regions to be expert mode switch --- apps/predbat/predbat.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/apps/predbat/predbat.py b/apps/predbat/predbat.py index 7314a731c..175f3d8ae 100644 --- a/apps/predbat/predbat.py +++ b/apps/predbat/predbat.py @@ -393,7 +393,7 @@ {"name": "calculate_fast_plan", "friendly_name": "Calculate plan faster (less accurate)", "type": "switch", "enable": "expert_mode", "default": False}, {"name": "calculate_second_pass", "friendly_name": "Calculate full second pass (slower)", "type": "switch", "enable": "expert_mode", "default": False}, {"name": "calculate_tweak_plan", "friendly_name": "Calculate tweak second pass", "type": "switch", "enable": "expert_mode", "default": False}, - {"name": "calculate_regions", "friendly_name": "Calculate region optimisation", "type": "switch", "default": False}, + {"name": "calculate_regions", "friendly_name": "Calculate region optimisation", "type": "switch", "enable": "expert_mode", "default": True}, {"name": "calculate_inday_adjustment", "friendly_name": "Calculate in-day adjustment", "type": "switch", "enable": "expert_mode", "default": True}, { "name": "calculate_plan_every", @@ -6547,7 +6547,7 @@ def optimise_charge_limit_price( pv_forecast_minute10_step, end_record=None, region_start=None, - region_end=None, + region_end=None ): """ Pick an import price threshold which gives the best results @@ -6626,10 +6626,11 @@ def optimise_charge_limit_price( # This price band setting for charge try_charge_limit = best_limits.copy() for window_n in range(0, record_charge_windows): + if region_start: - if charge_window[window_n]["start"] > region_end or charge_window[window_n]["end"] < region_start: + if charge_window[window_n]['start'] > region_end or charge_window[window_n]['end'] < region_start: continue - + if window_n in all_n: if window_prices[window_n] > highest_price_charge: highest_price_charge = window_prices[window_n] @@ -6645,7 +6646,7 @@ def optimise_charge_limit_price( for window_n in all_d: if region_start: - if discharge_window[window_n]["start"] > region_end or discharge_window[window_n]["end"] < region_start: + if discharge_window[window_n]['start'] > region_end or discharge_window[window_n]['end'] < region_start: continue hit_charge = self.hit_charge_window( self.charge_window_best, self.discharge_window_best[window_n]["start"], self.discharge_window_best[window_n]["end"] @@ -7712,8 +7713,8 @@ def optimise_all_windows(self, load_minutes_step, load_minutes_step10, pv_foreca ) if self.calculate_regions: self.end_record = self.record_length(self.charge_window_best, self.charge_limit_best, best_price) - for region in range(0, self.end_record, 4 * 60): - region_end = min(region + 4 * 60, self.end_record) + for region in range(0, self.end_record, 4*60): + region_end = min(region + 4*60, self.end_record) self.charge_limit_best, ignore_discharge_limits, region_best_price, region_best_price_discharge = self.optimise_charge_limit_price( price_set, price_links, @@ -7729,9 +7730,10 @@ def optimise_all_windows(self, load_minutes_step, load_minutes_step10, pv_foreca pv_forecast_minute10_step, end_record=self.end_record, region_start=region + self.minutes_now, - region_end=region_end + self.minutes_now, + region_end=region_end + self.minutes_now ) + # Set the new end record and blackout period based on the levelling self.end_record = self.record_length(self.charge_window_best, self.charge_limit_best, best_price) self.optimise_charge_windows_reset(reset_all=False) From 7bfb585c3cd456b27c7b552642e056e222c153c1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Sun, 7 Jan 2024 17:22:43 +0000 Subject: [PATCH 2/2] [pre-commit.ci lite] apply automatic fixes --- apps/predbat/predbat.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/apps/predbat/predbat.py b/apps/predbat/predbat.py index 175f3d8ae..c09194842 100644 --- a/apps/predbat/predbat.py +++ b/apps/predbat/predbat.py @@ -6547,7 +6547,7 @@ def optimise_charge_limit_price( pv_forecast_minute10_step, end_record=None, region_start=None, - region_end=None + region_end=None, ): """ Pick an import price threshold which gives the best results @@ -6626,11 +6626,10 @@ def optimise_charge_limit_price( # This price band setting for charge try_charge_limit = best_limits.copy() for window_n in range(0, record_charge_windows): - if region_start: - if charge_window[window_n]['start'] > region_end or charge_window[window_n]['end'] < region_start: + if charge_window[window_n]["start"] > region_end or charge_window[window_n]["end"] < region_start: continue - + if window_n in all_n: if window_prices[window_n] > highest_price_charge: highest_price_charge = window_prices[window_n] @@ -6646,7 +6645,7 @@ def optimise_charge_limit_price( for window_n in all_d: if region_start: - if discharge_window[window_n]['start'] > region_end or discharge_window[window_n]['end'] < region_start: + if discharge_window[window_n]["start"] > region_end or discharge_window[window_n]["end"] < region_start: continue hit_charge = self.hit_charge_window( self.charge_window_best, self.discharge_window_best[window_n]["start"], self.discharge_window_best[window_n]["end"] @@ -7713,8 +7712,8 @@ def optimise_all_windows(self, load_minutes_step, load_minutes_step10, pv_foreca ) if self.calculate_regions: self.end_record = self.record_length(self.charge_window_best, self.charge_limit_best, best_price) - for region in range(0, self.end_record, 4*60): - region_end = min(region + 4*60, self.end_record) + for region in range(0, self.end_record, 4 * 60): + region_end = min(region + 4 * 60, self.end_record) self.charge_limit_best, ignore_discharge_limits, region_best_price, region_best_price_discharge = self.optimise_charge_limit_price( price_set, price_links, @@ -7730,10 +7729,9 @@ def optimise_all_windows(self, load_minutes_step, load_minutes_step10, pv_foreca pv_forecast_minute10_step, end_record=self.end_record, region_start=region + self.minutes_now, - region_end=region_end + self.minutes_now + region_end=region_end + self.minutes_now, ) - # Set the new end record and blackout period based on the levelling self.end_record = self.record_length(self.charge_window_best, self.charge_limit_best, best_price) self.optimise_charge_windows_reset(reset_all=False)