mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
implemented change to mechanical ventilation
This commit is contained in:
parent
c2062507ca
commit
91b9530578
3 changed files with 41 additions and 39 deletions
|
|
@ -445,6 +445,16 @@ async def trigger_plan(body: PlanTriggerRequest):
|
|||
bucket_name=get_settings().DATA_BUCKET, file_key="sap_change_model/cleaning_dataset.parquet",
|
||||
)
|
||||
|
||||
# Set up model api and warm up the lambdas
|
||||
model_api = ModelApi(
|
||||
portfolio_id=body.portfolio_id,
|
||||
timestamp=created_at,
|
||||
prediction_buckets=get_prediction_buckets()
|
||||
)
|
||||
await model_api.async_warm_up_lambdas(
|
||||
model_prefies=model_api.KWH_MODEL_PREFIXES + model_api.MODEL_PREFIXES
|
||||
)
|
||||
|
||||
input_properties = []
|
||||
for config in tqdm(plan_input):
|
||||
# We validate each record in the file. If the record is NOT valid, we need to handle this accordingly
|
||||
|
|
@ -539,16 +549,6 @@ async def trigger_plan(body: PlanTriggerRequest):
|
|||
if not input_properties:
|
||||
return Response(status_code=204)
|
||||
|
||||
# Set up model api and warm up the lambdas
|
||||
model_api = ModelApi(
|
||||
portfolio_id=body.portfolio_id,
|
||||
timestamp=created_at,
|
||||
prediction_buckets=get_prediction_buckets()
|
||||
)
|
||||
await model_api.async_warm_up_lambdas(
|
||||
model_prefies=model_api.KWH_MODEL_PREFIXES + model_api.MODEL_PREFIXES
|
||||
)
|
||||
|
||||
# The materials data could be cached or local so we don't need to make
|
||||
# consistent requests to the backend for
|
||||
# the same data
|
||||
|
|
@ -683,8 +683,6 @@ async def trigger_plan(body: PlanTriggerRequest):
|
|||
)
|
||||
|
||||
# We now insert kwh estimates and costs into the recommendations
|
||||
# TODO: We should join the methodology which maps the heating and hot water descriptions to the fuel types in
|
||||
# Recommendations, but also the Property class
|
||||
logger.info("Calculating tenant savings - kwh and bills")
|
||||
for property_id in tqdm([p.id for p in input_properties]):
|
||||
property_recommendations = recommendations.get(property_id, [])
|
||||
|
|
@ -701,8 +699,6 @@ async def trigger_plan(body: PlanTriggerRequest):
|
|||
property_instance.current_energy_bill = property_current_energy_bill
|
||||
|
||||
# Insert the predictions into the recommendations and run the optimiser
|
||||
# TODO: If a recommendation has a negative impact on SAP, we should remove it - this seems to have become a
|
||||
# possibility with heating system?
|
||||
|
||||
for p in input_properties:
|
||||
if not recommendations.get(p.id):
|
||||
|
|
@ -814,23 +810,23 @@ async def trigger_plan(body: PlanTriggerRequest):
|
|||
# Funding
|
||||
# ~~~~~~~~~~~~~~~~
|
||||
|
||||
for p in input_properties:
|
||||
funding_calulator = Funding(
|
||||
tenure=body.housing_type,
|
||||
starting_epc=p.data["current-energy-rating"],
|
||||
starting_sap=int(p.data["current-energy-efficiency"]),
|
||||
postcode=p.postcode,
|
||||
floor_area=p.floor_area,
|
||||
council_tax_band=None, # This is seemingly always None at the moment
|
||||
property_recommendations=recommendations[p.id],
|
||||
project_scores_matrix=eco_project_scores_matrix,
|
||||
whlg_eligible_postcodes=whlg_eligible_postcodes,
|
||||
gbis_abs_rate=15,
|
||||
eco4_abs_rate=15,
|
||||
)
|
||||
funding_calulator.check_eligibiltiy()
|
||||
# Insert finding
|
||||
p.insert_funding(funding_calulator)
|
||||
# for p in input_properties:
|
||||
# funding_calulator = Funding(
|
||||
# tenure=body.housing_type,
|
||||
# starting_epc=p.data["current-energy-rating"],
|
||||
# starting_sap=int(p.data["current-energy-efficiency"]),
|
||||
# postcode=p.postcode,
|
||||
# floor_area=p.floor_area,
|
||||
# council_tax_band=None, # This is seemingly always None at the moment
|
||||
# property_recommendations=recommendations[p.id],
|
||||
# project_scores_matrix=eco_project_scores_matrix,
|
||||
# whlg_eligible_postcodes=whlg_eligible_postcodes,
|
||||
# gbis_abs_rate=15,
|
||||
# eco4_abs_rate=15,
|
||||
# )
|
||||
# funding_calulator.check_eligibiltiy()
|
||||
# # Insert finding
|
||||
# p.insert_funding(funding_calulator)
|
||||
|
||||
logger.info("Uploading recommendations to the database")
|
||||
# If we have any work to do, we create a new scenario
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from backend.Property import Property
|
|||
from typing import List
|
||||
from recommendations.Costs import Costs
|
||||
from recommendations.recommendation_utils import override_costs
|
||||
from backend.ml_models.AnnualBillSavings import AnnualBillSavings
|
||||
|
||||
|
||||
class LightingRecommendations:
|
||||
|
|
@ -161,6 +162,7 @@ class LightingRecommendations:
|
|||
# the proportion of lights that will be set to low energy
|
||||
"sap_points": sap_points,
|
||||
"kwh_savings": heat_demand_change,
|
||||
"energy_cost_savings": heat_demand_change * AnnualBillSavings.ELECTRICITY_PRICE_CAP,
|
||||
"co2_equivalent_savings": carbon_change,
|
||||
"description_simulation": {
|
||||
"lighting-energy-eff": "Very Good",
|
||||
|
|
|
|||
|
|
@ -858,7 +858,7 @@ class Recommendations:
|
|||
for recs in property_recommendations:
|
||||
for rec in recs:
|
||||
if rec["type"] in [
|
||||
"mechanical_ventilation", "trickle_vents", "draught_proofing", "extension_cavity_wall_insulation"
|
||||
"trickle_vents", "draught_proofing", "extension_cavity_wall_insulation"
|
||||
]:
|
||||
# We cannot score the impact on draught proofing
|
||||
continue
|
||||
|
|
@ -883,13 +883,18 @@ class Recommendations:
|
|||
heating_kwh_savings = (
|
||||
previous_phase_impact["predictions_heating"].mean() - rec_impact["predictions_heating"].values[0]
|
||||
)
|
||||
heating_cost_savings = (
|
||||
previous_phase_impact["heating_cost"].mean() - rec_impact["heating_cost"].values[0]
|
||||
)
|
||||
|
||||
hotwater_kwh_savings = (
|
||||
previous_phase_impact["predictions_hotwater"].mean() - rec_impact["predictions_hotwater"].values[0]
|
||||
)
|
||||
|
||||
# Shouldn't be positive
|
||||
if rec["type"] == "mechanical_ventilation":
|
||||
heating_kwh_savings = 0 if heating_kwh_savings > 0 else heating_kwh_savings
|
||||
hotwater_kwh_savings = 0 if hotwater_kwh_savings > 0 else hotwater_kwh_savings
|
||||
|
||||
heating_cost_savings = (
|
||||
previous_phase_impact["heating_cost"].mean() - rec_impact["heating_cost"].values[0]
|
||||
)
|
||||
hotwater_host = (
|
||||
previous_phase_impact["hotwater_cost"].mean() - rec_impact["hotwater_cost"].values[0]
|
||||
)
|
||||
|
|
@ -897,9 +902,8 @@ class Recommendations:
|
|||
total_kwh_savings = heating_kwh_savings + hotwater_kwh_savings
|
||||
energy_cost_savings = heating_cost_savings + hotwater_host
|
||||
|
||||
if rec["type"] == "lighting":
|
||||
# In this case, we should probably just SKIP but check when we have one!
|
||||
raise Exception("Implement me 3")
|
||||
if rec["type"] == "low_energy_lighting":
|
||||
continue
|
||||
|
||||
rec["kwh_savings"] = total_kwh_savings
|
||||
rec["energy_cost_savings"] = energy_cost_savings
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue