diff --git a/orchestration/modelling_orchestrator.py b/orchestration/modelling_orchestrator.py index 7a30d7e82..23ac42941 100644 --- a/orchestration/modelling_orchestrator.py +++ b/orchestration/modelling_orchestrator.py @@ -19,6 +19,7 @@ from domain.modelling.optimisation.optimiser import ( OptimisedPackage, ScoredOption, optimise_package, + optimise_package_fabric_first, ) from domain.modelling.scoring.package_scorer import PackageScorer, Score from domain.modelling.plan import Plan, PlanMeasure @@ -188,7 +189,13 @@ class ModellingOrchestrator: dependencies: list[MeasureDependency] = _measure_dependencies( effective_epc, products, considered ) - package: OptimisedPackage = optimise_package( + # A Fabric First brief optimises the envelope with the full budget + # before heating / renewables are considered on top (mirroring the + # legacy engine's enforce_fabric_first). + optimise = ( + optimise_package_fabric_first if scenario.fabric_first else optimise_package + ) + package: OptimisedPackage = optimise( groups=groups, scorer=scorer, baseline_epc=effective_epc,