From e3066fbd763b22b4be0c27dec33fb4725d1f6408 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Tue, 12 Aug 2025 21:43:49 +0100 Subject: [PATCH] debugging funding paths --- recommendations/tests/test_optimisers.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/recommendations/tests/test_optimisers.py b/recommendations/tests/test_optimisers.py index 4256bb31..b4c739d5 100644 --- a/recommendations/tests/test_optimisers.py +++ b/recommendations/tests/test_optimisers.py @@ -503,12 +503,14 @@ def _make_generic_eco4_funding_paths(p, input_measures, funding_paths, remaining ) if has_eligible_heating_system: - single_solar_template = [{"AND": ["solar_pv"], "reference": "solar_pv"}] + single_solar_template = [{"AND": ["solar_pv"], "reference": None}] # We now look to pair this with any lingering insulation measures solar_paths = [] for insulation_measure in remaining_insulation_type: new_solar_path = deepcopy(single_solar_template) new_solar_path[0]["AND"].append(insulation_measure) + # Make a specific reference for this path + new_solar_path[0]["reference"] = "solar_pv+" + insulation_measure + ":eco4" solar_paths.append(new_solar_path) if solar_paths: @@ -523,21 +525,21 @@ def _make_generic_eco4_funding_paths(p, input_measures, funding_paths, remaining if (_find_measure(input_measures, "solar_pv") and _find_measure(input_measures, "high_heat_retention_storage_heater")): funding_paths.append( - [{"AND": ["solar_pv", "high_heat_retention_storage_heater"], "reference": "solar_pv+hhrsh"}] + [{"AND": ["solar_pv", "high_heat_retention_storage_heater"], "reference": "solar_pv+hhrsh:eco4"}] ) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Solar PV + ASHP # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (_find_measure(input_measures, "solar_pv") and _find_measure(input_measures, "air_source_heat_pump")): - funding_paths.append([{"AND": ["solar_pv", "air_source_heat_pump"]}]) + funding_paths.append([{"AND": ["solar_pv", "air_source_heat_pump"], "reference": "solar_pv+ashp:eco4"}]) # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Solar PV + Electric Boiler # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ if (_find_measure(input_measures, "solar_pv") and _find_measure(input_measures, "electric_boiler")): - funding_paths.append([{"AND": ["solar_pv", "electric_boiler"]}]) + funding_paths.append([{"AND": ["solar_pv", "electric_boiler"], "reference": "solar_pv+electric_boiler:eco4"}]) # We've actually covered all possible options where solar PV can be included in a funded package, so where # solar PV is not in a reference, we can exclude it @@ -553,22 +555,29 @@ def _make_generic_eco4_funding_paths(p, input_measures, funding_paths, remaining "air_source_heat_pump": "ashp" } for heating_upgrade in ["boiler_upgrade", "high_heat_retention_storage_heater", "air_source_heat_pump"]: - if _find_measure(input_measures, ""): + if _find_measure(input_measures, heating_upgrade): # We check if we have any remaining insulation measures to be applied to the property if remaining_insulation_type: hhrsh_template = [ - {"AND": [heating_upgrade], "reference": measure_references[heating_upgrade]} + {"AND": [heating_upgrade], "reference": None} ] hhrsh_paths = [] for insulation_measure in remaining_insulation_type: new_hhrsh_path = deepcopy(hhrsh_template) new_hhrsh_path[0]["AND"].append(insulation_measure) + # Make a specific reference for this path + new_hhrsh_path[0]["reference"] = ( + measure_references[heating_upgrade] + "+" + insulation_measure + ":eco4" + ) hhrsh_paths.append(new_hhrsh_path) funding_paths.extend(hhrsh_paths) else: # If we have no insulation measures, we just add the HHRSH path - funding_paths.append([{"AND": [measure_references[heating_upgrade]]}]) + funding_paths.append( + [{"AND": [heating_upgrade], + "reference": measure_references[heating_upgrade] + ":eco4"}] + ) return funding_paths