mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-30 13:10:47 +00:00
debugging after changing recommendation types to more details versions
This commit is contained in:
parent
4aea5f6002
commit
1f53cb3d44
3 changed files with 40 additions and 13 deletions
|
|
@ -261,7 +261,10 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
solution = optimiser.solution
|
solution = optimiser.solution
|
||||||
|
|
||||||
selected_recommendations = {r["id"] for r in solution}
|
selected_recommendations = {r["id"] for r in solution}
|
||||||
if "wall_insulation" in [r["type"] for r in solution]:
|
|
||||||
|
if any(x in [r["type"] for r in solution] for x in [
|
||||||
|
"internal_wall_insulation", "external_wall_insulation", "cavity_wall_insulation"
|
||||||
|
]):
|
||||||
ventilation_rec = [
|
ventilation_rec = [
|
||||||
r for r in recommendations_with_impact if r[0]["type"] == "mechanical_ventilation"
|
r for r in recommendations_with_impact if r[0]["type"] == "mechanical_ventilation"
|
||||||
][0]
|
][0]
|
||||||
|
|
@ -289,6 +292,7 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
recommendations[property_id] = final_recommendations
|
recommendations[property_id] = final_recommendations
|
||||||
|
|
||||||
# This is a temporary step, to estimate the impact of the measured on heat demand and carbon
|
# This is a temporary step, to estimate the impact of the measured on heat demand and carbon
|
||||||
|
# TODO: This needs to be cleaned up, if it happens to be kept
|
||||||
combined_recommendations_scoring_data = []
|
combined_recommendations_scoring_data = []
|
||||||
representative_recs = {}
|
representative_recs = {}
|
||||||
for property_id, property_recommendations in recommendations.items():
|
for property_id, property_recommendations in recommendations.items():
|
||||||
|
|
@ -297,6 +301,13 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
|
|
||||||
# Missing types
|
# Missing types
|
||||||
missing_types = list(set([r["type"] for r in property_recommendations if r["type"] not in default_types]))
|
missing_types = list(set([r["type"] for r in property_recommendations if r["type"] not in default_types]))
|
||||||
|
# We might have a missing type as one of the solid wall options because for a solid wall, you might
|
||||||
|
# have ewi or iwi but only one of them will be a default
|
||||||
|
if ("internal_wall_insulation" in default_types) or ("external_wall_insaultion" in default_types):
|
||||||
|
missing_types = [
|
||||||
|
t for t in missing_types if t not in ["internal_wall_insulation", "external_wall_insulation"]
|
||||||
|
]
|
||||||
|
|
||||||
if missing_types:
|
if missing_types:
|
||||||
for missed_type in missing_types:
|
for missed_type in missing_types:
|
||||||
missed = [r for r in property_recommendations if r["type"] == missed_type]
|
missed = [r for r in property_recommendations if r["type"] == missed_type]
|
||||||
|
|
@ -393,6 +404,8 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
combined_heat_demand["predictions"].values[0] * property_instance.floor_area
|
combined_heat_demand["predictions"].values[0] * property_instance.floor_area
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# We don't want to adjust the heat demand for mechanical ventilation so we add it back on
|
||||||
|
|
||||||
# We adjust the heat demand figures to align to the UCL paper
|
# We adjust the heat demand figures to align to the UCL paper
|
||||||
current_adjusted_energy = AnnualBillSavings.adjust_energy_to_metered(
|
current_adjusted_energy = AnnualBillSavings.adjust_energy_to_metered(
|
||||||
epc_energy_consumption=starting_heat_demand,
|
epc_energy_consumption=starting_heat_demand,
|
||||||
|
|
@ -412,10 +425,6 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
heat_demand_change = (
|
heat_demand_change = (
|
||||||
current_adjusted_energy - expected_adjusted_energy
|
current_adjusted_energy - expected_adjusted_energy
|
||||||
)
|
)
|
||||||
property_instance.set_adjusted_energy(
|
|
||||||
current_adjusted_energy=current_adjusted_energy,
|
|
||||||
expected_adjusted_energy=expected_adjusted_energy
|
|
||||||
)
|
|
||||||
|
|
||||||
# update the recommendations
|
# update the recommendations
|
||||||
# We need to totals for the representative recommendations
|
# We need to totals for the representative recommendations
|
||||||
|
|
@ -450,7 +459,13 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
|
|
||||||
# Finally, insert these values into the final recommendations
|
# Finally, insert these values into the final recommendations
|
||||||
for rec in property_recommendations:
|
for rec in property_recommendations:
|
||||||
change_data = representative_rec_data[representative_rec_data["type"] == rec["type"]]
|
if rec["type"] in ["external_wall_insulation", "internal_wall_insulation"]:
|
||||||
|
change_data = representative_rec_data[
|
||||||
|
representative_rec_data["type"].isin(["external_wall_insulation", "internal_wall_insulation"])
|
||||||
|
]
|
||||||
|
else:
|
||||||
|
change_data = representative_rec_data[representative_rec_data["type"] == rec["type"]]
|
||||||
|
|
||||||
if rec["type"] == "mechanical_ventilation":
|
if rec["type"] == "mechanical_ventilation":
|
||||||
rec["co2_equivalent_savings"] = 0
|
rec["co2_equivalent_savings"] = 0
|
||||||
rec["heat_demand"] = 0
|
rec["heat_demand"] = 0
|
||||||
|
|
@ -463,6 +478,16 @@ async def trigger_plan(body: PlanTriggerRequest):
|
||||||
# Update recommendations
|
# Update recommendations
|
||||||
recommendations[property_id] = property_recommendations
|
recommendations[property_id] = property_recommendations
|
||||||
|
|
||||||
|
# For expected adjust energy, we don't include mechanical ventilation so we'll add it back on
|
||||||
|
expected_adjusted_energy = expected_adjusted_energy + representative_rec_data[
|
||||||
|
representative_rec_data["type"] == "mechanical_ventilation"
|
||||||
|
]["heat_demand"].values[0]
|
||||||
|
|
||||||
|
property_instance.set_adjusted_energy(
|
||||||
|
current_adjusted_energy=current_adjusted_energy,
|
||||||
|
expected_adjusted_energy=expected_adjusted_energy
|
||||||
|
)
|
||||||
|
|
||||||
# 1) the property data
|
# 1) the property data
|
||||||
# 2) the property details (epc)
|
# 2) the property details (epc)
|
||||||
# 3) the recommendations
|
# 3) the recommendations
|
||||||
|
|
|
||||||
|
|
@ -87,7 +87,7 @@ def create_recommendation_scoring_data(
|
||||||
scoring_dict[col] = "none"
|
scoring_dict[col] = "none"
|
||||||
|
|
||||||
# We update the description to indicate it's insulated
|
# We update the description to indicate it's insulated
|
||||||
if recommendation["type"] == "wall_insulation":
|
if recommendation["type"] in ["internal_wall_insulation", "external_wall_insulation", "cavity_wall_insulation"]:
|
||||||
# The upgrade made here is to the u-value of the walls and the description of the
|
# The upgrade made here is to the u-value of the walls and the description of the
|
||||||
# insulation thickness
|
# insulation thickness
|
||||||
scoring_dict["walls_thermal_transmittance_ENDING"] = recommendation["new_u_value"]
|
scoring_dict["walls_thermal_transmittance_ENDING"] = recommendation["new_u_value"]
|
||||||
|
|
@ -106,7 +106,7 @@ def create_recommendation_scoring_data(
|
||||||
scoring_dict["walls_insulation_thickness_ENDING"] = "none"
|
scoring_dict["walls_insulation_thickness_ENDING"] = "none"
|
||||||
|
|
||||||
# Update description to indicate it's insulate
|
# Update description to indicate it's insulate
|
||||||
if recommendation["type"] == "floor_insulation":
|
if recommendation["type"] in ["solid_floor_insulation", "suspended_floor_insulation", "exposed_floor_insulation"]:
|
||||||
if len(recommendation["parts"]) > 1:
|
if len(recommendation["parts"]) > 1:
|
||||||
raise NotImplementedError("Have more than 1 floor insulation part - handle this case")
|
raise NotImplementedError("Have more than 1 floor insulation part - handle this case")
|
||||||
|
|
||||||
|
|
@ -128,7 +128,7 @@ def create_recommendation_scoring_data(
|
||||||
if scoring_dict["floor_insulation_thickness_ENDING"] is None:
|
if scoring_dict["floor_insulation_thickness_ENDING"] is None:
|
||||||
scoring_dict["floor_insulation_thickness_ENDING"] = "none"
|
scoring_dict["floor_insulation_thickness_ENDING"] = "none"
|
||||||
|
|
||||||
if recommendation["type"] == "roof_insulation":
|
if recommendation["type"] in ["loft_insulation", "room_roof_insulation", "flat_roof_insulation"]:
|
||||||
scoring_dict["roof_thermal_transmittance_ENDING"] = recommendation["new_u_value"]
|
scoring_dict["roof_thermal_transmittance_ENDING"] = recommendation["new_u_value"]
|
||||||
|
|
||||||
parts = recommendation["parts"]
|
parts = recommendation["parts"]
|
||||||
|
|
@ -176,8 +176,10 @@ def create_recommendation_scoring_data(
|
||||||
scoring_dict["LIGHTING_ENERGY_EFF_STARTING"] = "Very Good"
|
scoring_dict["LIGHTING_ENERGY_EFF_STARTING"] = "Very Good"
|
||||||
|
|
||||||
if recommendation["type"] not in [
|
if recommendation["type"] not in [
|
||||||
"wall_insulation", "floor_insulation", "roof_insulation", "mechanical_ventilation", "sealing_open_fireplace",
|
"mechanical_ventilation", "sealing_open_fireplace", "low_energy_lighting",
|
||||||
"low_energy_lighting"
|
"internal_wall_insulation", "external_wall_insulation", "cavity_wall_insulation",
|
||||||
|
"loft_insulation", "room_roof_insulation", "flat_roof_insulation",
|
||||||
|
"solid_floor_insulation", "suspended_floor_insulation", "exposed_floor_insulation"
|
||||||
]:
|
]:
|
||||||
raise NotImplementedError("Implement me")
|
raise NotImplementedError("Implement me")
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,10 +25,10 @@ def prepare_input_measures(property_recommendations, goal):
|
||||||
if recs[0]["type"] == "mechanical_ventilation":
|
if recs[0]["type"] == "mechanical_ventilation":
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if recs[0]["type"] == "wall_insulation":
|
if recs[0]["type"] in ["internal_wall_insulation", "external_wall_insulation", "cavity_wall_insulation"]:
|
||||||
# Wall insulation and mechanical ventilation are paired. You can't have wall insulation without mechanical
|
# Wall insulation and mechanical ventilation are paired. You can't have wall insulation without mechanical
|
||||||
# ventilation
|
# ventilation
|
||||||
|
|
||||||
ventilation_cost = ventilation_rec[0]["total"] if ventilation_rec else 0
|
ventilation_cost = ventilation_rec[0]["total"] if ventilation_rec else 0
|
||||||
ventilation_gain = ventilation_rec[0][goal_key] if ventilation_rec else 0
|
ventilation_gain = ventilation_rec[0][goal_key] if ventilation_rec else 0
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue