diff --git a/recommendations/Costs.py b/recommendations/Costs.py index 1184d5ed..b005ab69 100644 --- a/recommendations/Costs.py +++ b/recommendations/Costs.py @@ -350,16 +350,31 @@ class Costs: total_cost = material["total_cost"] * insulation_floor_area - labour_hours = material["labour_hours_per_unit"] * insulation_floor_area - # To install suspended floor insulation, a small to medium size project might be conducted by a team of 3 - # people - labour_days = (labour_hours / 8) / 3 + # We assume the average house takes ~7 days to complete at £300/day incl. VAT, as per checkatrade + # which can be seen here: https://www.checkatrade.com/blog/cost-guides/floor-insulation-cost + # Assumptions + base_days = 7 # The quickest it will be completed + base_area = 45 # The area that can be completed in that time (for a typical 90m2 house) + labour_exponent = 0.85 # Non-linear scaling + daily_labour_rate = 300 # Based on checkatrade + + min_days = 3 # Fewest days it will take + labour_days = max( + min_days, + base_days * (insulation_floor_area / base_area) ** labour_exponent + ) + + labour_cost = labour_days * daily_labour_rate + + total_cost = total_cost + labour_cost + + total_cost = round(total_cost, 2) return { "total": total_cost, "contingency": self.CONTINGENCIES["solid_floor_insulation"] * total_cost, "contingency_rate": self.CONTINGENCIES["solid_floor_insulation"], - "labour_hours": labour_hours, + "labour_hours": labour_days * 8, "labour_days": labour_days, }