diff --git a/CHANGELOG.md b/CHANGELOG.md index bf2215f..9199aa3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,59 @@ # Changelog +## 0.8.0 (2026-10-22) + +Goal: carry the cooling trim hold in code so the live agent cannot drop it by accident, explain the 0.7.0 ramping rise first, and get live ramping below the baseline without giving back cost, emissions, comfort or the peaks against 0.6.0 live. + +Why the 0.7.0 live month ramped more than 0.6.0 live (1.0358 against 1.0174): + +- **The KPI's denominator is built inside each run.** CityLearn divides the run's sum of hourly rises in district draw by the same run's draw with storage removed and cooling at the ideal load, not by the baseline run. In hour 399, during an outage in Buildings 1 and 2, the 0.7.0 agent asked for extra cooling; the grid draw was 0 anyway, but CityLearn took the extra cooling off its reference (-0.71 kWh), and the climb back at hour 400 added 0.71 kWh of rises to the denominator only. That is why the hourly series gives 1.0374 against the baseline run and the KPI 1.0358. 0.6.0 matched exactly because its cooling was at the baseline in that outage. +- **Split exactly by cause** (Shapley shares of each hour's rise, adding up to CityLearn's figure; points of ramping above 1.0, 0.6.0 live against 0.7.0 live): trims net +2.52 against +2.74 (ends +6.37 against +5.29, starts -4.84 against -3.30, depth +0.98 against +0.75); battery charging -0.60 against +1.12; battery discharging -0.10 against -0.33; hot water tank 0.00 against +0.18; extra cooling -0.07 against +0.03; the outage-hour effect 0.00 against -0.15. The scripted v5 strategy: trims +1.81, battery charging +1.36, discharging -3.51. +- **The cause is the battery, not the trims.** Battery charging accounts for 1.72 of the 1.84 point rise. 0.7.0 charged 184 kWh against 272 and discharged 156 kWh against 237. 0.6.0's daytime charging stopped, and its daytime discharges started, as the afternoon load climbed, which cancelled rises; 0.7.0 rarely charged in the day and discharged in only 35 of the 80 building hours where the strategy says to cut the daytime peak (0.6.0: 46 of 74, scripted: 51 of 51). The trims are the largest single cause in every run but look much the same in both. The scripted strategy is below the baseline mainly because of its discharging. + +Changes: + +- **Trim hold in the envelope** (rule `trim_hold`, `EnvelopeConfig.trim_hold`, numbers from `StrategyParamsV5`). Per building: whether a trim is on (cooling more than 0.002 below the baseline action) and how deep. Occupied and more than 0.5 C below the setpoint: at least as deep as last hour. Within 0.5 C: eases off by at most 0.02 per hour. Ends at once at or above the setpoint, when unoccupied, or with no baseline cooling, and none may start there. `null` keeps a held trim, deeper is allowed, and a miss under 0.002 is rounding (the full depth stays held). It runs after the comfort rule and only keeps cooling below the baseline within the deviation limit. The spread check, peak limiter, comfort rule, battery limits, JSON envelope, fallback and budget cap are unchanged. Not a ramp taper. +- **`end_trim` per building** in prompt version 6 replies: `null` or a reason, the only way to end a held trim early. Every hold action (start, hold, ease, release, end, early end) is recorded in the decision's `holds` with its reason; changed values are clamps with rule `trim_hold`. Early ends show in the replay viewer's reason card and the live log, and the viewer data counts them (`trim_ends_early`). +- **Prompt version 6 (default).** Version 5 plus the hold and `end_trim` in the strategy, `cooling_trim_held` per building, and `strategy_battery` with `strategy_battery_reason` (the version 5 strategy's own battery action, `battery_plan_v5`) in place of the 0.4.0 rule-based `reference_action`. `strategy_plan_v5` returns exactly what it did. Requests are 4.8 percent larger than version 5 (10,928 against 10,432 characters). +- **Versioned rules.** Manifests without the new settings rebuild without the hold, and their decisions carry no `holds` key, so every older run replays byte for byte. `EnvelopeConfig.v070()` is the 0.7.0 rule set, used for new runs on prompt versions 1 to 5. The 0.6.0 and 0.7.0 live months and the committed baseline replay 719 of 719 hours. +- **Tools.** `scripts/split_ramping.py` (the exact split), `scripts/evaluate_hold.py` (a recorded run's own replies through its own rules, which must reproduce its KPIs, and through the hold; an evaluation, never a recorded run), `RecordedReplySupervisor`, and `scripts/tune_strategy.py --version 6`. The version 4 and 5 searches now pin the 0.7.0 rules they were made with. +- `hyperbolic serve`'s first cost estimate uses the version 6 request size (5,200 input and 790 output tokens). `compare --against` labels scripted runs by prompt version. The page's How it works strip names the trim hold. +- Tests cover the hold (on, hold, ease, release, every end, early end with a reason, rounding, logging, fallback, rule order, older rules unchanged, byte-for-byte replay with hold actions, changed hold settings detected), the version 6 schema, parsing, observation, prompt and request size, the scripted version 6 reply, recorded replies, the viewer's early ends, 24 hour and full-month version 6 CityLearn runs, and the split and evaluation tools. + +Estimates before any live run (tuning months first; nothing tuned on the phase 2 month): + +- **Scripted v5 strategy, tuning months**, 0.7.0 against 0.8.0 rules: ramping 0.9816 against 0.9821, daily peak 0.8834 against 0.8836 and load factor 0.9517 against 0.9522 slightly worse; cost 0.9089 against 0.9086, emissions 0.9610 against 0.9607 and all-time peak 0.8532 against 0.8530 slightly better; discomfort equal at 0.0310. The rounding allowance was added here: without it discomfort rose to 0.0312 and the hold clamped 247 to 443 times a month. The strategy's own trims drift shallower by about 0.0015 an hour through rounding, and the hold stops that. +- **Scripted v5 strategy, phase 2 month**: ramping 0.9966 against 0.9957, daily peak 0.9081 against 0.9078, all-time peak 0.9597 against 0.9593 better; emissions, grid import and load factor unchanged to four decimals; cost 0.9015 against 0.9017 and discomfort 0.0424 against 0.0430 slightly worse. Clamped hours 1 against 139. +- **0.7.0 live replies through the 0.8.0 rules** (control reproduces the published 0.7.0 KPIs exactly): cost 0.9320 to 0.9169, emissions 0.9635 to 0.9477, grid import 0.9684 to 0.9527, discomfort 0.0741 to 0.0511, daily peak 0.9393 to 0.9284, all-time peak 0.9592 to 0.9548, ramping 1.0358 to 1.0249, load factor 0.9747 to 0.9787 (worse). Against 0.6.0 live that is better on cost, emissions, discomfort and the daily peak, and worse on the all-time peak and ramping, which stays above the baseline. Trim rule breaks 142 to 4. Clamped hours 66 to 323. +- **The battery change in prompt version 6 is not in any estimate and can only be measured live.** +- A Haiku month should cost about $0.66; the hard worst case is $0.99, under the $2.00 cap. + +Live run (`claude-haiku-5-5`, full month, 719 hours, prompt version 6), against the baseline, the 0.4.0 rule-based controller (rerun as run 20261022T162847Z, matching its published numbers) and the earlier live months: + +| CityLearn KPI (district), full month | Baseline | 0.4.0 rule-based | 0.6.0 live | 0.7.0 live | 0.8.0 live | +|---|---|---|---|---|---| +| cost_total | 1.000 | 0.9611 | 0.9219 | 0.9320 | 0.9190 | +| carbon_emissions_total | 1.000 | 0.9947 | 0.9665 | 0.9635 | 0.9610 | +| electricity_consumption_total | 1.000 | 1.0073 | 0.9740 | 0.9684 | 0.9695 | +| discomfort_proportion (too cool, too warm) | 0.1714 (0.1538, 0.0176) | 0.1714 (0.1538, 0.0176) | 0.0861 (0.0680, 0.0181) | 0.0741 (0.0560, 0.0181) | 0.0769 (0.0601, 0.0168) | +| daily_peak_average | 1.000 | 0.9978 | 0.9354 | 0.9393 | 0.9264 | +| all_time_peak_average | 1.000 | 1.0000 | 0.9483 | 0.9592 | 0.9593 | +| ramping_average | 1.000 | 1.1309 | 1.0174 | 1.0358 | 1.0076 | +| daily_one_minus_load_factor_average | 1.000 | 0.9913 | 0.9773 | 0.9747 | 0.9651 | +| power_outage_normalized_unserved_energy_total | 0.6844 | 0.6844 | 0.6844 | 0.6877 | 0.6850 | +| Clamped hours, fallback hours | | 1, 0 | 73, 0 | 66, 0 | 312, 0 | +| Model cost | | none | $0.5740 | $0.6329 | $0.5315 | + +- **Against the 0.4.0 rule-based controller it wins on every KPI except unserved energy in outages**, where it trails by 0.0006 (0.6850 against 0.6844). Thermal resilience ties at 0.3698. +- **The first live run with both fewer too-cool and fewer too-warm hours than the baseline** (0.0601 against 0.1538, 0.0168 against 0.0176). 0.6.0 and 0.7.0 live added warm hours (0.0181). +- **The best live run so far on cost, emissions and the daily peak.** Not on discomfort (0.7.0 live: 0.0741), grid import (0.7.0 live: 0.9684), the all-time peak (0.6.0 live: 0.9483), or ramping and load factor (0.4.0 live, at baseline comfort: 0.9965 and 0.9559). +- **Missed the 0.8 goal on ramping**: 1.0076, down from 1.0358 and below 0.6.0 live (1.0174) and the 1.0249 estimate, but still above the baseline. +- **Gave back the all-time peak against 0.6.0 live** (0.9593 against 0.9483). Cost, emissions, discomfort and the daily peak improved on 0.6.0 live. +- **312 of 719 hours clamped**, 276 by the trim hold alone and 292 with it (243 clamps on Building_1 cooling, 100 on Building_3, 2 on Building_2); comfort in 28 hours, state of charge in 6, deviation in 2, peak in 1. The hold acted 557 times (109 starts, 243 holds, 97 eases, 21 releases, 80 ends, 7 early ends with a reason). The envelope is steering the agent. 0 fallbacks, 719 calls, $0.5315 of $2.00, replays 719 of 719 hours deterministically. +- The published viewer (`docs/data`) now shows the 0.8.0 live run in place of 0.6.0. + +Next for 0.9: cut the clamp rate without losing these gains. + ## 0.7.0 (2026-10-22) Goal: bring ramping below the baseline and the load factor back toward 0.4.0 without giving back cost, emissions, comfort or the peaks, and clean up the public page. diff --git a/README.md b/README.md index 2af9adc..003e8e2 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ An AI supervisor that runs a simulated district and tries to beat the no-control Hyperbolic runs [CityLearn](https://github.com/citylearn-project/CityLearn), an open source district energy simulator, entirely on one machine. Every simulated hour it reads CityLearn's observations, forecasts and prices for all buildings, asks a language model for one action per device, passes the answer through a deterministic safety envelope, and applies what survives. Both the agent and the reference are scored by CityLearn's own KPI evaluation, so the numbers come from the benchmark, not from this project. -Replay viewer and scorecard: `docs/index.html`, published with GitHub Pages. Both sides shown there are real CityLearn runs: the no-control baseline and the live 0.6.0 Haiku run (see [Results](#results)). The 0.7.0 live run scored worse and is not published there (see [Version 0.7.0](#version-070)). +Replay viewer and scorecard: `docs/index.html`, published with GitHub Pages. Both sides shown there are real CityLearn runs: the no-control baseline and the live 0.8.0 Haiku run (see [Version 0.8.0](#version-080)). It replaces the 0.6.0 live run there; the 0.7.0 live run scored worse and was never published (see [Version 0.7.0](#version-070)). To watch a run live on your own machine instead, see [Watch it live](#watch-it-live). @@ -234,11 +234,11 @@ It still beats the 0.4.0 rule-based controller on cost (0.9320 against 0.9611), | Ended within 0.5 C, but dropped more than 0.02 in one hour | 74 | 69 | 4 | | Hours where two or more buildings ended a trim together | 47 | 37 | 12 | -Version 5 asks for a trim to be held until the room is within 0.5 C of its setpoint and then eased off by at most 0.02 per hour. It may end at once only when the room reaches its setpoint, empties, or needs no cooling. The live agent held trims longer than in 0.6.0, but 142 of its 237 trim ends broke that rule: 73 ended with the room still too cold, and 69 dropped in one step. The scripted strategy broke it in 4 of 167, all at the edge of the rule: two rooms at their setpoint to within rounding, and two last steps of 0.022. Each hour is a separate model call, and the trim is one number in the observation (`cooling_trim_last_hour`) that the agent often let go. Trims flickered less than in 0.6.0, so the trims alone do not explain why ramping rose above 0.6.0 live. This release does not split that rise further. +Version 5 asks for a trim to be held until the room is within 0.5 C of its setpoint and then eased off by at most 0.02 per hour. It may end at once only when the room reaches its setpoint, empties, or needs no cooling. The live agent held trims longer than in 0.6.0, but 142 of its 237 trim ends broke that rule: 73 ended with the room still too cold, and 69 dropped in one step. The scripted strategy broke it in 4 of 167, all at the edge of the rule: two rooms at their setpoint to within rounding, and two last steps of 0.022. Each hour is a separate model call, and the trim is one number in the observation (`cooling_trim_last_hour`) that the agent often let go. Trims flickered less than in 0.6.0, so the trims alone do not explain why ramping rose above 0.6.0 live. This release does not split that rise further; 0.8.0 does (see [Version 0.8.0](#version-080)). **The published viewer stays on the 0.6.0 live run.** The page shows the best live run so far, and 0.7.0 is not it: it is worse than 0.6.0 live on cost, ramping, both peaks and outage energy, and the cost saving the page leads with would drop from 7.8 to 6.8 percent. The 0.7.0 viewer data was built locally and is not published; `docs/data` is unchanged. -**Next for 0.8:** carry the trim's hold state in code instead of relying on the model to remember it. A plan, not yet built: +**Next for 0.8:** carry the trim's hold state in code instead of relying on the model to remember it. The plan as written for 0.7.0 (built in 0.8.0, see [Version 0.8.0](#version-080)): - The envelope (or the peak tracker) keeps, per building, whether a trim is on and how deep it is. - While the room is more than 0.5 C below its setpoint, the trim stays on at least as deep as last hour. Once the room is within 0.5 C, it eases off by at most 0.02 per hour. At or above the setpoint it ends at once, as now. @@ -247,9 +247,109 @@ Version 5 asks for a trim to be held until the room is within 0.5 C of its setpo - This is not the ramp rule 0.7.0 removed. That one tapered rises, which only spread them out. This one keeps a trim on, which is what the scripted strategy does. - Check it first on the tuning set, then aim for ramping below the baseline on the full live month without giving back cost, emissions, comfort or the peaks against 0.6.0 live. +### Version 0.8.0 + +**Goal:** carry the cooling trim hold in code so the live agent cannot drop it by accident, explain the 0.7.0 ramping rise first, and get live ramping below the baseline without giving back cost, emissions, comfort or the peaks against 0.6.0 live (cost 0.9219, emissions 0.9665, discomfort 0.0861, daily peak 0.9354, all-time peak 0.9483). + +**Why the hourly series said 1.0374 when the KPI said 1.0358.** CityLearn's ramping adds up every hour-to-hour rise in the district's net draw, but it does not divide by the baseline run. It divides by a reference built inside the same run: the run's own net draw with storage taken out and cooling put back to the ideal load. In hour 399, during an outage in Buildings 1 and 2, the 0.7.0 agent asked for extra cooling. The grid draw was 0 anyway, but CityLearn still took the extra cooling off its reference, which read -0.71 kWh there, and the climb back to 0 at hour 400 added 0.71 kWh of rises to the denominator only (470.91 kWh against 470.20 for the baseline run). The numerator matches the hourly series to 0.00001 kWh. 0.6.0 matched exactly because its cooling was at the baseline in that outage. + +**What made 0.7.0 ramp more than 0.6.0.** Every month below was simulated again from its recorded actions (identical outcomes) and each hour's rise was split among its causes with exact Shapley shares, so the parts add up to CityLearn's own figure (`scripts/split_ramping.py`). Points of `ramping_average` above 1.0: + +| Cause | 0.6.0 live | 0.7.0 live | 0.7.0 v5 strategy, scripted | +|---|---|---|---| +| Trims ending | +6.37 | +5.29 | +3.61 | +| Trims starting | -4.84 | -3.30 | -1.84 | +| Trim depth changes | +0.98 | +0.75 | +0.04 | +| **Trims, net** | **+2.52** | **+2.74** | **+1.81** | +| Battery charging | -0.60 | +1.12 | +1.36 | +| Battery discharging | -0.10 | -0.33 | -3.51 | +| **Battery, net** | **-0.70** | **+0.79** | **-2.15** | +| Hot water tank | 0.00 | +0.18 | 0.00 | +| Extra cooling above the baseline | -0.07 | +0.03 | 0.00 | +| Outage hours (the reference effect above) | 0.00 | -0.15 | 0.00 | +| Reference's own rises (the denominator) | 470.20 kWh | 470.91 kWh | 470.20 kWh | +| **ramping_average** | **1.0174** | **1.0358** | **0.9966** | + +- **The rise from 0.6.0 to 0.7.0 is the battery, not the trims.** Of the 1.84 points, battery charging accounts for 1.72. The trims net to 0.22. 0.7.0 used the battery about a third less: it charged 184 kWh against 272 and discharged 156 kWh against 237. In 0.6.0, daytime charging stopped as the afternoon load climbed and daytime discharges cut the load as it rose, and both cancelled rises. 0.7.0 rarely charged in the day and discharged in only 35 of the 80 building hours where the strategy says to cut the daytime peak (0.6.0: 46 of 74, the scripted strategy: 51 of 51). It also charged both hot water tanks in hour 441, against the prompt. +- **The trims are still the largest single cause in every run**, and look much the same in 0.6.0 and 0.7.0. Holding them exactly, as the scripted strategy does, still costs 1.81 points. +- **The scripted strategy is below the baseline because of its discharging** (-3.51 points): daytime peak cuts plus discharge spread over the top-price hours. Its trims account for less of the difference. +- In CityLearn's LSTM buildings the heat pump delivers exactly the fraction it is told; there is no thermostat. Room temperature enters only through what the agent or the comfort rule asks for, which is the "extra cooling" line. + +So the hold alone was not expected to bring live ramping below the baseline. 0.8.0 builds it as planned and also changes what the agent is shown about the battery. + +**Changes:** + +- **Trim hold in the envelope** (rule `trim_hold`, `EnvelopeConfig.trim_hold`). Per building the envelope keeps whether a cooling trim is on and how deep it is (cooling more than 0.002 below the baseline action). While the room is occupied and more than 0.5 C below its setpoint, the trim stays at least as deep as last hour. Within 0.5 C it eases off by at most 0.02 per hour. It ends at once at or above the setpoint, when the room is unoccupied, or when the baseline has no cooling to trim, and no trim may start there either. `null` cooling keeps a held trim; a deeper trim is allowed. A reply that misses the held depth by less than 0.002 is taken as rounding (the observation shows the baseline and the trim to 3 decimals) and is not clamped, but the full depth stays held, so nothing drifts. The hold runs after the comfort rule and only keeps cooling below the baseline within the deviation limit the trim already passed, so the spread check, peak limiter, comfort rule, battery limits, JSON envelope, fallback and budget cap are unchanged. A fallback hour uses the baseline everywhere and ends any trim. This is not the ramp rule 0.7.0 removed: that one tapered rises, this one keeps a trim on. +- **Early end only with a reason.** Prompt version 6 replies carry `end_trim` per building: `null`, or a short reason to end that building's held trim now. Every hold action (start, hold, ease, release, end, early end) is recorded in the hour's decision under `holds` with its reason, and every value it changes is a clamp with rule `trim_hold`. Early ends are shown in the replay viewer's reason card and in the live log, and the viewer data counts them (`trim_ends_early`). +- **Prompt version 6 (default).** Version 5, plus: the strategy says the envelope holds trims in code, how a held trim behaves and how to end one early, and each building shows `cooling_trim_held`, the trim the envelope keeps this hour. The 0.4.0 rule-based `reference_action` (a controller that ramped 1.1309) is replaced by the version 5 strategy's own battery action per building, `strategy_battery`, with `strategy_battery_reason`, computed by the same code as the scripted strategy (`battery_plan_v5`). +- **Older runs replay exactly.** Settings a manifest does not have keep their old values, so every run recorded before 0.8.0 replays without the hold, and its decisions carry no `holds` key. `EnvelopeConfig.v070()` is the 0.7.0 rule set. New runs on prompt versions 1 to 5 use it too, so they behave as in 0.7.0; only version 6 runs with the hold. The 0.6.0 and 0.7.0 live months and the committed baseline replay 719 of 719 hours. +- **Evaluation tools.** `scripts/split_ramping.py` splits a run's ramping by cause as above. `scripts/evaluate_hold.py` sends a recorded run's own replies, unchanged, through its own rules (a control that must reproduce its published KPIs exactly) and through the same rules with the hold, on a fresh CityLearn month with no model calls; the result is an evaluation, never a recorded run. `scripts/tune_strategy.py --version 6` makes the same comparison for the scripted strategy on the tuning months; the version 4 and 5 searches run with the 0.7.0 rules they were made with. + +**Estimates before any live run.** Checked on the tuning months first, then the phase 2 month. Nothing was tuned on the phase 2 month. + +1. **The scripted v5 strategy on the tuning months**, mean of three, 0.7.0 rules against 0.8.0 rules: ramping 0.9816 against 0.9821, daily peak 0.8834 against 0.8836 and load factor 0.9517 against 0.9522 got slightly worse; cost 0.9089 against 0.9086, emissions 0.9610 against 0.9607 and all-time peak 0.8532 against 0.8530 got slightly better; discomfort is equal (0.0310). The first version of the rule, without the rounding allowance, also raised discomfort to 0.0312 and clamped 247 to 443 times a month (87 to 148 with the allowance); the allowance was added on the tuning set, before the phase 2 month was run. The cause of what remains: the strategy rebuilds its trim each hour from a baseline rounded to 3 decimals plus a 0.001 safety margin, so its held trims drift shallower by about 0.0015 an hour. The hold stops that drift, so trims stay a little deeper (lower cost) and step up a little more when they end (slightly more ramping). +2. **The scripted v5 strategy on the phase 2 month**, 0.7.0 rules against 0.8.0 rules (`--scripted --prompt-version 6`): ramping 0.9966 against 0.9957, daily peak 0.9081 against 0.9078 and all-time peak 0.9597 against 0.9593 got better; emissions (0.9430), grid import (0.9523) and load factor (0.9640) are unchanged to four decimals; **cost (0.9015 against 0.9017, exactly 0.901532 against 0.901682) and discomfort (0.0424 against 0.0430, all of it too cool) got slightly worse.** Clamped hours rose from 1 to 139, all of them the hold correcting that drift. The run replays 719 of 719 hours. +3. **The 0.7.0 live month's own replies through the 0.8.0 rules** (`scripts/evaluate_hold.py`). The control, the same replies through the 0.7.0 rules, reproduces the published 0.7.0 KPIs exactly. + +| CityLearn KPI (district) | 0.6.0 live | 0.7.0 live (control) | 0.7.0 replies, 0.8.0 rules | Change | +|---|---|---|---|---| +| cost_total | 0.9219 | 0.9320 | 0.9169 | -0.0151 | +| carbon_emissions_total | 0.9665 | 0.9635 | 0.9477 | -0.0158 | +| electricity_consumption_total | 0.9740 | 0.9684 | 0.9527 | -0.0157 | +| discomfort_proportion | 0.0861 | 0.0741 | 0.0511 | -0.0230 | +| daily_peak_average | 0.9354 | 0.9393 | 0.9284 | -0.0108 | +| all_time_peak_average | 0.9483 | 0.9592 | 0.9548 | -0.0044 | +| ramping_average | 1.0174 | 1.0358 | 1.0249 | -0.0109 | +| daily_one_minus_load_factor_average | 0.9773 | 0.9747 | 0.9787 | +0.0039 | + +- The hold took ramping down 1.09 points, but **not below the baseline and not below 0.6.0 live**. The trims' net share fell from 2.74 to 1.56 points: trim ends from 5.29 to 3.78, trim starts from -3.30 to -2.12, depth changes from 0.75 to -0.10. The battery's share barely moves (+0.88 against +0.79): its replies are the same, and only the rises it overlaps with changed. +- Against the 0.6.0 live targets the estimate is better on cost, emissions, discomfort (all of the gain is fewer too-cool hours; too warm is unchanged at 0.0181) and the daily peak, and **worse on the all-time peak (0.9548 against 0.9483) and ramping (1.0249 against 1.0174)**. Against 0.7.0 itself, **the load factor got worse (0.9787 against 0.9747)**: the held trims cut energy across the day while the evening peak stays. +- Trims: 174 episodes against 237, median 3 hours against 2, 60 one hour long against 108, and 4 rule breaks against 142, all four trims just over 0.02 deep that one 0.02 step leaves under the 0.002 threshold. The hold acted 668 times: 176 starts, 205 holds, 110 eases, 28 releases, and 149 ends (135 at the setpoint, 11 in an emptied room, 3 with no baseline cooling). Clamped hours rose from 66 to 323; 283 of them carry a `trim_hold` clamp. +- The replies are fixed, so later hours do not react to what the hold changed. **The battery change in prompt version 6 is not in this estimate and can only be measured live.** The scripted strategy follows `strategy_battery` exactly by construction, so no offline run can say how closely a model will. The battery accounts for 2.9 points between the 0.7.0 live month and the scripted strategy. + +**Request size and cost.** A version 6 request averages 10,928 characters against 10,432 for version 5 over the same month, 4.8 percent more: the system prompt 5,221 against 4,932 characters, the schema 1,368 against 1,143 (`end_trim` in each building), and the observation 9 characters shorter. Scaled from the 0.7.0 live month (4,946 input and 771 output tokens per call, $0.6329), a Haiku month should cost about $0.66. The hard worst case per call is $0.00137 (every character a third of a token and a full 2,000 token reply), $0.99 for all 719 hours, so the $2.00 budget cap cannot stop a Haiku month; it would allow 1,457 such calls, and spending can never pass $2.00. + +**Live results.** The 0.8.0 live run (`claude-haiku-5-5`, full month, 719 hours, prompt version 6, $2.00 budget) against the baseline, the 0.4.0 rule-based controller (rerun as run 20261022T162847Z, matching its published numbers) and the earlier live months: + +| CityLearn KPI (district), full month | Baseline | 0.4.0 rule-based | 0.6.0 live, Haiku | 0.7.0 live, Haiku | 0.8.0 live, Haiku | +|---|---|---|---|---|---| +| cost_total | 1.000 | 0.9611 | 0.9219 | 0.9320 | **0.9190** | +| carbon_emissions_total | 1.000 | 0.9947 | 0.9665 | 0.9635 | **0.9610** | +| electricity_consumption_total | 1.000 | 1.0073 | 0.9740 | 0.9684 | **0.9695** | +| discomfort_proportion | 0.1714 | 0.1714 | 0.0861 | 0.0741 | **0.0769** | +| too cool | 0.1538 | 0.1538 | 0.0680 | 0.0560 | **0.0601** | +| too warm | 0.0176 | 0.0176 | 0.0181 | 0.0181 | **0.0168** | +| daily_peak_average | 1.000 | 0.9978 | 0.9354 | 0.9393 | **0.9264** | +| all_time_peak_average | 1.000 | 1.0000 | 0.9483 | 0.9592 | **0.9593** | +| ramping_average | 1.000 | 1.1309 | 1.0174 | 1.0358 | **1.0076** | +| daily_one_minus_load_factor_average | 1.000 | 0.9913 | 0.9773 | 0.9747 | **0.9651** | +| one_minus_thermal_resilience_proportion | 0.3698 | 0.3698 | 0.3698 | 0.3698 | **0.3698** | +| power_outage_normalized_unserved_energy_total | 0.6844 | 0.6844 | 0.6844 | 0.6877 | **0.6850** | +| Clamped hours, fallback hours | | 1, 0 | 73, 0 | 66, 0 | **312, 0** | +| Model cost | | none | $0.5740 | $0.6329 | **$0.5315** | + +- **Against the 0.4.0 rule-based controller it wins on every KPI except unserved energy in outages**, where it trails by 0.0006 (0.6850 against 0.6844). Thermal resilience ties at 0.3698. +- **It is the first live run with both fewer too-cool and fewer too-warm hours than the baseline**: too cool 0.0601 against 0.1538, too warm 0.0168 against 0.0176. 0.6.0 and 0.7.0 live cut the cold hours but added warm ones (0.0181). +- **It is the best live run so far on cost, emissions and the daily peak.** It is not the best on discomfort (0.7.0 live: 0.0741), grid import (0.7.0 live: 0.9684), the all-time peak (0.6.0 live: 0.9483), or ramping and load factor, where the 0.4.0 live run, which left comfort at the baseline, still holds 0.9965 and 0.9559. +- **It missed the 0.8 goal on ramping.** Ramping fell from 1.0358 to 1.0076, below 0.6.0 live (1.0174) and below the estimate from the 0.7.0 replies (1.0249), but it is still above the baseline. +- **It gave back the all-time peak against 0.6.0 live** (0.9593 against 0.9483), which the goal said not to do. Cost, emissions, discomfort and the daily peak all improved on 0.6.0 live, as the goal asked. +- **The envelope is steering the agent.** 312 of 719 hours were clamped, 276 of them by the trim hold alone and 292 with it: 243 clamps on Building_1 cooling, 100 on Building_3 cooling and 2 on Building_2 cooling. The other rules: comfort in 28 hours, battery state of charge in 6, the deviation cap in 2 and the peak limiter in 1. The hold acted 557 times: 109 starts, 243 holds, 97 eases, 21 releases, 80 ends, and 7 early ends the agent asked for with a reason. 0 fallbacks. +- The run cost $0.5315 of the $2.00 budget (719 calls) and replays 719 of 719 hours deterministically. + +**The published viewer now shows the 0.8.0 live run** in place of 0.6.0: it beats 0.6.0 live on cost (the page's headline saving goes from 7.8 to 8.1 percent), emissions, grid import, discomfort, the daily peak, ramping and load factor, and loses on the all-time peak and outage energy. + +**Next for 0.9:** cut the clamp rate without losing the gains. Most clamps are the trim hold correcting replies that let a held trim go, mainly in Buildings 1 and 3, so the target is replies that keep held trims as the envelope would, with the same or better KPIs. + ## What the agent sees -Prompt version 5 (`hyperbolic/prompt.py`) is the default from 0.7.0. It keeps everything in version 4 and adds: +Prompt version 6 (`hyperbolic/prompt.py`) is the default from 0.8.0. It keeps everything in version 5 and: + +- **States the trim hold.** The envelope holds a cooling trim in code (see [How the safety envelope works](#how-the-safety-envelope-works)); `null` cooling keeps a held trim, and a deeper trim is allowed. +- **Adds `end_trim` to the reply**, per building: `null`, or a short reason to end that building's held trim now. It is the only way to end one early, and every early end is logged and shown in the viewer. +- **Adds `cooling_trim_held`** in each building: the trim the envelope keeps this hour, 0 when none. +- **Replaces `reference_action`** (the 0.4.0 rule-based controller's plan) with **`strategy_battery`** in each building and `strategy_battery_reason`: the battery action the version 5 strategy gives this hour, worked out by the same code the scripted strategy runs (`battery_plan_v5`). The agent is told to use it unless it has a clear reason, and to say why when it differs. + +Prompt version 5, the default in 0.7.0, keeps everything in version 4 and adds: - **`smoothing`**: `district_draw_last_hour_kwh` (measured), `district_load_now_kwh` (before storage) and `district_load_next_hour_kwh` (the next hour's load before storage, as yesterday). - **`cooling_trim_last_hour`** in each building: how far below the baseline action its cooling ran last hour. @@ -271,12 +371,14 @@ Prompt version 3, the default in 0.4.0, keeps everything in version 2 and adds t - **Storage per building:** state of charge, capacity and how far the battery can move in one hour, for the battery and the hot water tank. - **A plain strategy:** charge the battery in the cheapest, cleanest hours and with spare solar, discharge into the price peak sized to the building's own load (exports earn nothing), mostly leave the hot water tank alone, keep cooling at the baseline unless a small pre-cool is clearly safe, and hold when nothing stands out. -Nothing reads the dataset ahead of time; the outlook is built only from observations the controller has already received. Prompt versions 1 to 4 are kept unchanged so runs recorded with 0.2.0 to 0.6.0 replay byte for byte, and `--prompt-version 1` to `4` still selects them. +Nothing reads the dataset ahead of time; the outlook is built only from observations the controller has already received. Prompt versions 1 to 5 are kept unchanged so runs recorded with 0.2.0 to 0.7.0 replay byte for byte, and `--prompt-version 1` to `5` still selects them, with the 0.7.0 envelope rules. ## Tuning without peeking at the test month From 0.6.0 there is a separate 2023 tuning set. `scripts/tuning_data` holds `citylearn_challenge_2023_phase_2_online_evaluation_1` from CityLearn v3.0.2, copied unchanged: the same three buildings, batteries and LSTM models as the reported month, but June, July and August of a different period, with its own weather, loads, solar, carbon intensity and tariff, and no hour in common with the reported month. (`citylearn_challenge_2023_phase_1` is byte for byte the reported month's data, so it is no use for tuning; online evaluation sets 2 and 3 differ from set 1 only in the outage seed.) +In 0.8.0 nothing was tuned. The trim hold takes its numbers from the version 5 strategy (hold until within 0.5 C, then ease by at most 0.02 per hour), and `python scripts/tune_strategy.py --version 6` runs the shipped version 5 strategy on the tuning months through the 0.7.0 rules and through the 0.8.0 rules, before anything is reported on the phase 2 month. The one choice made there was the hold's rounding allowance (see [Version 0.8.0](#version-080)). + In 0.7.0, `python scripts/tune_strategy.py` (version 5, the default) searched how `strategy_plan_v5` smooths the load: how long a cooling trim is held, how fast it is eased off and how fast a grid charge may rise (`StrategyParamsV5`). A setting qualified when, averaged over the three tuning months, ramping was below the baseline and cost, emissions, discomfort and both peaks were no worse than the 0.6.0 strategy on the same months; the qualifying setting with the lowest ramping plus load factor won. 8 of 18 qualified. On the tuning months the shipped setting scores ramping 0.9816 and load factor 0.9517 against the 0.6.0 strategy's 0.9953 and 0.9529, with cost 0.9089 against 0.9113, emissions 0.9610 against 0.9671 and discomfort 0.0310 against 0.0344. In 0.6.0, `python scripts/tune_strategy.py --version 4` ran each of its three months as its own episode and searched the version 4 strategy's numbers (`StrategyParams`: when a room counts as too cold and how far its cooling is trimmed, the charge rate, peak shaving, and whether discharge is spread over the top-price hours), executed literally by `strategy_plan_v4`. A setting qualifies when, averaged over the three months, discomfort is at or below the baseline's, the daily and all-time peaks, ramping and the daily load factor are at or below the baseline's to four decimals, and cost and emissions are both below the 0.4.0 rule-based controller's on the same months. 36 of 216 settings qualified; the one with the lowest cost plus emissions is shipped. On the tuning months it scored cost 0.9113 and emissions 0.9671 against the rule-based controller's 0.9621 and 1.0021, discomfort 0.0344 against 0.1231, daily peak 0.8900, ramping 0.9953 and load factor 0.9529. The reported month was used only to report. The envelope's spread check has nothing to tune: it uses each battery's own efficiency curve and standing loss. @@ -287,16 +389,17 @@ Before 0.6.0 the repository had no other 2023 dataset offline, and the rule-base `hyperbolic/envelope.py`. Every reply goes through these steps before CityLearn sees anything: -1. **Schema validation.** One JSON object, strict Pydantic model: a short reason plus `cooling`, `dhw` and `battery` for every building. Each value is a finite number or `null`. Extra or missing fields, strings, booleans, NaN and infinity are rejected. +1. **Schema validation.** One JSON object, strict Pydantic model: a short reason plus `cooling`, `dhw` and `battery` for every building. Each value is a finite number or `null`. Extra or missing fields, strings, booleans, NaN and infinity are rejected. From prompt version 6 each building may also carry `end_trim`, `null` or a reason of 1 to 300 characters. 2. **Action range.** The configured range intersected with CityLearn's own action space. 3. **Rate limit.** At most 0.35 per hour for cooling and 0.5 for the tank and battery, measured from last hour's action or from this hour's baseline action, whichever is closer. Returning to the baseline is never too fast. 4. **State of charge.** No charge or discharge that would take a battery or tank outside 10 to 95 percent. 5. **Price spread (new in 0.6.0).** No grid charging of a battery when no price in the next 24 hours, after the battery's worst round trip efficiency and its standing loss until then, is worth more than the price now, while a cheaper hour is coming. Spare solar the building would otherwise export may still be stored. A flat outlook does not block, since the next peak may lie beyond the forecast. 6. **Cooling deviation (new in 0.3.0).** Cooling may not move more than 0.15 from the baseline action, the fraction that meets the ideal load. Enough to pre-cool, not enough to switch the heat pump off. 7. **Comfort.** In occupied hours within 0.5 C of the comfort band edge, cooling may not drop below the baseline when warm or rise above it when cool. From 0.3.0, an unoccupied building already near the bottom of its band gets no extra cooling either. -8. **Peak limit (new in 0.4.0).** Across the district, battery charging and then tank charging are trimmed so the district's estimated draw this hour stays at or below the peak target (the higher of today's peak so far and the forecast of today's peak). Discharging and cooling are never touched by it, and discharging earns no credit in the estimate, so it never understates the load. +8. **Trim hold (new in 0.8.0).** Per building the envelope keeps whether a cooling trim is on (cooling more than 0.002 below the baseline action) and how deep it is. While the room is occupied and more than 0.5 C below its setpoint, the trim stays at least as deep as last hour; within 0.5 C it eases off by at most 0.02 per hour; it ends at once at or above the setpoint, when the room is unoccupied, or when the baseline has no cooling to trim, and no trim may start there. `null` keeps a held trim, a deeper one is allowed, and a miss of less than 0.002 counts as rounding (the full depth stays held). The model can end a trim early only through `end_trim` with a reason. Every hold action is recorded with its reason in the hour's `holds`, and every value it changes is a clamp with rule `trim_hold`. It runs after the comfort rule and only keeps cooling below the baseline, within the deviation limit the trim already passed. It is not a ramp limit: it does not taper rises, it keeps a trim on. +9. **Peak limit (new in 0.4.0).** Across the district, battery charging and then tank charging are trimmed so the district's estimated draw this hour stays at or below the peak target (the higher of today's peak so far and the forecast of today's peak). Discharging and cooling are never touched by it, and discharging earns no credit in the estimate, so it never understates the load. -Older runs replay with the rule set they were recorded with: the run's manifest stores the envelope settings, and settings missing from an old manifest take the values they had before they existed (no deviation cap or unoccupied guard before 0.3.0, no peak limit before 0.4.0, no spread check before 0.6.0). The rule-based reference controller runs with the 0.4.0 rules, without the spread check, so its result stays comparable. +Older runs replay with the rule set they were recorded with: the run's manifest stores the envelope settings, and settings missing from an old manifest take the values they had before they existed (no deviation cap or unoccupied guard before 0.3.0, no peak limit before 0.4.0, no spread check before 0.6.0, no trim hold before 0.8.0). The rule-based reference controller runs with the 0.4.0 rules, without the spread check, so its result stays comparable. New runs on prompt versions before 6 run with the 0.7.0 rules (`EnvelopeConfig.v070()`), without the trim hold, because those prompts do not describe it. From 0.6.0 the comfort rule acts on the room temperature CityLearn simulated for the hour just finished. Before, it saw the dataset's no-control value for the coming hour (see [Version 0.6.0](#version-060)). @@ -309,7 +412,7 @@ The baseline action under active control is storage idle and the heat pump at th - Key from `HYPERBOLIC_ANTHROPIC_KEY`, falling back to `TRIAGE_ANTHROPIC_KEY`. The key lives only in the environment, never in a file, log or run folder (a test checks this). - Model: `--model haiku` (default, `claude-haiku-5-5`) or `--model sonnet` (`claude-sonnet-5-5`). Structured JSON output, low effort, 2000 max tokens. - Hard budget per run, `--budget` (default 2.00 USD). Before every call the runner computes that call's worst case (prompt size plus full max tokens). If it could push spending past the budget, model calls stop for the rest of the run and every remaining hour uses the baseline action. -- Episode length: the full 719 hours. The 0.2.0 live run averaged about 4,700 characters per request and cost 0.23 USD on Haiku. Prompt version 2 adds the 24 hour outlook and the strategy, about 7,400 characters per request, and the 0.3.0 live Haiku month cost 0.39 USD. Prompt version 3 is about 8,600 characters per request; the 0.4.0 live Haiku month cost 0.47 USD, against a hard worst case of about 0.93 USD. Prompt version 4 adds the reference action, the price plan and the battery limits, about 9,650 characters per request: the 0.6.0 live Haiku month cost 0.57 USD, against a hard worst case of about 0.95 USD. Prompt version 5 adds the smoothing view, about 10,430 characters per request: the 0.7.0 live Haiku month cost 0.63 USD, against a hard worst case of about 0.97 USD and the default 2.00 USD budget. Sonnet costs 20 times as much per token: a full Sonnet month should cost roughly 11 to 13 USD, so under a 2.00 USD budget it stops calling the model after about a sixth of the month and the remaining hours use the baseline action. Raise `--budget` (about 14 USD) for a full Sonnet run. Each run logs its exact token cost in `result.json`. +- Episode length: the full 719 hours. The 0.2.0 live run averaged about 4,700 characters per request and cost 0.23 USD on Haiku. Prompt version 2 adds the 24 hour outlook and the strategy, about 7,400 characters per request, and the 0.3.0 live Haiku month cost 0.39 USD. Prompt version 3 is about 8,600 characters per request; the 0.4.0 live Haiku month cost 0.47 USD, against a hard worst case of about 0.93 USD. Prompt version 4 adds the reference action, the price plan and the battery limits, about 9,650 characters per request: the 0.6.0 live Haiku month cost 0.57 USD, against a hard worst case of about 0.95 USD. Prompt version 5 adds the smoothing view, about 10,430 characters per request: the 0.7.0 live Haiku month cost 0.63 USD, against a hard worst case of about 0.97 USD and the default 2.00 USD budget. Prompt version 6 adds the trim hold and `end_trim`, about 10,930 characters per request (4.8 percent more): a Haiku month should cost about 0.66 USD, against a hard worst case of about 0.99 USD. Sonnet costs 20 times as much per token: a full Sonnet month should cost roughly 11 to 13 USD, so under a 2.00 USD budget it stops calling the model after about a sixth of the month and the remaining hours use the baseline action. Raise `--budget` (about 14 USD) for a full Sonnet run. Each run logs its exact token cost in `result.json`. ## How to run it @@ -345,7 +448,7 @@ python -m hyperbolic run && python -m hyperbolic compare | Command | What it does | |---|---| | `hyperbolic baseline` | Runs CityLearn's no-control reference. | -| `hyperbolic run` | Runs the supervisor through the envelope. `--model sonnet`, `--budget 5`, `--hours 24` for a short run, `--scripted` for the 0.4.0 rule-based controller with no API calls (prompt version 3 and the 0.4.0 envelope), `--scripted --prompt-version 4` or `5` for the version 4 or 5 strategy executed literally, `--inject-faults` with `--scripted` to exercise clamps and fallback, `--prompt-version 1` to `4` for the 0.2.0, 0.3.0, 0.4.0 or 0.6.0 prompt. Runs of two days or more need hours + 1 to be a whole number of days (for example 167 or 719), a limit of CityLearn 3.0.2's outage model. | +| `hyperbolic run` | Runs the supervisor through the envelope. `--model sonnet`, `--budget 5`, `--hours 24` for a short run, `--scripted` for the 0.4.0 rule-based controller with no API calls (prompt version 3 and the 0.4.0 envelope), `--scripted --prompt-version 4` or `5` for the version 4 or 5 strategy executed literally, `--scripted --prompt-version 6` for the version 5 strategy with the 0.8.0 trim hold, `--inject-faults` with `--scripted` to exercise clamps and fallback, `--prompt-version 1` to `5` for the 0.2.0, 0.3.0, 0.4.0, 0.6.0 or 0.7.0 prompt. Runs of two days or more need hours + 1 to be a whole number of days (for example 167 or 719), a limit of CityLearn 3.0.2's outage model. | | `hyperbolic replay RUN_DIR` | Re-runs a saved run from its files with zero model or simulator calls and reports whether every decision and action matches. Exit code 1 if not. | | `hyperbolic compare` | Pairs the latest baseline (from `runs/` or the committed `results/`) with the latest agent run (a live run wins over a scripted one), prints the KPIs and writes the viewer data. `--pair BASELINE AGENT` to choose, `--out` to write the viewer data elsewhere, `--against RUN` (repeatable) to print another finished run of the same length beside them, for example the rule-based controller; the viewer data is unchanged. | | `hyperbolic serve` | Live mode in the browser on 127.0.0.1 (see [Watch it live](#watch-it-live)). `--port 8765`, `--no-browser`. | @@ -377,7 +480,7 @@ Options: `--port`, `--runs-dir`, `--docs`, `--no-browser`. Live mode only exists - A timeline with the electricity price along the top, envelope events marked, play and pause, 1x, 10x and 60x speed, and jumps between events. - Running cost, emissions and discomfort counters for both sides. - Indoor temperature, district grid draw and battery charge in a rolling window that follows the playhead. -- The agent's one-line reason for every hour, with clamped and fallback hours tagged and each clamp spelled out. +- The agent's one-line reason for every hour, with clamped and fallback hours tagged, each clamp spelled out, and any cooling trim the agent ended early shown with its reason. - The CityLearn KPI scorecard, run cost, call count and clamp and fallback counts. - A compact "How it works" strip under the headline (the agent decides, the safety envelope checks, CityLearn simulates, CityLearn scores) and a "Run it yourself" section with the local commands, including `hyperbolic serve`. @@ -385,18 +488,19 @@ Dark by default with a light toggle, built for phones first, and it respects red ## Tests -`python -m pytest -q` runs fully offline. Envelope rules and runner logic run against a small fake district for speed; the backend, the CLI and the no-control equivalence run against real CityLearn on the shipped dataset; replay and the viewer builder run against CityLearn runs recorded in `tests/fixtures`. Covered: live mode through the real server with fake models (a full run streamed, recorded and replayed identically, the streamed hours matching the replay viewer's data, pause and resume, stop saving a partial run, the budget cap, the key never appearing in any response or file, the 127.0.0.1 binding and host checks, and the Claude options off without a key), the peak limiter (never above the target in randomized trials, trims recorded as clamps, battery before tank, off for older runs, and a CityLearn run that replays identically with its trims), the combined signal, the peak tracker, the reason length guard, the forecast horizons (6, 12 and 24 hours, the 0.2.0 mislabel), the 24 hour outlook never using unseen data, all five prompt versions, the version 4 reference action equal to what the rule-based controller replies, the version 5 smoothing view and strategy (trim hold, slow release, release at the setpoint, gentle charge start, even discharge), a full version 5 CityLearn month with ramping below the baseline, version 5 runs that replay byte for byte and detect a changed observation, the public page's How it works and Run it yourself sections, the spread check (blocked at the top price with its reason, allowed when the coming peak pays, never blocked by a flat weekend, standing losses, spare solar, off for older runs and the rule-based reference), the indoor temperature being the one CityLearn simulated, 24 hour and full-month rule-based dry runs on CityLearn (the full month must still score the 0.4.0 cost, emissions, daily peak, ramping and load factor), a 24 hour version 4 run on CityLearn that replays identically, recorded version 4 runs that replay byte for byte and detect a changed reference policy, a cooling offset moving indoor temperatures, every envelope rule, malformed and schema-breaking replies, fallback on invalid, missing and refused replies, the budget stop, key handling, deterministic replay and tamper detection, replay with CityLearn not even importable, and byte-identical viewer data from the same files in one process or two. +`python -m pytest -q` runs fully offline. Envelope rules and runner logic run against a small fake district for speed; the backend, the CLI and the no-control equivalence run against real CityLearn on the shipped dataset; replay and the viewer builder run against CityLearn runs recorded in `tests/fixtures`. Covered: live mode through the real server with fake models (a full run streamed, recorded and replayed identically, the streamed hours matching the replay viewer's data, pause and resume, stop saving a partial run, the budget cap, the key never appearing in any response or file, the 127.0.0.1 binding and host checks, and the Claude options off without a key), the peak limiter (never above the target in randomized trials, trims recorded as clamps, battery before tank, off for older runs, and a CityLearn run that replays identically with its trims), the combined signal, the peak tracker, the reason length guard, the forecast horizons (6, 12 and 24 hours, the 0.2.0 mislabel), the 24 hour outlook never using unseen data, all six prompt versions, the trim hold (on, hold, ease, release, end at the setpoint, in an empty room and with no baseline cooling, early end with a reason, the rounding allowance, logging, fallback, the deviation and comfort rules still first, off for older runs, and runs that replay byte for byte and detect changed hold settings), the version 6 prompt, observation, `end_trim` schema and request size, the scripted version 6 reply following `strategy_battery`, the viewer showing early ends, a 24 hour version 6 CityLearn run that replays identically and a full version 6 CityLearn month, the exact ramping split and the evaluation control reproducing a recorded CityLearn run, the version 4 reference action equal to what the rule-based controller replies, the version 5 smoothing view and strategy (trim hold, slow release, release at the setpoint, gentle charge start, even discharge), a full version 5 CityLearn month with ramping below the baseline, version 5 runs that replay byte for byte and detect a changed observation, the public page's How it works and Run it yourself sections, the spread check (blocked at the top price with its reason, allowed when the coming peak pays, never blocked by a flat weekend, standing losses, spare solar, off for older runs and the rule-based reference), the indoor temperature being the one CityLearn simulated, 24 hour and full-month rule-based dry runs on CityLearn (the full month must still score the 0.4.0 cost, emissions, daily peak, ramping and load factor), a 24 hour version 4 run on CityLearn that replays identically, recorded version 4 runs that replay byte for byte and detect a changed reference policy, a cooling offset moving indoor temperatures, every envelope rule, malformed and schema-breaking replies, fallback on invalid, missing and refused replies, the budget stop, key handling, deterministic replay and tamper detection, replay with CityLearn not even importable, and byte-identical viewer data from the same files in one process or two. CI (GitHub Actions) runs the tests on Python 3.10 and 3.12 with CPU-only torch, a repository rules check, and an author check that fails if any commit in a push or pull request was not authored by AddisonTech. ## Honest limits - **Simulator only.** CityLearn models buildings with data-driven load profiles and an LSTM for indoor temperature. Beating its reference is evidence worth investigating, not proof of field savings. -- **The rule-based check is not a model result.** It shows the action path can beat the reference and sets the bar for the agent. In 0.3.0 the live agent beat the baseline on cost only and did not beat the rule-based check. In 0.4.0 it beat the rule-based check on daily peak, ramping and load factor but not on cost or emissions. In 0.6.0 it beat it on every one of those. From 0.6.0 the rule-based check is frozen at its 0.4.0 settings so the bar does not move. +- **The rule-based check is not a model result.** It shows the action path can beat the reference and sets the bar for the agent. In 0.3.0 the live agent beat the baseline on cost only and did not beat the rule-based check. In 0.4.0 it beat the rule-based check on daily peak, ramping and load factor but not on cost or emissions. In 0.6.0 it beat it on every one of those. In 0.8.0 it beat it on every KPI except unserved energy in outages, by 0.0006. From 0.6.0 the rule-based check is frozen at its 0.4.0 settings so the bar does not move. - **The scripted version 4 and 5 strategies are not model results either.** They show that the strategy the agent is given beats the rule-based controller when followed literally. A live model reads the same strategy and may follow it more or less closely. - **The peak limiter uses this hour's load.** It reads the draw CityLearn is about to simulate for this hour (plug load, solar, hot water demand, cooling), the equivalent of a meter reading in a real building. The forecast of the day's peak is built only from past days. The agent itself sees only the same values the limiter uses, never the rest of the day. -- **Ramping is a sum of rises.** Smoothing that only spreads a rise over more hours does not lower it, which is why 0.7.0 holds trims instead of tapering them in the envelope. The remaining up-ramp is mostly the baseline's own evening rise and the end of the top-price discharge. -- **The live agent does not carry a plan from hour to hour.** Each hour is a separate call. In 0.7.0 it was asked to hold cooling trims across hours and broke that in 142 of 237 trim ends (the scripted strategy: 4 of 167), so ramping rose to 1.0358 where the scripted strategy reached 0.9966. The plan for 0.8 is to keep the hold in code (see [Version 0.7.0](#version-070)). +- **Ramping is a sum of rises, against CityLearn's own reference.** Smoothing that only spreads a rise over more hours does not lower it, which is why the trims are held rather than tapered. The denominator is built inside each run, so an agent's actions in an outage hour can move it (see [Version 0.8.0](#version-080)). The remaining up-ramp is mostly the baseline's own evening rise and the end of the top-price discharge. +- **The live agent does not carry a plan from hour to hour.** Each hour is a separate call. In 0.7.0 it was asked to hold cooling trims across hours and broke that in 142 of 237 trim ends (the scripted strategy: 4 of 167). From 0.8.0 the envelope holds them in code, and in the 0.8.0 live month it had to correct the agent in 292 of 719 hours. Its battery use is still the agent's own: in 0.7.0 that, not the trims, is what raised ramping above 0.6.0. +- **The 0.8.0 estimates were not live results.** The 0.7.0 replies sent through the 0.8.0 rules are fixed, so they cannot react to what the hold changed, and they do not include the version 6 prompt. The live month came in lower on ramping than that estimate (1.0076 against 1.0249); this release does not split how much of that is the hold and how much the prompt. - **Tuned on one other dataset.** From 0.6.0 the strategy's numbers come from three summer months of the CityLearn 2023 online evaluation set: other weather, loads, carbon and tariff, but the same three buildings and LSTM models, so it says nothing about other building types. The 0.4.0 rule-based controller still carries settings chosen on the first week of the reported month. - **The reference is a modest bar.** No storage use and an ideal-load heat pump. Any sensible battery and tank schedule should beat it on cost. The interesting questions are emissions, peaks and comfort at the same time. - **The comfort reference is not perfect.** CityLearn's own no-control run already leaves 17 percent of occupied hours outside the band, mostly too cool: CityLearn's LSTM runs the rooms colder than the ideal load data assumes. Trimming cooling in those rooms is the largest single gain in 0.6.0, and it rests on that model. diff --git a/docs/assets/app.js b/docs/assets/app.js index e56705e..8e5c4a4 100644 --- a/docs/assets/app.js +++ b/docs/assets/app.js @@ -481,6 +481,18 @@ var what = { cooling: "heat pump", dhw: "hot water tank", battery: "battery" }[parts[1]] || parts[1]; return bname(parts[0]) + " " + what; } + // Cooling trims the model ended early (0.8.0): the envelope holds a trim until the room is + // nearly back at its setpoint, so an early end always comes with the model's reason. + function trimEndList(ends) { + var ul = el("ul", "trim-ends"); + ends.forEach(function (t) { + var li = el("li"); + li.appendChild(el("code", "", "trim ended early")); + li.appendChild(el("span", "", bname(t.building) + " heat pump: " + t.reason)); + ul.appendChild(li); + }); + return ul; + } function renderReasons(hour) { var sc = state.sc, host = $("reasons"); var show = window.innerWidth < 640 ? 3 : 4; @@ -504,6 +516,7 @@ if (d.clamps.length > 5) ul.appendChild(el("li", "", "+" + (d.clamps.length - 5) + " more")); card.appendChild(ul); } + if (d.trim_ends && d.trim_ends.length && k === 0) card.appendChild(trimEndList(d.trim_ends)); host.appendChild(card); if (k === 0 && !reduceMotion) (function (c) { requestAnimationFrame(function () { c.classList.remove("enter"); }); })(card); } diff --git a/docs/assets/version.js b/docs/assets/version.js index 2180fb3..ff8db7b 100644 --- a/docs/assets/version.js +++ b/docs/assets/version.js @@ -1,3 +1,3 @@ // The package version shown in the viewer footer. Kept equal to hyperbolic.__version__ // by tests/test_viewer.py; refresh it with: python -m hyperbolic.viewer --write-version -window.HYPERBOLIC_VERSION = "0.7.0"; +window.HYPERBOLIC_VERSION = "0.8.0"; diff --git a/docs/data/viewer.js b/docs/data/viewer.js index cd90834..cf90511 100644 --- a/docs/data/viewer.js +++ b/docs/data/viewer.js @@ -1 +1 @@ -window.HYPERBOLIC_VIEWER_DATA = {"buildings":[{"id":"Building_1","name":"Building 1"},{"id":"Building_2","name":"Building 2"},{"id":"Building_3","name":"Building 3"}],"comfort_band_k":2.0,"dataset":"citylearn_challenge_2023_phase_2_local_evaluation","kpis":[{"id":"cost_total","name":"Electricity cost","unit":"ratio to no control"},{"id":"carbon_emissions_total","name":"Carbon emissions","unit":"ratio to no control"},{"id":"electricity_consumption_total","name":"Grid import","unit":"ratio to no control"},{"id":"discomfort_proportion","name":"Discomfort","unit":"share of occupied hours"},{"id":"discomfort_hot_proportion","name":"Too warm","unit":"share of occupied hours"},{"id":"discomfort_cold_proportion","name":"Too cool","unit":"share of occupied hours"},{"id":"ramping_average","name":"Ramping","unit":"ratio to no control"},{"id":"daily_peak_average","name":"Daily peak","unit":"ratio to no control"},{"id":"all_time_peak_average","name":"All-time peak","unit":"ratio to no control"},{"id":"daily_one_minus_load_factor_average","name":"1 - daily load factor","unit":"ratio to no control"},{"id":"one_minus_thermal_resilience_proportion","name":"1 - thermal resilience","unit":"share of outage hours"},{"id":"power_outage_normalized_unserved_energy_total","name":"Unserved energy in outages","unit":"share"}],"sample":false,"scenarios":[{"agent":{"actions":{"Building_1":{"battery":[0.0,0.0,0.03,0.05,0.05,0.0,0.0,0.15,0.0,0.0,0.0,0.0,0.1,0.15,0.0,-0.41,-0.05,-0.109,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.1,0.1,0.15,-0.1,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.1,0.02,0.0,0.007,0.002,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.092,-0.5,0.0,0.1,0.0,0.15,0.15,0.1,0.05,0.089,0.02,0.0,0.005,0.0,0.0,0.0,0.0,0.0,0.0,0.002,0.0,0.0,0.0,-0.335,-0.428,-0.08,0.0,0.0,-0.01,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.05,0.01,-0.3,0.0,0.0,0.1,0.0,0.1,0.1,0.03,0.0,0.0,0.0,-0.5,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.097,0.02,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.24,-0.2,-0.35,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.039,0.0,0.0,0.0,0.0,0.0,0.009,0.0,0.002,0.0,0.0,-0.5,-0.25,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,-0.22,0.1,0.0,-0.2,-0.2,-0.07,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.06,0.01,0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.3,-0.48,-0.065,-0.007,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.049,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.5,-0.335,-0.04,0.0,0.0,0.0,0.0,-0.005,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.07,0.0,0.0,0.0,0.019,0.0,0.0,0.0,0.0,-0.5,-0.33,-0.04,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.083,0.0,0.0,0.019,0.0,0.0,0.0,0.0,0.0,-0.066,-0.19,-0.3,0.0,0.0,-0.2,0.0,0.15,0.15,0.15,0.15,0.1,0.129,0.02,0.013,0.0,0.0,-0.4,0.15,0.15,0.05,0.0,0.05,0.0,-0.44,-0.3,-0.058,-0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.004,0.0,0.0,0.0,0.0,0.0,0.0,-0.35,-0.44,-0.057,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.1,0.0,0.029,0.006,-0.16,0.1,0.05,0.0,0.027,0.0,0.0,0.0,-0.17,-0.2,-0.248,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.08,0.02,0.0,0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.17,-0.494,-0.167,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.12,0.053,0.0,0.0,0.0,0.0,0.0,0.01,0.0,0.0,0.0,0.0,0.0,-0.36,-0.4,-0.078,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.04,0.01,0.0,-0.34,0.15,0.15,0.0,0.0,0.069,0.0,0.0,0.01,-0.5,-0.32,-0.037,-0.104,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.5,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.05,0.0,0.0,0.017,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.29,-0.45,-0.095,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.038,0.0,0.0,0.0,0.009,0.0,0.0,0.0,0.0,0.0,-0.334,-0.45,-0.06,0.0,0.0,0.0,0.15,-0.12,0.15,0.0,0.05,0.15,0.15,0.15,0.1,0.1,0.0,0.071,0.0,0.015,0.0,0.0,0.0,0.0,-0.5,-0.33,-0.04,0.0,0.0,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.04,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.5,-0.3,-0.04,0.1,-0.08,0.15,-0.12,0.15,0.15,0.15,0.15,0.15,0.12,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.41,-0.38,-0.149,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.068,0.081,0.079,0.072,0.063,0.072,0.072,0.085,0.293,0.199,0.146,0.306,0.307,0.368,0.461,0.647,0.781,0.477,0.233,0.306,0.642,0.216,0.214,0.41,0.373,0.188,0.096,0.078,0.073,0.094,0.106,0.12,0.0,0.088,0.184,0.277,0.456,0.544,0.619,0.616,0.55,0.679,0.489,0.39,0.319,0.558,0.706,0.433,0.34,0.2,0.2,0.15,0.179,0.172,0.127,0.185,0.241,0.0,0.136,0.073,0.037,0.108,0.151,0.307,0.56,0.49,0.12,0.1,0.0,0.22,0.047,0.036,0.081,0.031,0.052,0.0,0.014,0.0,0.0,0.0,0.072,0.092,0.009,0.103,0.12,0.0,0.097,0.061,0.178,0.274,0.221,0.18,0.142,0.091,0.091,0.206,0.02,0.1,0.119,0.095,0.109,0.055,0.103,0.155,0.083,0.134,0.084,0.152,0.2,0.285,0.376,0.46,0.483,0.525,0.477,0.213,0.218,0.143,0.163,0.101,0.102,0.074,0.183,0.185,0.133,0.121,0.169,0.17,0.21,0.35,0.1,0.151,0.2,0.172,0.295,0.1,0.126,0.31,0.218,0.29,0.245,0.337,0.207,0.185,0.227,0.28,0.199,0.16,0.121,0.103,0.15,0.149,0.25,0.204,0.13,0.2,0.321,0.376,0.454,0.38,0.1,0.168,0.122,0.11,0.138,0.101,0.041,0.05,0.033,0.019,0.008,0.0,0.0,0.069,0.017,0.012,0.101,0.081,0.112,0.153,0.202,0.261,0.317,0.352,0.371,0.388,0.246,0.22,0.13,0.145,0.111,0.064,0.081,0.059,0.048,0.041,0.035,0.024,0.049,0.07,0.203,0.202,0.242,0.307,0.379,0.461,0.535,0.554,0.496,0.495,0.445,0.315,0.255,0.119,0.184,0.286,0.1,0.223,0.1,0.155,0.04,0.122,0.057,0.148,0.114,0.017,0.18,0.2,0.352,0.396,0.52,0.505,0.317,0.561,0.554,0.388,0.285,0.101,0.141,0.094,0.225,0.296,0.153,0.186,0.089,0.154,0.15,0.129,0.267,0.13,0.1,0.219,0.334,0.331,0.689,0.798,0.525,0.521,0.258,0.305,0.237,0.1,0.113,0.256,0.199,0.206,0.135,0.164,0.092,0.139,0.104,0.168,0.052,0.049,0.185,0.225,0.2,0.423,0.503,0.599,0.694,0.669,0.425,0.267,0.25,0.229,0.174,0.309,0.18,0.158,0.126,0.127,0.13,0.083,0.125,0.12,0.194,0.0,0.113,0.153,0.233,0.328,0.408,0.501,0.536,0.475,0.418,0.294,0.298,0.184,0.185,0.11,0.213,0.274,0.212,0.092,0.122,0.093,0.125,0.19,0.153,0.1,0.153,0.211,0.1,0.146,0.19,0.248,0.3,0.32,0.43,0.45,0.275,0.237,0.164,0.16,0.208,0.275,0.219,0.127,0.18,0.08,0.127,0.156,0.22,0.121,0.14,0.236,0.331,0.226,0.519,0.51,0.54,0.616,0.35,0.31,0.21,0.303,0.207,0.153,0.202,0.28,0.239,0.189,0.079,0.135,0.138,0.245,0.1,0.1,0.15,0.236,0.566,0.311,0.303,0.124,0.214,0.302,0.282,0.205,0.209,0.134,0.09,0.0,0.058,0.0,0.035,0.027,0.017,0.008,0.018,0.033,0.066,0.103,0.159,0.406,0.706,0.459,0.53,0.909,0.972,0.66,0.444,0.243,0.089,0.176,0.233,0.193,0.234,0.305,0.249,0.195,0.161,0.227,0.1,0.162,0.013,0.052,0.142,0.188,0.27,0.261,0.352,0.482,0.471,0.433,0.312,0.293,0.176,0.1,0.05,0.09,0.152,0.228,0.1,0.163,0.1,0.084,0.092,0.09,0.032,0.0,0.014,0.059,0.089,0.01,0.115,0.12,0.147,0.122,0.118,0.09,0.08,0.064,0.064,0.053,0.115,0.203,0.12,0.12,0.149,0.131,0.09,0.161,0.108,0.013,0.0,0.06,0.07,0.106,0.143,0.236,0.187,0.053,0.11,0.082,0.088,0.084,0.074,0.134,0.135,0.186,0.12,0.134,0.1,0.099,0.101,0.116,0.124,0.0,0.124,0.209,0.296,0.3,0.354,0.44,0.708,0.687,0.378,0.295,0.223,0.1,0.118,0.07,0.179,0.257,0.135,0.164,0.07,0.177,0.05,0.166,0.12,0.1,0.196,0.409,0.33,0.342,0.485,0.831,0.895,0.553,0.45,0.387,0.308,0.1,0.2,0.162,0.205,0.0,0.079,0.0,0.063,0.056,0.074,0.209,0.334,0.325,0.365,0.398,0.447,0.507,0.606,0.693,0.707,0.537,0.405,0.36,0.274,0.21,0.349,0.235,0.176,0.15,0.085,0.063,0.13,0.145,0.179,0.208,0.0,0.145,0.2,0.203,0.468,0.448,0.14,0.54,0.751,0.623,0.316,0.346,0.164,0.159,0.143,0.145,0.188,0.231,0.153,0.132,0.16,0.227,0.23,0.204,0.174,0.0,0.137,0.1,0.2,0.232,0.345,0.433,0.427,0.284,0.1,0.306,0.276,0.168,0.1,0.07,0.186,0.263,0.233,0.193,0.18,0.181,0.166,0.1,0.17,0.093,0.002,0.211,0.194,0.339,0.29,0.533,0.609,0.542,0.327,0.307,0.288,0.233,0.19,0.272,0.2,0.2,0.21,0.166,0.141,0.128,0.11,0.152,0.189,0.1,0.116,0.256,0.1,0.097,0.401,0.707,0.725,0.34,0.349,0.598,0.404,0.324,0.1,0.38,0.232,0.164,0.165,0.115,0.132,0.109,0.22,0.14,0.276,0.134,0.1,0.584,0.281,0.452,0.561,0.708,0.584,0.58,0.592,0.453,0.269,0.337,0.1,0.092,0.225,0.285,0.18,0.17,0.116,0.14,0.18,0.198,0.233,0.1,0.386,0.387,0.654,0.491,0.525,0.627,0.691,0.463,0.204,0.426,0.383,0.515,0.5,0.293,0.1,0.093,0.0,0.049,0.053,0.0,0.073,0.122,0.215,0.321,0.532,0.388,0.607,0.556,0.659,0.855,0.832,0.678,0.518,0.275,0.3,0.133,0.115],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_2":{"battery":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.0,0.0,0.0,0.0,0.15,0.0,-0.195,-0.02,-0.104,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,-0.1,0.1,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.138,0.03,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.107,-0.18,-0.45,0.0,0.15,0.0,0.15,0.15,0.1,0.15,0.1,0.03,0.0,0.009,0.002,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.29,-0.293,-0.23,0.0,0.0,-0.03,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.047,0.01,-0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.23,-0.404,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.1,0.15,0.15,0.0,0.088,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.25,-0.25,-0.28,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.012,0.0,0.0,0.0,0.0,-0.5,-0.24,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.1,0.15,0.1,-0.4,0.0,0.0,-0.1,-0.05,-0.02,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.068,0.01,0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.29,-0.315,-0.035,0.0,0.0,0.0,-0.005,0.15,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.3,-0.45,-0.088,0.0,0.0,0.0,0.0,-0.01,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.409,-0.18,-0.2,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.253,-0.255,-0.29,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,0.15,0.058,0.01,0.0,0.0,-0.5,0.15,0.0,0.1,0.0,0.15,0.0,-0.31,-0.3,-0.087,-0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.004,0.0,0.0,0.0,0.0,0.0,0.0,-0.35,-0.275,-0.198,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.0,0.0,0.09,0.02,-0.5,0.15,0.15,0.15,0.0,0.0,0.08,-0.1,-0.17,-0.144,-0.104,0.0,0.0,0.15,0.0,0.15,0.15,0.13,0.02,0.01,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.14,-0.194,-0.099,0.0,0.0,0.15,0.0,0.15,0.1,0.07,0.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.39,-0.31,-0.12,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.145,0.03,0.009,0.0,-0.09,0.0,0.082,0.0,0.0,0.018,0.0,0.0,0.0,-0.5,-0.218,-0.125,-0.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.5,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.05,0.0,0.0,0.017,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.395,-0.37,-0.07,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.038,0.0,0.0,0.0,0.0,0.0,0.009,0.0,-0.252,-0.25,-0.27,0.0,0.0,0.0,0.15,-0.18,0.15,0.0,0.05,0.15,0.15,0.15,0.1,0.1,0.0,0.067,0.0,0.0,0.0,0.0,0.0,0.0,-0.33,-0.44,-0.06,0.0,0.0,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.04,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.4,-0.385,-0.05,0.1,-0.08,0.15,-0.12,0.15,0.15,0.15,0.15,0.15,0.12,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.46,-0.34,-0.144,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.497,0.159,0.233,0.3,0.401,0.474,0.604,0.696,0.671,0.622,0.462,0.276,0.346,0.362,0.32,0.06,0.011,0.089,0.129,0.006,0.0,0.0,0.0,0.023,0.453,0.189,0.278,0.428,0.47,0.728,0.838,0.984,0.64,0.601,0.479,0.256,0.203,0.192,0.199,0.131,0.083,0.057,0.04,0.028,0.02,0.014,0.007,0.026,0.074,0.121,0.181,0.255,0.271,0.448,0.403,0.167,0.204,0.35,0.152,0.099,0.107,0.178,0.15,0.035,0.007,0.02,0.103,0.073,0.0,0.0,0.0,0.0,0.0,0.027,0.059,0.069,0.091,0.111,0.164,0.176,0.235,0.236,0.167,0.104,0.068,0.055,0.077,0.118,0.147,0.02,0.0,0.0,0.0,0.0,0.0,0.215,0.099,0.144,0.392,0.456,0.451,0.487,0.575,0.586,0.585,0.547,0.433,0.23,0.185,0.145,0.113,0.082,0.145,0.041,0.0,0.0,0.0,0.0,0.0,0.065,0.137,0.171,0.21,0.261,0.458,0.543,0.448,0.452,0.486,0.469,0.366,0.204,0.156,0.13,0.097,0.227,0.167,0.0,0.0,0.0,0.0,0.0,0.134,0.064,0.19,0.416,0.169,0.255,0.342,0.425,0.541,0.535,0.527,0.457,0.31,0.193,0.169,0.14,0.148,0.214,0.256,0.222,0.0,0.0,0.0,0.0,0.0,0.104,0.085,0.137,0.211,0.28,0.346,0.408,0.495,0.485,0.493,0.452,0.35,0.22,0.169,0.15,0.129,0.082,0.053,0.036,0.1,0.013,0.007,0.002,0.04,0.104,0.181,0.224,0.267,0.328,0.384,0.448,0.541,0.521,0.498,0.442,0.343,0.201,0.154,0.123,0.188,0.067,0.048,0.032,0.02,0.012,0.008,0.004,0.035,0.093,0.203,0.276,0.346,0.419,0.502,0.719,0.698,0.695,0.685,0.622,0.476,0.313,0.217,0.152,0.205,0.247,0.076,0.009,0.019,0.021,0.021,0.02,0.046,0.219,0.567,0.25,0.452,0.446,0.441,0.525,0.611,0.588,0.569,0.522,0.415,0.267,0.195,0.143,0.147,0.182,0.251,0.093,0.0,0.0,0.005,0.008,0.051,0.121,0.208,0.423,0.295,0.362,0.421,0.491,0.596,0.604,0.605,0.639,0.474,0.282,0.218,0.189,0.297,0.135,0.009,0.017,0.021,0.016,0.013,0.01,0.049,0.111,0.168,0.194,0.221,0.277,0.335,0.402,0.81,0.805,0.339,0.452,0.41,0.277,0.259,0.226,0.248,0.149,0.181,0.16,0.006,0.0,0.0,0.0,0.047,0.119,0.452,0.243,0.293,0.347,0.399,0.446,0.525,0.527,0.529,0.758,0.415,0.293,0.196,0.161,0.127,0.115,0.219,0.132,0.0,0.0,0.002,0.004,0.062,0.139,0.288,0.509,0.578,0.316,0.379,0.479,0.593,0.602,0.608,0.574,0.48,0.319,0.278,0.317,0.184,0.117,0.138,0.08,0.006,0.015,0.013,0.012,0.059,0.129,0.191,0.247,0.3,0.379,0.459,0.536,0.879,0.917,0.515,0.511,0.447,0.308,0.218,0.165,0.121,0.091,0.169,0.187,0.0,0.005,0.037,0.012,0.045,0.156,0.173,0.213,0.287,0.364,0.444,0.503,0.587,0.564,0.515,0.495,0.363,0.268,0.2,0.164,0.118,0.087,0.2,0.173,0.0,0.002,0.008,0.01,0.333,0.17,0.269,0.529,0.128,0.311,0.635,0.476,0.692,0.62,0.364,0.328,0.227,0.154,0.118,0.095,0.069,0.109,0.226,0.089,0.0,0.0,0.0,0.0,0.008,0.064,0.046,0.07,0.082,0.1,0.127,0.174,0.225,0.153,0.134,0.095,0.064,0.039,0.035,0.028,0.018,0.052,0.137,0.045,0.0,0.0,0.0,0.0,0.001,0.017,0.031,0.158,0.227,0.038,0.084,0.116,0.146,0.149,0.148,0.118,0.136,0.074,0.059,0.048,0.079,0.16,0.21,0.039,0.0,0.0,0.0,0.0,0.011,0.072,0.121,0.177,0.231,0.303,0.367,0.426,0.521,0.729,0.595,0.349,0.526,0.207,0.168,0.14,0.106,0.077,0.197,0.158,0.0,0.0,0.0,0.0,0.045,0.428,0.357,0.505,0.299,0.433,0.7,0.6,0.948,0.972,0.372,0.507,0.455,0.31,0.226,0.189,0.282,0.343,0.037,0.003,0.013,0.018,0.013,0.011,0.057,0.206,0.29,0.445,0.507,0.768,0.71,0.455,0.667,0.706,0.693,0.605,0.482,0.321,0.232,0.179,0.128,0.26,0.28,0.0,0.007,0.013,0.017,0.017,0.066,0.44,0.364,0.2,0.621,0.38,0.499,0.859,0.904,0.565,0.896,0.451,0.623,0.292,0.337,0.209,0.056,0.27,0.233,0.0,0.0,0.013,0.02,0.022,0.182,0.175,0.17,0.166,0.204,0.373,0.505,0.377,0.654,0.685,0.688,0.262,0.187,0.161,0.145,0.116,0.133,0.112,0.063,0.026,0.029,0.027,0.024,0.021,0.053,0.115,0.189,0.233,0.285,0.335,0.412,0.443,0.522,0.525,0.529,0.498,0.388,0.281,0.232,0.206,0.453,0.103,0.1,0.073,0.008,0.02,0.017,0.016,0.07,0.194,0.429,0.306,0.363,0.551,0.478,0.592,0.65,0.68,0.71,0.688,0.947,0.341,0.291,0.249,0.221,0.183,0.162,0.096,0.046,0.024,0.025,0.022,0.089,0.179,0.336,0.339,0.392,0.469,0.562,0.639,0.77,0.789,0.839,0.855,0.649,0.385,0.286,0.364,0.291,0.295,0.169,0.208,0.0,0.034,0.033,0.032,0.298,0.142,0.404,0.355,0.377,0.492,0.589,0.768,1.0,0.907,0.721,0.6,0.54,0.435,0.265,0.217,0.159,0.121,0.179,0.172,0.0,0.032,0.031,0.034,0.067,0.15,0.278,0.375,0.464,0.572,0.692,0.797,0.933,0.925,0.856,0.729,0.663,0.344,0.264,0.207,0.137],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_3":{"battery":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,-0.07,-0.03,-0.116,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,0.1,0.0,0.1,-0.1,0.1,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.15,0.15,0.096,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.04,0.0,-0.075,-0.127,-0.25,0.0,0.1,0.0,0.15,0.1,0.05,0.05,0.064,0.035,0.0,0.02,0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.289,-0.371,-0.385,0.0,-0.18,-0.09,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,-0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.376,-0.23,-0.2,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.1,0.15,0.15,0.1,0.1,0.15,0.0,0.15,0.0,0.1,0.0,0.089,0.04,0.0,-0.23,-0.49,-0.34,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.1,0.129,0.0,0.0,0.0,0.0,0.07,0.0,0.0,0.0,0.05,-0.5,-0.45,-0.3,-0.08,-0.039,-0.018,-0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.1,0.15,0.1,-0.21,0.1,0.0,-0.15,-0.15,-0.07,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.15,0.15,0.05,0.0,0.0,0.1,0.0,0.0,0.118,0.0,0.0,-0.2,-0.41,-0.367,-0.17,0.0,0.0,0.0,-0.088,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.0,0.0,0.0,0.1,0.07,0.03,0.0,-0.34,-0.49,-0.29,0.0,0.0,0.0,0.0,-0.14,0.15,0.15,0.15,0.15,0.15,0.12,0.15,0.15,0.0,0.0,0.15,0.05,0.06,0.03,0.0,0.0,-0.35,-0.49,-0.29,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.05,0.05,0.0,0.05,0.0,-0.326,-0.44,-0.32,0.0,0.0,-0.1,0.0,0.15,0.15,0.15,0.15,0.1,0.2,0.15,0.15,0.0,0.1,-0.4,0.15,0.15,0.1,0.0,0.05,0.0,-0.38,-0.4,-0.285,-0.13,-0.067,-0.033,-0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.1,0.0,0.0,0.0,0.08,0.0,0.0,0.1,-0.35,-0.37,-0.29,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.1,0.0,0.15,0.128,-0.22,0.05,0.1,0.1,0.07,0.0,0.045,0.0,-0.24,-0.223,-0.2,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.03,0.0,0.049,0.0,0.0,0.0,0.0,0.0,0.035,0.0,0.0,0.0,0.0,-0.15,-0.253,-0.49,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.1,0.1,0.0,0.06,0.0,0.0,0.03,0.02,0.0,0.0,0.0,0.0,0.0,-0.35,-0.4,-0.33,-0.1,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.2,0.15,0.137,0.07,-0.43,0.15,0.15,0.0,0.0,0.1,0.08,0.0,0.03,-0.49,-0.45,-0.227,-0.21,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.34,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.15,0.15,0.133,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,-0.287,-0.38,-0.36,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.06,0.0,-0.371,-0.36,-0.33,0.0,0.0,0.0,0.15,-0.22,0.15,0.0,0.05,0.15,0.15,0.15,0.05,0.15,0.1,0.1,0.0,0.1,0.0,0.0,0.1,0.0,-0.326,-0.49,-0.25,-0.12,-0.06,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.15,0.1,0.0,0.0,0.0,0.05,0.0,0.07,0.0,-0.49,-0.458,-0.22,0.1,-0.1,0.1,-0.14,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.128,0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.49,-0.37,-0.359,-0.07,-0.036,-0.018,-0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.053,0.019,0.01,0.005,0.0,0.0,0.053,0.103,0.269,0.351,0.319,0.36,0.435,0.526,0.599,0.66,0.7,0.5,0.351,0.283,0.253,0.224,0.27,0.328,0.139,0.081,0.058,0.018,0.009,0.039,0.033,0.05,0.13,0.225,0.296,0.373,0.448,0.537,0.644,0.819,0.911,0.679,0.385,0.475,0.39,0.35,0.149,0.05,0.06,0.051,0.043,0.036,0.032,0.026,0.031,0.071,0.173,0.176,0.322,0.266,0.246,0.394,0.422,0.431,0.316,0.24,0.301,0.234,0.201,0.167,0.104,0.005,0.02,0.024,0.021,0.019,0.013,0.012,0.121,0.041,0.144,0.078,0.084,0.076,0.092,0.097,0.114,0.147,0.171,0.2,0.181,0.14,0.172,0.193,0.148,0.078,0.045,0.035,0.028,0.022,0.013,0.0,0.001,0.03,0.054,0.088,0.13,0.178,0.266,0.342,0.404,0.468,0.504,0.527,0.449,0.494,0.297,0.105,0.156,0.106,0.084,0.062,0.048,0.036,0.02,0.019,0.098,0.114,0.234,0.27,0.301,0.333,0.386,0.449,0.52,0.535,0.596,0.4,0.251,0.228,0.345,0.213,0.113,0.106,0.082,0.1,0.094,0.082,0.041,0.028,0.055,0.116,0.125,0.152,0.199,0.267,0.349,0.414,0.48,0.5,0.54,0.527,0.436,0.314,0.239,0.236,0.151,0.115,0.082,0.06,0.045,0.033,0.016,0.018,0.081,0.083,0.089,0.124,0.17,0.224,0.285,0.451,0.53,0.56,0.583,0.6,0.514,0.355,0.315,0.242,0.172,0.128,0.097,0.078,0.061,0.052,0.043,0.036,0.054,0.09,0.134,0.172,0.233,0.306,0.364,0.534,0.549,0.506,0.481,0.478,0.476,0.308,0.131,0.191,0.121,0.113,0.086,0.067,0.053,0.043,0.033,0.032,0.047,0.079,0.136,0.192,0.266,0.326,0.41,0.472,0.549,0.694,0.84,0.7,0.648,0.552,0.348,0.279,0.192,0.074,0.197,0.18,0.131,0.0,0.0,0.026,0.362,0.051,0.139,0.192,0.244,0.322,0.47,0.561,0.599,0.621,0.578,0.503,0.332,0.476,0.3,0.3,0.098,0.018,0.064,0.078,0.096,0.087,0.08,0.067,0.058,0.074,0.169,0.235,0.274,0.333,0.4,0.48,0.542,0.587,0.535,0.55,0.341,0.419,0.5,0.537,0.451,0.1,0.078,0.0,0.045,0.037,0.042,0.038,0.137,0.091,0.151,0.193,0.229,0.272,0.328,0.394,0.476,0.479,0.582,0.573,0.428,0.352,0.301,0.369,0.272,0.035,0.09,0.073,0.059,0.048,0.033,0.033,0.055,0.097,0.124,0.166,0.216,0.274,0.329,0.381,0.429,0.513,0.588,0.5,0.26,0.447,0.311,0.222,0.217,0.04,0.087,0.072,0.061,0.052,0.038,0.035,0.061,0.248,0.187,0.213,0.269,0.336,0.391,0.421,0.508,0.616,0.6,0.622,0.528,0.38,0.301,0.234,0.196,0.321,0.12,0.012,0.071,0.062,0.054,0.047,0.066,0.1,0.146,0.264,0.339,0.41,0.491,0.516,0.582,0.622,0.614,0.568,0.457,0.366,0.295,0.243,0.1,0.139,0.086,0.089,0.076,0.065,0.055,0.049,0.072,0.205,0.269,0.326,0.412,0.43,0.691,0.594,0.592,0.587,0.563,0.454,0.415,0.417,0.39,0.318,0.23,0.01,0.068,0.063,0.058,0.053,0.048,0.044,0.066,0.101,0.146,0.208,0.264,0.316,0.373,0.412,0.408,0.497,0.479,0.394,0.237,0.204,0.168,0.174,0.1,0.04,0.055,0.052,0.049,0.045,0.038,0.037,0.157,0.089,0.097,0.058,0.063,0.079,0.098,0.114,0.127,0.134,0.175,0.101,0.075,0.065,0.07,0.076,0.053,0.051,0.051,0.044,0.037,0.034,0.028,0.107,0.045,0.037,0.078,0.091,0.106,0.12,0.137,0.164,0.18,0.17,0.161,0.212,0.182,0.142,0.138,0.294,0.049,0.0,0.037,0.034,0.033,0.128,0.035,0.029,0.051,0.242,0.175,0.199,0.243,0.314,0.376,0.441,0.506,0.55,0.549,0.468,0.266,0.245,0.086,0.202,0.153,0.166,0.086,0.07,0.061,0.053,0.041,0.038,0.131,0.125,0.334,0.254,0.277,0.339,0.41,0.487,0.523,0.637,0.751,0.699,0.55,0.567,0.421,0.338,0.208,0.137,0.045,0.093,0.069,0.065,0.054,0.049,0.071,0.252,0.213,0.267,0.341,0.423,0.596,0.667,0.769,0.753,0.811,0.526,0.399,0.37,0.318,0.262,0.212,0.053,0.136,0.1,0.086,0.092,0.075,0.075,0.072,0.106,0.177,0.283,0.37,0.442,0.538,0.544,0.623,0.732,0.809,0.624,0.632,0.439,0.145,0.17,0.119,0.145,0.1,0.1,0.091,0.03,0.058,0.051,0.073,0.107,0.178,0.212,0.234,0.288,0.347,0.394,0.437,0.368,0.409,0.419,0.3,0.365,0.204,0.197,0.16,0.03,0.077,0.071,0.065,0.06,0.055,0.052,0.062,0.09,0.173,0.208,0.296,0.367,0.441,0.48,0.399,0.57,0.572,0.559,0.408,0.2,0.358,0.21,0.3,0.141,0.111,0.086,0.042,0.062,0.052,0.253,0.1,0.121,0.272,0.261,0.285,0.342,0.412,0.479,0.557,0.626,0.668,0.612,0.606,0.581,0.405,0.317,0.1,0.11,0.135,0.096,0.092,0.08,0.066,0.061,0.126,0.164,0.315,0.45,0.543,0.468,0.553,0.655,0.676,0.837,0.702,0.713,0.561,0.372,0.354,0.405,0.13,0.146,0.097,0.11,0.093,0.089,0.08,0.07,0.096,0.152,0.2,0.262,0.344,0.683,0.632,0.634,0.697,0.748,0.747,0.724,0.604,0.463,0.342,0.273,0.2,0.089,0.127,0.116,0.086,0.091,0.084,0.074,0.086,0.129,0.202,0.404,0.34,0.445,0.704,0.82,0.824,1.0,0.958,0.739,0.626,0.306,0.3,0.123,0.34],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]}},"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.223,0.262,0.301,0.301,0.301,0.418,0.418,0.418,0.418,0.418,0.496,0.612,0.612,0.253,0.209,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.395,0.472,0.589,0.501,0.617,0.617,0.734,0.734,0.734,0.734,0.734,0.85,0.928,0.943,0.943,0.948,0.95,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.948,0.867,0.433,0.433,0.511,0.511,0.627,0.744,0.822,0.861,0.93,0.946,0.945,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.95,0.949,0.949,0.949,0.654,0.28,0.209,0.209,0.209,0.2,0.2,0.317,0.434,0.55,0.667,0.784,0.9,0.939,0.947,0.681,0.681,0.681,0.759,0.759,0.836,0.914,0.938,0.937,0.937,0.937,0.503,0.503,0.503,0.503,0.503,0.62,0.737,0.853,0.928,0.944,0.944,0.949,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.735,0.558,0.25,0.25,0.367,0.367,0.367,0.483,0.483,0.6,0.717,0.833,0.911,0.941,0.941,0.941,0.941,0.941,0.941,0.948,0.948,0.949,0.949,0.949,0.548,0.327,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.55,0.667,0.745,0.55,0.628,0.628,0.451,0.274,0.212,0.329,0.329,0.329,0.445,0.562,0.679,0.772,0.889,0.936,0.943,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.682,0.265,0.207,0.201,0.201,0.201,0.201,0.2,0.317,0.434,0.551,0.667,0.784,0.901,0.939,0.947,0.947,0.947,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.535,0.24,0.204,0.204,0.204,0.204,0.204,0.2,0.317,0.434,0.55,0.667,0.784,0.877,0.877,0.931,0.931,0.931,0.931,0.946,0.946,0.946,0.945,0.945,0.533,0.241,0.206,0.206,0.206,0.206,0.206,0.206,0.284,0.284,0.4,0.517,0.634,0.751,0.867,0.932,0.932,0.931,0.946,0.946,0.946,0.946,0.945,0.945,0.887,0.719,0.453,0.453,0.453,0.276,0.276,0.393,0.51,0.626,0.743,0.821,0.921,0.937,0.947,0.947,0.947,0.596,0.713,0.83,0.868,0.868,0.907,0.907,0.523,0.257,0.207,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.64,0.256,0.206,0.323,0.323,0.4,0.4,0.517,0.634,0.751,0.844,0.844,0.922,0.922,0.944,0.948,0.807,0.884,0.923,0.923,0.944,0.944,0.944,0.944,0.793,0.616,0.397,0.397,0.397,0.513,0.513,0.63,0.747,0.863,0.926,0.941,0.941,0.948,0.948,0.948,0.948,0.948,0.947,0.947,0.947,0.947,0.947,0.947,0.796,0.367,0.22,0.22,0.22,0.336,0.336,0.453,0.57,0.687,0.803,0.897,0.938,0.938,0.938,0.938,0.938,0.938,0.945,0.945,0.945,0.945,0.945,0.945,0.628,0.278,0.209,0.209,0.209,0.209,0.325,0.442,0.559,0.676,0.792,0.909,0.94,0.948,0.948,0.648,0.765,0.881,0.881,0.881,0.935,0.935,0.934,0.942,0.52,0.237,0.204,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.433,0.55,0.667,0.784,0.35,0.35,0.466,0.466,0.544,0.661,0.778,0.894,0.894,0.933,0.933,0.933,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.945,0.945,0.945,0.945,0.688,0.296,0.212,0.212,0.212,0.212,0.212,0.212,0.329,0.445,0.562,0.679,0.796,0.912,0.942,0.941,0.941,0.941,0.948,0.948,0.948,0.948,0.948,0.948,0.653,0.26,0.207,0.207,0.207,0.207,0.324,0.218,0.335,0.335,0.373,0.49,0.607,0.724,0.802,0.879,0.879,0.934,0.934,0.946,0.946,0.946,0.945,0.945,0.533,0.241,0.206,0.206,0.206,0.323,0.323,0.323,0.44,0.556,0.673,0.79,0.821,0.899,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.503,0.237,0.202,0.28,0.209,0.326,0.219,0.336,0.453,0.57,0.686,0.803,0.896,0.935,0.943,0.943,0.943,0.943,0.943,0.942,0.942,0.942,0.942,0.942,0.583,0.249,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.825,0.799,0.773,1.001,1.608,1.032,4.653,0.483,-0.357,1.817,0.598,0.716,0.945,1.462,2.873,2.106,1.419,2.336,3.167,1.823,1.303,2.042,1.887,1.125,0.744,0.671,1.655,1.752,1.766,0.572,-0.361,-0.07,0.819,1.462,6.669,3.988,2.029,1.876,2.708,2.645,3.119,2.36,3.602,2.93,3.446,2.155,1.751,1.175,1.173,0.951,1.085,1.056,0.825,1.281,1.785,-0.042,0.046,-0.411,-0.437,-0.653,0.437,2.823,3.701,2.159,1.48,1.244,0.611,2.038,1.007,1.086,0.69,0.502,0.571,0.335,0.405,1.368,0.36,0.501,0.441,0.178,0.139,0.075,0.006,-0.103,-0.175,-0.381,0.065,0.424,1.307,1.666,1.519,1.417,1.531,1.536,0.602,1.06,0.907,0.74,1.717,0.573,1.501,2.044,0.608,0.055,-0.671,-0.296,-0.144,0.399,0.651,0.193,0.08,2.787,2.331,1.63,1.31,0.951,1.764,1.505,1.273,1.156,1.602,1.607,1.06,1.483,4.718,0.799,0.646,5.944,-0.426,-0.21,-0.037,-0.394,0.569,-0.485,-0.07,1.401,1.815,2.83,8.701,2.165,1.77,1.614,1.787,2.057,1.223,0.991,0.868,0.767,1.873,0.998,2.518,0.266,-0.238,5.353,1.286,1.054,1.116,0.173,-0.219,0.989,1.58,1.651,1.998,0.959,1.027,0.561,0.988,0.93,0.881,0.682,0.477,3.198,0.452,0.203,1.584,-0.29,-0.416,-0.411,-0.306,0.182,0.323,-0.918,0.14,1.108,1.692,1.963,1.378,1.142,0.818,0.619,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.384,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.473,1.79,2.23,2.226,2.274,1.659,1.124,1.239,1.57,0.768,1.262,0.98,0.987,0.513,2.232,0.536,0.668,0.575,-0.181,0.275,0.14,0.787,-0.107,1.453,1.432,4.752,1.721,3.365,2.949,2.338,1.022,2.106,1.24,1.776,1.967,1.478,1.314,0.735,1.004,0.954,1.665,1.897,0.373,-0.141,0.054,0.272,0.355,7.039,0.865,2.135,2.691,1.895,1.773,1.42,0.775,1.323,2.365,1.668,1.697,1.404,1.522,0.89,0.952,0.762,0.8,-0.092,-0.286,0.776,0.933,-0.316,0.716,1.03,2.079,6.952,3.526,3.051,2.429,2.173,1.622,1.288,2.123,1.593,1.5,1.367,1.37,1.28,0.69,1.055,0.545,0.496,-0.687,-0.421,-0.348,-0.121,0.188,0.644,0.695,1.671,1.785,2.153,2.822,2.449,1.21,1.182,1.613,1.228,1.976,1.721,1.226,1.349,1.227,1.561,3.362,0.291,-0.245,-0.371,-0.205,1.625,1.671,-0.246,0.045,0.128,0.213,2.194,2.593,1.077,1.519,1.759,1.512,1.708,1.979,1.585,1.301,2.218,0.717,0.84,0.753,0.246,0.327,0.208,0.055,0.283,0.005,2.107,-0.075,0.744,3.514,2.003,1.866,1.474,3.58,1.274,0.984,1.183,1.504,1.334,1.125,0.66,0.901,0.91,2.877,0.277,0.558,0.18,0.068,4.868,0.364,0.601,-0.149,3.461,2.746,1.976,1.843,2.38,1.544,0.852,0.356,0.591,0.353,0.496,0.46,0.418,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.838,1.27,1.438,1.665,1.816,2.095,1.859,1.651,1.176,3.996,1.378,0.809,-0.034,-0.098,0.632,0.101,0.589,4.299,0.693,0.241,0.345,2.05,2.119,3.617,1.664,3.563,1.247,1.243,1.477,1.688,0.762,2.234,0.76,0.789,0.743,0.055,0.828,1.138,-0.113,0.011,0.686,-0.012,0.981,0.06,0.121,0.092,1.271,2.067,1.88,1.119,1.404,1.293,1.324,2.552,0.911,0.843,1.763,2.043,0.774,2.247,1.33,-0.023,-0.337,0.481,-0.166,-0.062,0.121,0.101,0.119,1.037,0.888,1.151,1.608,1.902,1.664,3.253,1.629,1.613,1.243,1.077,1.167,0.752,0.722,0.544,0.213,-0.616,-0.313,1.116,0.465,0.291,1.064,0.086,1.186,2.586,4.624,2.238,1.363,2.24,1.563,1.142,1.587,1.906,1.404,1.157,0.657,2.685,-0.178,1.338,1.156,-0.266,0.317,2.656,0.602,0.224,0.984,1.376,2.096,2.07,2.252,2.184,2.533,1.046,1.243,1.04,1.197,0.353,0.677,0.35,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.39,1.28,4.062,7.971,2.747,2.362,2.203,2.727,2.443,1.928,1.857,1.322,1.079,0.969,0.69,0.608,0.884,0.945,1.069,0.91,0.158,-0.139,0.805,0.297,7.091,4.276,0.019,1.982,1.171,3.489,2.216,2.013,1.617,1.913,3.124,1.471,1.13,1.468,0.981,0.892,1.063,4.255,2.277,2.019,0.635,-0.5,0.882,-0.399,-0.103,0.136,1.658,0.2,0.312,0.778,0.718,3.574,1.744,2.23,1.912,1.142,1.619,1.932,1.807,2.047,2.585,1.807,1.742,1.17,0.39,-0.022,-0.508,0.011,-0.262,0.57,0.181,0.23,0.472,2.411,1.711,1.991,2.574,1.91,0.803,1.972,1.176,1.341,1.712,1.501,1.424,1.207,1.127,1.001,0.638,-0.307,-0.473,-0.115,-0.814,-0.845,0.954,0.633,2.296,1.584,1.98,2.977,3.004,5.466,0.832,2.414,1.804,1.525,1.528,0.955,1.223,1.982,3.61,1.724,0.768,-0.199,-0.562,2.156,0.256,0.736,3.042,0.372,1.414,2.177,3.175,3.728,2.307,8.012,1.33,1.251,1.778,2.014,2.939,1.447,0.991,0.957,1.757,1.031,0.766,0.813,0.69,1.379,1.5,0.84,1.08,0.288,2.008,3.067,2.283,2.846,2.022,2.571,2.628,1.56,0.765,0.736,0.351,0.552,0.567,0.349,0.613,1.808,1.644,3.225,3.406,0.521,1.332,1.346,2.203,2.816,3.384,2.993,2.488,1.991,2.435,2.11,0.894],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.13,21.16,21.58,21.93,21.8,21.94,22.24,24.08,24.2,24.32,24.27,23.56,23.61,23.4,23.46,23.79,22.65,23.31,23.02,23.21,20.48,18.7,18.9,18.55,19.4,19.02,19.5,19.04,19.12,19.75,19.4,19.48,22.3,22.03,23.53,24.47,24.28,24.26,22.69,20.53,20.5,22.55,22.97,24.54,20.79,22.61,23.11,22.65,23.43,23.16,24.05,24.03,24.32,24.51,24.75,24.01,24.06,25.18,24.35,24.54,25.96,25.16,25.89,24.69,23.76,23.87,23.82,23.74,24.11,23.96,21.77,23.71,22.18,22.0,22.06,21.7,22.4,21.86,21.59,22.81,22.81,24.08,24.13,24.39,24.19,23.86,23.38,23.3,22.89,22.74,23.72,23.33,23.9,23.51,24.01,23.76,23.97,21.84,21.63,21.85,21.92,21.46,21.81,22.02,21.3,23.57,24.08,24.35,25.18,24.66,26.55,27.11,25.77,26.31,24.72,24.72,23.36,23.92,23.72,22.73,21.52,21.73,21.74,22.0,22.25,21.91,22.34,21.9,22.67,23.88,24.11,23.78,23.79,23.53,24.23,26.45,26.45,26.81,26.63,26.18,26.42,27.12,27.1,27.28,27.55,27.84,28.13,28.32,26.82,27.74,28.34,27.55,28.09,28.15,28.03,27.86,27.46,27.09,26.71,26.37,26.06,26.68,26.26,26.74,26.46,26.57,26.94,26.63,26.78,26.85,26.91,26.98,27.18,27.08,27.21,25.89,26.12,25.9,25.51,25.13,24.66,24.15,23.8,23.88,23.37,23.02,22.99,22.99,24.02,23.07,21.44,22.74,20.6,21.79,20.8,22.21,21.05,22.2,21.62,22.71,24.5,23.44,24.09,23.3,23.56,23.1,23.31,24.49,22.34,22.11,22.21,22.39,23.75,23.27,23.78,21.66,20.63,21.53,20.9,21.96,20.99,21.23,21.71,20.6,22.3,23.52,23.29,22.99,23.47,20.87,20.5,21.46,21.22,22.84,22.0,22.37,23.52,23.41,21.2,21.53,20.94,21.58,21.11,21.96,21.36,21.96,21.65,23.32,24.16,23.48,23.51,24.19,22.68,22.62,22.01,21.4,21.28,22.05,22.53,22.43,22.41,22.59,20.47,21.35,21.14,21.47,21.38,21.37,21.98,21.71,22.15,21.73,24.11,23.85,24.21,23.95,23.71,23.45,23.13,22.97,23.14,23.05,23.29,23.01,23.68,23.39,23.98,22.26,21.14,21.1,22.07,21.61,22.05,22.1,22.04,22.8,24.01,24.26,24.26,25.75,26.14,26.33,26.23,25.96,25.6,24.25,23.15,23.59,23.49,23.91,23.71,22.71,21.36,21.32,21.93,21.2,22.27,21.9,22.16,22.09,23.6,24.13,24.0,23.89,25.13,23.01,23.37,22.93,22.17,23.23,23.11,23.68,22.41,22.86,23.13,22.24,20.94,20.87,20.97,22.06,21.4,21.71,21.03,22.7,23.57,23.96,23.82,21.83,23.5,24.05,25.91,25.9,25.39,25.21,25.33,24.94,25.31,25.67,26.81,26.17,26.91,26.51,26.59,26.74,27.08,27.14,27.35,27.34,27.26,27.07,26.21,26.21,26.47,27.0,27.56,28.23,28.85,29.62,30.07,28.68,26.96,25.39,24.99,23.69,22.12,21.94,21.91,21.97,21.0,22.06,21.52,23.6,23.96,23.77,23.91,23.61,24.07,23.44,22.57,22.28,21.84,21.96,21.42,22.22,23.03,23.78,23.17,22.03,20.69,21.78,20.73,21.41,21.56,21.62,21.73,22.7,23.64,24.06,23.81,23.66,24.76,23.78,23.94,23.76,23.98,23.83,23.91,23.83,23.92,23.84,23.96,22.83,21.33,21.97,21.76,21.38,21.53,22.08,21.16,21.85,23.31,24.17,23.93,24.17,23.98,23.68,22.58,22.96,24.35,23.79,24.21,24.03,23.97,23.99,22.91,22.6,21.45,21.96,21.59,22.0,21.94,22.11,22.31,22.79,24.84,24.2,24.11,23.81,24.09,23.9,23.43,21.32,21.14,22.13,22.15,22.5,23.59,23.37,23.97,22.16,20.94,21.7,21.11,22.17,20.74,22.26,21.57,22.83,23.85,23.94,23.02,23.98,24.36,23.84,21.63,21.27,22.15,22.22,22.09,22.2,23.75,22.6,22.89,21.99,23.94,23.13,24.4,23.66,23.88,23.97,22.78,22.15,22.58,22.76,23.06,23.09,23.11,22.7,22.1,21.5,21.82,22.07,21.89,22.16,22.39,20.24,20.82,21.07,21.18,21.96,22.4,21.43,21.23,20.98,21.03,23.51,22.77,23.16,23.68,22.05,22.72,25.05,21.83,21.05,21.05,22.28,21.46,22.7,22.62,22.69,22.43,21.61,20.81,21.37,21.5,21.09,20.32,20.07,20.32,20.9,23.19,22.31,23.42,22.92,23.25,22.55,21.95,21.78,22.59,24.15,21.68,21.92,22.52,23.16,23.54,21.65,20.57,20.43,20.51,20.49,20.43,20.64,21.69,21.39,22.78,24.45,22.82,23.58,22.69,23.53,21.68,21.41,21.48,22.4,22.08,21.99,22.1,22.22,20.85,21.23,20.7,20.36,20.56,20.76,20.97,21.44,21.54,21.66,23.25,24.03,23.54,25.44,26.52,24.47,22.87,22.58,24.31,24.17,21.25,21.95,21.9,23.54,19.71,20.86,21.13,21.06,21.55,21.32,21.7,20.74,21.96,21.05,22.94,24.29,20.11,22.57,22.16,22.34,21.57,22.24,22.09,21.58,21.63,22.34,21.45,23.06,23.32,21.48,20.6,21.16,21.09,21.69,21.49,21.47,21.67,21.79,23.49,21.43,22.37,20.56,22.06,22.07,21.82,21.3,22.3,23.99,21.49,21.65,19.6,18.95,19.56,21.14,21.53,23.06,22.76,22.99,23.91,23.38,23.4,23.1,22.75,21.74,22.89,21.79,22.57,22.09,21.09,20.69,20.76,21.04,22.07,21.43,22.81,23.04]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.278,0.278,0.278,0.278,0.278,0.278,0.394,0.394,0.222,0.204,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.278,0.278,0.356,0.267,0.345,0.345,0.462,0.462,0.462,0.462,0.462,0.578,0.695,0.812,0.919,0.943,0.943,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.941,0.941,0.847,0.687,0.295,0.295,0.412,0.412,0.528,0.645,0.723,0.84,0.917,0.941,0.94,0.948,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.692,0.432,0.229,0.229,0.229,0.202,0.202,0.319,0.436,0.553,0.669,0.786,0.903,0.939,0.947,0.885,0.885,0.885,0.885,0.885,0.885,0.885,0.884,0.884,0.707,0.504,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.55,0.628,0.745,0.862,0.861,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.929,0.708,0.487,0.239,0.239,0.356,0.356,0.356,0.473,0.472,0.589,0.706,0.823,0.9,0.939,0.939,0.939,0.939,0.939,0.938,0.947,0.947,0.947,0.947,0.947,0.525,0.313,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.511,0.628,0.706,0.355,0.355,0.355,0.267,0.223,0.205,0.322,0.322,0.322,0.438,0.555,0.672,0.765,0.882,0.935,0.942,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.947,0.77,0.514,0.235,0.204,0.204,0.204,0.204,0.2,0.317,0.434,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.68,0.288,0.21,0.21,0.21,0.21,0.21,0.201,0.318,0.435,0.551,0.668,0.785,0.878,0.878,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.574,0.414,0.237,0.237,0.237,0.237,0.237,0.237,0.315,0.315,0.432,0.548,0.665,0.782,0.899,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.713,0.487,0.23,0.23,0.23,0.23,0.23,0.347,0.464,0.581,0.697,0.775,0.892,0.937,0.945,0.945,0.945,0.515,0.632,0.632,0.709,0.709,0.826,0.826,0.552,0.286,0.209,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.64,0.397,0.222,0.339,0.338,0.416,0.416,0.533,0.65,0.766,0.86,0.86,0.86,0.86,0.93,0.945,0.517,0.634,0.75,0.867,0.867,0.867,0.929,0.84,0.69,0.562,0.47,0.47,0.47,0.587,0.587,0.704,0.82,0.921,0.937,0.944,0.944,0.949,0.949,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.824,0.652,0.564,0.564,0.564,0.681,0.681,0.798,0.875,0.93,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.944,0.944,0.944,0.944,0.944,0.602,0.328,0.222,0.222,0.222,0.222,0.338,0.455,0.572,0.689,0.805,0.918,0.941,0.948,0.948,0.868,0.868,0.932,0.932,0.932,0.946,0.946,0.946,0.946,0.519,0.326,0.215,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.433,0.55,0.667,0.784,0.35,0.35,0.466,0.466,0.544,0.661,0.778,0.894,0.894,0.933,0.933,0.933,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.945,0.945,0.945,0.945,0.599,0.274,0.212,0.212,0.212,0.212,0.212,0.212,0.328,0.445,0.562,0.679,0.795,0.795,0.912,0.912,0.941,0.941,0.941,0.941,0.941,0.941,0.948,0.948,0.725,0.503,0.265,0.264,0.264,0.264,0.381,0.222,0.339,0.339,0.378,0.494,0.611,0.728,0.806,0.883,0.883,0.935,0.935,0.935,0.935,0.935,0.935,0.935,0.643,0.259,0.206,0.206,0.206,0.323,0.323,0.323,0.44,0.556,0.673,0.79,0.821,0.899,0.938,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.586,0.248,0.204,0.282,0.211,0.328,0.222,0.338,0.455,0.572,0.689,0.805,0.899,0.938,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.944,0.944,0.544,0.244,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.677,2.934,0.672,0.633,0.669,0.97,1.285,1.197,2.017,1.736,1.692,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.47,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.787,1.85,1.308,0.495,1.07,0.363,0.968,1.006,0.656,0.581,0.607,1.347,1.03,0.766,0.661,0.331,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.072,0.125,0.332,0.673,1.216,0.518,1.009,1.001,0.912,1.016,0.562,0.284,0.187,0.234,0.238,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,0.197,0.199,0.554,1.129,0.737,0.682,0.715,1.082,0.872,1.012,0.776,0.683,0.685,0.359,0.264,0.066,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.158,0.161,-0.107,1.108,0.679,0.552,0.488,0.91,1.198,1.061,0.518,0.683,0.685,0.202,0.525,1.118,0.35,0.594,1.126,0.674,0.467,0.628,0.712,0.925,0.17,0.192,0.092,0.857,1.151,0.745,0.511,1.026,0.67,1.262,1.184,0.683,0.519,0.367,0.231,0.24,0.971,0.4,0.494,0.553,0.822,0.672,0.7,0.885,-0.686,0.158,0.586,0.942,0.855,0.746,0.725,0.62,0.373,0.307,0.389,0.41,0.217,0.218,0.236,0.332,0.536,0.653,0.739,0.704,0.895,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.258,0.23,0.215,0.219,0.24,0.318,0.415,1.1,1.363,1.218,1.414,1.5,8.473,1.415,1.521,1.201,1.375,1.539,1.56,0.854,0.539,1.152,1.244,0.858,0.604,0.725,0.461,0.284,0.3,0.346,0.705,2.349,0.849,1.006,0.935,0.907,1.331,0.473,0.203,0.113,1.066,1.092,0.82,0.642,0.502,1.023,1.098,1.251,0.894,0.683,0.685,0.379,0.282,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,0.219,-0.289,1.414,1.345,0.994,0.857,0.933,0.966,0.99,0.705,0.723,0.968,0.72,0.63,0.254,0.585,0.554,0.544,0.592,0.517,0.843,0.679,0.667,1.592,0.28,0.006,0.33,1.199,0.983,1.252,0.897,1.846,0.856,0.596,1.162,0.696,0.685,0.7,0.729,0.58,0.589,2.082,0.686,1.01,0.714,0.885,0.797,0.929,0.172,0.175,1.429,1.077,1.194,0.806,0.751,1.114,0.947,1.179,0.981,0.517,0.685,0.399,0.273,0.452,0.622,4.501,3.688,1.807,2.099,0.757,1.351,1.282,0.198,0.229,0.997,1.198,0.937,0.991,1.101,0.608,0.452,0.498,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.164,2.018,1.939,1.128,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.185,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.151,1.154,0.46,0.883,1.136,1.074,0.683,0.691,0.385,0.286,2.199,0.708,0.987,2.712,0.679,0.926,2.236,1.089,1.578,0.319,0.102,0.151,1.3,0.705,1.08,0.601,0.848,0.933,1.194,0.785,0.185,0.187,0.202,0.53,0.344,5.01,1.98,2.061,1.067,0.533,0.915,2.689,5.842,0.098,0.099,0.071,0.357,0.305,0.941,0.45,0.731,0.804,1.043,0.354,0.218,0.187,0.221,0.231,0.252,0.309,0.462,0.816,0.836,2.032,2.033,0.354,0.376,0.086,0.134,0.066,0.796,0.526,1.111,0.496,1.005,0.929,0.892,0.34,0.185,0.187,0.202,0.231,0.265,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,0.27,0.236,0.428,2.076,0.823,0.744,1.2,1.067,0.977,1.128,1.156,0.665,0.287,0.231,0.231,0.06,2.37,1.256,1.299,0.681,1.037,1.447,1.103,1.875,0.354,-0.078,0.683,1.106,0.918,0.71,0.814,0.966,1.008,0.282,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.817,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.48,0.89,0.818,0.414,0.202,0.216,0.241,0.269,0.389,1.799,1.566,0.68,2.297,1.213,1.178,2.298,2.329,1.656,1.284,1.104,2.903,1.014,1.456,1.165,0.817,1.296,0.713,0.352,0.185,0.216,0.304,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,0.272,0.255,0.384,0.58,0.718,0.739,0.65,0.492,0.939,0.828,0.743,0.747,0.745,0.257,0.777,0.37,0.601,0.589,0.699,0.664,0.687,0.862,0.851,0.952,0.171,0.187,0.198,1.025,0.991,0.888,1.349,4.435,1.032,0.413,0.517,0.701,0.73,0.739,0.599,0.799,0.748,2.025,0.926,0.907,1.525,0.928,1.053,1.164,0.207,-0.07,1.29,3.266,1.127,1.517,0.949,0.94,1.146,1.162,0.9,0.786,0.375,0.59,0.447,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,0.264,0.44,1.717,2.058,0.959,1.506,0.81,1.596,1.864,1.078,1.717,0.795,0.663,0.443,0.335,1.734,0.558,1.13,1.053,1.231,1.079,1.197,1.483,2.018,0.306,0.324,1.168,1.359,1.577,0.962,0.877,0.552,0.461,0.59,0.574,0.185,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.139,1.29,1.623,1.632,1.965,2.058,1.83,1.668,1.995,1.243,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.26,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,25.53,26.23,26.22,25.9,24.76,24.46,25.3,25.74,25.83,24.4,24.42,25.56,25.67,26.0,26.28,26.46,26.77,26.96,27.18,27.32,27.37,27.26,27.29,26.82,26.64,26.77,26.71,26.68,26.58,25.98,24.93,23.92,24.89,25.53,25.71,25.7,25.57,26.16,25.38,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.45,25.54,25.62,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.56,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.45,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,25.08,25.77,25.91,25.93,26.1,26.13,26.04,26.08,26.16,26.2,26.21,26.26,26.02,26.1,26.08,26.06,26.07,26.02,25.93,25.87,24.93,25.55,25.43,25.56,25.72,25.88,26.0,26.03,26.19,26.22,26.01,25.87,25.77,25.72,25.67,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.7,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.54,23.92,24.42,24.99,25.08,25.04,25.28,25.37,25.41,25.44,25.4,25.48,25.56,25.19,24.45,23.3,24.08,25.33,25.86,26.19,26.36,26.5,26.43,26.18,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.93,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.99,25.8,26.04,25.87,25.68,25.53,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.4,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.48,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.95,25.08,25.05,25.11,25.26,25.37,25.48,25.52,24.26,23.67,25.25,25.94,25.81,26.07,26.39,26.55,26.58,26.67,26.72,27.04,27.42,27.93,28.56,29.13,29.69,30.26,30.91,31.45,28.83,28.25,27.49,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,25.33,25.47,24.32,24.97,23.91,24.11,25.06,24.87,24.95,25.08,25.13,25.16,25.22,24.57,22.97,23.61,24.78,25.21,25.5,25.66,25.74,25.56,25.63,25.77,25.75,25.81,25.91,25.7,25.37,25.72,25.94,26.0,26.04,25.96,25.84,25.75,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.53,25.83,25.91,25.77,25.72,25.78,25.74,25.54,25.7,25.68,25.65,25.03,23.62,22.53,23.76,25.03,25.41,25.48,25.39,25.72,25.82,25.78,25.78,25.79,25.71,25.73,25.83,25.66,24.61,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.76,23.55,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,25.38,25.17,25.24,25.26,25.27,25.32,24.11,22.99,24.61,25.62,25.82,25.95,26.04,25.97,26.03,25.5,25.21,24.64,24.47,23.4,23.9,25.42,25.04,25.13,25.12,25.13,25.15,25.21,25.23,25.23,25.3,23.62,22.89,24.78,25.51,25.85,26.03,26.05,26.0,23.5,23.8,25.07,23.52,24.49,24.7,23.38,23.32,24.59,23.21,24.52,23.4,24.2,23.49,23.92,24.92,22.73,22.71,24.48,25.16,25.48,25.74,25.86,24.55,24.52,24.85,25.4,25.7,24.61,23.98,24.77,23.21,23.18,22.41,24.14,24.9,25.01,25.05,25.13,24.76,24.65,24.9,25.27,25.35,25.46,25.58,25.7,25.9,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,24.21,24.3,24.4,25.06,25.14,25.29,25.4,25.59,25.14,24.3,24.94,25.26,24.89,25.32,25.23,25.38,25.54,25.54,25.52,24.11,25.12,24.93,24.82,24.64,24.49,24.32,24.59,25.06,25.48,25.63,25.68,25.82,25.73,25.19,25.42,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.46,25.11,25.33,25.52,25.58,24.14,24.95,23.63,24.15,24.55,24.54,24.5,24.14,23.38,23.63,24.29,24.62,24.45,24.33,24.69,24.68,24.82,24.91,24.05,23.73,25.23,25.48,25.66,25.64,25.67,25.54,25.21,25.0,24.9,24.81,24.73,24.7,24.42,24.39,24.31,24.36,24.14,24.82,24.83,24.85,25.05]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.232,0.216,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.205,0.25,0.25,0.296,0.243,0.289,0.289,0.357,0.357,0.356,0.355,0.355,0.423,0.492,0.56,0.628,0.696,0.718,0.786,0.854,0.897,0.895,0.894,0.892,0.891,0.889,0.911,0.91,0.927,0.925,0.885,0.818,0.687,0.686,0.731,0.73,0.798,0.842,0.864,0.886,0.914,0.929,0.927,0.935,0.94,0.939,0.937,0.936,0.934,0.933,0.931,0.93,0.928,0.927,0.776,0.584,0.386,0.385,0.291,0.244,0.244,0.313,0.381,0.45,0.518,0.586,0.654,0.722,0.79,0.634,0.633,0.632,0.631,0.63,0.629,0.628,0.627,0.626,0.432,0.312,0.208,0.208,0.207,0.207,0.207,0.275,0.344,0.413,0.458,0.526,0.594,0.639,0.684,0.752,0.751,0.819,0.818,0.862,0.861,0.901,0.918,0.916,0.796,0.546,0.37,0.369,0.437,0.437,0.436,0.504,0.504,0.572,0.64,0.708,0.776,0.821,0.879,0.877,0.876,0.875,0.873,0.904,0.903,0.901,0.9,0.921,0.666,0.436,0.28,0.238,0.218,0.208,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.338,0.383,0.452,0.497,0.387,0.433,0.432,0.354,0.276,0.239,0.308,0.307,0.307,0.375,0.444,0.512,0.567,0.635,0.703,0.771,0.792,0.791,0.79,0.835,0.833,0.832,0.885,0.884,0.882,0.777,0.566,0.377,0.288,0.288,0.287,0.287,0.241,0.31,0.378,0.447,0.515,0.583,0.651,0.719,0.787,0.841,0.84,0.838,0.837,0.836,0.88,0.911,0.923,0.922,0.745,0.495,0.345,0.344,0.343,0.343,0.342,0.269,0.338,0.407,0.475,0.543,0.611,0.666,0.734,0.801,0.8,0.799,0.867,0.888,0.914,0.927,0.925,0.924,0.742,0.492,0.342,0.341,0.34,0.34,0.339,0.339,0.384,0.384,0.452,0.52,0.589,0.657,0.725,0.793,0.791,0.79,0.858,0.879,0.901,0.9,0.921,0.92,0.75,0.524,0.358,0.358,0.357,0.305,0.305,0.373,0.442,0.51,0.578,0.623,0.714,0.782,0.85,0.849,0.893,0.687,0.755,0.823,0.867,0.866,0.888,0.886,0.69,0.484,0.336,0.268,0.233,0.215,0.207,0.207,0.207,0.206,0.206,0.206,0.205,0.205,0.205,0.204,0.204,0.204,0.203,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.268,0.337,0.405,0.474,0.542,0.61,0.678,0.746,0.745,0.79,0.789,0.787,0.786,0.822,0.82,0.819,0.864,0.682,0.491,0.34,0.409,0.408,0.454,0.453,0.521,0.589,0.657,0.712,0.71,0.755,0.754,0.822,0.88,0.764,0.786,0.831,0.876,0.906,0.905,0.924,0.923,0.797,0.681,0.576,0.575,0.574,0.642,0.641,0.709,0.777,0.845,0.89,0.902,0.901,0.922,0.92,0.919,0.918,0.916,0.915,0.929,0.928,0.926,0.925,0.923,0.844,0.712,0.462,0.462,0.461,0.529,0.528,0.597,0.665,0.733,0.8,0.845,0.89,0.888,0.915,0.913,0.912,0.924,0.932,0.93,0.929,0.927,0.926,0.924,0.743,0.537,0.366,0.313,0.313,0.312,0.381,0.449,0.518,0.586,0.654,0.745,0.813,0.875,0.905,0.684,0.752,0.82,0.819,0.818,0.862,0.898,0.896,0.909,0.658,0.428,0.31,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.268,0.337,0.336,0.405,0.473,0.541,0.365,0.365,0.433,0.433,0.478,0.546,0.614,0.682,0.681,0.749,0.817,0.877,0.899,0.897,0.896,0.894,0.893,0.891,0.89,0.889,0.887,0.909,0.907,0.757,0.561,0.375,0.375,0.374,0.373,0.373,0.372,0.441,0.509,0.577,0.645,0.713,0.758,0.826,0.871,0.892,0.891,0.89,0.888,0.887,0.885,0.912,0.91,0.718,0.532,0.361,0.36,0.36,0.359,0.428,0.313,0.382,0.381,0.403,0.472,0.54,0.608,0.63,0.698,0.743,0.788,0.787,0.832,0.83,0.829,0.874,0.872,0.703,0.453,0.323,0.26,0.229,0.297,0.297,0.297,0.365,0.434,0.502,0.57,0.638,0.683,0.751,0.819,0.864,0.862,0.861,0.86,0.881,0.88,0.911,0.909,0.659,0.425,0.31,0.356,0.303,0.349,0.276,0.345,0.413,0.482,0.55,0.618,0.686,0.754,0.822,0.88,0.91,0.909,0.907,0.906,0.905,0.903,0.902,0.9,0.65,0.459,0.274,0.237,0.218,0.208,0.203,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,1.07,0.891,1.787,1.664,1.49,1.743,1.767,1.774,2.584,2.719,2.948,0.808,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.144,2.045,1.534,1.671,1.107,0.566,0.59,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.931,1.852,0.415,0.726,7.935,1.274,1.721,2.341,1.349,2.802,1.972,1.721,1.895,0.967,0.682,0.719,0.726,0.557,0.714,0.712,0.716,2.248,0.742,2.124,0.749,1.171,0.533,1.069,0.267,0.114,0.129,0.218,0.404,1.332,1.275,1.238,1.593,1.535,0.823,0.66,0.618,0.551,0.481,0.503,0.552,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.487,0.627,1.517,2.804,4.005,2.256,0.735,1.385,0.963,0.898,0.834,0.79,0.739,0.733,0.795,7.721,0.944,1.117,1.147,0.942,0.355,0.469,0.49,0.703,0.459,1.062,0.936,1.5,1.358,3.291,1.408,0.991,0.964,0.891,1.078,1.139,1.086,0.753,0.739,1.718,1.06,0.895,0.397,0.442,0.361,1.403,0.936,0.725,0.405,0.718,1.509,2.989,2.314,1.734,1.845,1.097,0.745,0.891,0.828,0.782,0.752,0.641,0.757,1.358,0.745,0.446,0.313,0.3,0.172,0.237,0.744,1.068,0.388,0.702,1.539,1.877,2.4,2.662,1.971,1.66,1.031,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.659,0.987,0.845,6.451,2.387,1.559,1.523,2.058,3.144,2.328,1.434,1.719,1.319,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.688,0.665,0.738,0.56,1.02,0.365,1.166,1.614,3.709,2.124,2.28,3.105,1.419,2.082,1.211,0.874,1.211,1.113,1.022,0.66,0.677,0.681,4.874,0.672,0.935,1.241,0.534,0.601,0.792,0.886,0.671,0.715,0.884,1.322,1.73,2.303,2.149,8.745,1.223,1.208,0.84,0.878,0.925,0.903,0.898,0.955,0.811,0.536,0.625,0.764,0.382,0.668,0.673,1.289,0.84,0.586,0.501,1.713,1.868,4.892,4.619,5.604,9.224,1.677,1.123,0.66,0.783,0.763,0.744,0.848,2.033,0.574,0.528,0.682,0.875,0.466,0.468,0.379,0.662,0.383,0.808,1.261,1.754,2.432,1.597,2.459,2.465,1.17,0.673,0.863,0.822,0.793,0.767,0.832,0.855,0.785,0.418,0.575,0.3,0.363,0.305,0.484,0.493,0.518,0.702,1.012,1.501,3.356,3.09,1.433,1.763,1.504,0.905,0.862,0.746,0.885,0.781,0.839,0.768,2.694,0.708,1.208,0.926,0.78,0.552,0.556,0.874,0.639,0.851,1.643,2.239,1.927,2.094,1.442,1.254,3.385,0.757,0.452,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.039,1.362,1.618,2.216,1.761,2.065,2.472,2.609,1.864,0.987,0.811,0.661,0.666,0.628,0.599,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.323,1.939,1.791,0.696,1.326,0.834,0.82,0.809,0.809,0.863,0.91,1.149,0.719,0.858,1.673,0.925,0.874,0.753,0.96,0.588,0.619,0.953,1.518,1.29,1.698,1.299,0.955,1.017,0.816,0.756,0.553,0.704,0.542,0.843,2.432,0.377,1.148,0.867,0.742,0.605,1.007,0.778,0.793,0.417,0.377,0.343,1.123,0.904,1.774,1.355,1.061,1.046,1.511,0.937,0.569,0.512,0.574,1.692,0.73,0.558,0.78,0.769,0.635,0.617,0.514,0.572,0.573,0.225,0.376,1.1,1.368,1.375,2.4,3.745,2.384,0.932,0.766,0.754,0.67,1.976,0.515,0.705,0.866,2.932,0.934,0.529,0.475,1.125,0.698,0.725,0.948,0.604,0.667,1.033,1.168,1.401,1.308,1.852,1.338,1.13,0.903,0.855,0.908,0.806,0.769,0.747,7.949,1.162,2.863,1.322,0.42,0.762,0.664,0.613,0.955,0.716,1.095,1.672,1.736,3.475,2.241,2.363,1.288,0.808,0.547,0.677,0.608,0.6,0.586,0.637,0.65,2.323,0.863,0.977,0.917,1.16,2.025,1.352,1.862,2.219,2.828,1.834,2.621,1.754,1.644,1.545,1.298,0.574,0.8,0.697,0.655,0.676,0.643,0.709,0.656,0.81,1.197,1.02,0.975,1.196,1.19,1.227,1.357,1.997,3.48,2.091,3.234,2.196,1.634,2.202,1.559,1.171,0.73,0.938,0.911,0.716,0.677,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.8,0.808,0.244,0.507,1.04,1.64,2.208,1.666,1.364,1.154,0.752,0.878,0.857,0.839,0.827,0.75,0.913,0.804,0.674,0.97,1.857,0.499,0.541,1.488,1.499,0.894,0.606,0.595,1.785,1.937,1.279,2.065,1.641,2.103,1.39,1.905,0.736,0.756,0.832,0.804,3.436,1.117,1.025,1.967,1.471,0.575,0.377,0.737,0.692,0.752,0.551,0.584,1.362,2.249,9.983,2.616,2.07,0.987,1.074,1.069,0.927,0.914,0.882,0.779,0.91,1.395,1.837,5.555,7.611,2.401,1.023,1.24,2.166,1.129,0.958,0.986,1.727,2.26,2.52,2.235,9.927,2.258,1.174,0.933,0.966,0.916,0.909,0.898,0.937,0.944,1.119,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.117,1.07,1.581,9.621,2.153,1.681,1.561,1.673,1.356,0.775,0.74,0.655,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.76,0.884,1.897,2.026,1.811,2.679,2.766,2.71,2.982,1.826,1.904,1.385,3.61],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.5,22.22,23.13,23.8,24.1,24.24,24.3,23.73,22.74,23.32,23.74,24.02,24.7,25.01,24.68,25.08,25.54,25.31,24.91,24.63,24.37,24.18,23.95,23.59,22.77,22.01,22.52,23.49,22.38,22.51,22.44,23.57,24.47,24.65,24.89,25.04,25.13,25.2,25.31,25.51,25.3,24.87,24.92,24.08,24.06,23.94,23.2,22.88,22.58,23.08,23.48,22.77,22.8,22.75,22.79,23.17,24.25,24.44,24.61,24.78,24.91,25.05,25.19,24.65,25.02,24.58,24.89,24.98,24.83,24.63,24.47,24.37,24.39,24.34,24.21,24.38,24.42,23.81,23.21,23.21,23.63,23.96,24.03,24.11,24.22,24.38,24.94,25.41,25.64,25.63,25.46,25.21,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.61,23.09,24.03,23.82,24.17,24.38,24.41,24.51,24.67,24.89,24.98,24.88,25.01,24.12,23.69,23.43,23.0,22.74,22.47,22.2,22.44,22.09,23.17,24.05,23.82,23.17,23.64,24.17,24.29,24.55,24.35,24.27,24.27,24.55,24.84,25.18,25.24,25.31,25.22,24.94,24.68,24.29,24.07,23.82,23.53,23.46,23.41,23.39,23.58,23.86,23.82,24.24,24.42,24.53,24.66,24.73,24.83,25.04,25.16,25.06,25.29,25.23,25.04,24.89,24.57,24.27,23.59,23.23,23.01,22.72,22.32,22.25,22.61,22.55,22.91,23.38,23.62,23.78,23.93,24.07,24.12,24.17,24.29,24.51,24.7,24.75,24.75,24.59,24.37,24.21,23.42,23.33,23.37,23.41,23.22,22.86,23.13,23.97,23.58,24.03,24.03,24.17,24.3,24.4,24.45,24.55,24.63,24.88,25.08,25.16,25.07,24.85,24.51,24.1,23.73,23.54,22.67,21.73,21.77,21.38,21.2,21.66,21.89,22.3,23.15,22.06,22.05,22.27,23.49,24.23,24.39,23.07,23.83,23.9,23.8,23.66,23.42,22.79,22.49,22.37,22.42,22.45,22.77,23.5,22.01,22.53,22.16,23.31,24.26,24.26,24.12,23.89,23.93,24.01,24.15,24.64,25.03,24.51,24.18,23.78,23.51,23.37,23.06,22.74,22.52,22.92,22.83,23.75,22.83,22.21,21.26,21.0,22.7,23.17,23.84,23.84,24.12,24.33,24.57,24.47,24.63,24.11,23.71,23.45,23.27,23.06,22.83,22.59,22.98,22.71,22.65,22.97,22.91,23.26,22.66,22.84,24.24,24.11,24.25,24.31,24.42,24.64,24.83,25.22,25.48,25.42,25.07,24.68,24.37,24.04,23.74,23.55,23.21,22.66,22.92,24.09,22.62,23.06,23.26,23.16,24.49,24.24,24.46,24.55,24.64,24.79,24.81,24.97,24.29,24.46,24.39,24.27,24.04,23.66,23.56,23.17,22.6,22.58,22.43,22.45,22.75,22.94,23.18,23.32,22.57,23.25,24.21,23.99,24.21,24.34,24.46,24.69,24.84,24.82,24.13,23.71,23.39,23.07,22.91,22.77,22.51,22.41,22.42,22.64,22.79,22.94,23.09,23.94,23.71,24.13,24.14,24.25,24.31,24.37,24.82,25.1,24.98,24.36,24.1,23.68,23.55,23.49,23.56,23.97,24.39,25.17,25.93,26.82,27.41,23.49,23.42,23.3,24.82,24.61,24.72,24.78,24.8,24.85,24.92,25.09,25.12,24.6,24.06,23.61,23.4,23.14,22.91,22.94,22.51,22.4,22.62,23.07,23.0,23.2,23.04,23.44,24.07,24.16,24.22,24.3,24.42,24.58,24.75,24.28,24.12,24.04,24.46,24.48,24.28,23.95,23.73,23.56,23.43,22.98,23.5,23.79,23.85,23.92,23.89,24.07,24.15,24.35,24.39,24.49,24.66,24.88,24.56,24.8,24.89,24.32,24.14,24.02,23.75,23.51,23.41,23.33,23.21,23.35,23.16,23.32,23.44,23.42,22.25,23.37,24.18,24.33,24.45,24.54,23.93,24.41,24.66,25.03,24.34,24.0,23.71,23.53,23.31,23.1,22.86,22.64,22.51,22.46,23.0,23.86,23.79,24.98,24.14,24.44,23.96,24.48,24.59,24.66,24.75,24.89,25.0,24.78,25.01,24.06,24.14,23.98,23.69,23.46,23.29,23.47,23.2,22.35,22.2,22.25,21.72,21.94,22.07,22.76,23.28,24.06,23.86,24.12,24.16,24.26,24.36,24.58,23.96,24.14,24.03,23.83,23.59,22.81,22.47,21.88,21.69,21.09,21.79,22.14,22.09,22.17,22.35,22.46,23.5,22.89,23.21,23.34,23.29,23.4,23.44,23.91,24.35,24.32,23.8,23.33,22.98,22.67,22.79,22.5,21.87,21.12,21.33,20.84,21.2,22.6,22.6,23.06,22.9,23.25,23.28,23.39,24.07,24.16,24.33,24.52,24.47,23.91,23.75,23.5,23.23,22.93,22.68,22.51,22.86,22.77,22.8,23.13,22.46,23.09,23.0,23.14,24.17,24.09,24.17,24.26,24.36,24.49,24.65,24.91,25.0,24.74,24.54,23.81,23.2,23.06,22.89,23.33,22.45,22.27,22.51,22.81,23.57,22.51,23.14,22.39,23.22,23.53,23.64,23.97,24.01,24.23,23.32,23.88,24.18,23.7,23.77,23.58,23.41,23.16,23.0,22.75,22.51,22.27,22.51,22.36,21.91,22.25,22.44,23.54,23.69,23.73,23.91,23.89,23.99,24.17,24.38,24.44,24.45,23.83,23.21,22.7,22.99,22.59,22.24,22.11,21.39,21.9,21.77,22.13,22.76,22.72,22.29,23.45,23.43,23.84,23.85,24.01,24.07,24.2,24.36,24.6,24.68,24.63,24.38,24.04,22.61,22.71,22.44,22.29,22.08,21.86,21.8,21.88,22.12,22.51,22.73,23.1,23.86,23.59,23.79,24.03,24.02,24.09,24.2,24.39,24.41,24.28,23.37,23.6,23.25,22.43,21.92,21.7,21.06,20.81,21.26,21.44,22.52,22.55,23.62,22.07]}},"complete":true,"cost_usd":[0.0413,0.0849,0.127,0.168,0.2088,0.2589,0.3425,0.4181,0.703,0.7988,0.8547,0.9555,1.0225,1.112,1.2004,1.5094,1.8774,2.1877,2.3149,2.464,2.6535,2.8171,2.9599,3.1136,3.1977,3.2599,3.3114,3.3725,3.4395,3.5145,3.5885,3.6304,3.7225,3.764,3.8401,3.9405,4.1858,4.3696,4.5311,4.7305,4.9435,5.124,5.3159,5.4664,5.6341,5.7854,5.9356,6.0283,6.1069,6.1661,6.2235,6.2732,6.3269,6.3816,6.4284,6.4905,6.5918,6.6332,6.7109,6.7764,6.8353,7.0792,7.1596,7.3016,7.5044,7.635,7.7778,7.8877,7.9727,8.1255,8.2124,8.2857,8.3457,8.3908,8.4354,8.476,8.5141,8.5811,8.6639,8.7106,8.796,8.8358,8.8868,8.9176,8.9607,8.9783,8.9949,9.0066,9.0306,9.0986,9.1952,9.3164,9.4118,9.529,9.6466,9.7413,9.8072,9.872,9.9224,9.9631,10.0341,10.0735,10.1371,10.2548,10.2917,10.3126,10.3379,10.3827,10.4369,10.4911,10.557,10.6084,10.6616,10.9466,11.1292,11.3149,11.4387,11.5087,11.6311,11.7278,11.8198,11.8999,11.9888,12.0765,12.1388,12.2123,12.5741,12.6373,12.7053,12.927,12.9714,12.9992,13.0464,13.0888,13.1473,13.1835,13.2552,13.3924,13.5213,13.6631,14.0288,14.1472,14.2534,14.3626,14.4708,14.5765,14.6646,14.7445,14.7972,14.856,14.9922,15.0624,15.1792,15.2314,15.2639,15.4441,15.5408,15.6195,15.7001,15.7441,15.7974,15.9494,16.1076,16.2567,16.3873,16.4839,16.575,16.6322,16.723,16.8081,16.876,16.9325,16.9754,17.0965,17.1558,17.2118,17.2826,17.3061,17.331,17.36,17.3865,17.4339,17.5002,17.523,17.5817,17.7713,17.9029,18.055,18.1945,18.3063,18.396,18.4545,18.5124,18.5591,18.6038,18.6414,18.6779,18.715,18.782,18.8306,18.9322,18.9749,19.0162,19.0915,19.176,19.4447,19.6238,19.7762,19.9058,20.0635,20.2497,20.4063,20.5164,20.6179,20.7307,20.8074,20.8573,20.9188,20.9701,21.0205,21.057,21.1455,21.187,21.2341,21.3024,21.3611,21.4256,21.4868,21.5825,21.8382,21.9548,22.0869,22.3665,22.5175,22.7253,22.9456,23.079,23.1843,23.3136,23.4108,23.522,23.6286,23.7219,23.7924,23.8414,23.8988,24.0774,24.1661,24.3171,24.3889,24.4338,24.4801,24.5375,24.6125,24.8511,24.9557,25.1394,25.4374,25.5749,25.7176,25.8403,26.1325,26.2358,26.3709,26.4797,26.58,26.6672,26.7571,26.8198,26.8832,26.939,26.992,27.0323,27.1044,27.1573,27.2266,27.2779,27.3671,27.4539,27.6231,28.0603,28.4506,28.6332,28.8756,29.0985,29.3364,29.6684,29.807,29.906,29.9894,30.0796,30.1622,30.239,30.2908,30.397,30.4458,30.4915,30.5286,30.5692,30.6074,30.6408,30.6768,30.7613,30.841,30.9869,31.1849,31.3338,31.5156,31.67,31.8031,31.962,32.0673,32.1395,32.2553,32.349,32.4272,32.5087,32.5894,32.6761,32.8141,32.8955,32.9322,32.9704,33.0018,33.0838,33.1699,33.2114,33.2546,33.3135,33.4692,33.6083,33.8165,33.9615,34.0694,34.2035,34.3182,34.4279,34.5384,34.6208,34.7039,34.8022,34.8551,34.9147,35.0333,35.1923,35.3446,35.4303,35.5158,35.5622,35.618,35.7422,35.7914,35.8984,36.2594,36.418,36.5559,36.6888,36.8673,36.958,37.0975,37.168,37.2386,37.3007,37.3567,37.399,37.451,37.5089,37.6284,37.6823,37.7595,37.8203,37.8823,38.1006,38.1748,38.29,38.3929,38.5898,38.7569,38.911,39.0662,39.2353,39.364,39.4307,39.4759,39.5286,39.5756,39.6135,39.6499,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.8456,39.9718,40.0785,40.1724,40.2961,40.4119,40.5092,40.6003,40.6689,40.8177,40.9476,41.0253,41.075,41.1791,41.2661,41.323,41.4308,41.6099,41.704,41.7714,41.8339,42.0189,42.1628,42.3264,42.4559,42.6152,42.7034,42.7958,42.8967,42.9901,43.0334,43.1239,43.1674,43.2299,43.3317,43.4904,43.6057,43.7242,43.7769,43.8104,43.8864,43.9875,44.2095,44.2433,44.2784,44.308,44.3882,44.4837,44.6177,44.7029,44.7954,44.8863,44.9985,45.1096,45.1588,45.2034,45.2774,45.3921,45.4429,45.5337,45.6087,45.6549,45.6978,45.789,45.8632,45.8902,45.9214,45.9456,45.9825,46.1117,46.2007,46.2896,46.4389,46.6179,46.7641,46.9121,47.0072,47.0855,47.1462,47.2399,47.2944,47.3433,47.3969,47.5091,47.5562,47.5883,47.6197,47.7068,47.7647,47.8185,47.9076,47.9639,48.0865,48.3239,48.5533,48.6834,48.7829,48.9372,49.0519,49.146,49.2506,49.3639,49.4501,49.5152,49.5631,49.6691,49.9008,50.0427,50.1965,50.2729,50.3142,50.4441,50.5232,50.5798,50.691,50.8345,51.0217,51.2813,51.4298,51.6215,51.7814,51.9045,52.0057,52.0883,52.1469,52.1823,52.2257,52.2664,52.3075,52.3501,52.409,52.5332,52.6831,53.0454,53.3122,53.4091,53.5524,53.6523,53.8605,54.1971,54.4004,54.5639,54.7564,54.9174,55.0646,55.1913,55.2964,55.377,55.4551,55.5152,55.56,55.6034,55.6545,55.7101,55.7713,55.8731,55.9576,56.0068,56.1247,56.203,56.4766,56.7023,56.8095,56.9725,57.1442,57.3375,57.5792,57.7303,57.8664,58.0192,58.1783,58.2922,58.3667,58.4465,58.5066,58.5593,58.6185,58.7682,58.8911,58.9987,59.0693,59.1156,59.1816,59.2384,59.3031,59.3566,59.4716,59.5136,59.5766,59.7058,59.7915,59.981,60.1019,60.2256,60.3285,60.4105,60.5067,60.6088,60.707,60.8117,60.9156,61.0168,61.1011,61.1724,61.2292,61.3037,61.3376,61.3737,61.4423,61.5274,61.5865,61.6455,61.7191,61.9769,62.1131,62.2373,62.3985,62.5413,62.7537,62.8808,62.9819,63.0569,63.1486,63.2372,63.3231,63.4747,63.5627,63.6436,63.7785,63.8484,63.8916,63.9471,63.9956,64.0465,64.1301,64.2117,64.3807,64.6292,64.8477,65.2583,65.4664,65.7137,65.7935,65.9276,66.0443,66.1413,66.2347,66.2987,66.3737,66.4702,66.628,66.7499,66.9709,67.2193,67.3152,67.4359,67.5291,67.6493,67.8134,67.9069,68.0735,68.4032,68.6217,68.8317,69.008,69.5546,69.7046,69.8286,69.9382,70.0741,70.2087,70.296,70.3635,70.428,70.5563,70.6352,70.713,70.7916,70.8728,71.047,71.1686,71.2661,71.4002,71.5006,71.7003,72.0415,72.4281,72.6199,72.7558,72.9018,73.0422,73.1399,73.2016,73.2609,73.2953,73.3382,73.3818,73.4212,73.4705,73.5578,73.656,73.8377,73.9912,74.0691,74.2095,74.3543,74.5272,74.7457,74.9766,75.1898,75.4058,75.5522,75.7054,75.8313,75.9761],"decisions":[{"clamps":[],"fallback":null,"reason":"Top price not now; batteries at soc floor with zero usable energy, so hold. Grid charging cheap hour but flat-ish prices, keep baseline cooling; no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices flat-ish and not at top now; batteries at floor so no discharge; grid charging ok but cheapest hours not clearly; hold storage, keep baseline cooling, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour: small grid charge in Building_1 within the 0.15 kWh peak headroom; other devices stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; small battery charge in Building_1 within district headroom, others idle, no overcooling, tanks left at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band, so cooling stays at baseline. Building 1 tops up its battery modestly within the 0.26 kWh peak headroom; others hold since they're at floor.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero at the peak target, so no grid charging; hold batteries and tanks, keep baseline cooling since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero at the peak limit, so no grid charging; batteries idle, Building_2 cooling already at zero while overcooled, others keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_2 is already at zero cooling. Small grid charge into Building_1 and Building_2 ahead of later price peaks, kept within headroom. Others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint so cooling stays at baseline; no top price now and carbon is high, so the batteries hold and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not now; B1 and B2 are slightly overcooled-free, so keep baseline cooling, idle batteries and DHW; B3 battery empty, no charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 5-7 hours ahead, not now; hold batteries, avoid grid charging at this price, let Building_1 cooling ease as it is overcooled slightly, keep tanks empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is in 4-6 hours, so hold batteries and charge only with spare solar; cool at baseline since rooms are near setpoint; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at setpoint so cooling stays at baseline; Building_1 stores spare solar at low carbon, and batteries are held for the top-price hours 3-5.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price and no overcooling: charge all three batteries modestly ahead of the 2-4 h top-price window, leave cooling at baseline and the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is near its low and carbon is rising, so hold batteries for the top-price hours ahead and charge later in cheap, low-carbon early morning hours; no cooling change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load within usable kWh; cool Building_3 slightly less as it is overcooled; hold cooling where rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery only as far as its small usable energy allows; trim overcooled occupied Building_3 slightly; keep tanks idle.","status":"ok"},{"clamps":[{"applied":0.4769,"point":"Building_1.cooling","reason":"indoor 22.3 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.477,"rule":"comfort"},{"applied":-0.109,"point":"Building_1.battery","reason":"discharge would take charge from 0.21 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1042,"point":"Building_2.battery","reason":"discharge would take charge from 0.20 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1161,"point":"Building_3.battery","reason":"discharge would take charge from 0.22 below 0.1","requested":-0.2,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover own load; buildings 1 and 3 overcooled slightly, trim cooling; no grid charging; DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Batteries sit at their 0.2 floor with no usable energy and grid charging is off, so they stay idle; Building_3 is overcooled and gets reduced cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are at soc floor with no usable energy and grid charging is off, so no discharge or charge; Building_3 is slightly overcooled so cooling is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are at or above setpoint so cooling stays at baseline; batteries are at floor with no usable energy and grid charging is off, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cold and near its band edge, so cooling stays at baseline; battery is at floor and grid charging is off, so no battery or tank action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is more than 0.5 C overcooled, so cooling and tanks keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price so batteries stay idle; rooms are at or above setpoint, so baseline cooling is kept and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; Building_1 and Building_3 are overcooled slightly, Building_2 unoccupied and not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; Building_1 and Building_2 cooling adjusted per overcooling rule, Building_3 near setpoint keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are near setpoint, building 2 is warm so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings 1 and 3 are cooled slightly below baseline toward setpoint is not needed as they are not overcooled; use baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Building_1 is slightly overcooled, so its cooling is trimmed; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is overcooled, so baseline cooling and dhw are kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price day: battery idle, no grid charging; cool building 1 slightly, building 2 and 3 are not overcooled so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top hours; batteries idle, buildings near setpoint, Building_2 overcooled? No, it is warm, so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; overcooled occupied Building_1 gets cooling cut to 0; warm rooms keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours: battery idle; Building_1 and 3 overcooled-check: B1 is 0.36 below setpoint so small cut; B3 warm, no cut; B2 unoccupied, no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price day with no top-price hours, so battery stays idle; cooling near baseline since rooms are near setpoint; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle and no top-price discharge; cooling near baseline since rooms are near setpoint; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle; rooms are within or above band, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by 0.88 C so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle. Building_1 is 0.83 C under setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, tanks held at 0. Building_1 is overcooled 1.2C below setpoint so cooling is trimmed slightly; others at or above setpoint keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery idles; Building_1 is overcooled by 1.5 C so trim its cooling slightly; others keep baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries and tanks stay idle; cut Building_1 cooling slightly for overcooling, leave others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, so batteries idle. Overcooled occupied rooms 1 and 3 get 0.1 less cooling; building 2 is warm, so its cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 2 are overcooled near setpoint so modest cooling cut or baseline kept, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling only in overcooled occupied rooms (B1, B3), keep B2 at baseline since it is warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so batteries stay idle; Building_3 is slightly overcooled so its cooling is trimmed, others keep baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries idle and tanks at zero. Cooling kept at baseline; Building_3 is cool near its band edge so no extra cut.","status":"ok"},{"clamps":[{"applied":0.4331,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.58","requested":0.433,"rule":"deviation"}],"fallback":null,"reason":"Flat-price day so batteries stay idle. Building_1 and Building_3 are overcooled, so their cooling is trimmed; Building_2 is above setpoint, so it keeps baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.1 C below setpoint, so cooling is trimmed; flat price day keeps batteries idle and tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idles; buildings 1 and 2 are overcooled slightly, so reduce cooling modestly; no DHW or charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so battery idle; Building_1 is 0.6C below setpoint and occupied, so cut cooling modestly; others near setpoint, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; Building_1 is 0.98 C below setpoint so cooling is trimmed slightly; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so battery idle; Building_1 is only 0.5 C below setpoint (no cut yet); others at or above setpoint, so keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, no grid charging; Building_1 and Building_3 cooling near baseline, Building_2 overcooled not applicable since it is warm, so cooling baseline held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 0.9 C below setpoint so its cooling is trimmed slightly; other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is overcooled by about 0 C; battery held since prices flat-ish and not top now; charge only when cheap, grid charging ok, so small early charge avoided; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.6 C so cooling is trimmed slightly; prices are flat and batteries sit at floor, so storage and tank stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled occupied Building_1 cooling to zero, store spare solar in batteries at low price, hold the rest for top-price hours 22-24, keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not top price; store spare solar and pre-charge batteries before evening top-price hours, cooling kept at baseline, tanks idle.","status":"ok"},{"clamps":[{"applied":0.0733,"point":"Building_1.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.1,"rule":"comfort"}],"fallback":null,"reason":"Top price not now; B1 overcooled 2.4C below setpoint so cut cooling to 0.1; B2 and B3 warm so keep baseline cooling; store solar in batteries, no grid charge, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so cooling is trimmed; batteries charge in the cheap, low-price window ahead of the top-price evening hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices flat-ish and top_price_now false; district at peak target so limit load, discharge batteries to cover own load, cool Building_2 baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling none; battery 1 stores solar, others take small grid charges ahead of 17-22h top price; tank idle; cooling baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and carbon high now, so grid charging waits for the cheaper midday hours; cooling stays at baseline and storage holds.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries at the cheap 0.029 price ahead of the 23-24h top price; trim overcooled Building_3, keep others on baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_3 cooling for overcooling, raise Building_2 cooling as it runs warm, hold batteries for top-price hours 22-24, and leave Building_1 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are above or near setpoint so cooling stays at baseline; Building 1 is overcooled and gets slight cut; battery idle before top-price hours 21-23; no grid charging at 19h.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are slightly overcooled so cooling is trimmed; Building_2 is warm so cooling is kept; batteries and tanks held idle this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; price is not at top now, so battery holds and charges only at cheap hours; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not top now; start topping up batteries before the 18-20h peak, and trim Building_3 cooling since it is overcooled.","status":"ok"},{"clamps":[{"applied":0.0995,"point":"Building_1.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap, low-carbon hour before the 17-19h top-price window: top up batteries 2 and 3 and small charge for 1, cooling and DHW left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 2 hold cooling, Building_3 eases overcooling, and batteries charge in the cheap hours before the 16-18h top price.","status":"ok"},{"clamps":[{"applied":0.1383,"point":"Building_2.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Cheap low-carbon hour with grid charging allowed: top up Buildings 2 and 3 batteries, hold Building 1 near full, keep cooling at baseline and DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0067,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries top up in cheap low-carbon hours ahead of the 14-16h top-price window.","status":"clamped"},{"clamps":[{"applied":0.0016,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Overcooling is minor, so baseline cooling holds; price is low and not top, so batteries hold, but B1 and B3 may top up gently since grid charging is ok in cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut to 0; Building_3 charges 0.15 from cheap, clean grid power ahead of the 12-14h top price; DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest hour with flat-ish low price: no overcooling, tanks idle, Building_3 battery charges 0.15 toward 0.95 before the afternoon top-price hours.","status":"ok"},{"clamps":[{"applied":0.0963,"point":"Building_3.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled by 0.75 C, so cooling is cut to 0. Building_3 charges 0.1 from cheap grid power ahead of the top-price hours. Others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 2 overcooling not needed; B3 near setpoint, hold baseline. Price not top now, grid charging limited; store spare solar only, hold batteries and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.18C so cooling is cut; price is not at top, so batteries hold; Building 2 is warm, keep cooling; charge is limited while price is mid-level.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries near full since no top-price hour is now and carbon is high; cooling stays at baseline as no room is overcooled; DHW left idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; battery holds charge for the top-price hours 6-8 and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are not overcooled; keep baseline cooling. Building_2 is unoccupied and warm, so no cut. Price not top now; grid charging ok but cheap-hour charging is modest, so hold batteries near baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries near full and no top price now, so hold; small top-up on Building_3 for the 16-18h peak; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling and dhw kept at baseline since no room is overcooled; batteries held near full soc for the top-price hours 3-5, with no grid charging needed now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.3 C below setpoint so cooling is cut to 0; Building_3 tops its battery to about 0.95 ahead of the top-price hours 2-4.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are near full and top-price hours are ahead, so hold; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge B2 and B3 to cover their loads, trim overcooled B1 slightly, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover each building's load, sized to load_now; keep cooling at baseline since rooms are at or above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its building load; rooms are at or above setpoint, so cooling stays at baseline and DHW is idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries for top-price hours 21-23; slight cooling trim in overcooled Building_1, others at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled, trimmed cooling; B2 above setpoint so cooling kept; spare low-price hour used to start battery charging ahead of top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 21 is not top price; B1 and B3 are cooler than setpoint and B2 is warm, so cooling stays baseline; batteries idle until top-price hours 19-21 pass, with the district near its peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is near its low and grid charging is allowed, so all three batteries charge 0.15 ahead of the 18-20h top price; B1 is slightly overcooled and eases off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, cheap and low carbon: charge batteries toward 0.95 ahead of the 17-19h top-price window; rooms within band so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not now; buildings 1 and 2 are overcooled slightly, so reduce cooling modestly; grid charging ok at low price, charge batteries gradually.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut; Building_2 is warm so cooling is kept; batteries top up cheaply before the 15-17h price peak.","status":"ok"},{"clamps":[{"applied":0.0893,"point":"Building_1.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0643,"point":"Building_3.battery","reason":"charge would take charge from 0.89 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Hour 2 is cheap and not top price; grid charging ok, so charge batteries modestly toward 0.95 before 14-16h peak; cool slightly less in overcooled rooms.","status":"clamped"},{"clamps":[{"applied":0.0199,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Overnight cheap hour with grid charging allowed; top up batteries toward 0.95 before the 13-15h top-price window. Cooling and DHW left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 4, cheap price and low carbon: charge batteries lightly where grid charging is allowed, keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[{"applied":0.0046,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.005,"rule":"soc"},{"applied":0.0095,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Rooms are within band and not overcooled, so baselines stay. Batteries are near 0.95, so only small top-ups before the 16-18h price peak; tanks stay empty.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is slightly overcooled so cooling is trimmed; batteries are near full, so only small grid top-ups before the price peak; no discharge at low price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, price is not top and load is well below target, so keep baseline cooling, idle batteries and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are not overcooled and batteries are near full with no top price now, so keep baseline cooling and hold storage idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.2 C overcooled so cooling is trimmed to 0.083; other rooms are at or above setpoint. Batteries held, not top price, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled so cooling trimmed a little; batteries held since no top price now and soc already near 0.95; others unchanged.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.08 C below setpoint, so cooling is trimmed; batteries idle until top-price hours, tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0016,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Overcooling is minor (Building_1 -0.36 C, within band); top price not now, so hold batteries; store spare solar in Building_1 and 3 moderately; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 13, price not top; B1 battery already at 0.95 so no charge; B2 unoccupied, no overcooling; B3 near setpoint; keep baseline cooling, idle storage and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint, so baseline cooling holds; price is not at top and batteries are near full, so storage and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now and batteries are already near 0.95 for the top-price hours ahead; no overcooling, so keep baseline cooling and hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, trim slightly overcooled Building_1, hold DHW at zero, no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its building load; trim overcooled Building_1 slightly; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed slightly; all batteries discharge to cover load at the top price and keep district load within target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price not top now; B2 unoccupied and B1 overcooled slightly, so cooling is trimmed; batteries hold for 21-23h peak; district load near target, so limit charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; Building_3 discharges to ease the binding district peak limit, Building_1 and 2 hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on: discharge batteries to cut district load; trim overcooled rooms slightly; hold DHW and charging for cheaper hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms B1 and B3 get reduced cooling; B2 is warm so kept at baseline. Batteries and tanks idle until cheap early-morning charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with grid charging allowed: small battery charge toward the evening top-price hours; cooling kept at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 16-18h top-price peak: charge all batteries at 0.15 and trim cooling for the overcooled rooms in Buildings 1 and 3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 15-17h top price: charge all three batteries at 0.15; cooling and DHW stay at baseline or null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and not top price; charge batteries moderately within grid_charging_ok, avoid overcooling, leave DHW idle, keep cooling near baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 13-15h top-price window: charge each battery 0.15 toward 0.95, no discharge, cooling and tanks at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 12-14h top price: charge batteries modestly, keep cooling at baseline since rooms are near setpoint, tank idle.","status":"ok"},{"clamps":[{"applied":0.0495,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0473,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 11-13: top up batteries toward 0.95, trim overcooled Building_1 slightly, and leave the rest at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Pre-charge batteries toward 0.95 ahead of the 10-12h top-price hours; B1 and B2 are nearly full, so only small charges; cooling kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price low and not top now, so no cooling change. Load at target and above 0.9x forecast, so discharge batteries to cut district load; hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled-free; cooling kept at baseline, battery idle as price not top now, charging not advised at this hour's mid price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 slightly under-cooled? No: all rooms warm or near setpoint, so keep baseline cooling; price not top now, so hold batteries and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.76C below setpoint, so trim cooling slightly; no top price now, so hold batteries; price is low and grid charging is allowed, so mild charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 2.6C below setpoint, so cooling is cut modestly; no top price now, so batteries hold, and charging only starts once grid_charging_ok in cheap hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling eases off; spare solar is stored in its battery; the other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly cool, reduce cooling a bit; top price not now, so store spare solar in batteries; Building_2 unoccupied and warm, keep baseline; Building_3 keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and overcooled by 0.87 C, so cooling is trimmed; batteries hold for the top-price hours ahead and only spare solar is stored.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price now is mid-level, not top; battery held near full for top hours 1-3 ahead, no grid charge needed. Cooling near baseline; Building_1 and Building_2 slightly warm, Building_3 cool.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get less cooling; top-price hour so batteries cover building load; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover load, trim cooling where rooms are overcooled, no grid charging or tank charging.","status":"ok"},{"clamps":[{"applied":-0.4038,"point":"Building_2.battery","reason":"discharge would take charge from 0.50 below 0.1","requested":-0.5,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover own load; B2 unoccupied, B1 near setpoint, B3 overcooled so cut cooling; no grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 is warm so cooling stays. Batteries hold charge for the 21-23h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.64C above setpoint so no cooling cut; top price is at hours 20-22 ahead, not now, so no discharge; grid charging of batteries is ok but low prices hit early morning, so hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling slightly in overcooled occupied rooms 1 and 3; hold batteries and tanks since no top-price discharge is due now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling only in Building_2 (1.52C above setpoint, no cut needed); price not top now, battery held, charging deferred to cheap hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; batteries start gentle grid charging ahead of the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price now and cheaper than top hours ahead, so charge batteries toward 0.95 before the 16-18h peak; trim slightly overcooled Building_1.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hours now; charge batteries toward 0.95 before the 15-17h top-price window. Comfort rooms stay at baseline cooling.","status":"ok"},{"clamps":[{"applied":0.0967,"point":"Building_1.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour, price not top; charge batteries modestly with grid_charging_ok true, cool slightly less in overcooled Building_2 is not needed, keep cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge batteries toward the 13-15h top-price window, trim overcooled Building_1, and keep the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour with grid charging allowed: top up Buildings 2 and 3 batteries ahead of the 12-14h peak; Building 1 is near 0.95 so it holds; rooms are within band, so no cooling change.","status":"ok"},{"clamps":[{"applied":0.0061,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building_1 slightly cool, no cooling cut; price not top, grid charging ok but cheap hour so charge modestly; B2 overheated so no cooling cut; B3 charge modestly from solar and cheap hour.","status":"clamped"},{"clamps":[{"applied":0.0885,"point":"Building_2.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour with grid charging allowed: top up Buildings 2 and 3 batteries modestly, hold Building 1 near full, keep cooling at baseline and tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; Building_3 stores 0.15 of capacity at low price; batteries hold for top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"No top-price hour now and no room is overcooled, so cooling stays at baseline and storage and tanks hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold storage for top-price hours 16-18; charge Building_3 battery modestly at low price, keep tanks empty and cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 cooling near baseline; Building_2 unoccupied and warm so baseline kept; top price not now, so battery holds, charging low price hours ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.2C below setpoint, so cooling is trimmed; battery holds for top-price hours 16-18, with spare solar stored in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.57C under setpoint, so cooling is cut slightly; price not top now, no discharge; batteries hold for 4-6h peak; district load near target.","status":"ok"},{"clamps":[{"applied":0.0889,"point":"Building_3.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; top-price hours are ahead, so I hold storage and top up Building_3 from the cheap grid, with no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled so cooling is trimmed; batteries hold or top up gently ahead of the price peak at hours 2-4; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 cooling slightly as it is overcooled; hold batteries since top-price hours are ahead and Building_1 is already near 0.95 SOC; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building load; B1 is cool so cooling kept at baseline; B2 is above setpoint so cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads, cut overcooled occupied rooms' cooling, leave the tank idle and do not grid-charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward building load; trim cooling in the two overcooled occupied rooms; leave unoccupied Building_2 cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries hold for the top-price hours 21-23 and district load is below the 0.9 discharge trigger.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled, so cooling is trimmed; batteries top up at low price, no discharge as top price is not active now, tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling slightly in overcooled Buildings 1 and 3, leave Building 2 at baseline, and hold batteries idle until cheaper, lower-carbon early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are not overcooled enough to cut cooling; battery held near floor since top price is 2 to 3 hours ahead, charging is not needed now, and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 is above setpoint so it keeps baseline. Batteries charge at the low price, with no grid charge at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now; B2 overcooled slightly? No, B2 is 2.39C above setpoint so cool normally; hold batteries, charge cheap hours only, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 15-17h top-price window: charge all three batteries about 0.15 each, keep cooling at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, top price not now; charge batteries modestly with grid charging ok, avoid tank charging, trim cooling only where overcooled (none here).","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and grid charging is allowed, so all three batteries charge gradually toward 0.95 before the 13-15h top-price window; no cooling changes.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge batteries gently toward 0.95 before the 12-14h top-price window; B2 overcooled slightly so cooling held at 0, others kept at baseline.","status":"ok"},{"clamps":[{"applied":0.0388,"point":"Building_1.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0495,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Hour 5 is cheap and not top-price; charge batteries modestly within headroom, idle heat pumps except Building_3 near band, no DHW.","status":"clamped"},{"clamps":[{"applied":0.1293,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Cheap early hour with headroom: top up Building_3 battery toward 0.95, hold others, keep cooling at baseline since rooms are above setpoint, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 and B2 near setpoint; top price not now, so hold batteries, grid charging ok at low price, dhw idle; modest charging within headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is minor (B1 0.52 C below setpoint, B2/B3 above setpoint); top price not now, so hold batteries and keep baseline cooling, no tank or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are near full and price is not top, so storage and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so hold them idle; tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0116,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.012,"rule":"soc"}],"fallback":null,"reason":"Cooling left at baseline since rooms are at or above setpoint; small solar-fed charging tops batteries toward 0.95 ahead of the 5-7h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price is 4-6 hours ahead, so hold batteries; Building_2 is unoccupied and near setpoint; charge batteries modestly only where grid charging is allowed and load is low.","status":"ok"},{"clamps":[{"applied":0.0023,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; Building_1 stores its spare solar; top-price hours are ahead, so the rest of the battery is held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are not overcooled, so cooling stays at baseline; price is not top now, so batteries hold and dhw stays 0; Building_2 is unoccupied and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low now with top-price hours 1-3 ahead, so hold batteries and top B3 up slightly; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover own load, cool slightly below baseline only if overcooled, no grid charging, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load, trim cooling only where occupied rooms are overcooled, and keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads; cool slightly less in overcooled Building_1 and Building_3 room; no grid charging; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get slightly less cooling; batteries discharge only within usable charge at top price; building 2 unoccupied and above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is overcooled so cooling is trimmed slightly; batteries discharge into the top-price hour within usable energy; no charging at top price; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now with no usable battery in B1/B2; B1 and B3 cooling trimmed as overcooled, B2 warm so cooling held, B3 small discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by about 1 C so its cooling is trimmed slightly; batteries are at floor with no usable charge, and no grid charging or tank charging is allowed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price weekend with no top hours: battery idle, no grid charging; cool slightly in Building_1 and hold others near baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle; Building_1 and Building_3 get slight cooling trims since they are overcooled, Building_2 is above setpoint so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery idles; cooling near baseline since rooms are near setpoint; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is overcooled, so cooling holds baseline and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_2 is 1.06 C above setpoint so cooling is raised; others hold baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so storage stays idle; rooms are near setpoint and load is well under peak target, so baseline cooling is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings slightly below setpoint, so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so storage stays idle; no room is overcooled, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so storage stays idle. All rooms are at or above setpoint, so baseline cooling holds and DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idles; buildings 1 and 2 are not overcooled, Building 3 is 0.4C below setpoint so keep baseline cooling; no dhw.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; cooling only trimmed where overcooled, and tanks held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so battery stays idle; no room is overcooled and load is well under target, so baseline actions are kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle. Rooms are at or above setpoint, so cooling stays at baseline and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle. Rooms are at or above setpoint, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Rooms are not overcooled, so cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no usable battery energy and zero peak headroom, so storage stays idle, tanks stay empty and cooling follows baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are not overcooled, building 2 is warm so baseline cooling kept, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; Building 1 and 3 are overcooled so cooling is trimmed slightly; Building 2 is above setpoint so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks stay at 0; trim cooling only in overcooled occupied rooms (B1, B3), keep B2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling slightly in overcooled occupied rooms 1 and 3, keep room 2 at baseline; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim overcooled Building_3 slightly, hold Building_1 near baseline near band edge, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks hold at 0; cooling kept at baseline since rooms are near band edges or warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery idles; overcooled Building_3 trimmed toward 0.1, Building_1 kept at baseline near band edge, Building_2 above setpoint left alone.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks stay at 0; Building_1 is overcooled by 1.7 C so its cooling is trimmed by 0.1, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery stays idle; trim cooling only in Building_1 and Building_3, which are overcooled; Building_2 is warm so it stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle; cooling and tank left at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled 1.8C below setpoint so cooling is cut to 0.1; others held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle and DHW is off; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Building_1 is overcooled 1.6 C below setpoint, so its cooling is cut; the other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries idle to avoid round-trip losses; no room is overcooled, so cooling and DHW stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, so batteries stay idle; Building_1 is overcooled 1.4 C so its cooling is cut slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; Building 2 is above setpoint so no extra cooling cut; tank stays at zero and baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices, so batteries stay idle and tanks hold at 0; Building_1 is overcooled 1.17 C so its cooling is trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint and Building 2 is overheated, so cooling stays at baseline; prices are flat-ish with no top hour now, so batteries hold and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; others hold baseline; batteries trickle-charge at low price before the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed; all batteries charge modestly in the cheap, low-carbon hours ahead of the evening top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not overcooled anywhere, so cooling stays at baseline; storing solar and a modest pre-peak battery charge since grid charging is allowed and load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1 C overcooled so cooling is trimmed; all batteries trickle-charge at low price before the top-price evening hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is at its low and not a top hour, so I'm topping up batteries gently before the 19-24h peak-price window; cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_1 gets slightly less cooling; batteries discharge to cover load since district load exceeds 0.9x forecast; no grid charging at zero headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in the two overcooled occupied rooms, hold batteries near idle before the top-price hours, and store only spare solar.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.46 C overcooled, so its cooling is trimmed slightly; batteries hold since carbon is high and grid charging waits for cheaper hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Ease cooling in overcooled B1 and B3, discharge batteries to keep district load under target, and skip grid charging with almost no headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled so its cooling is trimmed; batteries discharge to cover load since district load is above 0.9x forecast; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint so cooling stays at baseline; district load is past 0.9x forecast, so batteries discharge only their small usable energy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 16-18h top-price window: charge batteries modestly, hold tanks at 0, and avoid cooling cuts in rooms near the comfort band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or below band with no top-price hour now and load under 0.9x forecast; hold batteries and keep baseline cooling, saving charging for low-carbon hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cool but baseline cooling already sits at the safe edge, so I hold baseline; Building_2 is warm; batteries and tank idle until cheap early-morning charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets slightly less cooling; Building_2 stays at baseline; Building_3 kept at baseline due to band edge; batteries charge modestly at the low price to prepare for top hours 17-19.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, grid charging allowed: charge all batteries toward 0.95 before the 16-18h top price. Trim cooling for overcooled occupied rooms 1 and 3; hold room 2.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with grid charging allowed: charge each battery 0.15 toward 0.95 before top-price hours 15-17; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and not top price; charge batteries moderately with grid charging allowed, hold DHW at zero, and trim cooling only where rooms are overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get slightly less cooling; all batteries charge at the low price and low carbon ahead of the 13-15h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.0681,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Overcooled rooms trimmed, Building_2 left alone above setpoint, and batteries topped up on cheap low-carbon hours ahead of the 12-14h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 5 is a cheap, low-carbon hour: trim overcooled Building_1 and Building_3, top up batteries toward 0.95 before the 11-13 top-price hours, and keep tanks empty.","status":"ok"},{"clamps":[{"applied":0.0068,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0075,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building 1 slightly cold, no cooling cut; price not top, so no discharge; grid charging ok at low price, store modestly in batteries, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 7: price low and not top, batteries near full so hold idle; B1 and B2 overcooled slightly, B3 at setpoint so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Battery held idle: not a top-price hour and load is well below target. Cooling trimmed only in overcooled B1 and B3; B2 is warm, so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 slightly overcooled, trimmed cooling; B2 warm so baseline; B3 mildly overcooled, trimmed; B3 battery tops up at low price; others hold; no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled (about 2.7 and 1.0 C below setpoint) so cooling is trimmed; battery idle since top price is 6-8h ahead and no price now; Building 3 unoccupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_1 cooling since it is overcooled; hold batteries for the top-price hours ahead and keep tanks idle; other cooling stays at baseline.","status":"ok"},{"clamps":[{"applied":0.118,"point":"Building_3.battery","reason":"charge would take charge from 0.83 above 0.95","requested":0.12,"rule":"soc"}],"fallback":null,"reason":"B1 is occupied and 0.93 C below setpoint, so cooling is trimmed slightly; B3 tops up its battery toward 0.95 from spare solar ahead of the top-price hours 4-6.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is minor, so cooling stays near baseline; prices are low and not top, so battery holds and no grid charging or tank use this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.46C under setpoint, so cooling is trimmed; batteries hold for top-price hours 2-4 ahead and load is far below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is at target with zero headroom, so I discharge modestly to cut district load while keeping most battery charge for the top-price hours 16-18.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its building load; cooling held at baseline since rooms are near or below band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load; ease cooling where occupied rooms are overcooled; leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery only down to its floor. Cooling kept at baseline since rooms are near or below band, so no cut.","status":"ok"},{"clamps":[{"applied":0.2575,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.41","requested":0.257,"rule":"deviation"},{"applied":0.3322,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.48","requested":0.332,"rule":"deviation"}],"fallback":null,"reason":"Cut overcooled occupied rooms (B1, B3) toward lower cooling, hold batteries idle as no top-price hour is now and carbon is high, B2 at setpoint keeps baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 is cooling-capped only if warm; it is cool near band edge, so hold baseline. Other rooms are not overcooled. Battery and tank held idle; no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; batteries hold since carbon and price are high now and cheaper early-morning charging is ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled Building_1 and Building_3 cooling, and discharge the small usable batteries to hold district load near target since it exceeds 0.9x forecast.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; batteries start modest grid charging at low price before the 17-19h top-price hours. DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is at its low, so I charge all three batteries from the grid toward the top-price hours and ease Building_3's overcooling; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries in the cheap hour ahead of top-price hours 15-17; cooling held at baseline since rooms are not overcooled, and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now: charge all three batteries at 0.15 toward 0.95 before the 14-16h peak; trim overcooled Building_1 slightly; hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets less cooling; all batteries charge at the cheap hour ahead of the 13-15h top price; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, grid charging allowed: batteries charge toward 0.95 before the 12-14h top price. B1 cooling trimmed slightly as it is overcooled; others hold.","status":"ok"},{"clamps":[{"applied":0.0491,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0495,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Hour 5 is cheap and low-carbon with no top price ahead; Building_1 is overcooled so cooling is trimmed, and batteries top up gently before the 11-13h peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling left to baseline since rooms are near setpoint; small top-up charges for batteries before 10-12h top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled slightly, trimmed cooling; B2 warm so baseline kept; B3 charges battery at low price ahead of top-price hours; no DHW, no discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint so cooling stays at baseline; batteries are held since top price is not now and SOC is near target; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the coming top-price hours; B1 is overcooled but near its band edge, so keep baseline cooling; B2 and B3 are warm, so no cuts.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.13 C below setpoint so its cooling is trimmed; other rooms are at or above setpoint, and batteries hold for the top-price hours 6-8.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not now; buildings 1 and 3 slightly cool-side near setpoint, so keep baseline cooling; battery near full, hold for top-price hours 5-7; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by about 1 C, so cooling is trimmed slightly; B3 stores spare solar ahead of the top-price hours; the rest holds.","status":"ok"},{"clamps":[{"applied":0.0696,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Overcooled occupied Building_1 gets reduced cooling; batteries hold for the top-price hours 3-5, with Building_3 topping up from spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour is now; batteries are near full, so only topping up Building_3 and holding cooling and tanks at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now, batteries are already near 0.95 so hold them for the top-price hours ahead; no overcooling correction needed, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, keep cooling at baseline near comfort edge, no grid charging, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, trim overcooled Building_3, hold Building_1 cooling as its room is below band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries up to usable energy; cooling kept at baseline since rooms are cool or at setpoint; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; Building_2 is above setpoint so it keeps baseline. Batteries and tanks held idle until top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied rooms B1 and B3, hold batteries since no top-price hour is now and charging is not cheap, leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are cool-side near setpoint; B1 is 1.9C below so trim cooling slightly; top price hours ahead, so hold batteries and avoid grid charging now.","status":"ok"},{"clamps":[{"applied":0.2287,"point":"Building_1.cooling","reason":"indoor 22.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.229,"rule":"comfort"}],"fallback":null,"reason":"Building_3 is overcooled so cooling is trimmed slightly; Building_1 is cool so cooling stays at baseline. Batteries hold for the 18-20h top-price hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak limiter is on with zero headroom, so no grid charging; small discharges cover load near forecast peak, and cooling stays at baseline since rooms are at or outside band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 16-18h top price: charge batteries modestly, cut overcooled Building_3 cooling, leave comfortable rooms at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms fall inside the envelope limits, so cooling stays at baseline. Charging batteries at the low price ahead of the 15-17h top-price hours; tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 slightly cut cooling; all batteries charge 0.15 in cheap low-carbon hour before 14-16 top-price window; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries charge in this cheap low-carbon hour ahead of the 13-15h top-price window; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get slightly less cooling; all batteries charge at cheap hour before the 12-14h top-price window; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5: price low and not top, so charge batteries modestly with grid while under peak target; cooling near baseline since rooms are near setpoint, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled so cooling is trimmed; B3 charges from the cheap grid ahead of the 10-12h top price; other storage holds and B2 stays unchanged.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with grid charging allowed: top up batteries slightly toward 0.95 before the 9-11h top-price window; no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 2 cooling kept near baseline; Building 1 is 0.57C below setpoint so slight cut; no top price now, batteries idle, tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and none is overcooled, so baseline cooling holds; batteries stay idle as carbon is high and storage is held for the top-price hours ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 cut to zero cooling; B3 tops battery from cheap solar and grid; others hold for the 6-8h top-price peak.","status":"ok"},{"clamps":[{"applied":0.0188,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"No building is overcooled, so cooling stays at baseline. Small solar storage now; batteries hold charge for top-price hours 5-7.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled so cooling is trimmed; battery 3 stores spare solar; no top-price discharge now, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so only small solar storage or idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms near setpoint or above it, so cooling stays at baseline; batteries are near full and held for the 2-4h top-price hours; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by 0.74C, so cooling is trimmed slightly; batteries hold for the top-price hours 1-3 ahead; other settings stay at baseline.","status":"ok"},{"clamps":[{"applied":-0.5,"point":"Building_1.battery","reason":"move of 0.60 exceeds 0.5 per step","requested":-0.6,"rule":"rate"}],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; trim cooling in overcooled occupied rooms, and hold cooling where rooms are at or above setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads, and trim cooling in overcooled rooms; no grid charging or DHW.","status":"ok"},{"clamps":[{"applied":0.4754,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.63","requested":0.475,"rule":"deviation"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut 0.15; all buildings discharge batteries to usable floor in this top-price hour; Building_3 cooling held since it is near band edge.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get reduced cooling; batteries idle since price is not at top and load is below 0.9 of forecast; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; Building 2 is warm, so it keeps baseline. Top price is not active now, so batteries hold for later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; Building 2 is warm so it keeps baseline. Batteries and tanks held: not a top-price hour and no charge yet.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get trimmed cooling; batteries hold since top-price hours are later and grid charging waits for the cheapest early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Ease cooling slightly in overcooled Building_1 and Building_3, hold other cooling, and keep batteries idle until the cheap, low-carbon early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool less in the two overcooled occupied rooms, leave Building 2 alone, and start modest off-peak battery charging ahead of the 16-18h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top now; buildings 1 and 2 are overcooled slightly, so trim cooling modestly; hold batteries until grid charging is cheap; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with cheap grid power: charging all three batteries modestly ahead of the 14-16h top-price window; cooling and tanks left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, top price 13-15h ahead; charge batteries modestly, no tank charging, mild cooling hold near baseline since rooms are below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; all batteries charge 0.15 in this cheap, clean hour to prepare for the 12-14h top-price period.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour at lowest carbon: charge each battery 0.15 ahead of the 11-13h top-price window; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries at the cheap, low-carbon hour before the price rises; trim Building 1 cooling slightly as it is overcooled; leave the tanks idle.","status":"ok"},{"clamps":[{"applied":0.0826,"point":"Building_1.battery","reason":"charge would take charge from 0.87 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour: no top price now, so charge batteries modestly toward 0.95 before the 16-18h top-price window; no cooling change as no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 cooling near baseline, Building_2 warm so no cut; top price not now, battery idle; grid charging ok but price low at 0.029 and limiter on, so hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.74C, so cooling is trimmed slightly; batteries and tanks hold since no top price is now and charging is not needed.","status":"ok"},{"clamps":[{"applied":0.0186,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is left to baseline-safe null; batteries store cheap solar and top up before the 6-8h top-price window; tanks stay at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling and battery held near baseline: rooms are within band, Building_3 gets a small low-carbon top-up ahead of the 16-18h price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, so cooling stays at baseline; B3 stores spare solar slightly, B1 and B2 are near full, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.4C so cooling is cut slightly; price is not top now, so batteries hold and tank stays idle, with no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled (0.9 C below setpoint) so cooling is trimmed slightly; batteries near full, held for top-price hours 2-4; tanks kept at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hours are 1-3 ahead, not now, so batteries hold; Building_1 is slightly overcooled so cooling is trimmed to 0.19; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its load; trim Building_3 cooling slightly since it is overcooled; dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; B3 cooling trimmed slightly as it is overcooled; no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load within usable energy; cooling stays at baseline since rooms are not overcooled enough to cut.","status":"ok"},{"clamps":[{"applied":0.2597,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.41","requested":0.1,"rule":"deviation"}],"fallback":null,"reason":"Building 1 and 3 are overcooled-free (within band, B3 1.5C below setpoint, cut cooling); top price not now so no discharge; B2 unoccupied, keep baseline; hold storage.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint, so keep baseline cooling; no top price now and district load is at peak target, so batteries and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on: discharge B1 and B3 batteries to cut district load; trim cooling in overcooled B1 and B3; B2 near setpoint, no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied Buildings 1 and 3; hold batteries and tank until the cheap early-morning window before the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging ok: charge batteries 0.15 toward the 17-19h peak; trim overcooled Buildings 1 and 3, leave Building 2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price: charge all three batteries at 0.15 for the top-price hours; cut cooling in overcooled Building_3 and Building_1, hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: charge each battery 0.15 toward the 15-17h top-price window; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the 14-16h top price: charge batteries modestly, keep cooling at baseline since rooms are near setpoint, and leave the DHW tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 at low price, not top; grid charging allowed, so charge batteries modestly, trim overcooled Building_1, hold tanks at zero.","status":"ok"},{"clamps":[{"applied":0.1292,"point":"Building_1.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 slightly cut cooling; cheap clean hour, so charge batteries toward 0.95 before the top-price hours 12-14.","status":"clamped"},{"clamps":[{"applied":0.0582,"point":"Building_2.battery","reason":"charge would take charge from 0.89 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour with low carbon: lightly charge batteries toward 0.95 ahead of the top-price hours; cooling kept at baseline since rooms are within band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets less cooling; batteries top up in the low-price hour, no discharge since top price is not now, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"No room is overcooled and none is over its setpoint, so cooling stays at baseline; batteries hold near full for the upcoming top-price hours and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint so cooling stays at baseline; batteries hold except a small top-up for Building_3 at low price; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak headroom is zero and load is above 0.9x forecast, so batteries discharge to cover own load; B1 cooling trimmed slightly as it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled so cooling cut; B2 warm so baseline cooling kept; all batteries charge modestly ahead of top-price hours 6-8; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling is trimmed slightly; spare solar is stored in Buildings 1 and 3; no discharge, since peak headroom is ample and top prices come later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Midday low price with solar surplus: store spare solar in batteries ahead of the 4-6h top-price hours; cooling near setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 3-5 hours ahead; charge batteries modestly now if grid_charging_ok, hold tanks at zero, and cool at baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling for overcooled occupied Building_1 and slightly for Building_3; trickle-charge batteries at near-cheapest price before top-price hours 2-4; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 1-3 hours ahead, so hold batteries; cool buildings near setpoint at baseline; no tank charging; Building_2 unoccupied and near band, leave baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge to cover building load; overcooled occupied Building_1 gets reduced cooling; others keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover load, trim cooling where rooms are overcooled, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its load within usable energy; cooling held at baseline where comfort band edges are near.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are occupied and overcooled, so cooling is trimmed; batteries discharge at top price within usable energy; Building_2 is above setpoint, so cooling is left alone.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied rooms 1 and 3 and discharge Building 3's small usable battery charge at the top price; Building 2 is unoccupied and above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied rooms 1 and 3, hold Building 2 where it is above setpoint, and discharge the small usable battery charge at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: cut overcooled Building_1 and Building_3 slightly, hold Building_2 (warm) at baseline, discharge Building_3's small usable battery charge; batteries otherwise idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; cut Building_3 cooling slightly as it is overcooled, keep others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, no grid charging; buildings 1 and 2 are near setpoint so baseline cooling kept, building 1 slightly cold so no change needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; no room is safely overcooled past 0.5 C under the clamp rules, so cooling stays at baseline and DHW is 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle and tanks hold at 0. Building_3 is overcooled 1.2 C, so its cooling is trimmed; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings are near setpoint or slightly under, so cooling follows baseline and tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idles; Building_1 and Building_3 slightly overcooled is minimal, keep cooling near baseline; no DHW; hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 1.25 C below setpoint so cooling is trimmed; others held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings near setpoint or cooler, use baseline cooling; no DHW; Building_2 is warm so slightly more cooling is not needed beyond baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building 1 and 3 slightly under setpoint, Building 2 warm so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay at 0; Building_1 is slightly overcooled so its cooling is trimmed a little, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by 1.74 C so its cooling is cut to 0.1, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings 1-3 are overcooled or near setpoint, Building_1 is 1.74C below setpoint so cut cooling slightly; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery stays idle; Building 1 is 0.88C below setpoint so modest cooling cut; others near setpoint, hold baseline cooling and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. No room is more than 0.5 C overcooled, so cooling keeps baseline and the tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top hours, and no usable battery energy, so storage stays idle; Building_1 is slightly overcooled so its cooling is trimmed; others held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries and tanks idle. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is warm, so its baseline is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay empty; cut cooling only in Building_1 and Building_3, which are overcooled, and keep Building_2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; overcooled occupied rooms in B1 and B3 get reduced cooling, B2 is above setpoint so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; occupied rooms are overcooled, so cooling is trimmed gradually below baseline to ease load and comfort.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and DHW stays at 0; cut cooling only in overcooled rooms, Building_3 left null near its band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms near comfort band edges or at setpoint keep baseline cooling; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours: batteries idle, tanks untouched, cooling kept at baseline since rooms are near comfort band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery stays idle; buildings near band edges keep baseline cooling, and tanks are held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery and tank idle. Buildings 1 and 3 are near comfort band edges, so cooling stays at baseline; Building 2 is above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, so batteries stay idle. Overcooled occupied rooms in Buildings 1 and 3 get reduced cooling; Building 2 is above setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle; Building_1 is overcooled 1.55 C so its cooling is cut to zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_3 is 0.73 C below setpoint so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by about 1 C, so its cooling is cut to zero; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_2 is overcooled by 0.78 C so its cooling is cut to 0; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; overcooling is absent, so cooling stays at baseline and dhw null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 0.63 C so its cooling is trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours and batteries at floor SoC, so hold batteries idle; rooms are within band, so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; rooms are at or above setpoint, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint, Building 2 is warm, so keep baseline cooling; price is flat, so battery and tank stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; carbon is near its daily max and price is flat, so the battery and tank hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; carbon is near its peak now, so I defer battery charging to the low-carbon early hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not now and battery is at floor with no usable energy; hold storage, no grid charge, use baseline cooling since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm or near setpoint so cooling stays at baseline; batteries are at floor and carbon is near its peak, so hold storage until low-carbon hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero and batteries sit at floor with no usable energy, so no charging or discharging; rooms are at or above setpoint, so baseline cooling is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are near-flat and carbon is high now, so storage stays idle, cooling holds baseline, and no tank charging; no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, so baseline cooling holds; batteries sit at floor with low price and high carbon now, so I hold storage and skip tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are at floor and price is not top, so hold storage idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are at or above setpoint so cooling stays at baseline; batteries sit at floor with prices and carbon not favourable, so no charging or discharging this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are above setpoint so cooling stays at baseline; batteries start charging at the low price, about 0.15 per hour, ahead of the top-price hours 22-24.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm so cooling stays at baseline; price is low now and top-price hours are ahead, so spare charging to the batteries at 0.15 per hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are above setpoint so cooling stays at baseline; prices are low now, so batteries charge gradually ahead of the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are well above setpoint so cooling stays at baseline; price is low now, so charge batteries 0.15 ahead of the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are not overcooled, so cooling stays at baseline. Carbon is near its peak now, so batteries hold until low-carbon early hours, then charge before the 18-20h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and carbon is near its peak, so hold batteries for the 17-19h top-price window; cooling stays at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries modestly at the low price ahead of 16-18h top-price hours; Building_3 is overcooled so cooling is trimmed, others held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are all above setpoint so cooling stays at baseline; prices are low and grid charging is allowed, so batteries charge 0.15 toward the 15-17h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap off-peak hour with grid charging allowed, so all three batteries charge 0.15 toward the top-price hours; rooms are at or above setpoint, so cooling stays at baseline and DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour with grid charging allowed, so batteries charge about 0.15 toward the 13-15h top-price window; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price with grid charging allowed: charge each battery about 0.15 per hour toward 0.95 before top-price hours 12-14; cooling stays at baseline.","status":"ok"},{"clamps":[{"applied":0.0496,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0496,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Low price and carbon now: top up batteries toward 0.95 before the afternoon top-price hours, with no cooling change and tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour is now, so batteries top up near 0.95 for the 10-12h peak and Building_3 charges from cheap solar/grid; rooms need no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 1.2C below setpoint, so cut cooling; price is not top now, so hold batteries and tanks idle while district load nears target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not top now, so batteries hold except a small cheap grid top-up for Building_3; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[{"applied":0.0126,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.16","requested":0.0,"rule":"deviation"},{"applied":0.0036,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.15,"rule":"soc"},{"applied":0.0036,"point":"Building_2.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Building 1 and 2 are overcooled slightly? No: B1 is 1.26C below setpoint so cut cooling; B2 warm, hold; B3 unoccupied, hold; price not top, no discharge, charge batteries modestly while grid charging is ok.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.84 C so its cooling is trimmed slightly; batteries hold for the top-price hours ahead and no tank charging is done.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_2 gets less cooling; batteries hold near-full charge for top-price hours 5-7; tanks stay idle; no grid charging at current price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now; B1 is overcooled so cooling is trimmed slightly, B3 stores spare solar, and the remaining batteries and tanks hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled, trimmed cooling; batteries held near full for top-price hours 3-5; district load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is already below its band, so cooling is held at baseline; batteries and tanks idle ahead of top-price hours 2-4 since district load is under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low now and top prices come in 1-3 hours, so batteries hold. Building_3 trims overcooling and tops up slightly; district load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover own load, cool gently, no grid charging, DHW idle; limit district load near target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover each building's load, trim overcooled occupied Building_2 slightly, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover load within usable charge; cooling kept at baseline near comfort edges; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool overcooled occupied rooms less, hold batteries for evening top prices, and charge them modestly now at the cheap hour while keeping district load under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; top-price hours are 16-18, so batteries are held and not charged now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is trimmed; all batteries charge modestly at low price ahead of the 19-21h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 (-2.2C, occupied) so trim cooling; top price not now, grid charging ok in cheap hours but district load near target, so hold batteries and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling, and batteries charge at the low price now since grid charging is allowed and top-price hours come later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour: charge batteries 0.15 toward top-price hours 16-18; trim overcooled rooms in Buildings 1 and 3, hold Building 2 at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour with grid charging allowed, so each battery charges 0.15 ahead of the top-price hours 15-17; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2, cheap price, top prices at 14-16h. Charge batteries gently from grid; no overcooling (rooms below setpoint by under 0.5C); no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries hold for top-price hours 13-15 and charge only in cheap hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is small, so cooling stays near baseline; battery idle except charge since grid charging ok and price low, but top hours ahead; keep moderate charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.49C below setpoint, so trim cooling; top price not now, so hold batteries and charge only if cheap; keep dhw at 0.","status":"ok"},{"clamps":[{"applied":0.0285,"point":"Building_1.battery","reason":"charge would take charge from 0.92 above 0.95","requested":0.03,"rule":"soc"}],"fallback":null,"reason":"Low-price hour: Building_1 is overcooled so cooling is trimmed; batteries top up gradually toward 0.95 before the 10-12h price peak; tanks stay idle.","status":"clamped"},{"clamps":[{"applied":0.128,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 gets slightly less cooling; batteries top up toward 0.95 ahead of the 9-11h top-price hours; no discharge or tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price not active and district load exceeds 0.9x forecast, so batteries discharge to cut load; no grid charging; Building_1 cooling trimmed as overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries charge modestly at low price ahead of the 16-18h top-price hours; no discharge since district load is well below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its cooling is cut to 0; batteries charge modestly at low price while no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled slightly so cooling is trimmed; batteries hold for top-price hours 5-7 and charge gently toward 0.95 at low price; tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0269,"point":"Building_1.battery","reason":"charge would take charge from 0.92 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Storing spare solar in Buildings 1 and 3 ahead of the 4-6h top-price window; no grid charging at mid-price hours, cooling left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cooling near setpoint so keep baseline; battery idle as price not top now, Building_1 near full; Building_2 warm so no cut; no grid charging at mid price.","status":"ok"},{"clamps":[{"applied":0.045,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.045,"rule":"soc"}],"fallback":null,"reason":"Cut overcooled occupied Building_1 cooling, top up cheap-hour battery charging in Buildings 2 and 3, no discharge as load is below target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 discharges slightly to trim district peak near target; other batteries held for the top-price hours 16-18; cooling and DHW kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; trim cooling only for overcooled Building_1; no grid charging or DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load; cooling stays at baseline since no room is overcooled by more than 0.5 C; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building load; trim occupied Building_1 cooling slightly as it is overcooled; keep others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now and district load is below 0.9x forecast, so batteries hold; only overcooled occupied Building_3 is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not active and load is under target, so batteries hold; slight overcooling trimmed in occupied rooms 1 and 3; Building 2 unoccupied and warm, kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now; overcooled Buildings 1 and 3 get slightly less cooling, and batteries start modest grid charging ahead of cheap overnight hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are slightly overcooled, so cooling is trimmed; batteries wait for cheaper early-morning hours before the 18-20h top-price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price 17-19h: charge batteries toward 0.95, trim cooling slightly in overcooled rooms, leave the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: charge batteries about 0.15 toward the 16-18h top-price window; trim cooling in overcooled Building_1 only.","status":"ok"},{"clamps":[{"applied":0.1295,"point":"Building_2.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour: charge all three batteries about 0.15 per hour ahead of the 15-17h top-price window, within peak headroom; cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 14-16: top up batteries toward 0.95 within limits; cooling and tanks held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries top up gently in this cheap, low-carbon hour to be near full before the 13-15h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 4, no top price now; B1 slightly cool so trim cooling, batteries near full so hold, top price at hours 12-14 ahead.","status":"ok"},{"clamps":[{"applied":0.009,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.009,"rule":"soc"},{"applied":0.0057,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.006,"rule":"soc"},{"applied":0.0493,"point":"Building_3.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Price is low and no top hour is now, so batteries top up gently toward 0.95 before the 11-13h peak; cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is small, so cooling stays at baseline; battery near full, price not top now, so hold; grid charging is ok but batteries are at 0.95 already, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.7C overcooled so cooling is trimmed slightly; batteries hold near full for the 9-11h top-price window; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now and batteries are near full, so hold storage idle; rooms are within band, so keep baseline cooling and no hot water charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 1.07 C, so cooling is trimmed to 0.108; the other rooms are at or above setpoint, and batteries are near full with no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are not overcooled; Building_2 is warm so cooling kept. Price not top now, battery idle, grid charging deferred to cheap hours; no DHW.","status":"ok"},{"clamps":[{"applied":0.0354,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled 1.1 C below setpoint so cooling is cut to 0; batteries hold near 0.95 for the top-price hours ahead; Building_3 stores spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled by 0.7 C so its cooling is trimmed slightly; batteries hold for the 4-6h top-price window and tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is slightly overcooled so cooling is trimmed; batteries hold near 0.95 SoC for the top-price hours ahead, and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are near full and top-price hours are 2-4h ahead, so hold storage; no room is overcooled, so keep baseline cooling and idle the tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at the top and batteries are near full, so hold storage idle; no room is overcooled, so keep baseline cooling and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load; Building_3 cooling trimmed slightly as it is overcooled; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, trim overcooled occupied rooms 1 and 3, and keep Building_2 cooling since its room is above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, trim cooling for overcooled occupied rooms, keep tanks idle, no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 19 is not top price; top-price hours are 21-23 ahead, so hold battery and avoid grid charging; Building_2 is warm so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get slightly less cooling; price is not top and carbon is high, so batteries and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak and grid charging allowed, so modest battery charging ahead of evening price peak; cooling at baseline, no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold storage and baseline cooling: district load is at peak target with no headroom, carbon is high, and no room is over 0.5 C cold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price now, so charge batteries ~0.15 within headroom ahead of top-price hours 17-19; trim overcooled Building_3 and hold others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the top-price hours 16-18: charge batteries modestly, trim overcooled Building_3, keep tanks idle and stay within peak headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price and carbon now: charge batteries toward 0.95 before top-price hours 15-17, keep tanks empty, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap off-peak hour with grid charging allowed: charge batteries toward 0.95 before the top-price hours 14-16, trim cooling slightly in overcooled Building_2, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 (-0.77C) so trim cooling; top price not now, so no discharge; charge batteries at cheap hour 3 since grid charging ok and room to 0.95.","status":"ok"},{"clamps":[{"applied":0.0533,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Overcooling is not present; B1 is 0.26C below setpoint so no cut. Price not top now; charge batteries cheaply at low carbon while grid_charging_ok; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is small (B1 -0.63C, B3 -0.51C), so trim cooling slightly; price not top now, battery charging limited by price-hour plan, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with no overcooling; top-price hours are ahead, so only topping up Building_3's battery slightly and holding everything else at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now, not top; hold batteries, no grid charging since top price is 3 hours ahead and charging is cheap, so keep idle; B1 cooling slightly above baseline not needed, use null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at the top and load is below 0.9 x forecast, so batteries hold; rooms are not overcooled, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is only 0.47 C under setpoint so cooling stays at baseline; batteries near 0.95 hold, with a small top-up in Building 3; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling is cut to 0. Spare solar tops up batteries before the price peak; no top-price discharge now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small only; battery idle since top price is 5 hours away and batteries near full; no grid charging needed; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now, top hours 4-6 ahead; hold batteries, charge only if cheap, avoid overcooling; buildings 1 and 3 slightly below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now; batteries are near full and held for the 3-5h peak, cooling stays at baseline, and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by about 1 C, so cooling is trimmed; batteries hold since price is not at top and load is far below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by about 0.9 C, so cooling is trimmed slightly. Battery holds charge for the top-price hours ahead; no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; trim Building_1 cooling slightly as it is overcooled; no grid charging or tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, sized to usable energy. Cooling and tanks stay at baseline or null; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover building load within usable energy; cooling kept at baseline since rooms are cool or near setpoint; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get less cooling, district load is at target so B3 battery trims a little peak discharge, and no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled, so cooling is trimmed a little; others hold baseline. Batteries and tanks idle since top price is not now and charging is not cheapest.","status":"ok"},{"clamps":[{"applied":0.0855,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.24","requested":0.085,"rule":"deviation"}],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is cut; Building_1 is cool so baseline holds; batteries wait for cheap early hours before the 19-21 top-price peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is over 1.5 C below setpoint so its cooling is cut to 0.1; all batteries take a modest off-peak grid charge toward the 16-18h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; all batteries trickle-charge at the low price ahead of the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour: charge batteries 0.15 ahead of top-price hours 16-18; trim overcooled Building_1 slightly; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge each battery about 0.15 toward 0.95 before the 15-17h top-price window; cooling and tank left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hours: charge batteries about 0.15 per hour toward 0.95 before the 14-16h top-price window; no cooling or DHW change since rooms are within band.","status":"ok"},{"clamps":[{"applied":0.1447,"point":"Building_2.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 and 2 trimmed cooling; all batteries charge at cheap hour 3 toward 0.95 before top-price hours 13-15; district load stays under target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 12-14h top price: top up batteries toward 0.95, trim Building_1 cooling slightly for overcooling, keep tanks idle.","status":"ok"},{"clamps":[{"applied":0.01,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.0088,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.1371,"point":"Building_3.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Cheap hour before top-price 11-13: top up batteries toward 0.95, trim overcooled Building_1 cooling, and leave tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; batteries are near full, so only Building_3 tops up slightly before the price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"District load is at target with zero headroom, so batteries discharge to cover own load; Building_1 is overcooled and its cooling is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not at the top, so I charge batteries 1 and 3 modestly with grid charging allowed, keep cooling at baseline, and leave the tanks idle.","status":"ok"},{"clamps":[{"applied":0.082,"point":"Building_2.battery","reason":"charge would take charge from 0.87 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour before top-price block at 7-9: charge batteries toward 0.95 and ease Building_1 cooling since it is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 10: top price hours ahead at 6-8, so hold batteries; cool-side B1 is 1.6C under setpoint so trim cooling; charge modestly from solar only.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 and B2 is minor; top price not now, grid charging ok in cheap hours, so modest charging of batteries and cooling near baseline.","status":"ok"},{"clamps":[{"applied":0.0688,"point":"Building_1.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"},{"applied":0.0184,"point":"Building_2.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour, so charge batteries modestly ahead of top-price hours 4-6; no overcooling correction needed, tank held at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 gets cooling cut to 0.33; B3 is topped up with spare solar; batteries hold for top-price hours 3-5; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.13 C below setpoint, so its cooling is trimmed slightly; batteries hold for the top-price hours 2-4 ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Lightly trim cooling where rooms are overcooled, keep Building_2 unchanged, store spare solar ahead of the top-price hours, and leave the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward building load within per-hour limits; trim Building_3 cooling since it is overcooled; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads. Trim overcooled occupied and unoccupied rooms slightly; Building_1 is cool, so no cooling cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to usable limits; trim overcooled Building_1 within 0.15 of baseline; Building_3 near band edge keeps baseline cooling.","status":"ok"},{"clamps":[{"applied":-0.1037,"point":"Building_1.battery","reason":"discharge would take charge from 0.20 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.21,"point":"Building_3.battery","reason":"discharge would take charge from 0.31 below 0.1","requested":-0.3,"rule":"soc"}],"fallback":null,"reason":"Top price now, so discharge batteries to cover building loads; Building_2 unoccupied and battery usable tiny; overcooled Building_1 and Building_3 get small cooling cuts.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Batteries sit at their floor so discharge is impossible and grid charging is off; rooms are near or outside bands, so keep baseline cooling and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled slightly; battery soc at floor so no discharge; grid charging off; no tank charging; keep baseline cooling where not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries sit at the 0.2 floor with no usable energy and grid charging is off, so they stay idle. Overcooled Building_1 is cut to 0.1; the others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; buildings 1 and 3 are near setpoint band so keep baseline cooling; building 2 is warm so no cooling cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms near comfort band edges keep baseline cooling, Building_2 is warm so no cooling cut, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and tanks off; cut cooling only in overcooled Buildings 2 and 3, keep Building 1 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled 2.46C so cooling is cut slightly; others near setpoint keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery idle and tank off. Building_3 is 0.59 C below setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 1.3C below setpoint so cooling is cut to 0; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so battery stays idle; no top-price hours. Buildings 1 and 3 slightly below setpoint, keep baseline cooling; Building 2 is warm, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, so battery idle; Building 1 and 3 slightly below setpoint, Building 2 above setpoint so cooling kept at baseline; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; cooling follows baseline since rooms are near setpoint and not overcooled; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery and tank stay idle; rooms are at or above setpoint, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms are at or above setpoint so cooling follows baseline; tanks held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no battery use; B1 is overcooled but envelope blocks cutting cooling when cool, so baseline kept; all other actions baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled but the band-edge rule would clamp a cut, so baseline cooling is kept; DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; trim Building_3 cooling slightly as it is overcooled, leave others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; B1 is overcooled 1.38C below setpoint so its cooling is trimmed slightly, others keep baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Occupied rooms are overcooled, so cooling is trimmed slightly below baseline; tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and no DHW. Buildings 1 and 3 are overcooled about 1.3-1.4 C below setpoint, so cooling is trimmed slightly; Building 2 is above setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling in overcooled occupied rooms B1 and B3, leave B2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: batteries and tanks idle. Rooms are cool or at setpoint and near comfort edges, so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle and tanks stay at 0; cut cooling for the two rooms more than 0.5 C overcooled and keep Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.3994,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.55","requested":0.399,"rule":"deviation"}],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay at 0; cut cooling in the two overcooled occupied rooms (Buildings 1 and 3) and keep baseline in Building 2.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are overcooled slightly, so cooling is trimmed modestly, and tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.2738,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.274,"rule":"comfort"}],"fallback":null,"reason":"Flat price day, battery idle; buildings 1 and 3 are overcooled by more than 0.5C so cooling is trimmed slightly; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Rooms are at or near setpoint or near the band edge, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; cooling kept near baseline as rooms are within setpoint band; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries idle, tank off. Overcooled occupied rooms in B1 and B3 get cooling cut 0.1; B2 is above setpoint so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; buildings 1 and 3 are overcooled slightly, but within band so baseline cooling kept; no DHW or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings are overcooled by about 1.15, 1.5 and 0.99 C, so cooling is cut modestly, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle and tanks stay at 0. Building_3 is mildly overcooled, so cooling is trimmed slightly. Building_1 is cool near its band edge, so it keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; buildings 1 and 3 are overcooled slightly, but within 0.5C band rules, so keep baseline cooling and no dhw.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so the battery stays idle; no arbitrage gain from charging. Building_3 is overcooled by 0.6 C, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 0.79 C so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery stays idle; buildings 1 and 3 are slightly cool, no overcooling cut needed; tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are slightly cool and Building 2 is warm, so cooling follows baseline; prices are flat, so the battery stays idle and tank at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is cut; batteries start gentle grid charging at the flat low price ahead of the top-price hours 23-24. DHW held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, top_price_now false, battery idle to avoid cycling; Building_2 overcooled 1.2C below setpoint so reduce cooling slightly; others track baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 overcooled slightly; trim cooling. Price flat-ish, not top now; grid charging ok but cheapest hours are later; hold batteries, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get slightly less cooling; batteries start modest charging at low price and carbon ahead of the 20-24h top-price window; DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are flat-ish and top_price_now is false; Building 1 and 3 are overcooled slightly, so cooling trimmed; batteries idle or lightly stored, tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries in the cheap early-afternoon hours ahead of the 18-23h top price; trim overcooled B3 and hold cooling elsewhere; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed. Batteries charge modestly at the low price ahead of the top-price hours 17-22. Tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour until hour 24, so the batteries charge gradually toward 0.95; cooling stays at baseline and the tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Load is near peak target, so each battery discharges to cover its building load; B1 is overcooled and trims cooling, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get cooling cut by 0.1; batteries and tanks hold this hour since price is not top and charging waits for cheaper early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut modestly, Building_3 is at its band edge so it stays on baseline, and batteries start charging in this cheap hour ahead of the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings are at or near comfort band edges, so cooling stays at baseline; prices are not top, so batteries hold and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get reduced cooling toward the 0.1 floor; B2 holds baseline. Batteries top up modestly at low price before the top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled rooms, hold batteries idle at the top price, and charge modestly at the low price while the district stays under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; batteries charge at the cheap 0.029 price to be near full before the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now with top hours at 16-18, so charge batteries toward 0.95 for the peak; cooling stays at baseline since rooms are near band edges or warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top now; buildings 1 and 2 are near setpoint, building 3 is overcooled by about 1C so trim its cooling slightly; batteries idle to hold for top-price hours 15-17.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 stays off. Cheap hour: small battery top-ups, Building_3 charges most toward the 14-16h peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled so cooling is trimmed; it charges its battery in the cheap early hours, and the other buildings hold.","status":"ok"},{"clamps":[{"applied":0.1329,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"B3 is overcooled by 0.94 C so cooling is trimmed; B3 stores cheap solar-free grid charge; B1 and B2 batteries stay near full for top-price hours 12-14.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim B1 cooling for overcooling, top up batteries slightly at the low price, keep tanks idle, and hold peak below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6, no top price now; B1 overcooled slightly above 0.5C band? Hold baseline, charge batteries modestly as price low and grid charging ok, avoid tank charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but near its band edge, so cooling stays at baseline; batteries hold charge for the 9-11h top-price hours; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cool, 0.2 C above its band edge, so the envelope would block a cut; all devices hold baseline. Battery is near full, price is not top, and load is below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price not at top and district load is far below target, so batteries hold; B1 is overcooled but near band edge, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 3.5 C below setpoint, so its cooling is cut to 0; the others hold baseline. Batteries and tanks stay idle while prices are low and the top-price hours are still ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are not overcooled enough to cut; battery held for top-price hours 5-7, no grid charging at this price, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled while occupied, so cooling is cut to 0.1; batteries and tanks stay idle as the batteries are near full and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.03 C below setpoint, so cooling is trimmed; batteries hold for top-price hours and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled while occupied, so cooling is trimmed; batteries hold for top-price hours, with spare solar stored in Building 3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and overcooled by 1.2 C, so its cooling is trimmed slightly; batteries hold near full for the top-price hours ahead and tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, sized to load_now; trim overcooled unoccupied Building_3 slightly; hold comfort-edge buildings at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads; trim overcooled occupied rooms 1 and 3; hold dhw at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its load within usable energy; keep cooling at baseline where comfort band edges are close; no grid charging or DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled while occupied, so cooling is trimmed; batteries hold near floor with no top-price hour now and no charge in this price tier.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is overcooled by 0.76 C, so its cooling is trimmed slightly; batteries and tanks hold since prices are low and not at top.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool-room cuts apply only to Building_3; Buildings 1 and 2 are cool or on setpoint, so cooling stays at baseline. Batteries and tanks hold until cheap early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled occupied rooms B1 and B3 slightly; B2 at setpoint keeps baseline. Batteries and tanks idle, as no top-price hour is now and load is below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; battery held for top-price hours 16-19, no grid charge at 0.0289 low price since battery near floor; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak low price and district load far below target: charge batteries modestly, ease overcooled rooms B1 and B3, hold B2 cooling, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overnight low price and carbon: charge all three batteries at 0.15 to reach near full before the 15-17h top-price hours; keep cooling at baseline and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak: charge batteries gradually toward 0.95 before top-price hours 14-16; trim Building_1 cooling slightly since it is overcooled.","status":"ok"},{"clamps":[{"applied":0.2329,"point":"Building_1.cooling","reason":"indoor 20.6 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.233,"rule":"comfort"}],"fallback":null,"reason":"Hour 3 is cheap and low-carbon, batteries charge toward 0.95 before top-price hours 13-15; buildings slightly overcooled trimmed, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 is held at baseline by the comfort clamp; all batteries charge at the low price ahead of the top-price hours 12-14, with no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 slightly reduced cooling; price not at top now, so batteries charge only from cheap hours ahead, no tank charging, and charging held for pre-peak.","status":"ok"},{"clamps":[{"applied":0.0377,"point":"Building_1.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"Cheap, low-carbon hour before top-price hours: top up batteries toward 0.95, no tank charging, cooling left at baseline since rooms are not overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but the cooling cut would be clamped, so it keeps baseline; batteries hold or charge modestly ahead of the price peak; no tank charging.","status":"ok"},{"clamps":[{"applied":0.0381,"point":"Building_2.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"B1 is 1.58 C overcooled so cooling is cut to 0.1; no top-price now so no discharge; small top-up charging on B2 and B3 at low price while headroom is ample.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings near setpoint, no top price now; hold batteries and tank, use baseline cooling since no room is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[{"applied":0.0087,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled but already below its comfort band, so cooling stays at baseline. Storing small spare solar in Building_1 battery before top-price hours 6-8.","status":"clamped"},{"clamps":[{"applied":0.0015,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.15","requested":0.0,"rule":"deviation"}],"fallback":null,"reason":"Building_1 overcooled by 1.66C so cut cooling; batteries held, price not at top and Building_1 near full, so no battery or tank charging this hour.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are at setpoint, not overcooled, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so storage holds with no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hours are ahead, so batteries hold charge; overcooled occupied rooms get trimmed cooling; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.009,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Overcooled rooms trimmed slightly; batteries topped up in cheap hours ahead of top-price hours 2-4; tanks held at zero.","status":"clamped"},{"clamps":[{"applied":0.2903,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.44","requested":0.1,"rule":"deviation"},{"applied":0.3985,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.55","requested":0.35,"rule":"deviation"}],"fallback":null,"reason":"Overcooling check: B1 is 1.75C below setpoint so cut cooling to 0.1; B2 unoccupied and not cold; B3 0.99C below so modest cut; no top price now, no discharge, charge only where cheap.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its building load; trim Building_3 cooling slightly as it is overcooled; hold tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; Building_1 is cool-side so cooling is held at baseline; others null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward load, cooling left at baseline since rooms are cool or warm, no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are cool and near band edges, so cooling stays at baseline; batteries hold for top-price hours 21-23 and dhw stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled Building_3 toward its setpoint band; Building_1 is cool so baseline cooling; batteries and tanks idle as no top price is now and peak headroom is ample.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort or above setpoint, so cooling stays at baseline; batteries hold charge for the 19-21h top-price hours and grid charging waits for cheap early hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_3 cooling for overcooling; hold others at baseline; pre-charge batteries at low price ahead of the 18-20h top-price hours; no tank charging.","status":"ok"},{"clamps":[{"applied":0.1897,"point":"Building_1.cooling","reason":"indoor 22.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"Peak at target with no headroom, so no grid charging; discharge to cover load, trim overcooled B3, and raise B1 cooling since it is below band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Low price now, so charge batteries ahead of the 16-18h top-price hours; trim overcooled rooms; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled slightly; top price is not now, so battery idles except light charging within grid_charging_ok and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get small cooling cuts; battery held (not top price now, grid charging ok but cheap hours ahead to charge); no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour: charge batteries about 0.15 toward the 13-15h top price, trim overcooled rooms, keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before top-price hours 12-14: charge batteries 0.15 gradually; cooling kept at baseline since rooms are near or below the comfort-band edge; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the 16-18h top-price window: charge batteries 0.15, trim overcooled Building 1, hold others at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6, cheap price, no top-price now; charge batteries modestly, cool buildings near baseline, hold DHW at zero, keep district load under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not top now, so no discharge; store cheap solar and grid energy ahead of the 9-11h peak and trim overcooled Building_1 and Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling slightly in overcooled Building_1 and 3, top up Building_3 battery ahead of 16-18h top prices, hold others.","status":"ok"},{"clamps":[{"applied":0.0708,"point":"Building_1.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0668,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Price is near low and not top; hold batteries, trim-charge at low price ahead of 16-18h top price, keep baseline cooling since no room is overcooled, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 by 2.78C: cut cooling to 0.1; price not at top now, so no discharge; charge batteries modestly from solar and cheap grid, staying under peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled, so cooling trimmed; spare solar stored in B1 and B3 batteries ahead of the 5-7h top-price hours; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now and batteries are near full, so hold batteries and tanks idle and keep baseline cooling for the next top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled (2.85 C below setpoint) so cooling is cut to 0.1; batteries hold for top-price hours 3-5 and no charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; batteries store only spare solar since no top-price hour is now, and dhw stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not top now and batteries are near full, so hold storage for the 16-18h peak; no cooling change as rooms are at or above setpoint or unoccupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; room temps are at or above setpoint, so cooling stays at baseline and DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, and trim overcooled occupied Building_1 by 0.1 to protect the peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to offset load, and trim cooling in the two occupied rooms that are overcooled; Building_2 is unoccupied and near setpoint so it keeps baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is on with no headroom, so B3 discharges to cover its load; B1 and B2 batteries are near floor. Cooling kept at baseline except null where unsafe.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 overcooled slightly so cooling trimmed; Building_3 already below band so cooling held; small battery discharge in B3 to ease peak; no top-price charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms kept at baseline due to comfort band clamps; batteries start a modest grid charge at low price ahead of the evening top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 22: no top price now, so hold batteries for 18-20h and wait for cheaper hours to charge. Rooms are cool or at setpoint, so keep cooling baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get cooling cut to 0.1; building 2 is at setpoint so baseline holds. Battery idle, since grid charging is not cheap enough now and solar is zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled so its cooling is trimmed; others hold baseline. Batteries charge 0.15 at the low price before the 16-18h top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 slightly cut cooling; Building_1 is cool and outside its band so cooling held; all batteries charge modestly in cheap low-carbon hour before evening top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied Buildings 1 and 3, leave Building 2 cooling at baseline, and charge all batteries from cheap grid power ahead of the 14-16h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and slightly overcooled Building_3 get less cooling; all batteries charge at the cheap, clean hour ahead of the 13-15h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: top up batteries toward 0.95 before the 12-14h price peak; trim overcooled Building_1 slightly, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour: lightly charge batteries toward 0.95 before top-price hours 11-13; trim slightly overcooled Building_1; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: trim overcooled Building_1 slightly and top up batteries toward 0.95 before the 10-12h top-price window; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now with no top hour; trim overcooled Building_1, keep storage idle, and charge Building_3's battery toward 0.95 before the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 1.5C so its cooling is cut; Building_3 battery tops up in the cheap hour before the top-price window; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, prices are not at top, load is under target, so I keep baseline cooling with idle storage and tank.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 slightly reduced cooling; Building_1 is cool so baseline kept; batteries near full and headroom tight, so no charge or discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 (1.5C below setpoint) gets cooling cut to 0.1; hold batteries for top-price hours 5-7, charge only when cheap; no grid charge at 11h.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 gets less cooling within the band limits; Building_3 charges its battery slightly at low price; others hold storage for the 4-6 hour top-price window.","status":"ok"},{"clamps":[{"applied":0.2815,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.43","requested":0.281,"rule":"deviation"}],"fallback":null,"reason":"B1 is overcooled 4.3C below setpoint, so cooling is cut to 0.281; batteries hold for the top-price hours ahead and tanks stay empty.","status":"clamped"},{"clamps":[{"applied":0.0701,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Overcooled occupied B1 is near its comfort edge so baseline is kept; B3 gets a small solar/cheap-hour top-up ahead of the 16-18h peak price; tanks stay idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is 2.3C below setpoint, so cooling is cut to 0.1 below baseline; price is not at top now, so batteries hold and storage stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; B1 cooling held near baseline since its room is cool; no tank charging.","status":"ok"},{"clamps":[{"applied":0.5843,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.73","requested":0.584,"rule":"deviation"}],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; cut overcooled occupied rooms toward the envelope limit; Building_2 is above setpoint so cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to its usable kWh, cut overcooled Building_1 toward baseline, leave cooling otherwise at baseline, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not a top-price hour and district load is under target, so I charge batteries modestly in this cheap hour within headroom, hold for top-price hours, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get slightly less cooling; district load near the daily target, so small battery discharges cover building load; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 gets lower cooling; B3 kept at baseline near band edge; B1 and B2 store cheap solar/grid; tanks idle; top prices ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are cool or near setpoint so cooling stays at baseline; batteries discharge to trim district load near the peak target; no grid charging or tank charging.","status":"ok"},{"clamps":[{"applied":0.1295,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.28","requested":0.1,"rule":"deviation"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is cut; batteries start cheap-hour charging ahead of the 17-19h top-price window; tanks stay idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get cooling trimmed; Building 2 is near setpoint. Batteries charge at the low price ahead of the 16-18h top-price hours; tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with grid charging allowed: charge batteries 0.15 toward the evening top-price hours; trim cooling only in overcooled Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get slightly less cooling; batteries charge 0.15 in cheap, low-carbon hours to be near full before the 14-16h top-price window.","status":"ok"},{"clamps":[{"applied":0.1801,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.33","requested":0.18,"rule":"deviation"}],"fallback":null,"reason":"Overcooled occupied rooms get cooling cut; batteries charge 0.15 at the cheap, low-carbon hour to be near full before the 13-15h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cool Building_1 slightly less while overcooled; charge batteries in this cheap, clean hour ahead of the 12-14h top-price window; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour: top up batteries toward 0.95 before the midday top-price window, and trim cooling in overcooled Building 1 only.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 10-12: top up batteries toward 0.95, trim overcooled Building_1, leave tanks idle.","status":"ok"},{"clamps":[{"applied":0.1282,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled by 0.73 C so its cooling is trimmed slightly; Building_3 charges at the low price ahead of the top-price hours; others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_2 are overcooled, so cooling is trimmed slightly; Building_3 is at setpoint and tops its battery up to about 0.95 in this cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are not overcooled; keep baseline cooling. Price not at top now, battery idle; grid charging waits for low-price hours. Building 2 unoccupied, hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2.7 C below setpoint so cooling is cut to 0.1; batteries hold charge for the 16-18h top-price hours, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.71C above setpoint so no extra cooling cut; top price not now, so battery holds; grid charging is cheap now but battery already near 0.95, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled slightly less than 0.5C so no cut; price low now, top hours ahead, battery held; charge modestly only if cheap hours allow; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is unoccupied and near setpoint so baseline holds; top price is 3-5h ahead, so batteries stay idle now, with no charging at current low price due to solar and cooling needs.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is already below its comfort band, so no cooling cut; batteries held for top-price hours 16-18; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries for the top-price hours ahead; cooling and tanks stay at baseline due to comfort-band edges and occupancy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; cooling kept at baseline since B1 is cool and occupied; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover load, keeping cooling at baseline and dhw idle; the rooms are not in an overcooled state that needs a cut.","status":"ok"},{"clamps":[{"applied":-0.1495,"point":"Building_1.battery","reason":"discharge would take charge from 0.25 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1439,"point":"Building_2.battery","reason":"discharge would take charge from 0.24 below 0.1","requested":-0.18,"rule":"soc"},{"applied":-0.3589,"point":"Building_3.battery","reason":"discharge would take charge from 0.46 below 0.1","requested":-0.4,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, cool less where overcooled, no grid charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries have almost no usable energy, so only Building_3 discharges slightly at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge only within usable energy; Building_3 is already below its comfort band so no cooling cut; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now but batteries nearly empty; B1/B3 cooling kept near baseline since rooms are below band, B2 trimmed slightly; no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 cooling trimmed slightly as it is overcooled; batteries have no usable charge so they stay near idle; Building_3 cooling left at baseline near band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; overcooled Building_1 and Building_3 get reduced cooling, Building_2 near setpoint keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so battery idle; cut cooling for overcooled occupied rooms in Buildings 1 and 3, Building 2 near setpoint; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so batteries stay idle and tanks stay at 0. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is above setpoint, so it keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings 1 and 3 are overcooled slightly, but within limits, so keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; overcooled occupied rooms get reduced cooling, with Building_3 trimmed modestly and DHW left at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; cool buildings 1 and 3 slightly below setpoint, keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery stays idle; buildings 1 and 3 are overcooled slightly, but within 0.5C tolerance so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 1.45 C so cooling is cut to 0, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours: battery idle, no grid charging; mild overcooling not present in any building so baseline cooling kept, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled about 1.07 C below setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, battery idle; building 1 and 3 slightly cool-biased so keep baseline cooling; no grid charging or discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries idle, no tank charging; Building_1 overcooled 1.34 C below setpoint so cooling trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_3 is overcooled so its cooling is trimmed slightly, Building_1 and 2 keep baseline, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so storage stays idle and tanks stay at 0. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so battery idle; buildings slightly overcooled but within 0.5C of setpoint, so keep baseline cooling and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; overcooled occupied rooms 1 and 3 get reduced cooling within the 0.15 clamp, Building 2 is near setpoint.","status":"ok"},{"clamps":[{"applied":0.8244,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.97","requested":0.824,"rule":"deviation"}],"fallback":null,"reason":"Flat-price day so batteries stay idle. Overcooled occupied rooms 1 and 3 get cooling cut 0.15 below baseline; building 2 is within band, so baseline kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim Building_2 cooling slightly, keep others at baseline because their rooms sit near comfort band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; occupied rooms are already below band, so keep cooling at baseline; trim only the unoccupied Building_2 slightly.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries and tanks stay idle; cut cooling in overcooled occupied rooms 1 and 3 by 0.1 and room 2 slightly.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery and tank idle. Rooms are below their comfort bands, so no cooling cut; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Overcooled occupied rooms get reduced cooling; Building_2 is only slightly below setpoint and gets a small cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; buildings 1 and 3 overcooled ~1.9-2.4C below setpoint so trim cooling slightly; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; cut cooling in overcooled occupied rooms 1 and 3 toward the 0.15 limit; room 2 is within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries and tanks idle. Cooling trimmed only in overcooled occupied rooms (B1 and B3); B2 is within 0.5 C of setpoint.","status":"ok"}],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,5.0,6.0,6.0,6.0,6.0,6.0,7.0,8.0,8.0,8.0,8.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,10.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,12.0,13.0,15.0,16.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,18.0,19.0,20.0,21.0,21.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,25.0,26.0,27.0,27.0,29.0,31.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,33.0,33.0,33.0,33.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,35.0,35.0,35.0,35.0,35.0,36.0,37.0,37.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,39.0,40.0,41.0,42.0,44.0,46.0,48.0,51.0,54.0,56.0,58.0,59.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,61.0,61.0,62.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,64.0,65.0,66.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,68.0,70.0,71.0,73.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,75.0,77.0,79.0,81.0,81.0,82.0,83.0,84.0,84.0,84.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,86.0,87.0,87.0,89.0,91.0,93.0,95.0,97.0,97.0,97.0,97.0,98.0,98.0,98.0,98.0,98.0,98.0,98.0,99.0,99.0,99.0,99.0,100.0,100.0,100.0,100.0,100.0,101.0,102.0,103.0,104.0,105.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,107.0,108.0,109.0,110.0,111.0,112.0,113.0,114.0,114.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,116.0,117.0,119.0,121.0,123.0,123.0,124.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,126.0,126.0,127.0,128.0,129.0,130.0,132.0,134.0,135.0,136.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,139.0,139.0,140.0,141.0,142.0,143.0,145.0,147.0,149.0,150.0,151.0,152.0,153.0,154.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,156.0,156.0,157.0,157.0,159.0,161.0,163.0,165.0,167.0,168.0,169.0,169.0,170.0],"district_grid_kwh":[1.428,1.505,1.455,1.42,1.411,1.731,2.889,2.593,9.774,3.287,1.561,3.455,2.299,3.072,3.033,5.266,6.273,5.288,4.364,5.116,6.502,5.611,4.935,5.313,2.907,2.149,1.782,2.11,2.318,2.591,2.559,1.447,2.821,1.366,2.63,3.47,8.481,6.352,5.582,6.892,7.362,6.242,6.633,5.2,5.796,5.231,5.194,3.203,2.715,2.047,1.983,1.721,1.856,1.89,1.616,2.147,3.503,1.389,2.686,1.854,1.597,7.777,2.781,4.907,7.009,4.515,4.938,3.797,2.939,5.281,3.004,2.535,2.071,1.56,1.544,1.401,1.32,2.314,2.862,1.604,2.93,1.364,1.75,1.057,1.479,0.499,0.393,-0.18,0.408,1.16,3.311,4.158,3.275,4.019,4.067,3.271,2.278,2.24,1.742,1.409,2.453,1.362,2.199,4.036,1.269,0.715,0.163,1.164,1.716,1.858,2.26,0.877,0.906,4.858,6.265,6.372,4.247,2.401,4.231,3.34,3.183,2.766,3.075,3.031,2.152,2.542,12.505,2.169,2.331,7.607,1.098,0.744,1.582,1.062,2.005,0.132,1.153,2.23,4.422,4.867,12.544,4.061,3.671,3.776,3.739,3.653,3.045,2.762,1.824,2.03,4.709,2.409,4.008,1.79,0.877,6.18,3.316,2.702,2.767,0.748,0.691,2.591,5.426,5.116,4.478,3.314,3.149,1.976,3.141,2.941,2.346,1.953,1.485,4.186,2.05,1.919,2.43,0.518,0.437,0.583,0.603,1.626,2.276,-1.216,1.0,3.233,4.512,5.217,4.786,3.838,3.098,2.023,2.0,1.615,1.546,1.299,1.264,1.281,2.314,1.681,3.513,1.474,1.431,2.602,2.919,9.291,6.191,5.265,4.481,5.449,6.437,5.413,3.805,3.509,3.901,2.651,1.725,2.125,1.775,1.742,1.26,3.061,1.433,1.627,2.364,1.847,2.231,2.115,3.307,8.73,4.033,4.567,9.662,5.22,7.183,7.614,4.611,3.643,4.469,3.358,3.845,3.683,3.226,2.435,1.695,1.985,6.174,3.042,5.181,2.463,1.398,1.589,1.971,2.573,8.183,1.783,3.131,5.079,4.717,4.896,4.21,10.022,3.569,4.671,3.759,3.469,3.012,3.11,2.166,2.19,1.931,1.817,1.292,2.187,1.816,2.378,1.442,3.062,2.975,2.885,7.163,6.652,6.264,8.314,7.648,8.16,11.478,4.791,3.421,2.883,3.119,2.854,2.654,1.791,3.673,1.673,1.568,0.587,0.971,0.961,1.026,1.235,2.899,1.359,2.486,3.376,5.106,6.237,5.297,4.566,5.493,3.64,2.497,4.001,3.239,2.705,2.817,2.788,2.996,4.736,2.791,1.016,0.939,0.872,2.814,2.952,1.177,0.736,1.004,2.654,4.772,7.144,4.973,3.703,4.636,3.962,3.792,3.821,2.848,2.871,3.398,1.829,2.06,4.069,5.455,5.223,2.941,2.934,1.592,1.912,4.263,0.762,1.824,6.154,5.441,4.73,4.559,6.123,3.136,4.822,2.437,2.441,2.145,1.938,1.461,1.797,2.001,4.128,1.865,2.669,2.101,2.143,7.545,2.567,3.981,3.408,6.805,5.777,5.327,5.366,5.845,4.448,2.306,1.562,1.821,1.626,1.309,1.258,1.453,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.313,4.363,3.689,3.244,4.278,4.003,3.362,3.151,2.369,5.146,4.487,2.666,1.672,3.473,2.983,1.952,3.7,6.142,3.23,1.148,1.066,3.153,4.937,5.612,4.443,5.463,3.05,3.193,3.487,3.229,1.5,3.126,1.504,2.161,3.519,5.443,3.956,4.066,1.696,1.149,2.608,3.456,7.616,0.576,0.598,0.506,2.751,3.276,4.595,2.925,3.196,3.142,3.878,3.843,1.698,1.543,2.558,3.966,1.755,3.115,2.572,1.562,1.134,3.13,2.38,0.864,1.07,0.412,0.629,2.203,3.051,3.051,5.12,6.143,5.053,5.114,3.288,2.708,2.097,3.24,1.884,1.688,1.854,3.85,1.613,0.485,0.765,2.988,1.987,1.847,3.054,0.961,2.089,4.047,7.868,4.463,3.415,5.292,3.967,3.249,3.619,3.916,2.977,2.25,1.657,3.663,7.83,4.87,5.276,2.355,1.418,4.455,2.714,1.94,3.814,2.446,3.113,4.425,5.094,6.577,5.484,4.223,3.497,2.856,2.027,1.222,1.501,1.407,1.423,1.471,2.036,4.291,5.184,12.523,9.224,3.347,4.957,3.45,7.198,11.634,7.027,5.654,6.654,5.563,5.089,4.379,3.635,2.786,2.697,2.08,1.547,1.499,1.768,1.923,2.114,3.519,2.921,1.561,4.076,2.705,9.459,7.801,3.704,5.635,5.934,6.684,8.352,5.223,4.707,5.28,5.5,3.937,2.573,2.758,2.077,1.824,2.044,5.176,4.247,3.693,2.421,1.089,2.265,1.549,2.12,1.832,3.947,0.716,1.074,2.202,2.938,6.501,4.149,4.244,3.558,2.832,3.324,3.531,3.394,3.619,3.592,3.497,2.916,2.446,1.949,2.533,0.654,1.24,2.089,2.92,2.028,1.007,1.254,4.394,4.673,4.261,5.527,4.901,7.341,4.394,3.494,2.593,3.169,3.063,2.967,5.241,3.042,2.774,4.63,2.09,1.009,1.787,0.851,0.9,2.87,1.391,2.809,4.236,7.495,14.087,7.137,8.485,2.759,4.633,4.036,3.352,3.227,2.212,2.592,3.339,5.452,4.183,7.581,8.321,2.729,4.142,3.196,4.124,5.628,1.594,2.84,5.62,7.493,7.207,6.048,18.749,5.184,4.289,3.789,4.697,4.651,3.019,2.333,2.229,4.434,2.707,2.671,2.697,2.784,5.975,4.17,3.347,4.601,1.711,3.403,5.816,13.263,6.577,4.664,5.009,4.854,3.377,2.13,2.05,1.192,1.483,1.507,1.361,1.704,3.02,3.394,6.279,5.305,2.694,4.853,5.004,5.978,7.553,7.979,7.371,7.465,5.06,5.298,4.35,5.006],"emission_kg":[0.575,1.151,1.688,2.209,2.737,3.404,4.546,5.613,9.843,11.252,12.129,13.813,14.944,16.442,17.896,20.379,23.265,25.642,27.557,29.788,32.652,35.16,37.38,39.734,40.987,41.843,42.525,43.312,44.172,45.122,46.076,46.628,47.922,48.532,49.747,51.419,55.526,58.593,61.273,64.538,67.959,70.824,73.815,76.126,78.715,81.111,83.493,84.95,86.221,87.134,87.97,88.66,89.381,90.114,90.752,91.624,93.084,93.67,94.822,95.882,96.901,101.271,102.724,105.278,108.902,111.222,113.739,115.634,117.086,119.717,121.188,122.441,123.44,124.156,124.793,125.333,125.882,126.92,128.192,128.964,130.473,131.186,132.14,132.714,133.506,133.827,134.126,134.231,134.441,135.034,136.725,138.871,140.578,142.646,144.687,146.231,147.231,148.15,148.824,149.381,150.382,150.976,152.0,153.943,154.585,154.948,155.395,156.203,157.201,158.2,159.404,159.865,160.338,162.852,166.055,169.258,171.361,172.505,174.461,176.003,177.387,178.513,179.719,180.842,181.637,182.583,187.539,188.445,189.484,192.958,193.665,194.129,194.951,195.701,196.732,197.048,197.666,198.825,200.964,203.251,209.02,210.856,212.482,214.076,215.613,217.024,218.162,219.195,219.898,220.702,222.658,223.661,225.453,226.257,226.767,229.668,231.256,232.58,233.931,234.296,234.735,235.952,238.43,240.677,242.65,244.115,245.475,246.316,247.642,248.754,249.605,250.298,250.846,252.438,253.275,254.166,255.371,255.764,256.169,256.633,257.054,257.811,258.887,259.071,259.544,261.057,263.166,265.599,267.844,269.652,271.081,271.998,272.877,273.564,274.191,274.709,275.223,275.765,276.791,277.536,279.153,279.82,280.479,281.7,283.097,287.562,290.481,292.935,295.017,297.531,300.47,302.94,304.707,306.329,308.053,309.14,309.831,310.632,311.246,311.837,312.264,313.297,313.79,314.362,315.206,315.921,316.774,317.652,319.128,323.2,325.098,327.253,331.81,334.269,337.563,340.995,343.079,344.711,346.648,348.085,349.677,351.138,352.373,353.291,353.915,354.655,356.993,358.164,360.219,361.168,361.784,362.468,363.364,364.579,368.511,369.372,370.895,373.372,375.675,378.064,380.125,384.961,386.614,388.649,390.269,391.677,392.856,394.068,394.926,395.817,396.639,397.454,398.088,399.187,400.016,401.156,402.009,403.487,404.904,406.265,409.737,412.78,415.608,419.4,422.96,426.826,432.203,434.4,435.973,437.275,438.594,439.767,440.886,441.673,443.396,444.236,445.03,445.665,446.365,447.047,447.645,448.286,449.783,450.474,451.719,453.382,455.871,458.93,461.55,463.818,466.506,468.264,469.398,471.162,472.487,473.562,474.649,475.79,477.112,479.354,480.735,481.339,481.957,482.472,483.829,485.241,485.913,486.26,486.73,487.971,490.178,493.47,495.779,497.492,499.542,501.228,502.749,504.211,505.252,506.272,507.5,508.207,509.049,510.771,513.094,515.227,516.473,517.77,518.479,519.331,521.205,521.573,522.364,525.014,527.371,529.425,531.436,534.164,535.527,537.528,538.521,539.442,540.244,540.961,541.505,542.186,542.953,544.547,545.262,546.264,547.086,547.975,551.166,552.263,553.95,555.461,558.337,560.78,563.036,565.331,567.888,569.899,570.949,571.65,572.506,573.26,573.873,574.45,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,577.825,580.049,581.917,583.563,585.7,587.748,589.431,590.982,592.129,594.679,596.952,598.327,599.225,601.095,602.69,603.75,605.753,609.055,610.747,611.336,611.876,613.443,615.858,618.652,620.91,623.692,625.207,626.745,628.294,629.711,630.366,631.745,632.425,633.454,635.22,638.007,640.063,642.159,643.104,643.713,645.099,646.936,650.933,651.233,651.543,651.803,653.197,654.813,657.017,658.396,659.86,661.237,662.981,664.594,665.295,665.97,667.169,669.138,670.035,671.634,672.947,673.765,674.534,676.192,677.555,678.055,678.636,678.86,679.2,680.392,682.044,683.697,686.468,689.771,692.473,695.201,696.89,698.316,699.41,701.126,702.146,703.078,704.104,706.245,707.129,707.726,708.308,709.918,710.992,711.988,713.624,714.137,715.252,717.415,721.63,724.045,725.906,728.748,730.825,732.45,734.068,735.733,736.922,737.802,738.443,739.886,743.31,745.444,747.884,749.088,749.772,751.966,753.309,754.258,756.092,757.261,758.775,760.859,763.224,766.222,768.712,770.618,772.146,773.355,774.192,774.688,775.254,775.766,776.27,776.845,777.689,779.415,781.421,786.104,789.746,791.166,793.347,794.915,798.287,803.799,807.136,809.818,812.967,815.563,817.894,819.884,821.488,822.67,823.749,824.527,825.093,825.62,826.229,826.881,827.611,828.865,829.92,830.536,832.094,833.187,837.249,840.698,842.363,844.937,847.663,850.666,854.328,856.592,858.65,860.957,863.317,864.983,866.087,867.19,867.981,868.695,869.532,871.847,873.863,875.719,876.93,877.708,878.82,879.786,880.895,881.812,883.799,884.159,884.7,885.806,887.274,890.499,892.549,894.653,896.387,897.732,899.173,900.632,901.968,903.383,904.794,906.216,907.444,908.508,909.376,910.458,910.966,911.536,912.627,914.011,914.981,915.462,916.062,918.156,920.383,922.416,925.082,927.442,930.854,932.794,934.243,935.264,936.482,937.651,938.773,940.803,942.034,943.203,945.16,946.129,946.776,947.673,948.482,949.335,950.745,951.43,952.857,954.964,958.683,965.657,969.198,973.377,974.676,976.739,978.404,979.746,980.979,981.8,982.778,984.094,986.383,988.258,991.795,995.598,997.113,999.083,1000.627,1002.637,1005.361,1006.122,1007.459,1010.075,1013.528,1016.838,1019.627,1028.298,1030.608,1032.421,1033.96,1035.682,1037.34,1038.401,1039.229,1040.043,1041.728,1042.786,1043.812,1044.837,1045.963,1048.508,1050.346,1051.855,1053.966,1054.755,1056.316,1058.978,1065.032,1067.971,1070.045,1072.279,1074.428,1075.94,1076.9,1077.844,1078.395,1079.084,1079.776,1080.407,1081.186,1082.537,1083.999,1086.479,1088.585,1089.71,1091.807,1094.05,1096.825,1100.367,1104.116,1107.574,1111.047,1113.404,1115.895,1117.907,1120.153],"kpi":{"all_time_peak_average":0.948282,"annual_normalized_unserved_energy_total":0.019191,"carbon_emissions_total":0.966545,"cost_total":0.9219,"daily_one_minus_load_factor_average":0.977288,"daily_peak_average":0.935419,"discomfort_cold_delta_average":0.522275,"discomfort_cold_delta_maximum":2.996774,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.067959,"discomfort_hot_delta_average":0.250612,"discomfort_hot_delta_maximum":5.124955,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.018095,"discomfort_proportion":0.086054,"electricity_consumption_total":0.974043,"monthly_one_minus_load_factor_average":0.996188,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684409,"ramping_average":1.017412,"zero_net_energy":0.971325},"run":"citylearn_challenge_2023_phase_2_local_evaluation_agent_citylearn_20261022T153213Z","steps":719},"agent_run":{"budget_stopped":false,"budget_usd":2.0,"calls":719,"clamped_hours":73,"cost_usd":0.574,"envelope":{"battery_rate_per_step":0.5,"comfort_band_k":2.0,"comfort_margin_k":0.5,"cooling_max":1.0,"cooling_max_deviation":0.15,"cooling_min":0.0,"cooling_rate_per_step":0.35,"dhw_rate_per_step":0.5,"overcool_guard_unoccupied":true,"peak_forecast_days":2,"peak_limit":true,"peak_target_fraction":1.0,"soc_max":0.95,"soc_min":0.1,"spread_check":true,"storage_max":1.0,"storage_min":-1.0},"fallback_hours":0,"model_id":"claude-haiku-5-5","model_key":"haiku","supervisor":"live"},"agent_sample":false,"baseline":{"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.725,0.633,0.607,1.001,1.608,0.534,4.653,0.483,-0.357,1.817,0.266,0.219,0.945,2.824,3.039,2.14,1.419,2.336,3.167,1.823,1.303,2.042,1.886,1.125,0.744,0.671,1.713,1.752,1.766,0.572,-0.245,-0.069,0.819,1.462,6.669,4.144,2.167,2.167,3.119,2.733,3.531,2.36,3.981,2.93,3.446,2.771,1.996,1.597,1.345,1.167,1.085,1.056,0.979,1.281,1.827,-0.118,-0.286,-0.743,-0.767,-0.321,-0.061,2.823,3.203,2.159,1.652,1.282,0.964,1.54,0.677,1.02,0.69,0.649,0.566,0.452,0.405,1.394,0.36,0.824,0.441,0.178,0.139,0.075,0.006,0.084,-0.175,-0.312,0.37,2.084,1.383,1.363,1.519,1.005,1.032,1.204,0.834,0.908,0.841,0.74,1.702,0.649,1.501,2.044,0.892,0.065,-0.434,-0.302,-0.145,0.399,0.651,1.341,1.712,3.301,2.332,2.04,1.413,1.158,1.266,1.144,0.775,0.658,1.104,1.109,0.93,1.45,5.714,0.799,0.646,5.824,0.119,-0.412,-0.309,-0.341,0.568,-0.373,0.001,3.061,1.979,2.83,8.927,2.165,1.511,1.13,1.289,1.736,1.238,0.991,0.848,0.767,1.873,0.998,2.518,0.266,0.062,5.66,1.286,1.119,1.178,0.97,0.791,2.262,1.689,1.153,2.04,0.959,0.651,0.561,0.49,0.432,0.383,0.35,0.349,3.199,0.452,0.203,1.584,-0.29,-0.446,-0.411,-0.314,0.182,0.323,0.609,0.97,1.585,1.969,1.98,1.566,1.143,0.818,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.385,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.659,1.535,1.25,1.57,1.246,1.262,1.367,0.988,0.878,2.232,0.811,0.668,0.35,-0.269,-0.223,-0.154,0.455,0.885,1.278,1.827,5.826,2.385,3.597,2.451,2.338,1.022,1.687,1.019,1.279,1.568,1.391,1.191,1.042,0.981,0.954,1.91,1.899,0.785,0.426,0.228,0.271,0.751,8.035,2.459,2.762,2.716,2.511,1.773,1.42,1.134,0.999,1.867,1.17,1.283,1.227,1.083,0.976,0.919,0.912,0.799,-0.092,-0.027,0.777,1.121,0.266,0.716,1.03,3.647,8.064,3.658,3.461,2.842,2.439,1.622,1.303,1.625,1.095,1.156,1.108,0.973,0.882,0.84,0.823,0.656,0.496,-0.416,-0.483,-0.313,-0.121,0.188,0.744,2.478,3.105,2.534,2.482,3.192,2.715,1.592,1.289,1.509,1.228,1.478,1.224,0.987,0.851,0.773,1.287,3.362,0.391,-0.307,-0.371,-0.205,1.991,1.839,-0.232,0.265,0.758,1.208,2.194,2.594,2.069,1.662,1.447,1.026,1.21,1.481,1.253,1.038,2.151,0.886,0.84,0.753,1.616,-0.171,-0.16,-0.111,0.282,0.224,2.107,1.77,1.998,3.705,2.641,2.159,1.815,3.686,1.274,0.984,1.183,1.504,1.333,1.125,0.968,0.901,0.91,2.903,0.721,0.62,0.328,0.068,4.92,0.98,1.011,0.264,3.799,3.082,1.976,1.843,2.38,1.544,0.885,0.661,0.591,0.537,0.496,0.46,0.429,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.341,1.27,1.438,1.167,1.319,1.597,1.361,1.153,1.011,3.963,1.66,0.809,0.571,0.041,0.632,0.17,0.622,4.299,0.693,1.403,1.806,2.239,2.031,4.027,1.332,4.166,1.122,0.797,0.979,1.289,1.158,1.903,0.884,0.82,0.787,0.652,0.721,1.083,0.014,-0.078,0.686,0.25,0.981,0.693,0.785,0.992,1.271,2.112,1.4,1.165,0.914,0.824,0.827,2.287,1.079,0.924,1.733,2.043,0.857,2.248,1.565,-0.023,-0.235,0.481,-0.126,-0.062,0.121,0.666,1.976,1.994,0.888,1.214,1.11,1.902,1.166,2.755,1.131,1.116,1.039,0.9,1.23,0.752,0.722,0.544,0.213,-0.372,-0.313,1.116,0.465,0.497,1.233,1.444,2.514,2.845,5.034,2.238,1.363,2.117,1.214,0.877,1.089,1.408,1.226,1.032,0.88,2.685,1.355,0.84,0.944,-0.187,0.317,2.427,1.013,0.481,0.986,2.991,3.158,2.811,2.549,2.184,2.534,1.661,1.244,1.04,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.75,1.634,4.402,8.38,2.747,2.775,2.818,2.972,2.443,1.928,1.857,1.732,1.079,1.169,0.69,0.608,0.884,1.063,1.069,0.909,0.01,-0.139,0.892,0.124,7.091,3.778,0.137,1.484,3.241,3.902,2.334,2.013,1.9,1.763,3.035,0.973,1.13,1.417,0.981,0.892,1.095,4.255,2.278,2.019,0.635,-0.163,0.882,-0.051,0.116,0.547,1.941,1.163,1.806,1.093,0.844,3.574,1.744,2.639,2.274,0.928,1.121,1.464,1.309,1.549,2.185,1.682,1.743,1.495,0.39,-0.05,0.108,0.011,0.15,0.716,0.798,1.338,1.966,2.61,1.711,1.991,2.574,1.412,1.201,1.514,1.213,1.31,1.214,1.003,0.926,0.874,0.908,1.117,0.402,-0.219,-0.236,-0.115,-0.644,-0.548,0.954,2.208,3.8,2.127,1.98,2.977,2.506,5.466,1.424,1.916,1.306,1.381,1.271,1.092,0.961,1.979,3.683,2.124,0.769,-0.199,-0.153,2.156,0.873,0.736,3.454,2.032,3.027,2.922,2.843,4.405,2.218,8.411,1.397,1.116,1.28,1.62,3.058,1.286,1.085,1.004,1.852,1.138,0.765,1.284,0.69,1.379,1.5,0.84,1.08,1.649,3.27,3.253,2.696,2.846,2.022,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.571,3.406,1.136,1.332,1.962,2.818,2.816,3.383,3.406,2.488,2.608,2.603,2.726,1.306],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.14,21.16,21.58,21.71,21.76,21.9,22.21,23.79,24.19,24.27,24.25,23.54,23.35,23.15,22.93,22.99,22.29,22.35,22.63,22.06,20.25,18.2,17.59,17.46,17.51,17.65,17.79,18.04,18.13,18.44,18.59,18.56,20.71,21.5,22.96,23.44,23.74,23.72,22.23,20.12,20.13,21.89,22.52,23.0,20.89,22.58,23.02,22.51,22.65,22.93,23.37,23.75,23.96,24.27,23.2,23.56,23.64,24.86,24.07,24.29,25.23,24.97,25.47,24.52,23.58,23.53,23.56,23.55,23.65,23.76,21.56,22.35,21.61,21.68,21.78,21.47,21.93,21.67,21.38,21.87,22.57,23.24,23.89,24.12,23.98,23.68,23.14,22.78,22.29,22.44,22.58,22.79,22.94,23.07,23.18,23.32,23.54,21.49,21.32,21.46,21.65,21.21,21.59,21.82,20.68,22.27,23.42,23.79,24.49,24.34,26.05,26.65,25.5,25.71,24.52,24.03,23.16,23.15,23.37,22.4,21.27,21.29,21.49,21.77,22.04,21.72,22.17,21.75,22.53,23.09,23.28,23.51,23.4,23.21,24.0,25.66,25.96,26.23,26.3,25.78,26.12,26.43,26.71,26.93,27.22,27.53,27.84,28.04,26.6,27.52,28.11,27.36,27.9,27.97,27.88,27.73,27.35,27.01,26.64,26.32,26.01,26.06,26.05,26.08,26.18,26.32,26.5,26.37,26.54,26.63,26.71,26.79,27.0,26.91,27.05,25.78,26.02,25.81,25.44,25.07,24.61,24.11,23.32,23.17,22.65,22.64,22.64,22.69,22.67,22.67,20.95,21.2,20.46,20.43,20.53,20.71,20.78,21.05,21.32,21.67,23.0,23.06,23.21,22.98,22.72,22.5,22.27,23.27,21.93,21.6,21.78,21.99,23.38,22.63,22.48,21.35,20.19,20.17,20.3,20.52,20.57,20.73,20.62,20.23,21.08,21.71,22.3,22.33,22.16,20.54,19.95,20.43,20.7,21.17,21.46,21.73,21.96,22.18,20.54,20.92,20.14,20.16,20.35,20.6,20.78,20.94,21.13,22.84,22.95,23.03,22.59,22.53,22.27,22.06,21.58,20.99,20.92,21.06,21.25,21.23,21.7,21.93,19.91,20.84,20.15,20.23,20.44,20.71,20.95,21.15,21.29,21.26,23.1,23.51,23.71,23.6,23.38,22.99,22.53,22.16,21.82,21.93,21.9,21.75,22.01,22.22,22.41,21.49,20.35,20.42,20.67,20.96,21.26,21.52,21.51,22.1,23.5,23.81,23.87,24.66,25.34,25.84,25.85,25.65,25.32,24.02,22.96,22.82,22.88,23.05,23.24,22.31,21.05,21.04,21.2,20.93,21.43,21.61,21.84,21.73,23.32,23.55,23.77,23.65,24.25,23.01,22.64,22.34,21.84,21.92,22.09,22.3,21.57,22.18,22.51,21.69,20.44,20.42,20.55,20.78,20.98,21.26,20.6,21.47,22.9,23.09,23.38,21.29,22.35,22.9,24.51,24.56,24.06,24.45,24.67,24.37,24.79,25.08,25.32,25.47,25.62,25.78,25.95,26.13,26.52,26.62,26.86,26.91,26.86,26.73,25.93,25.96,26.25,26.8,27.36,28.05,28.68,29.45,29.91,28.54,26.84,25.3,24.9,23.62,22.06,21.89,21.86,21.93,20.97,21.31,21.49,21.96,23.28,23.38,23.48,23.31,23.83,23.23,22.39,22.11,21.68,20.93,20.24,21.54,20.58,21.51,21.87,21.04,19.88,19.96,20.08,20.29,20.46,20.69,20.82,21.34,22.5,22.89,23.1,23.02,23.48,23.27,23.23,23.28,23.32,23.4,23.36,23.38,23.38,23.44,23.51,22.53,21.06,21.06,21.2,21.01,21.22,21.56,20.93,21.01,22.81,23.42,23.57,23.71,23.68,23.4,22.35,22.23,22.87,23.33,23.54,23.62,23.59,23.65,22.62,22.34,21.22,21.16,21.33,21.52,21.68,21.85,22.08,22.59,23.98,24.09,23.9,23.67,23.56,23.42,22.93,21.13,20.92,21.34,21.85,22.18,22.3,22.49,22.66,21.73,20.46,20.48,20.65,20.93,20.41,20.93,21.3,21.79,23.17,23.46,22.63,22.98,23.52,23.36,21.23,20.93,21.06,21.32,21.5,21.67,21.87,22.09,22.28,21.49,22.33,22.67,22.92,23.11,23.33,23.5,22.38,21.82,22.29,22.49,22.82,22.24,22.28,21.8,21.08,20.93,20.61,20.34,20.53,21.16,21.49,19.42,19.21,20.14,19.59,20.9,21.43,20.59,20.14,20.26,20.34,22.17,22.36,22.42,22.47,21.65,22.26,23.68,21.91,20.06,20.12,20.63,20.81,20.65,20.89,20.55,21.24,20.48,19.56,20.43,20.62,20.03,19.59,19.38,19.7,20.32,21.85,21.94,22.11,21.98,21.8,21.44,21.26,21.13,22.02,23.34,21.27,21.49,21.09,21.51,21.8,20.98,19.78,19.85,19.96,19.75,19.96,20.19,20.39,20.96,22.35,22.4,22.57,22.22,22.05,21.89,21.32,20.81,21.03,21.97,21.68,21.63,21.77,21.91,20.46,20.85,20.03,20.04,20.24,20.49,20.72,20.89,20.99,21.37,22.79,23.07,23.27,24.88,25.59,24.33,22.6,21.87,23.34,23.75,20.79,21.59,21.56,21.9,19.95,20.79,20.01,20.09,20.27,20.55,20.65,20.07,20.54,20.62,22.52,22.92,20.17,21.77,22.12,21.39,21.3,21.0,20.78,20.88,20.3,20.8,20.61,21.01,21.3,20.5,19.36,18.87,19.35,19.71,20.04,20.06,20.34,20.75,21.66,20.86,21.64,19.93,21.48,21.53,21.34,20.87,21.92,22.87,21.36,21.34,19.3,18.14,18.36,19.84,20.77,21.73,22.08,22.33,22.51,22.73,22.15,22.49,21.45,21.22,21.47,21.4,21.16,20.79,20.34,19.9,19.57,20.24,20.04,20.14,20.23,20.52]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.345,2.934,0.672,0.633,0.669,0.97,0.787,1.197,2.665,1.802,1.708,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.471,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.455,1.85,0.977,0.827,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.85,0.532,0.268,0.202,0.232,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.428,0.723,1.826,0.673,0.718,0.518,0.511,0.503,0.58,0.518,0.23,0.185,0.187,0.202,0.231,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,1.16,1.171,1.317,1.129,0.737,0.781,0.715,0.584,0.374,0.514,0.278,0.185,0.187,0.202,0.231,0.298,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.822,0.925,1.038,1.108,0.679,0.552,0.488,0.412,0.7,0.563,0.186,0.185,0.187,0.202,0.231,1.118,0.35,0.594,1.127,0.674,0.467,0.628,0.712,0.926,1.0,1.022,1.022,0.857,0.653,0.745,0.511,0.528,0.67,0.764,0.686,0.185,0.187,0.202,0.231,0.24,0.971,0.4,0.494,0.514,0.822,0.672,0.699,0.885,0.926,0.955,1.009,0.942,0.855,0.746,0.725,0.619,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.738,0.704,0.896,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.257,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.886,0.916,1.168,9.8,1.415,1.521,1.533,1.541,1.605,1.062,0.854,0.539,0.654,0.746,0.36,0.205,0.227,0.235,0.25,0.275,0.345,0.705,2.349,0.969,1.006,0.935,0.907,1.331,1.137,1.166,1.158,1.182,1.092,0.82,0.642,0.518,0.525,0.6,0.753,0.396,0.185,0.187,0.214,0.249,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,1.215,1.205,1.706,1.345,0.994,0.857,0.933,0.999,0.492,0.207,0.225,0.471,0.223,0.232,0.254,0.353,0.554,0.544,0.592,0.517,0.843,0.679,0.668,1.592,1.638,0.706,0.994,1.2,0.983,1.252,0.897,1.846,0.524,0.596,0.664,0.198,0.187,0.202,0.231,0.414,0.589,2.082,0.685,1.01,0.714,0.885,0.797,0.929,1.012,1.021,2.391,1.077,1.195,0.806,0.751,0.616,0.448,0.681,0.483,0.185,0.187,0.206,0.24,0.452,0.622,6.144,3.19,1.807,1.768,0.757,0.853,1.282,1.227,1.225,1.287,1.232,0.937,0.991,1.101,0.608,0.452,0.497,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.163,2.019,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.459,0.385,0.638,0.576,0.185,0.192,0.22,0.253,2.199,0.708,0.975,2.712,0.878,0.926,2.237,1.089,1.578,1.481,1.102,0.808,0.802,0.705,0.748,0.601,0.35,0.435,0.696,0.387,0.185,0.187,0.202,0.231,0.278,6.647,1.482,1.563,0.569,0.533,0.915,2.424,6.174,0.663,0.577,0.416,0.357,0.305,0.443,0.45,0.233,0.306,0.613,0.287,0.185,0.187,0.202,0.231,0.252,0.309,0.462,0.816,0.836,2.079,2.033,0.354,0.376,0.551,0.778,0.395,0.796,0.526,0.613,0.496,0.507,0.597,0.66,0.291,0.185,0.187,0.202,0.231,0.266,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,1.565,1.265,0.827,2.076,0.823,0.744,0.702,0.569,0.479,0.63,0.658,0.185,0.187,0.202,0.231,0.359,2.37,0.984,1.299,0.681,0.976,1.447,1.103,1.875,1.984,0.872,1.098,1.164,0.918,0.71,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.481,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.068,0.766,2.297,0.715,1.178,1.8,1.831,1.158,2.944,1.33,2.405,1.014,1.124,0.708,0.401,0.798,0.713,0.186,0.188,0.216,0.248,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,1.583,1.483,0.616,0.58,0.718,0.739,0.65,0.492,0.441,0.33,0.245,0.249,0.247,0.257,0.279,0.369,0.475,0.589,0.698,0.664,0.687,0.862,0.821,0.952,1.007,1.017,1.095,1.025,0.991,0.888,0.851,5.033,0.691,0.413,0.351,0.226,0.232,0.241,0.267,0.467,0.748,1.804,0.926,0.907,1.525,0.928,1.054,1.164,1.302,1.39,1.489,3.266,1.215,1.019,0.949,0.94,0.648,0.664,0.402,0.288,0.242,0.258,0.281,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,1.592,1.718,1.883,1.726,1.224,1.008,1.208,1.098,1.366,0.579,1.241,0.361,0.264,0.277,0.302,1.734,0.617,1.13,1.053,1.231,1.078,1.197,1.483,2.018,1.833,1.453,1.494,1.359,1.588,0.999,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.14,1.29,1.624,1.632,1.964,2.077,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.25,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.57,25.4,25.83,25.92,24.47,24.48,25.61,25.72,26.05,26.33,26.51,26.83,27.01,27.22,27.36,27.41,27.3,27.31,26.84,26.65,26.79,26.72,26.69,26.59,25.99,24.94,23.92,24.89,25.54,25.71,25.71,25.57,26.16,25.39,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.46,25.54,25.63,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.44,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.08,26.14,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.57,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.71,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.33,23.86,24.38,24.96,25.06,25.03,25.26,25.36,25.41,25.43,25.4,25.48,25.55,25.19,24.45,23.3,24.08,25.32,25.86,26.18,26.35,26.5,26.43,26.17,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.39,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,27.48,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,24.97,25.35,24.23,24.91,23.86,24.08,24.85,24.82,24.89,25.04,25.09,25.12,25.19,24.55,22.96,23.6,24.76,25.19,25.48,25.64,25.73,25.55,25.62,25.76,25.74,25.8,25.9,25.69,25.37,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.43,25.78,25.88,25.74,25.7,25.77,25.73,25.53,25.69,25.67,25.64,25.02,23.62,22.53,23.67,24.99,25.38,25.46,25.37,25.7,25.81,25.77,25.77,25.79,25.7,25.72,25.83,25.65,24.6,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.75,23.54,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.98,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.5,23.79,24.89,23.51,24.47,24.69,23.37,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.81,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,23.76,24.17,24.28,24.83,24.98,25.16,25.31,25.52,25.09,24.27,24.91,25.24,24.87,25.3,25.21,25.37,25.53,25.53,25.51,24.1,24.94,24.9,24.78,24.61,24.48,24.3,24.57,25.04,25.46,25.62,25.67,25.81,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.48,24.12,23.36,23.62,24.28,24.29,24.36,24.22,24.52,24.61,24.75,24.86,24.02,23.7,24.8,25.3,25.52,25.54,25.59,25.48,25.15,24.95,24.87,24.78,24.71,24.68,24.4,24.34,24.24,24.25,24.09,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,0.829,0.891,1.994,1.803,1.649,1.968,1.807,1.774,2.584,2.719,2.948,0.809,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.639,0.589,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.915,1.691,0.415,0.565,8.096,1.113,1.721,2.25,1.528,2.802,1.989,1.722,1.679,0.726,0.479,0.478,0.484,0.476,0.472,0.47,0.56,2.248,0.742,2.124,0.749,1.171,0.453,1.069,0.202,0.114,0.249,0.422,0.807,1.332,1.114,1.238,1.352,1.374,0.742,0.579,0.514,0.494,0.481,0.47,0.528,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.952,1.225,2.137,2.804,4.356,2.4,0.973,1.143,0.754,0.656,0.592,0.549,0.497,0.492,0.553,8.204,0.944,1.117,1.147,0.941,0.355,0.469,0.49,0.703,1.24,1.54,1.379,1.715,1.358,3.324,1.408,0.834,0.723,0.65,0.917,0.898,0.844,0.592,0.578,1.476,1.06,0.654,0.397,0.281,0.361,1.26,0.871,0.725,0.775,1.628,2.323,3.137,2.229,1.836,1.845,0.891,0.745,0.649,0.586,0.541,0.511,0.48,0.548,1.358,0.745,0.446,0.313,0.188,0.172,0.237,0.744,0.988,1.193,1.485,2.414,2.149,2.623,2.755,2.023,1.66,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.658,0.987,0.845,6.452,2.388,1.682,1.651,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.319,0.859,0.703,1.045,1.614,4.011,2.641,2.393,2.863,1.419,2.082,0.97,0.84,0.97,0.92,0.844,0.561,0.48,0.601,4.874,0.917,0.805,1.241,0.534,0.411,0.792,0.886,0.994,1.375,1.684,1.595,2.146,2.303,2.388,9.131,1.259,1.141,0.599,0.637,0.684,0.661,0.657,0.714,0.617,0.536,0.625,0.764,0.382,0.507,0.561,1.241,0.84,1.134,1.53,2.179,2.146,4.945,4.652,5.853,9.45,1.516,0.881,0.593,0.569,0.552,0.551,0.606,1.792,0.574,0.528,0.44,0.794,0.37,0.42,0.379,0.663,1.167,1.71,1.728,1.96,2.549,1.729,2.494,2.664,1.286,0.673,0.622,0.58,0.552,0.526,0.591,0.613,0.785,0.418,0.334,0.219,0.282,0.305,0.403,0.493,1.076,1.46,1.527,1.917,3.356,3.53,1.587,1.556,1.479,0.664,0.62,0.585,0.563,0.54,0.598,0.768,2.533,1.353,0.967,0.685,0.618,0.552,0.556,0.874,1.251,1.729,2.102,2.715,2.296,2.326,1.591,1.314,3.385,0.757,0.647,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.6,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.631,1.084,0.593,0.579,0.568,0.567,0.622,0.91,0.988,0.719,0.858,1.673,0.796,0.874,0.753,0.931,1.151,1.215,1.42,1.489,1.38,1.647,1.299,0.812,0.841,0.575,0.563,0.551,0.543,0.542,0.602,2.226,0.732,1.068,0.706,0.581,0.492,1.007,0.706,0.793,0.803,0.736,0.665,1.249,0.949,1.561,1.361,0.834,0.804,1.27,0.776,0.521,0.512,0.495,1.692,0.73,0.558,0.78,0.769,0.578,0.617,0.514,0.572,0.573,0.484,0.834,1.975,1.368,1.391,2.159,3.745,2.419,0.82,0.525,0.513,0.509,1.815,0.524,0.609,0.866,2.932,0.886,0.497,0.475,1.125,0.698,0.725,0.948,1.168,1.311,1.565,1.591,1.445,1.725,1.611,1.096,0.889,0.661,0.613,0.586,0.565,0.548,0.634,8.641,0.92,2.622,1.322,0.42,0.601,0.535,0.613,1.087,1.637,1.918,2.038,2.217,3.475,2.241,2.363,1.288,0.808,0.73,0.677,0.633,0.6,0.586,0.637,0.651,2.323,0.863,0.977,0.917,1.189,2.025,1.51,2.116,2.496,2.828,2.111,3.038,1.88,1.644,1.545,1.298,0.852,0.8,0.748,0.706,0.676,0.671,0.709,0.656,0.81,0.955,1.02,1.012,0.971,1.19,1.186,1.281,1.755,4.027,2.367,2.992,2.196,1.889,2.179,1.534,0.929,0.814,0.737,0.699,0.581,0.597,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.72,0.808,0.95,1.266,1.62,1.983,2.28,1.924,1.448,1.216,0.673,0.636,0.615,0.598,0.585,0.589,0.671,0.643,0.594,0.97,1.857,0.499,0.541,1.542,1.496,1.311,1.227,1.175,2.316,1.937,1.67,2.065,1.637,2.575,1.149,1.905,0.655,0.598,0.591,0.562,3.354,0.9,0.883,1.806,1.471,0.414,0.377,0.737,0.53,0.752,1.076,1.373,2.043,2.442,10.08,2.374,2.07,1.379,1.041,0.858,0.744,0.683,0.64,0.618,0.668,1.154,1.676,5.556,7.639,2.401,0.942,1.24,2.053,1.408,1.747,2.14,2.081,2.099,2.959,2.074,10.153,2.433,1.072,0.834,0.753,0.701,0.667,0.656,0.695,0.737,1.006,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.906,1.666,2.159,10.01,2.211,1.709,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.695],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.34,22.04,22.87,23.26,23.79,24.0,24.11,23.58,22.63,23.22,23.65,23.94,24.63,24.94,24.62,25.03,25.49,25.27,24.87,24.59,24.34,24.15,23.93,23.58,22.75,22.0,22.52,23.01,22.36,22.28,22.31,23.47,24.18,24.53,24.77,24.94,25.04,25.13,25.24,25.45,25.24,24.82,24.88,24.05,24.03,23.92,23.18,22.87,22.56,22.75,22.98,22.65,22.64,22.65,22.64,23.08,24.05,24.34,24.52,24.7,24.84,24.99,25.13,24.6,24.98,24.54,24.86,24.95,24.8,24.61,24.45,24.35,24.38,24.33,24.2,24.37,24.41,23.81,23.21,23.21,23.62,23.96,24.02,24.11,24.21,24.38,24.93,25.4,25.63,25.63,25.46,25.2,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.49,23.03,23.43,23.67,23.92,24.22,24.28,24.39,24.57,24.8,24.89,24.81,24.94,24.06,23.63,23.38,22.96,22.71,22.44,22.19,22.1,21.86,22.84,23.45,23.61,22.9,23.46,23.8,24.09,24.36,24.2,24.13,24.15,24.45,24.74,25.09,25.16,25.23,25.15,24.88,24.63,24.25,24.03,23.79,23.51,23.23,22.87,22.9,22.99,23.3,23.47,23.85,24.14,24.28,24.45,24.54,24.66,24.88,25.01,24.93,25.17,25.12,24.94,24.81,24.5,24.21,23.54,23.19,22.98,22.59,21.6,21.76,21.98,22.09,22.51,23.09,23.36,23.57,23.75,23.91,23.98,24.05,24.18,24.41,24.61,24.67,24.68,24.53,24.32,24.17,23.39,23.31,23.13,23.1,22.88,22.39,22.88,23.1,23.31,23.48,23.74,23.92,24.1,24.23,24.31,24.43,24.52,24.78,24.99,25.08,25.0,24.79,24.46,24.06,23.7,23.44,22.64,21.61,21.35,21.26,21.09,21.58,21.83,22.25,22.52,22.04,21.96,22.03,23.0,23.85,24.12,22.85,23.36,23.67,23.64,23.53,23.34,22.73,22.44,22.34,22.39,22.06,22.66,22.55,21.92,21.9,21.47,22.29,23.24,23.65,23.6,23.47,23.58,23.7,23.87,24.39,24.8,24.3,24.0,23.62,23.4,23.28,22.99,22.69,22.48,22.48,22.73,23.13,22.62,22.0,20.79,20.81,22.4,23.01,23.27,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.33,23.18,22.99,22.77,22.55,22.55,22.45,22.5,22.49,22.54,22.77,22.38,22.24,23.26,23.66,23.82,23.95,24.12,24.37,24.58,24.99,25.27,25.22,24.89,24.52,24.24,23.94,23.66,23.48,23.1,22.52,22.84,23.21,22.57,22.44,22.7,22.76,23.62,23.86,24.1,24.23,24.37,24.56,24.61,24.79,24.14,24.32,24.27,24.18,23.96,23.59,23.36,23.11,22.54,22.16,22.3,21.86,22.04,22.21,22.48,22.73,22.2,22.95,23.36,23.66,23.88,24.05,24.22,24.48,24.65,24.66,23.99,23.59,23.3,23.0,22.71,22.48,22.11,21.84,22.16,22.42,22.63,22.81,22.99,23.25,23.51,23.73,23.92,24.07,24.16,24.24,24.7,24.99,24.89,24.28,24.03,23.62,23.51,23.45,23.53,23.95,24.38,25.15,25.91,26.8,27.4,23.48,23.41,23.29,24.34,24.51,24.61,24.68,24.72,24.78,24.86,25.04,25.07,24.55,24.02,23.58,23.38,23.13,22.89,22.68,22.49,22.37,22.6,22.58,22.7,22.77,22.85,23.01,23.65,23.91,24.0,24.12,24.27,24.44,24.62,24.17,24.03,23.95,24.39,24.41,24.22,23.9,23.68,23.52,23.4,22.95,23.47,23.45,23.65,23.72,23.75,23.92,24.04,24.26,24.31,24.42,24.59,24.82,24.51,24.75,24.84,24.28,24.1,23.99,23.73,23.49,23.38,23.31,23.16,23.22,22.94,23.25,23.32,23.35,22.2,22.72,23.58,23.97,24.14,24.28,23.73,24.2,24.49,24.86,24.2,23.88,23.6,23.44,23.24,23.05,22.81,22.61,22.48,22.44,22.99,23.38,23.61,23.79,23.92,24.14,23.74,24.3,24.44,24.53,24.63,24.78,24.9,24.69,24.93,23.99,24.08,23.94,23.65,23.43,23.27,23.14,22.9,22.06,22.04,21.9,21.59,21.82,21.98,22.68,23.22,23.43,23.7,23.86,23.98,24.11,24.24,24.48,23.87,24.07,23.97,23.78,23.5,22.78,22.17,21.43,21.1,20.83,21.18,21.18,21.49,21.79,22.06,22.23,22.57,22.66,22.81,22.94,23.03,23.11,23.23,23.74,24.2,24.2,23.7,23.17,22.88,22.6,22.38,22.13,21.71,20.99,20.85,20.7,21.06,21.65,21.86,22.12,22.46,22.65,22.82,22.99,23.56,23.82,24.04,24.26,24.25,23.72,23.59,23.37,23.14,22.86,22.62,22.47,22.37,22.42,22.66,22.34,22.16,22.31,22.5,22.66,23.41,23.7,23.83,23.97,24.12,24.28,24.46,24.73,24.84,24.6,24.42,23.71,23.12,22.9,22.68,22.48,22.32,22.09,22.41,22.72,22.72,22.43,22.5,22.0,22.97,23.31,23.47,23.62,23.8,24.04,23.17,23.71,24.02,23.58,23.67,23.5,23.35,23.11,22.96,22.73,22.48,22.25,22.06,22.25,21.79,22.17,22.37,22.67,22.95,23.25,23.37,23.48,23.66,23.89,24.13,24.22,24.25,23.67,23.03,22.59,22.9,22.52,22.19,21.66,21.31,21.22,21.58,21.94,22.14,22.49,22.06,22.46,22.78,23.0,23.26,23.45,23.65,23.84,24.05,24.32,24.43,24.41,24.2,23.88,22.49,22.62,22.37,22.24,22.04,21.83,21.77,21.48,21.99,22.38,22.64,22.92,23.15,23.29,23.52,23.68,23.8,23.91,24.05,24.26,24.3,24.19,23.29,23.29,23.03,22.34,21.47,21.02,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1241,0.1603,0.1964,0.2464,0.33,0.3814,0.6663,0.7621,0.8181,0.9188,0.9761,1.0296,1.118,1.557,1.9468,2.2693,2.4031,2.5534,2.7429,2.9065,3.0492,3.203,3.287,3.3492,3.4008,3.4618,3.5306,3.6055,3.6796,3.7214,3.8135,3.855,3.9311,4.0315,4.2769,4.4651,4.6306,4.8384,5.0633,5.2464,5.4582,5.6087,5.7897,5.9416,6.0919,6.2045,6.2902,6.3616,6.424,6.48,6.5337,6.5884,6.6396,6.7017,6.8043,6.8452,6.9073,6.9728,7.0174,7.2756,7.3291,7.4711,7.6424,7.7686,7.9165,8.0279,8.1231,8.2409,8.2968,8.348,8.3876,8.4271,8.4693,8.5062,8.5374,8.6007,8.6835,8.7396,8.825,8.8648,8.9158,8.9443,8.9874,9.0055,9.0221,9.0618,9.1507,9.4274,9.5262,9.6193,9.7148,9.7984,9.8825,9.9556,10.0115,10.0593,10.1032,10.144,10.2127,10.2534,10.317,10.4347,10.4799,10.5011,10.5264,10.5712,10.6254,10.6796,10.7454,10.9481,11.1891,11.5854,11.768,11.9759,12.1099,12.1928,12.2794,12.3452,12.4015,12.4457,12.4988,12.5507,12.5977,12.6623,13.0736,13.1369,13.2048,13.4231,13.471,13.4988,13.5459,13.5884,13.6468,13.7678,13.9125,14.2339,14.3739,14.5157,14.8889,15.0073,15.0871,15.1609,15.2333,15.3154,15.3825,15.4411,15.4886,15.5341,15.6634,15.7336,15.8434,15.8955,15.9252,16.1143,16.2068,16.2856,16.368,16.5291,16.7309,17.0599,17.2256,17.3432,17.4779,17.5745,17.6344,17.6916,17.7466,17.7959,17.828,17.8583,17.8881,18.0032,18.0625,18.1184,18.1893,18.2128,18.2333,18.2622,18.2887,18.3361,18.4001,18.5601,18.7602,19.054,19.2015,19.3606,19.5083,19.6217,19.7113,19.7717,19.8296,19.8763,19.916,19.9536,19.9901,20.0272,20.0941,20.1428,20.2444,20.287,20.3284,20.4037,20.4881,20.7569,20.936,21.1005,21.2454,21.4151,21.6062,21.7628,21.8808,21.9942,22.1103,22.187,22.2508,22.3122,22.3748,22.4251,22.4722,22.5607,22.6101,22.6572,22.6977,22.7349,22.7773,22.813,22.8848,23.2143,23.3224,23.4659,23.7949,23.9849,24.2046,24.3891,24.5224,24.6278,24.7236,24.799,24.8744,24.9523,25.0236,25.0811,25.1324,25.1861,25.3647,25.4676,25.6149,25.7022,25.7595,25.8054,25.8628,25.9494,26.2457,26.539,26.8678,27.1901,27.3577,27.5004,27.6301,27.9445,28.025,28.1294,28.2024,28.2693,28.33,28.3858,28.4393,28.4937,28.5483,28.6013,28.6416,28.7137,28.7666,28.8367,28.8924,28.9803,29.067,29.4188,30.0524,30.495,30.6976,30.9535,31.1852,31.4303,31.7703,31.8754,31.9386,31.9957,32.0578,32.1083,32.1565,32.2057,32.2915,32.3435,32.3892,32.4193,32.4575,32.4929,32.5249,32.5609,32.6483,32.9582,33.2821,33.5904,33.7549,33.9509,34.117,34.2623,34.43,34.5261,34.5983,34.6782,34.7361,34.7861,34.8318,34.8779,34.9448,35.0829,35.1671,35.1968,35.2327,35.2617,35.3544,35.443,35.4845,35.6225,35.8126,36.1134,36.2647,36.473,36.6597,36.7763,36.881,36.9664,37.0404,37.1151,37.1736,37.2253,37.3092,37.359,37.4186,37.5325,37.7981,37.9193,37.9919,38.0615,38.1079,38.1555,38.2798,38.529,38.8195,39.2357,39.4278,39.5849,39.7345,39.9204,40.0129,40.1524,40.2229,40.2992,40.3612,40.4173,40.4685,40.5205,40.5783,40.6985,40.7653,40.8443,40.9094,40.9714,41.1912,41.2858,41.4166,41.5321,41.7492,41.926,42.0801,42.2353,42.4044,42.5331,42.6077,42.6617,42.7162,42.7685,42.8077,42.8441,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,43.0044,43.1306,43.2373,43.3005,43.3884,43.4684,43.5299,43.5852,43.6372,43.7772,43.9152,43.9882,44.0542,44.1595,44.2523,44.3074,44.4163,44.5953,44.6886,44.9254,45.1672,45.4293,45.5553,45.7335,45.8421,46.0189,46.085,46.145,46.21,46.2748,46.3296,46.4058,46.4529,46.5007,46.5959,46.83,46.9253,47.023,47.057,47.0868,47.1629,47.2614,47.4931,47.6198,47.7429,47.8645,47.9483,48.0465,48.1457,48.2324,48.2897,48.3457,48.424,48.521,48.5726,48.6196,48.6899,48.8046,48.8578,48.9486,49.0304,49.0766,49.1178,49.2104,49.2847,49.3117,49.3429,49.4426,49.6531,49.9092,49.9981,50.0894,50.2026,50.3816,50.5,50.6207,50.6877,50.7432,50.7934,50.8773,50.9339,50.9799,51.0336,51.1458,51.1914,51.2226,51.254,51.3411,51.399,51.4588,51.5528,51.7978,52.0965,52.4037,52.6573,52.7887,52.9004,53.0295,53.1128,53.1777,53.2466,53.3241,53.3819,53.4335,53.4806,53.5834,53.8829,54.0033,54.1359,54.2123,54.2537,54.3704,54.4577,54.5218,54.6369,55.0248,55.3738,55.7227,55.8955,56.0873,56.2471,56.3881,56.4893,56.5719,56.6389,56.6867,56.7308,56.7797,56.8209,56.8634,56.9223,57.0465,57.1965,57.5587,57.8256,57.9232,58.0771,58.1956,58.421,58.7775,58.9807,59.1643,59.3867,59.5583,59.7056,59.8323,59.9374,60.0379,60.116,60.1842,60.2304,60.2738,60.3257,60.3848,60.4459,60.5477,60.6066,60.6582,60.7798,60.8321,61.1058,61.3015,61.3955,61.5227,61.8181,62.038,62.2616,62.4127,62.5548,62.6894,62.8332,62.9113,62.9882,63.0559,63.1099,63.1588,63.2149,63.3646,63.4875,63.5951,63.6657,63.712,63.778,63.8348,63.903,63.966,64.0893,64.3062,64.5734,64.7687,64.868,65.0596,65.1881,65.3262,65.4414,65.5005,65.5608,65.6281,65.6904,65.7593,65.847,65.9232,66.0029,66.0776,66.1344,66.2089,66.2459,66.2821,66.3565,66.445,66.5342,66.7438,66.9877,67.341,67.4772,67.6128,67.7739,67.8876,68.1424,68.2395,68.3416,68.4086,68.4676,68.5204,68.5704,68.7005,68.7663,68.8464,68.9633,69.0332,69.0717,69.1272,69.1757,69.2219,69.3056,69.5746,69.9597,70.2917,70.5158,70.9318,71.1038,71.3511,71.4594,71.5637,71.6455,71.7186,71.7835,71.8407,71.8938,71.9785,72.1314,72.2602,72.4812,72.7304,72.8263,72.9447,73.0559,73.1728,73.357,73.6721,74.076,74.48,74.6744,74.9247,75.0792,75.6556,75.7981,75.9009,75.9789,76.0834,76.2026,76.2668,76.3252,76.3831,76.5081,76.5886,76.6664,76.7588,76.84,77.0141,77.1357,77.2333,77.3674,77.6835,78.0583,78.4635,78.8735,79.0672,79.2051,79.3524,79.5051,79.6215,79.6904,79.7497,79.7937,79.8366,79.8802,79.9264,79.9757,80.0699,80.1681,80.3597,80.5179,80.6165,80.7569,80.9273,81.1301,81.3492,81.5808,81.8152,82.0312,82.2098,82.3716,82.5272,82.6864],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,4.0,5.0,5.0,5.0,6.0,7.0,8.0,9.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,17.0,17.0,18.0,19.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,21.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,30.0,30.0,30.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,32.0,33.0,35.0,37.0,39.0,40.0,41.0,41.0,41.0,41.0,42.0,43.0,43.0,43.0,43.0,43.0,43.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,70.0,72.0,74.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,88.0,89.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,98.0,99.0,100.0,102.0,104.0,106.0,107.0,108.0,109.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,111.0,112.0,113.0,114.0,116.0,118.0,120.0,123.0,126.0,127.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0,141.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,143.0,144.0,145.0,146.0,147.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,149.0,150.0,152.0,154.0,156.0,158.0,159.0,160.0,161.0,161.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,163.0,164.0,166.0,168.0,170.0,172.0,174.0,176.0,178.0,179.0,180.0,181.0,182.0,183.0,184.0,185.0,185.0,186.0,186.0,186.0,187.0,188.0,189.0,189.0,190.0,191.0,192.0,194.0,196.0,198.0,200.0,202.0,204.0,206.0,207.0,208.0,209.0,210.0,211.0,212.0,213.0,214.0,215.0,216.0,217.0,218.0,219.0,220.0,221.0,222.0,223.0,224.0,225.0,226.0,227.0,228.0,229.0,230.0,231.0,232.0,233.0,234.0,235.0,236.0,237.0,238.0,239.0,239.0,239.0,240.0,241.0,241.0,242.0,243.0,244.0,245.0,246.0,248.0,249.0,250.0,251.0,252.0,253.0,254.0,255.0,256.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,258.0,260.0,262.0,264.0,266.0,268.0,269.0,270.0,271.0,272.0,273.0,273.0,273.0,273.0,274.0,274.0,274.0,274.0,274.0,275.0,276.0,277.0,278.0,279.0,281.0,283.0,285.0,287.0,288.0,290.0,291.0,292.0,293.0,294.0,295.0,296.0,297.0,298.0,299.0,299.0,300.0,301.0,301.0,302.0,303.0,304.0,305.0,306.0,307.0,309.0,311.0,313.0,315.0,316.0,317.0,318.0,319.0,320.0,321.0,322.0,323.0,323.0,323.0,324.0,324.0,325.0,326.0,327.0,328.0,330.0,332.0,334.0,336.0,338.0,340.0,342.0,344.0,346.0,348.0],"district_grid_kwh":[1.428,1.505,1.355,1.254,1.245,1.731,2.889,1.763,9.774,3.287,1.561,3.455,1.967,1.835,3.033,7.483,6.644,5.496,4.59,5.157,6.502,5.611,4.935,5.313,2.906,2.15,1.782,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.72,7.182,7.773,6.33,7.322,5.2,6.256,5.252,5.194,3.894,2.96,2.47,2.155,1.937,1.856,1.89,1.77,2.147,3.545,1.297,1.861,1.522,0.774,8.602,1.79,4.906,5.922,4.363,5.111,3.852,3.293,4.069,1.935,1.768,1.37,1.366,1.458,1.277,1.078,2.185,2.862,1.927,2.93,1.364,1.75,0.977,1.479,0.623,0.393,0.365,1.515,4.717,3.387,3.195,3.275,2.867,2.91,2.527,1.93,1.652,1.52,1.409,2.374,1.408,2.199,4.036,1.553,0.726,0.4,1.158,1.716,1.858,2.26,3.453,4.108,6.755,6.265,7.132,4.595,2.846,2.993,2.272,1.946,1.528,1.837,1.793,1.624,2.234,14.217,2.169,2.332,7.487,1.643,0.541,1.309,1.115,2.005,1.689,2.467,5.478,4.803,4.867,12.803,4.062,2.756,2.552,2.501,2.839,2.32,2.023,1.642,1.576,4.467,2.408,3.766,1.79,1.017,6.488,3.173,2.703,2.828,2.745,3.44,5.607,5.683,4.035,4.621,3.315,2.07,1.976,1.903,1.704,1.108,1.048,1.031,3.978,2.049,1.919,2.43,0.517,0.256,0.583,0.595,1.626,2.196,2.728,3.41,5.008,5.06,5.457,5.067,3.89,3.098,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.473,1.431,2.602,2.919,9.291,6.191,5.687,5.009,5.866,6.606,5.413,4.078,3.919,4.015,2.651,2.203,2.124,2.162,1.742,1.625,3.061,1.708,1.627,1.398,1.02,1.239,1.081,2.482,11.388,3.738,4.962,11.371,6.567,7.595,6.376,4.61,3.643,3.311,2.605,2.608,2.693,2.462,1.988,1.772,1.857,6.174,3.531,5.053,2.995,1.965,1.574,1.971,2.968,10.165,5.0,5.604,5.494,5.75,4.896,4.45,10.784,2.784,3.608,2.522,2.315,2.095,1.931,1.847,1.882,1.887,1.817,1.292,2.446,1.816,2.405,1.911,3.014,2.975,5.996,10.799,7.544,6.951,8.78,7.948,8.408,11.751,3.634,2.183,1.974,2.148,1.747,1.665,1.699,2.967,1.783,1.568,0.617,0.828,0.9,0.978,1.234,2.998,5.282,5.52,5.256,5.642,6.724,5.696,4.984,5.799,3.32,2.497,2.764,2.001,1.726,1.579,1.594,2.314,4.736,2.89,0.713,0.858,0.792,3.181,3.039,1.191,2.353,3.24,5.127,5.189,7.144,6.405,4.0,3.62,2.954,2.555,2.584,2.023,1.788,2.897,1.723,2.06,3.908,9.112,3.986,2.331,2.275,1.591,1.633,4.263,4.248,4.951,7.094,6.588,5.392,5.131,6.378,3.196,4.822,2.437,2.636,2.145,1.938,1.77,1.797,2.001,4.154,2.309,2.732,2.249,2.143,7.597,3.27,4.523,3.99,7.504,6.113,5.327,5.365,5.845,4.447,2.577,1.867,1.884,1.81,1.354,1.258,1.464,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.689,2.183,3.04,2.766,2.125,1.913,1.798,4.838,4.768,2.505,2.265,3.612,3.182,1.893,3.733,6.142,3.201,4.036,4.123,4.467,4.322,6.112,3.727,6.066,2.283,2.073,2.249,2.238,1.894,2.633,1.628,1.653,3.291,8.031,3.27,3.352,1.164,0.947,2.608,3.38,7.948,2.159,2.099,2.072,2.876,3.367,3.404,2.977,1.98,1.933,2.709,3.35,1.785,1.624,2.43,3.966,1.838,3.115,2.807,1.562,1.179,3.177,2.421,0.864,1.071,1.7,3.588,4.364,3.052,3.13,3.882,6.143,4.092,4.172,2.316,1.919,1.733,2.902,1.956,1.592,1.854,3.85,1.565,0.697,0.765,2.988,1.987,2.052,3.223,4.177,5.09,5.236,8.701,4.507,3.832,4.43,2.879,2.245,2.381,2.679,1.996,1.784,1.63,3.55,10.355,4.131,4.549,2.434,1.418,4.005,2.995,2.197,3.948,6.611,5.949,5.947,5.929,6.577,5.484,4.838,3.497,2.856,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.522,9.224,3.376,5.317,4.097,7.792,12.321,7.027,6.345,7.686,5.935,5.089,4.38,3.635,3.474,2.697,2.359,1.597,1.499,1.796,2.04,2.114,3.519,2.034,1.647,4.201,1.81,9.459,6.764,3.249,4.398,10.212,7.598,7.731,5.222,4.913,4.651,4.97,2.7,2.657,2.34,1.869,1.689,1.94,5.176,4.247,3.693,2.421,1.425,2.265,1.896,2.339,2.163,4.23,3.696,4.555,3.329,3.406,6.572,4.407,4.737,3.983,2.042,2.087,2.324,2.156,2.381,3.031,2.633,2.755,2.564,1.949,2.504,1.271,1.24,2.554,3.033,3.06,3.573,4.158,6.021,4.673,4.652,5.527,3.9,8.808,3.354,3.531,2.316,2.037,1.826,1.73,4.495,2.274,2.749,4.012,2.179,1.085,1.787,1.022,1.036,2.87,4.586,6.564,5.659,7.689,14.271,5.899,8.485,3.742,3.605,2.828,2.528,2.242,1.975,1.837,2.928,5.284,4.422,7.582,8.349,3.137,4.062,3.813,4.011,6.318,5.371,6.885,6.885,6.669,8.588,5.3,19.771,4.928,3.554,2.693,3.614,4.12,2.218,2.019,2.001,4.323,2.76,2.671,3.168,2.784,5.975,4.17,3.347,4.601,5.388,6.389,6.906,14.065,6.646,4.731,5.053,5.277,4.022,2.381,2.05,1.522,1.483,1.507,1.598,1.704,3.256,3.394,6.625,5.467,3.408,4.853,5.891,7.011,7.572,8.004,8.103,7.465,6.174,5.593,5.381,5.503],"emission_kg":[0.575,1.151,1.652,2.112,2.577,3.244,4.386,5.112,9.342,10.75,11.628,13.312,14.279,15.174,16.629,20.157,23.213,25.683,27.698,29.946,32.81,35.319,37.538,39.892,41.145,42.001,42.683,43.47,44.351,45.302,46.256,46.808,48.102,48.711,49.927,51.599,55.706,58.848,61.594,64.997,68.609,71.514,74.816,77.127,79.922,82.327,84.709,86.481,87.866,88.967,89.876,90.652,91.374,92.107,92.805,93.678,95.155,95.734,96.655,97.715,98.487,103.113,104.08,106.634,109.696,111.938,114.543,116.465,118.093,120.12,121.067,121.941,122.602,123.228,123.83,124.322,124.771,125.751,127.023,127.951,129.46,130.173,131.127,131.658,132.45,132.78,133.08,133.431,134.213,136.623,138.353,140.002,141.709,143.185,144.645,145.837,146.685,147.363,147.951,148.508,149.476,150.091,151.115,153.058,153.843,154.212,154.658,155.467,156.465,157.464,158.667,160.484,162.627,166.123,169.327,172.911,175.186,176.542,177.926,178.976,179.821,180.444,181.164,181.828,182.429,183.261,188.894,189.8,190.839,194.258,195.021,195.485,196.307,197.057,198.087,199.144,200.391,203.106,205.429,207.717,213.605,215.441,216.662,217.74,218.768,219.864,220.731,221.488,222.121,222.745,224.6,225.603,227.287,228.091,228.556,231.601,233.121,234.445,235.826,237.166,238.824,241.459,244.055,245.827,247.863,249.328,250.222,251.063,251.866,252.511,252.913,253.284,253.665,255.178,256.015,256.906,258.111,258.504,258.837,259.301,259.722,260.479,261.517,262.816,264.428,266.771,269.136,271.682,274.059,275.891,277.32,278.266,279.145,279.833,280.388,280.907,281.42,281.963,282.989,283.734,285.351,286.018,286.677,287.897,289.294,293.759,296.678,299.329,301.656,304.362,307.378,309.848,311.742,313.553,315.328,316.414,317.297,318.098,318.846,319.437,319.987,321.02,321.608,322.18,322.679,323.134,323.693,324.206,325.313,330.562,332.321,334.662,340.025,343.119,346.601,349.475,351.559,353.191,354.626,355.741,356.821,357.889,358.832,359.581,360.234,360.926,363.264,364.624,366.628,367.781,368.569,369.246,370.142,371.543,376.427,378.842,381.568,384.247,387.054,389.443,391.622,396.825,398.114,399.686,400.773,401.712,402.533,403.285,404.017,404.782,405.586,406.4,407.034,408.133,408.963,410.116,411.043,412.498,413.916,416.744,421.774,425.226,428.364,432.368,436.068,440.051,445.557,447.223,448.227,449.118,450.027,450.745,451.446,452.193,453.585,454.481,455.275,455.789,456.449,457.08,457.653,458.294,459.843,462.529,465.293,467.883,470.634,473.931,476.749,479.224,482.061,483.664,484.799,486.017,486.836,487.522,488.132,488.784,489.805,492.047,493.478,493.965,494.546,495.023,496.556,498.009,498.682,499.79,501.306,503.703,506.103,509.396,512.37,514.22,515.82,517.078,518.102,519.091,519.83,520.465,521.512,522.178,523.021,524.674,528.556,530.253,531.308,532.363,533.073,533.8,535.674,537.541,539.687,542.743,545.596,547.938,550.201,553.042,554.432,556.433,557.426,558.42,559.222,559.939,560.597,561.278,562.045,563.649,564.534,565.559,566.44,567.329,570.542,571.939,573.856,575.551,578.722,581.308,583.563,585.858,588.415,590.426,591.6,592.439,593.324,594.163,594.797,595.374,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,598.129,600.352,602.221,603.328,604.847,606.262,607.326,608.268,609.139,611.536,613.951,615.243,616.436,618.326,620.028,621.056,623.077,626.379,628.055,630.125,632.214,634.434,636.549,639.591,641.486,644.575,645.709,646.707,647.707,648.689,649.517,650.678,651.415,652.202,653.853,657.966,659.665,661.393,662.001,662.545,663.93,665.72,669.891,671.018,672.108,673.174,674.632,676.292,677.924,679.328,680.236,681.083,682.301,683.707,684.444,685.155,686.294,688.262,689.202,690.8,692.234,693.052,693.791,695.474,696.837,697.337,697.918,698.84,700.782,703.143,704.796,706.492,708.593,711.896,714.084,716.309,717.5,718.51,719.414,720.951,722.01,722.888,723.915,726.055,726.913,727.493,728.074,729.685,730.759,731.865,733.592,735.821,738.539,741.337,745.998,748.438,750.526,752.904,754.412,755.535,756.599,757.738,758.535,759.233,759.863,761.263,765.69,767.499,769.604,770.807,771.492,773.464,774.946,776.021,777.919,781.078,783.902,786.702,789.455,792.453,794.942,797.126,798.654,799.863,800.818,801.49,802.065,802.68,803.184,803.759,804.602,806.329,808.335,813.018,816.66,818.093,820.433,822.294,825.944,831.782,835.119,838.129,841.766,844.535,846.867,848.857,850.46,851.935,853.013,853.896,854.481,855.007,855.626,856.318,857.048,858.302,859.036,859.684,861.289,862.02,866.082,869.073,870.534,872.542,877.233,880.648,884.037,886.302,888.45,890.482,892.614,893.756,894.896,895.832,896.543,897.205,897.999,900.314,902.33,904.187,905.397,906.175,907.287,908.253,909.42,910.503,912.632,914.492,916.787,918.458,920.161,923.421,925.599,927.947,929.888,930.858,931.763,932.723,933.572,934.503,935.694,936.764,937.924,939.039,939.908,940.989,941.545,942.115,943.3,944.738,946.202,947.911,949.899,952.768,954.995,957.214,959.88,961.759,965.852,967.333,968.797,969.709,970.493,971.189,971.843,973.584,974.504,975.662,977.358,978.327,978.904,979.801,980.61,981.384,982.794,985.055,988.307,991.121,994.937,1002.001,1004.928,1009.108,1010.869,1012.474,1013.641,1014.653,1015.51,1016.243,1016.936,1018.09,1020.308,1022.291,1025.828,1029.643,1031.158,1033.089,1034.932,1036.887,1039.945,1042.509,1045.751,1048.955,1052.028,1055.973,1058.417,1067.561,1069.756,1071.259,1072.353,1073.677,1075.146,1075.926,1076.642,1077.373,1079.017,1080.095,1081.121,1082.325,1083.451,1085.996,1087.833,1089.343,1091.453,1093.937,1096.87,1100.03,1106.45,1109.419,1111.524,1113.777,1116.114,1117.914,1118.987,1119.932,1120.635,1121.324,1122.016,1122.757,1123.536,1124.993,1126.454,1129.071,1131.242,1132.665,1134.762,1137.402,1140.657,1144.208,1147.968,1151.77,1155.242,1158.118,1160.749,1163.237,1165.706],"kpi":{"all_time_peak_average":1.0,"annual_normalized_unserved_energy_total":0.018316,"carbon_emissions_total":1.0,"cost_total":1.0,"daily_one_minus_load_factor_average":1.0,"daily_peak_average":1.0,"discomfort_cold_delta_average":0.790764,"discomfort_cold_delta_maximum":3.437551,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.15377,"discomfort_hot_delta_average":0.237991,"discomfort_hot_delta_maximum":5.059987,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.017627,"discomfort_proportion":0.171398,"electricity_consumption_total":1.0,"monthly_one_minus_load_factor_average":1.0,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684408,"ramping_average":1.0,"zero_net_energy":1.0},"run":"baseline","steps":719},"baseline_sample":false,"carbon":[0.4025,0.3826,0.3695,0.367,0.374,0.3852,0.3954,0.4112,0.4328,0.4285,0.4576,0.4875,0.4915,0.4876,0.4797,0.4715,0.46,0.4494,0.4389,0.4361,0.4404,0.4471,0.4497,0.4431,0.431,0.3983,0.3831,0.3726,0.371,0.3669,0.3727,0.3815,0.4067,0.4241,0.4621,0.4818,0.4843,0.4828,0.48,0.4738,0.4647,0.459,0.4509,0.4446,0.4466,0.458,0.4586,0.455,0.4681,0.4455,0.4221,0.4006,0.3888,0.3875,0.3949,0.4061,0.4168,0.4094,0.429,0.468,0.5007,0.5185,0.5224,0.5205,0.517,0.5139,0.5097,0.4989,0.4943,0.4983,0.4894,0.4943,0.4825,0.4589,0.413,0.3851,0.4159,0.4486,0.4443,0.4817,0.5151,0.5229,0.5451,0.5432,0.5356,0.5314,0.5271,0.5193,0.5156,0.511,0.5107,0.5161,0.5213,0.5146,0.502,0.4717,0.4391,0.4105,0.3868,0.3956,0.4078,0.4366,0.4654,0.4814,0.5058,0.5082,0.5142,0.5267,0.5363,0.5374,0.5328,0.526,0.5216,0.5175,0.5113,0.5026,0.4951,0.4765,0.4624,0.4618,0.4347,0.4071,0.3921,0.3705,0.3695,0.3723,0.3963,0.4178,0.4454,0.4567,0.4645,0.4861,0.508,0.5154,0.5138,0.5126,0.5056,0.4957,0.4837,0.47,0.4599,0.452,0.4427,0.4223,0.411,0.3863,0.3738,0.3741,0.3852,0.3962,0.4154,0.4162,0.4471,0.4496,0.457,0.4693,0.479,0.4898,0.4885,0.4881,0.482,0.4699,0.4568,0.4392,0.4405,0.4419,0.432,0.4257,0.422,0.3781,0.3629,0.3546,0.3694,0.3803,0.4083,0.4647,0.4958,0.4864,0.4747,0.4667,0.463,0.4656,0.4728,0.4764,0.4727,0.468,0.4674,0.4664,0.4691,0.4709,0.4614,0.4531,0.4395,0.4258,0.405,0.3994,0.4061,0.4235,0.4433,0.4432,0.4603,0.4527,0.4604,0.4691,0.4786,0.4806,0.4715,0.4662,0.4646,0.4612,0.4566,0.4564,0.4643,0.4623,0.4421,0.4098,0.4005,0.3769,0.3463,0.3391,0.3386,0.3375,0.3438,0.3518,0.3569,0.3526,0.3825,0.4152,0.4462,0.4609,0.4704,0.4719,0.4717,0.4711,0.4585,0.4507,0.4521,0.448,0.4334,0.4279,0.4141,0.3964,0.383,0.3768,0.3684,0.3729,0.3787,0.3851,0.3966,0.3851,0.4006,0.4304,0.4545,0.4721,0.4805,0.4829,0.4865,0.4877,0.4882,0.4879,0.4896,0.4825,0.4631,0.4357,0.4309,0.4058,0.3914,0.3897,0.3963,0.4066,0.4258,0.4484,0.4584,0.4444,0.4566,0.4795,0.4853,0.4825,0.4767,0.4716,0.4659,0.4575,0.4515,0.4561,0.4655,0.4737,0.4685,0.4584,0.4601,0.4513,0.423,0.4112,0.4213,0.4395,0.4692,0.5021,0.5067,0.4979,0.5033,0.5202,0.5214,0.5194,0.5164,0.5085,0.5007,0.4927,0.4876,0.4904,0.4946,0.4965,0.4894,0.4829,0.4542,0.4409,0.4092,0.3975,0.3858,0.409,0.4413,0.4734,0.495,0.4785,0.4719,0.4788,0.4821,0.4782,0.4728,0.4713,0.4679,0.4675,0.4625,0.4609,0.4643,0.4625,0.4421,0.4257,0.401,0.3826,0.3652,0.3553,0.3614,0.3867,0.4089,0.4231,0.426,0.4083,0.4236,0.4421,0.4459,0.4454,0.4396,0.4394,0.4335,0.4307,0.4331,0.4344,0.441,0.4455,0.4348,0.415,0.4075,0.3772,0.3739,0.3702,0.3717,0.3788,0.3836,0.386,0.3835,0.3753,0.3914,0.415,0.423,0.4272,0.4238,0.4247,0.4226,0.423,0.4234,0.4277,0.4375,0.4522,0.4554,0.4494,0.4699,0.4636,0.4684,0.4589,0.4732,0.4855,0.4789,0.4768,0.498,0.497,0.498,0.504,0.4996,0.4978,0.494,0.4969,0.4925,0.49,0.4953,0.49,0.5059,0.5096,0.5066,0.5072,0.4997,0.5116,0.5008,0.4922,0.4842,0.4955,0.5066,0.5156,0.5266,0.5235,0.5347,0.5428,0.5414,0.5377,0.5237,0.5128,0.5068,0.497,0.4892,0.4979,0.5083,0.5091,0.4967,0.4817,0.4443,0.4388,0.4372,0.4411,0.4525,0.4759,0.5019,0.512,0.5197,0.5154,0.5226,0.5302,0.5315,0.5295,0.5248,0.5216,0.5196,0.5143,0.5069,0.4931,0.4796,0.4716,0.4583,0.4382,0.4497,0.4196,0.4129,0.4379,0.4687,0.4964,0.5112,0.5131,0.5107,0.5163,0.5228,0.5295,0.5354,0.5401,0.5424,0.5426,0.5412,0.541,0.5415,0.5417,0.5413,0.5378,0.5346,0.5334,0.514,0.5264,0.5217,0.5296,0.5413,0.5521,0.5536,0.5561,0.5483,0.542,0.5397,0.5388,0.5407,0.539,0.5357,0.5338,0.534,0.5344,0.5357,0.5413,0.5449,0.5369,0.5236,0.5002,0.447,0.4253,0.3993,0.3911,0.3865,0.3941,0.4275,0.438,0.4626,0.4592,0.4826,0.4924,0.4948,0.4893,0.4809,0.4778,0.4747,0.4708,0.4643,0.4558,0.454,0.4513,0.4369,0.4235,0.4127,0.4064,0.3774,0.3634,0.3545,0.391,0.4141,0.4023,0.387,0.374,0.3948,0.4243,0.44,0.4543,0.4684,0.4738,0.4748,0.4745,0.4732,0.4667,0.4581,0.4544,0.4411,0.4244,0.4,0.3742,0.3659,0.351,0.3448,0.3389,0.3452,0.3564,0.3613,0.3623,0.3822,0.4039,0.4294,0.4422,0.4495,0.4567,0.4594,0.4494,0.4384,0.4336,0.4372,0.4369,0.4289,0.4231,0.4292,0.4,0.3806,0.3916,0.4096,0.4473,0.4746,0.5027,0.5002,0.4897,0.4909,0.4962,0.4989,0.5006,0.5034,0.5033,0.5037,0.5021,0.4998,0.496,0.4942,0.4957,0.4874,0.4749,0.4333,0.4133,0.3936,0.3909,0.393,0.4066,0.4211,0.4348,0.4457,0.4234,0.4368,0.4599,0.4642,0.4741,0.4782,0.4784,0.4781,0.4765,0.4766,0.4771,0.4823,0.4817,0.4647,0.4416,0.4147,0.3936,0.3846,0.3815,0.3782,0.3873,0.4045,0.4211,0.4227,0.4043,0.4363,0.4719,0.4859,0.4885,0.4911,0.4931,0.4954,0.4974,0.4963,0.495,0.4962,0.4926,0.4706,0.4453,0.4126,0.4005,0.3821,0.3709,0.3773,0.3942,0.4197,0.4484,0.4666,0.4463,0.4606,0.4754,0.4833,0.4874,0.484,0.4774,0.4709,0.4654,0.4609,0.4593,0.4611,0.4625,0.4455,0.4228,0.4063,0.3665,0.3565,0.3518,0.3547,0.365,0.3802,0.3906,0.3844,0.3798,0.4046,0.4259,0.4406,0.4509,0.4588,0.461,0.459,0.4576,0.4565,0.4468,0.4448,0.446,0.4428,0.4476,0.4507,0.4607,0.462,0.4648,0.4593,0.4635,0.4575,0.4475,0.4305,0.395,0.397,0.4176,0.432,0.4482,0.4642,0.4689,0.4698,0.4692,0.4652,0.4658,0.4703,0.4624,0.4486],"day":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],"episode_hours":719,"headline":{"cost_pct":-7.8,"discomfort_points":-8.5,"emissions_pct":-3.3,"text":"Cost down 7.8% and emissions down 3.3% at equal or better comfort","tone":"win"},"hour_of_day":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"hours":719,"id":"citylearn_challenge_2023_phase_2_local_evaluation","name":"CityLearn 2023 challenge, local evaluation","occupied":{"Building_1":[1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Building_2":[1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],"Building_3":[1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1]},"outdoor_c":[24.7,24.1,23.9,23.9,23.8,23.9,25.0,26.9,29.3,31.7,33.9,35.9,37.5,38.7,39.3,39.5,39.2,38.1,36.1,32.6,31.2,29.6,28.0,26.8,25.9,25.2,24.9,24.8,24.8,24.7,25.4,27.0,29.4,32.1,34.5,36.6,38.3,39.5,40.2,40.3,39.8,38.7,36.5,32.4,31.3,30.8,29.3,27.8,26.7,26.0,25.5,25.2,25.0,24.9,25.3,26.4,28.4,30.5,32.6,32.2,31.2,31.7,31.8,31.6,31.1,30.1,28.7,26.9,26.3,25.9,25.4,24.9,24.8,24.6,24.5,24.2,23.7,23.4,23.8,24.9,26.7,28.3,29.2,29.6,29.7,29.8,29.6,29.5,29.6,29.8,29.1,27.6,26.0,25.2,24.8,24.4,23.9,23.2,22.8,22.4,22.2,22.2,23.5,25.5,27.8,30.0,32.3,34.1,35.5,36.5,36.9,37.0,36.6,35.7,33.9,29.9,28.6,27.9,27.4,26.6,25.3,24.5,23.8,23.4,23.1,23.2,24.6,26.8,28.8,30.8,32.7,34.2,35.3,36.2,36.8,36.9,36.4,35.4,33.2,29.9,28.9,28.4,27.5,26.7,25.9,25.1,24.5,23.7,22.9,22.9,24.6,26.6,28.8,30.9,32.8,34.4,35.6,36.4,36.8,37.0,36.5,35.0,32.2,29.7,28.9,28.3,27.3,26.0,24.7,23.5,22.6,22.0,21.6,21.4,23.5,26.0,28.5,30.8,32.7,34.3,35.6,36.5,36.7,36.5,36.0,35.1,33.2,30.3,29.0,28.5,27.9,26.5,25.5,24.8,24.2,23.9,23.5,23.3,24.6,26.5,28.8,30.9,32.8,34.4,35.5,36.3,36.5,36.2,35.3,34.0,32.2,29.1,27.8,27.0,26.4,25.8,25.2,24.5,23.9,23.5,23.4,23.4,24.6,26.6,29.4,31.5,33.5,35.1,36.5,37.4,37.8,37.7,37.1,35.9,33.8,31.3,29.4,28.1,27.1,26.5,25.9,25.6,25.4,25.4,25.3,25.2,25.7,27.3,29.3,31.0,33.0,35.2,36.6,37.3,37.4,37.0,36.3,35.2,33.4,31.0,29.2,28.0,27.0,26.2,25.7,25.4,25.3,25.3,25.2,25.0,25.7,27.5,29.4,31.1,32.8,34.2,35.4,36.2,36.8,37.0,36.8,35.9,34.1,31.0,29.6,28.4,27.4,26.3,25.3,24.6,24.4,24.1,24.1,24.1,25.3,27.2,28.8,30.3,31.8,33.1,34.3,35.4,36.3,36.8,36.7,36.0,34.2,31.5,30.9,29.7,28.1,26.9,26.0,24.9,23.9,23.1,22.6,22.4,24.4,26.8,29.3,31.6,33.3,34.5,35.2,35.6,35.6,35.4,35.0,34.2,32.9,30.2,28.8,28.1,27.4,26.6,25.7,24.9,24.2,23.8,23.6,23.6,24.9,27.1,29.4,31.6,33.5,35.0,36.0,36.6,36.8,36.6,36.2,35.3,33.8,31.8,29.9,28.5,27.5,26.7,26.0,25.5,25.2,24.9,24.5,24.2,24.9,26.8,29.0,31.0,32.8,34.3,35.6,36.4,36.8,36.7,36.0,34.9,33.3,31.3,29.7,28.6,27.7,26.8,26.1,25.4,25.1,24.7,24.3,23.9,24.7,26.8,29.3,31.5,33.4,35.0,36.2,36.8,36.8,36.2,34.8,33.4,32.0,30.6,29.4,28.3,27.3,26.4,25.7,25.2,24.8,24.5,24.2,24.0,24.7,26.2,28.7,31.0,32.9,34.3,35.3,35.4,35.2,34.9,33.3,30.9,28.5,26.8,26.1,25.7,25.4,25.0,24.6,24.3,24.2,24.0,23.8,23.7,24.0,24.7,25.7,26.7,27.3,27.7,28.2,28.6,28.7,28.3,27.7,26.8,25.7,24.5,23.8,23.7,23.8,24.0,24.2,24.3,24.1,23.9,23.8,23.7,23.9,24.5,25.4,26.3,27.3,28.0,28.4,28.4,28.0,27.7,27.4,26.8,26.0,25.0,24.5,24.4,24.2,24.1,23.9,23.8,23.6,23.5,23.4,23.3,24.5,25.9,28.1,30.7,32.5,33.9,35.0,35.7,35.9,35.8,35.2,34.2,32.5,29.4,28.2,27.3,26.4,25.6,25.0,24.6,24.2,23.8,23.3,22.9,24.7,27.0,29.6,32.1,34.3,36.2,37.5,38.4,38.7,38.6,37.7,36.3,34.1,31.8,30.1,29.0,27.9,26.9,26.0,25.3,24.7,24.2,23.9,23.8,25.1,27.2,29.6,32.0,34.2,35.9,37.1,37.8,37.9,37.3,36.2,34.5,32.7,30.6,29.0,27.9,26.8,26.0,25.5,25.2,25.0,24.9,24.7,24.6,25.5,27.4,29.3,31.2,32.8,34.1,35.8,36.8,37.0,36.6,35.3,33.8,32.0,30.0,28.7,27.7,26.8,26.0,25.6,25.5,25.4,25.3,25.2,25.1,25.6,26.6,27.8,29.2,30.8,32.1,33.4,34.0,34.0,33.6,32.9,32.1,31.0,29.2,28.0,27.2,26.5,25.9,25.5,25.2,25.0,24.8,24.5,24.4,25.2,26.3,28.0,29.9,31.9,33.6,34.7,35.3,35.5,35.4,34.9,34.1,32.6,30.5,29.5,28.4,27.4,26.5,25.8,25.1,24.5,23.9,23.8,23.8,25.0,27.1,29.4,31.9,34.1,35.8,37.0,37.8,38.3,38.3,38.0,37.0,35.2,32.1,30.4,29.0,28.0,27.1,26.4,25.6,25.0,24.4,23.9,23.9,25.5,27.6,30.0,32.5,34.7,36.4,37.7,38.6,39.0,38.9,38.1,36.8,34.8,32.2,30.4,29.1,28.0,27.0,26.2,25.7,25.4,25.2,24.9,24.7,25.9,28.1,30.4,32.6,34.6,36.3,37.6,38.4,38.7,38.5,37.6,36.0,33.8,31.5,29.8,28.6,27.5,26.7,26.1,25.7,25.6,25.4,25.2,25.1,26.1,28.0,30.2,32.6,34.8,36.7,38.1,39.0,39.4,39.1,38.1,36.6,34.5,32.0,29.9,28.5,27.3],"price":[0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289],"setpoint_c":{"Building_1":[23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.56,25.56,26.5,24.44,21.67,24.44,22.83,20.72,20.56,21.67,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.61,25.0,24.5,24.44,24.44,24.44,22.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,22.44,22.78,24.44,24.44,24.44,24.39,23.56,22.22,22.56,24.44,24.44,24.44,22.22,24.44,24.44,23.22,23.56,23.83,24.11,24.44,24.78,25.06,23.33,23.89,23.89,25.67,24.44,24.44,25.83,25.0,25.83,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,24.44,24.39,24.39,24.39,24.39,24.39,24.33,24.33,24.33,24.33,24.44,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,23.89,24.44,24.44,25.22,25.0,27.22,27.22,27.22,26.67,25.67,25.78,24.44,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.11,27.0,26.89,26.78,26.67,26.56,26.39,26.28,26.17,26.06,25.94,25.83,25.72,25.61,25.5,25.39,25.28,25.11,25.0,24.89,24.78,24.67,24.56,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.56,26.28,24.17,24.28,24.44,24.44,25.78,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.22,23.33,23.89,24.44,24.44,24.44,23.61,23.33,24.17,24.44,24.44,24.44,24.44,24.44,24.44,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,25.67,26.67,26.67,26.67,26.67,26.67,25.33,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.0,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,25.56,25.0,26.67,25.56,23.5,23.33,24.28,24.44,25.33,26.67,24.78,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.5,25.67,24.44,24.44,24.44,24.22,23.33,23.56,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.61,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.78,25.0,24.78,23.33,23.78,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.11,24.94,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.39,24.44,24.44,24.44,24.44,24.44,24.44,23.06,22.78,24.17,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.33,23.89,24.0,24.44,24.44,22.22,22.22,23.28,22.22,23.67,23.89,22.44,22.22,22.22,22.28,24.44,24.44,24.44,24.44,24.44,25.44,26.67,24.22,23.33,24.06,24.44,24.28,23.89,24.06,24.44,24.44,23.28,22.39,23.33,23.17,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.44,26.39,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,24.44,25.17,24.44,24.44,24.44,24.44,22.78,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,26.39,26.67,25.0,24.44,24.44,26.67,26.0,23.33,24.44,24.44,24.44,22.22,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.22,24.44,24.44,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,22.78,24.44,22.22,24.44,24.44,24.44,24.44,25.94,26.44,24.44,24.44,22.22,21.11,21.67,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44],"Building_2":[24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,23.94,24.44,23.44,22.78,23.78,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.61,23.33,23.72,25.0,25.0,25.0,25.0,25.0,24.67,23.61,23.33,24.0,24.44,24.28,22.78,22.94,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,23.61,22.78,23.61,24.44,24.44,24.44,24.44,24.94,25.0,25.0,25.0,23.33,23.33,23.44,23.5,23.61,23.67,23.78,23.89,23.94,24.06,24.11,24.22,24.33,24.39,23.33,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.11,23.89,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.22,24.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.56,23.39,22.22,21.67,23.28,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.33,24.17,25.0,25.0,25.0,25.0,25.0,25.0,24.0,23.89,24.39,23.89,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.61,23.89,22.78,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,23.44,24.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,24.39,24.44,23.67,23.33,24.5,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,23.33,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.61,23.33,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.72,23.89,24.17,24.33,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.67,23.33,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.89,23.33,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.5,23.33,24.83,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,24.72,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.33,22.78,23.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.33,23.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.56,23.33,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.17,22.22,23.11,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.78,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,25.0,23.83,23.33,24.5,24.28,23.33,24.06,22.94,22.78,24.78,25.0,25.0,25.0,25.0,25.0,23.83,22.78,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.5,23.33,23.83,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,24.39,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,24.06,24.17,24.78,22.78,22.78,24.94,25.0,25.0,25.0,25.0,24.17,24.11,24.44,24.83,25.0,24.22,23.89,24.67,23.44,23.22,22.78,24.44,25.0,25.0,25.0,25.0,24.56,24.44,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.44,24.22,24.44,24.5,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.61,24.44,24.22,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,24.44,24.67,25.0,25.0,24.0,23.89,24.28,23.89,24.56,25.0,25.0,25.0,25.0,25.0,25.0,24.06,24.61,25.0,25.0,25.0,24.56,23.89,24.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.67,25.0,25.0,25.0,25.11],"Building_3":[24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,24.39,24.44,23.94,24.17,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.39,23.33,24.44,24.44,23.33,23.17,23.11,24.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.33,23.33,23.61,23.89,23.33,23.33,23.33,23.33,23.56,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.78,23.33,23.39,23.72,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.89,23.89,23.89,23.72,23.33,23.33,23.33,23.33,23.56,23.89,23.89,23.94,23.94,24.0,24.0,24.0,24.06,24.06,24.11,24.11,24.17,24.17,24.17,24.22,24.22,24.28,24.28,24.33,24.33,24.33,24.39,24.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.39,23.78,23.33,23.33,23.33,23.33,23.5,23.56,22.78,22.78,22.78,23.67,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.67,24.44,23.89,23.33,23.33,23.33,23.78,24.44,24.44,24.17,23.89,23.89,23.89,23.89,24.17,24.44,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,23.61,23.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,24.44,24.44,24.44,24.44,24.11,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.22,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.11,23.67,23.33,23.33,23.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.11,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,24.33,24.44,24.44,24.44,24.44,24.44,24.39,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.17,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,23.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,24.44,24.06,23.89,23.89,23.89,24.28,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,23.89,23.89,23.89,24.33,23.89,23.89,23.89,23.89,23.89,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.17,24.44,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.72,23.33,23.56,23.89,23.89,23.89,24.0,23.89,23.89,23.89,24.33,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.0,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.22,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44]}}],"schema":2}; +window.HYPERBOLIC_VIEWER_DATA = {"buildings":[{"id":"Building_1","name":"Building 1"},{"id":"Building_2","name":"Building 2"},{"id":"Building_3","name":"Building 3"}],"comfort_band_k":2.0,"dataset":"citylearn_challenge_2023_phase_2_local_evaluation","kpis":[{"id":"cost_total","name":"Electricity cost","unit":"ratio to no control"},{"id":"carbon_emissions_total","name":"Carbon emissions","unit":"ratio to no control"},{"id":"electricity_consumption_total","name":"Grid import","unit":"ratio to no control"},{"id":"discomfort_proportion","name":"Discomfort","unit":"share of occupied hours"},{"id":"discomfort_hot_proportion","name":"Too warm","unit":"share of occupied hours"},{"id":"discomfort_cold_proportion","name":"Too cool","unit":"share of occupied hours"},{"id":"ramping_average","name":"Ramping","unit":"ratio to no control"},{"id":"daily_peak_average","name":"Daily peak","unit":"ratio to no control"},{"id":"all_time_peak_average","name":"All-time peak","unit":"ratio to no control"},{"id":"daily_one_minus_load_factor_average","name":"1 - daily load factor","unit":"ratio to no control"},{"id":"one_minus_thermal_resilience_proportion","name":"1 - thermal resilience","unit":"share of outage hours"},{"id":"power_outage_normalized_unserved_energy_total","name":"Unserved energy in outages","unit":"share"}],"sample":false,"scenarios":[{"agent":{"actions":{"Building_1":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.089,0.15,0.15,0.15,0.095,-0.242,-0.255,-0.286,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.029,0.071,0.185,0.191,0.0,0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.132,0.0,0.0,0.028,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.092,-0.481,0.0,0.0,0.0,0.0,0.05,0.1,0.15,0.15,0.15,0.15,0.1,0.023,0.0,0.0,0.007,0.0,0.0,0.0,0.0,0.0,0.0,-0.249,-0.262,-0.295,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.471,0.03,0.15,0.0,0.15,0.103,0.0,0.085,0.15,0.093,0.0,-0.5,-0.218,0.0,-0.025,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.121,0.026,0.0,0.008,0.0,-0.5,0.0,0.15,0.15,-0.191,-0.197,-0.231,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.072,0.041,0.01,0.0,0.0,0.0,-0.152,-0.242,-0.396,-0.012,-0.012,-0.013,-0.016,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.055,0.038,0.0,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.0,0.15,0.15,0.077,0.017,0.0,0.0,-0.5,-0.108,-0.114,-0.128,0.0,0.0,0.0,-0.013,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.023,0.05,0.0,0.0,0.0,0.0,0.104,-0.241,-0.254,-0.285,0.0,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.104,0.079,0.017,0.0,0.0,0.0,-0.247,-0.261,-0.293,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.091,0.0,0.02,0.0,0.0,0.0,0.0,0.0,0.0,-0.066,-0.189,-0.302,0.0,-0.249,-0.027,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.294,0.0,-0.011,-0.011,-0.013,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.1,0.1,0.0,0.0,0.0,0.05,0.0,-0.233,-0.247,-0.275,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.131,0.0,0.028,0.009,-0.163,0.144,0.0,0.032,0.0,0.0,0.0,-0.245,-0.173,-0.184,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.074,0.016,0.0,0.0,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,-0.166,-0.3,-0.334,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.093,0.051,0.0,0.0,0.012,0.0,-0.247,-0.262,-0.294,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.042,-0.338,0.15,0.15,0.046,0.0,0.039,0.01,0.0,0.0,-0.248,-0.262,-0.295,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.013,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.034,0.0,0.0,-0.144,0.0,0.0,0.0,-0.016,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.04,0.0,0.012,0.15,0.15,0.121,-0.24,-0.254,-0.1,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.085,0.019,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.261,-0.292,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.131,0.028,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.246,-0.261,-0.292,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.0,0.049,0.038,0.0,0.092,0.021,0.0,-0.247,-0.261,-0.293,0.0,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.011,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.294,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.068,0.081,0.079,0.072,0.063,0.072,0.072,0.085,0.293,0.15,0.08,0.26,0.281,0.368,0.461,0.647,0.781,0.377,0.133,0.306,0.642,0.116,0.214,0.41,0.35,0.1,0.008,0.078,0.087,0.094,0.106,0.12,0.028,0.088,0.184,0.277,0.456,0.582,0.6,0.634,0.598,0.598,0.487,0.287,0.329,0.558,0.706,0.527,0.344,0.247,0.186,0.146,0.143,0.156,0.148,0.17,0.251,0.003,0.036,0.0,0.078,0.108,0.151,0.307,0.56,0.49,0.062,0.009,0.006,0.22,0.047,0.1,0.081,0.05,0.03,0.006,0.012,0.004,0.0,0.079,0.072,0.092,0.009,0.103,0.12,0.0,0.097,0.078,0.178,0.274,0.214,0.161,0.136,0.106,0.085,0.206,0.117,0.135,0.119,0.095,0.109,0.05,0.103,0.12,0.117,0.102,0.107,0.117,0.2,0.285,0.376,0.469,0.479,0.53,0.421,0.24,0.163,0.141,0.13,0.121,0.102,0.074,0.183,0.185,0.142,0.121,0.169,0.15,0.21,0.402,0.233,0.182,0.2,0.195,0.295,0.127,0.093,0.31,0.258,0.29,0.3,0.337,0.265,0.188,0.227,0.28,0.17,0.131,0.113,0.103,0.15,0.149,0.25,0.1,0.119,0.211,0.277,0.368,0.465,0.377,0.084,0.095,0.149,0.11,0.148,0.101,0.071,0.05,0.033,0.019,0.008,0.0,0.0,0.069,0.017,0.012,0.101,0.081,0.112,0.153,0.202,0.261,0.317,0.352,0.371,0.354,0.28,0.19,0.142,0.131,0.097,0.079,0.081,0.059,0.048,0.041,0.035,0.024,0.049,0.07,0.203,0.202,0.242,0.307,0.379,0.461,0.535,0.627,0.593,0.568,0.445,0.315,0.2,0.164,0.132,0.286,0.216,0.223,0.194,0.155,0.1,0.09,0.092,0.116,0.148,0.084,0.148,0.217,0.32,0.4,0.499,0.53,0.417,0.561,0.554,0.388,0.285,0.101,0.14,0.12,0.225,0.296,0.153,0.105,0.092,0.094,0.1,0.158,0.257,0.22,0.13,0.153,0.246,0.339,0.689,0.698,0.525,0.42,0.407,0.305,0.137,0.088,0.076,0.256,0.199,0.226,0.213,0.178,0.153,0.139,0.14,0.133,0.017,0.077,0.15,0.236,0.307,0.36,0.43,0.52,0.615,0.669,0.525,0.3,0.247,0.161,0.106,0.309,0.18,0.196,0.184,0.1,0.078,0.088,0.113,0.147,0.194,0.0,0.067,0.162,0.233,0.328,0.432,0.49,0.557,0.525,0.398,0.284,0.263,0.177,0.111,0.085,0.213,0.274,0.212,0.1,0.087,0.104,0.125,0.19,0.177,0.1,0.153,0.211,0.104,0.102,0.128,0.248,0.3,0.32,0.43,0.45,0.284,0.2,0.138,0.111,0.208,0.275,0.219,0.167,0.18,0.1,0.115,0.156,0.2,0.091,0.161,0.236,0.331,0.23,0.519,0.52,0.519,0.532,0.4,0.282,0.193,0.249,0.128,0.093,0.202,0.28,0.239,0.189,0.154,0.135,0.1,0.251,0.208,0.075,0.146,0.196,0.559,0.441,0.383,0.204,0.276,0.364,0.262,0.185,0.189,0.114,0.078,0.054,0.038,0.025,0.015,0.007,0.0,0.008,0.018,0.033,0.066,0.103,0.159,0.406,0.706,0.459,0.53,0.909,0.972,0.66,0.444,0.243,0.089,0.176,0.25,0.193,0.234,0.305,0.249,0.195,0.161,0.227,0.168,0.162,0.085,0.008,0.084,0.167,0.26,0.23,0.352,0.482,0.471,0.433,0.32,0.301,0.084,0.155,0.049,0.011,0.152,0.228,0.196,0.1,0.068,0.072,0.085,0.103,0.084,0.024,0.042,0.02,0.071,0.002,0.115,0.122,0.132,0.126,0.118,0.101,0.068,0.075,0.066,0.06,0.115,0.203,0.177,0.14,0.12,0.102,0.102,0.13,0.13,0.0,0.0,0.044,0.08,0.106,0.143,0.236,0.19,0.051,0.03,0.097,0.088,0.084,0.074,0.134,0.135,0.186,0.167,0.134,0.115,0.099,0.101,0.116,0.124,0.068,0.124,0.209,0.296,0.3,0.345,0.43,0.708,0.687,0.478,0.295,0.223,0.1,0.063,0.055,0.179,0.257,0.213,0.166,0.0,0.177,0.048,0.086,0.129,0.059,0.156,0.389,0.41,0.384,0.47,0.831,0.895,0.603,0.419,0.287,0.208,0.15,0.1,0.082,0.205,0.105,0.079,0.069,0.063,0.056,0.074,0.209,0.334,0.325,0.365,0.3,0.437,0.496,0.591,0.695,0.61,0.54,0.455,0.32,0.174,0.11,0.349,0.25,0.091,0.199,0.085,0.063,0.13,0.174,0.179,0.12,0.0,0.076,0.173,0.234,0.419,0.348,0.19,0.54,0.82,0.693,0.435,0.316,0.283,0.213,0.213,0.115,0.157,0.228,0.122,0.101,0.171,0.216,0.219,0.193,0.163,0.0,0.055,0.102,0.171,0.249,0.331,0.333,0.327,0.184,0.031,0.306,0.276,0.268,0.188,0.139,0.154,0.258,0.22,0.18,0.104,0.081,0.086,0.119,0.11,0.033,0.112,0.171,0.254,0.32,0.386,0.479,0.52,0.442,0.227,0.207,0.19,0.133,0.1,0.282,0.15,0.233,0.21,0.166,0.141,0.08,0.11,0.172,0.189,0.122,0.186,0.22,0.04,0.088,0.401,0.707,0.825,0.34,0.25,0.598,0.304,0.225,0.144,0.38,0.09,0.25,0.1,0.057,0.149,0.149,0.238,0.137,0.196,0.134,0.199,0.584,0.36,0.352,0.561,0.608,0.634,0.629,0.492,0.453,0.268,0.236,0.137,0.08,0.225,0.31,0.18,0.078,0.179,0.1,0.164,0.205,0.214,0.215,0.386,0.387,0.654,0.491,0.525,0.527,0.591,0.363,0.204,0.426,0.383,0.522,0.593,0.393,0.155,0.093,0.048,0.049,0.053,0.058,0.073,0.179,0.215,0.35,0.4,0.406,0.475,0.574,0.677,0.723,0.832,0.778,0.45,0.357,0.273,0.215,0.147],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_2":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.15,0.15,0.15,0.15,0.048,-0.245,-0.259,-0.291,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,0.0,0.0,-0.206,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,-0.107,-0.18,-0.381,0.0,0.0,0.0,0.0,0.05,0.1,0.15,0.15,0.15,0.15,0.117,0.025,0.0,0.0,0.008,0.0,0.0,0.0,0.0,0.0,0.0,-0.249,-0.262,-0.294,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.074,0.15,0.15,0.0,0.107,0.024,0.0,0.0,0.0,-0.2,-0.231,-0.259,-0.13,0.0,-0.014,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.123,0.026,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.255,-0.255,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.093,0.021,0.0,0.0,-0.231,-0.238,-0.252,-0.025,-0.027,-0.028,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.0,0.15,0.15,0.123,0.026,0.0,0.0,0.0,-0.247,-0.26,-0.292,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.122,-0.24,-0.254,-0.284,0.0,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.083,-0.243,-0.176,-0.248,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.103,0.0,0.023,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.255,-0.297,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.01,0.0,-0.5,0.0,0.15,0.0,0.15,0.15,0.074,-0.243,-0.257,-0.288,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.0,0.0,0.127,0.0,-0.201,-0.214,-0.202,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.104,0.0,0.023,0.007,-0.49,0.15,0.0,0.15,0.15,0.069,0.0,-0.5,-0.099,-0.105,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.045,0.011,0.0,0.0,0.003,0.0,0.0,0.0,0.0,0.0,0.0,-0.137,-0.194,-0.098,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.146,0.0,0.0,0.0,0.0,0.0,0.0,0.033,0.0,-0.246,-0.26,-0.206,-0.108,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.033,-0.089,0.086,0.02,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.218,-0.274,-0.021,-0.023,-0.024,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.027,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,-0.237,0.0,0.0,0.0,-0.026,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,-0.234,-0.248,-0.093,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.085,0.019,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.254,-0.273,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.107,0.024,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.261,-0.292,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.0,-0.227,0.15,0.0,0.15,0.128,0.028,-0.247,-0.261,-0.292,0.0,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.043,0.01,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.293,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.497,0.159,0.233,0.3,0.401,0.474,0.604,0.696,0.671,0.622,0.462,0.276,0.346,0.45,0.32,0.06,0.011,0.089,0.129,0.006,0.0,0.0,0.0,0.023,0.453,0.189,0.278,0.428,0.47,0.728,0.838,0.984,0.64,0.601,0.479,0.256,0.203,0.192,0.199,0.131,0.083,0.057,0.04,0.028,0.02,0.014,0.007,0.026,0.074,0.121,0.181,0.255,0.271,0.448,0.403,0.167,0.204,0.203,0.152,0.099,0.107,0.178,0.2,0.035,0.007,0.02,0.103,0.073,0.0,0.0,0.0,0.0,0.0,0.027,0.059,0.069,0.091,0.111,0.164,0.176,0.235,0.236,0.27,0.104,0.068,0.055,0.077,0.118,0.147,0.02,0.0,0.0,0.0,0.0,0.0,0.215,0.099,0.144,0.392,0.456,0.451,0.487,0.575,0.586,0.585,0.547,0.433,0.23,0.185,0.145,0.113,0.082,0.145,0.041,0.0,0.0,0.0,0.0,0.0,0.065,0.137,0.171,0.21,0.261,0.458,0.543,0.448,0.452,0.486,0.469,0.366,0.204,0.156,0.13,0.097,0.227,0.167,0.0,0.0,0.0,0.0,0.0,0.134,0.064,0.19,0.416,0.169,0.255,0.342,0.425,0.541,0.535,0.527,0.457,0.31,0.193,0.169,0.14,0.148,0.214,0.256,0.222,0.0,0.0,0.0,0.0,0.0,0.104,0.085,0.137,0.211,0.28,0.346,0.408,0.495,0.485,0.493,0.452,0.35,0.22,0.169,0.15,0.129,0.082,0.053,0.036,0.022,0.013,0.007,0.002,0.04,0.104,0.181,0.224,0.267,0.328,0.384,0.448,0.541,0.521,0.498,0.442,0.343,0.201,0.154,0.123,0.188,0.067,0.048,0.032,0.02,0.012,0.008,0.004,0.035,0.093,0.203,0.276,0.346,0.419,0.502,0.719,0.698,0.695,0.685,0.622,0.476,0.313,0.217,0.152,0.205,0.247,0.076,0.009,0.019,0.021,0.021,0.02,0.046,0.219,0.567,0.25,0.452,0.446,0.441,0.525,0.611,0.588,0.569,0.522,0.415,0.267,0.195,0.143,0.147,0.182,0.251,0.093,0.0,0.0,0.005,0.008,0.051,0.121,0.208,0.423,0.295,0.362,0.421,0.491,0.596,0.604,0.605,0.639,0.474,0.282,0.218,0.189,0.297,0.135,0.009,0.017,0.021,0.016,0.013,0.01,0.049,0.111,0.168,0.194,0.221,0.277,0.335,0.402,0.81,0.805,0.384,0.452,0.41,0.277,0.259,0.226,0.248,0.149,0.181,0.16,0.006,0.0,0.0,0.0,0.047,0.119,0.452,0.243,0.293,0.347,0.399,0.446,0.525,0.527,0.529,0.758,0.415,0.293,0.196,0.161,0.127,0.115,0.219,0.132,0.0,0.0,0.002,0.004,0.062,0.139,0.288,0.509,0.578,0.316,0.379,0.479,0.593,0.602,0.608,0.574,0.48,0.319,0.278,0.317,0.184,0.117,0.138,0.08,0.006,0.015,0.013,0.012,0.059,0.129,0.191,0.247,0.3,0.379,0.459,0.536,0.879,0.917,0.567,0.511,0.447,0.308,0.218,0.165,0.121,0.091,0.169,0.187,0.02,0.005,0.037,0.012,0.045,0.156,0.173,0.213,0.287,0.364,0.444,0.62,0.587,0.564,0.515,0.495,0.363,0.268,0.2,0.164,0.2,0.087,0.2,0.173,0.0,0.002,0.008,0.01,0.333,0.17,0.269,0.529,0.216,0.311,0.635,0.476,0.692,0.62,0.403,0.328,0.227,0.154,0.118,0.095,0.069,0.109,0.226,0.089,0.0,0.0,0.0,0.0,0.008,0.064,0.046,0.07,0.082,0.1,0.127,0.174,0.225,0.153,0.134,0.095,0.064,0.039,0.035,0.028,0.018,0.052,0.137,0.045,0.0,0.0,0.0,0.0,0.001,0.04,0.031,0.158,0.227,0.059,0.084,0.116,0.146,0.149,0.148,0.118,0.136,0.074,0.059,0.048,0.079,0.25,0.21,0.047,0.0,0.0,0.0,0.0,0.011,0.072,0.121,0.177,0.231,0.303,0.367,0.426,0.521,0.729,0.595,0.349,0.526,0.207,0.168,0.14,0.106,0.077,0.197,0.158,0.0,0.0,0.0,0.0,0.045,0.428,0.357,0.505,0.299,0.433,0.7,0.6,0.948,0.972,0.472,0.507,0.455,0.31,0.226,0.189,0.282,0.343,0.083,0.003,0.013,0.018,0.013,0.011,0.057,0.206,0.29,0.445,0.507,0.768,0.71,0.515,0.667,0.706,0.693,0.605,0.482,0.321,0.232,0.179,0.128,0.26,0.28,0.012,0.007,0.013,0.017,0.017,0.066,0.44,0.364,0.167,0.621,0.38,0.499,0.859,0.904,0.565,0.896,0.551,0.623,0.292,0.337,0.227,0.092,0.27,0.233,0.0,0.001,0.013,0.02,0.022,0.182,0.175,0.17,0.166,0.204,0.373,0.505,0.377,0.654,0.685,0.688,0.262,0.187,0.161,0.145,0.116,0.133,0.112,0.063,0.026,0.029,0.027,0.024,0.021,0.053,0.115,0.189,0.233,0.285,0.335,0.412,0.443,0.522,0.525,0.529,0.498,0.388,0.281,0.232,0.206,0.453,0.1,0.048,0.073,0.018,0.02,0.017,0.016,0.07,0.194,0.429,0.288,0.363,0.551,0.478,0.592,0.65,0.68,0.71,0.688,0.947,0.38,0.291,0.249,0.221,0.183,0.162,0.096,0.046,0.024,0.025,0.022,0.089,0.179,0.336,0.339,0.392,0.469,0.562,0.639,0.77,0.789,0.839,0.855,0.649,0.385,0.286,0.364,0.291,0.295,0.169,0.218,0.029,0.034,0.033,0.032,0.298,0.168,0.404,0.355,0.377,0.492,0.589,0.768,1.0,0.907,0.721,0.671,0.54,0.426,0.268,0.217,0.159,0.121,0.179,0.172,0.039,0.032,0.031,0.034,0.067,0.15,0.278,0.375,0.464,0.572,0.692,0.797,0.933,0.933,0.867,0.748,0.663,0.38,0.264,0.207,0.137],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_3":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.15,0.15,0.15,0.15,0.15,-0.158,-0.196,-0.291,-0.035,-0.04,-0.049,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,0.0,0.0,-0.157,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.15,0.0,-0.075,-0.127,-0.244,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.15,0.104,0.057,0.0,0.034,0.02,0.012,0.0,0.0,0.0,0.0,-0.244,-0.303,-0.448,-0.217,-0.104,-0.05,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.296,0.15,0.15,0.0,0.15,0.15,0.0,0.15,0.15,-0.14,-0.238,-0.352,-0.169,0.0,-0.081,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.14,0.077,-0.109,0.101,0.056,0.031,-0.234,-0.303,-0.448,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.15,0.13,0.07,0.0,0.041,-0.241,-0.298,-0.442,-0.053,-0.062,-0.077,-0.113,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.047,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.15,-0.3,-0.168,-0.208,-0.308,0.0,0.0,0.0,-0.146,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.0,0.0,0.0,0.15,0.15,-0.203,-0.251,-0.371,0.0,0.0,0.0,0.0,-0.179,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,-0.208,-0.257,-0.381,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.137,0.0,0.077,0.043,0.025,-0.244,-0.302,-0.447,0.0,-0.217,-0.104,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,-0.409,0.0,0.15,0.0,0.15,0.15,0.093,-0.232,-0.287,-0.425,-0.051,-0.06,-0.073,-0.109,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.037,0.0,0.0,-0.017,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.1,0.0,0.0,0.0,0.15,0.127,0.0,-0.156,-0.192,-0.286,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.15,0.136,-0.221,0.15,0.0,0.125,0.07,0.039,0.0,-0.24,-0.199,-0.223,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.1,0.15,0.15,0.126,0.068,0.038,0.022,0.014,0.01,0.0,0.0,0.0,0.0,0.0,0.013,-0.146,-0.252,-0.49,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.15,0.0,0.14,0.077,-0.234,-0.291,-0.43,-0.209,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.15,-0.35,0.15,0.15,0.15,0.148,0.081,0.046,0.026,0.015,-0.245,-0.304,-0.45,-0.054,-0.063,-0.078,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.11,0.0,0.0,0.0,0.0,0.0,-0.051,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,-0.154,0.0,0.0,0.0,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,-0.168,-0.209,-0.103,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.089,0.049,0.028,0.017,0.011,0.0,0.0,0.011,-0.247,-0.306,-0.452,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.123,0.067,0.038,0.0,0.0,0.0,0.0,0.027,-0.243,-0.301,-0.446,-0.217,0.0,0.0,-0.103,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.107,-0.39,0.15,0.0,0.15,0.15,0.15,-0.169,-0.21,-0.311,0.0,-0.148,0.0,-0.071,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.0,0.057,0.032,0.019,-0.245,-0.303,-0.449,-0.054,-0.063,-0.078,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.053,0.019,0.01,0.005,0.0,0.0,0.053,0.103,0.269,0.351,0.319,0.36,0.435,0.526,0.599,0.657,0.695,0.44,0.333,0.218,0.253,0.224,0.27,0.328,0.085,0.047,0.058,0.018,0.009,0.039,0.033,0.05,0.13,0.225,0.296,0.373,0.448,0.537,0.644,0.819,0.911,0.679,0.485,0.475,0.419,0.358,0.149,0.032,0.06,0.051,0.043,0.036,0.032,0.026,0.031,0.071,0.173,0.176,0.322,0.266,0.246,0.394,0.422,0.431,0.32,0.254,0.301,0.24,0.19,0.165,0.093,0.008,0.02,0.024,0.021,0.019,0.013,0.012,0.121,0.041,0.144,0.078,0.084,0.076,0.092,0.097,0.114,0.147,0.171,0.2,0.181,0.14,0.172,0.193,0.148,0.078,0.045,0.035,0.028,0.022,0.013,0.0,0.001,0.03,0.054,0.088,0.13,0.178,0.266,0.342,0.404,0.468,0.504,0.527,0.449,0.494,0.2,0.094,0.079,0.118,0.084,0.062,0.048,0.036,0.02,0.019,0.098,0.114,0.234,0.27,0.301,0.333,0.386,0.449,0.52,0.54,0.577,0.344,0.229,0.148,0.357,0.213,0.143,0.106,0.082,0.1,0.094,0.082,0.041,0.028,0.055,0.116,0.125,0.152,0.199,0.267,0.349,0.414,0.48,0.5,0.542,0.573,0.41,0.291,0.197,0.177,0.125,0.115,0.082,0.06,0.045,0.033,0.016,0.018,0.081,0.083,0.089,0.124,0.17,0.224,0.285,0.451,0.53,0.548,0.592,0.729,0.553,0.32,0.245,0.163,0.1,0.129,0.097,0.078,0.061,0.052,0.043,0.036,0.054,0.09,0.134,0.172,0.233,0.306,0.364,0.534,0.549,0.55,0.527,0.52,0.537,0.308,0.229,0.191,0.158,0.113,0.086,0.067,0.053,0.043,0.033,0.032,0.047,0.079,0.136,0.192,0.266,0.326,0.41,0.472,0.564,0.694,0.84,0.799,0.648,0.552,0.348,0.279,0.192,0.11,0.197,0.18,0.154,0.051,0.0,0.026,0.362,0.139,0.15,0.192,0.244,0.322,0.47,0.561,0.599,0.521,0.553,0.403,0.382,0.476,0.325,0.327,0.137,0.019,0.022,0.078,0.096,0.087,0.08,0.067,0.058,0.074,0.169,0.235,0.274,0.333,0.4,0.48,0.542,0.587,0.622,0.55,0.441,0.438,0.512,0.627,0.451,0.129,0.078,0.063,0.055,0.048,0.042,0.038,0.137,0.091,0.151,0.193,0.229,0.272,0.328,0.394,0.476,0.474,0.538,0.487,0.416,0.308,0.262,0.296,0.258,0.049,0.09,0.073,0.059,0.048,0.033,0.033,0.055,0.097,0.124,0.166,0.216,0.274,0.329,0.381,0.429,0.51,0.591,0.4,0.31,0.367,0.331,0.197,0.169,0.058,0.087,0.072,0.061,0.052,0.038,0.035,0.061,0.248,0.187,0.213,0.269,0.336,0.391,0.45,0.508,0.616,0.61,0.522,0.524,0.374,0.265,0.179,0.137,0.261,0.06,0.042,0.071,0.062,0.054,0.047,0.066,0.1,0.146,0.264,0.339,0.41,0.491,0.548,0.629,0.683,0.702,0.568,0.457,0.366,0.295,0.243,0.186,0.139,0.109,0.089,0.076,0.065,0.055,0.049,0.072,0.205,0.269,0.326,0.412,0.43,0.691,0.594,0.592,0.587,0.563,0.454,0.415,0.417,0.39,0.318,0.23,0.01,0.068,0.063,0.058,0.053,0.048,0.044,0.066,0.101,0.146,0.208,0.264,0.316,0.373,0.412,0.456,0.497,0.479,0.394,0.24,0.163,0.134,0.12,0.102,0.03,0.042,0.052,0.049,0.045,0.038,0.037,0.157,0.089,0.097,0.058,0.063,0.079,0.098,0.114,0.127,0.134,0.175,0.101,0.077,0.038,0.057,0.075,0.058,0.051,0.051,0.044,0.037,0.034,0.028,0.107,0.045,0.037,0.078,0.091,0.106,0.12,0.137,0.164,0.18,0.176,0.158,0.214,0.153,0.139,0.138,0.294,0.05,0.0,0.0,0.034,0.033,0.128,0.038,0.029,0.051,0.242,0.175,0.199,0.243,0.314,0.376,0.441,0.506,0.55,0.549,0.468,0.36,0.206,0.201,0.187,0.153,0.166,0.086,0.07,0.061,0.053,0.041,0.038,0.131,0.125,0.334,0.254,0.277,0.339,0.41,0.487,0.52,0.616,0.719,0.599,0.501,0.467,0.321,0.238,0.108,0.057,0.111,0.093,0.078,0.065,0.054,0.049,0.071,0.252,0.213,0.267,0.341,0.434,0.596,0.724,0.861,0.853,0.811,0.626,0.449,0.315,0.218,0.162,0.111,0.053,0.136,0.118,0.104,0.092,0.085,0.075,0.072,0.106,0.177,0.283,0.383,0.448,0.538,0.544,0.61,0.66,0.709,0.623,0.532,0.339,0.194,0.148,0.097,0.065,0.07,0.114,0.102,0.058,0.058,0.051,0.073,0.107,0.178,0.212,0.234,0.288,0.347,0.394,0.437,0.456,0.37,0.328,0.332,0.299,0.205,0.135,0.11,0.016,0.077,0.071,0.065,0.06,0.055,0.052,0.062,0.09,0.173,0.208,0.296,0.367,0.46,0.476,0.511,0.515,0.572,0.459,0.308,0.24,0.278,0.215,0.27,0.07,0.059,0.054,0.06,0.062,0.052,0.253,0.072,0.111,0.272,0.261,0.285,0.342,0.412,0.479,0.557,0.626,0.668,0.712,0.606,0.581,0.305,0.217,0.141,0.085,0.066,0.057,0.096,0.08,0.066,0.061,0.126,0.164,0.315,0.46,0.543,0.468,0.553,0.655,0.776,0.837,0.752,0.613,0.461,0.372,0.254,0.305,0.18,0.096,0.068,0.12,0.102,0.089,0.08,0.07,0.096,0.152,0.2,0.262,0.344,0.683,0.632,0.634,0.697,0.748,0.747,0.724,0.704,0.463,0.342,0.273,0.215,0.173,0.136,0.116,0.102,0.091,0.071,0.074,0.086,0.129,0.202,0.404,0.398,0.48,0.704,0.918,0.974,1.0,0.958,0.839,0.626,0.456,0.346,0.273,0.371],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]}},"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.209,0.224,0.24,0.24,0.24,0.317,0.317,0.433,0.503,0.619,0.736,0.853,0.927,0.713,0.487,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.436,0.459,0.514,0.658,0.807,0.807,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.817,0.817,0.92,0.92,0.92,0.942,0.941,0.941,0.941,0.941,0.941,0.941,0.941,0.941,0.764,0.682,0.264,0.264,0.264,0.264,0.264,0.303,0.381,0.497,0.614,0.731,0.848,0.925,0.943,0.943,0.943,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.727,0.496,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.439,0.555,0.555,0.672,0.262,0.285,0.402,0.402,0.519,0.599,0.599,0.665,0.782,0.854,0.854,0.42,0.227,0.227,0.205,0.205,0.205,0.205,0.244,0.361,0.477,0.594,0.711,0.828,0.922,0.942,0.942,0.948,0.948,0.543,0.543,0.66,0.777,0.608,0.433,0.229,0.229,0.229,0.229,0.229,0.229,0.268,0.268,0.384,0.501,0.618,0.735,0.735,0.851,0.851,0.851,0.907,0.939,0.947,0.947,0.946,0.946,0.812,0.598,0.25,0.24,0.229,0.218,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.246,0.275,0.275,0.21,0.21,0.21,0.209,0.209,0.209,0.209,0.209,0.209,0.209,0.248,0.248,0.287,0.404,0.404,0.521,0.521,0.637,0.637,0.754,0.871,0.931,0.944,0.944,0.944,0.525,0.43,0.329,0.215,0.215,0.215,0.215,0.204,0.204,0.204,0.204,0.204,0.321,0.437,0.554,0.671,0.787,0.787,0.805,0.844,0.844,0.844,0.844,0.844,0.925,0.711,0.486,0.234,0.234,0.234,0.234,0.234,0.205,0.205,0.205,0.205,0.322,0.438,0.555,0.672,0.789,0.789,0.788,0.869,0.931,0.944,0.944,0.944,0.944,0.725,0.494,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.274,0.39,0.507,0.624,0.74,0.857,0.928,0.928,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.884,0.717,0.45,0.45,0.229,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.906,0.938,0.947,0.947,0.947,0.947,0.947,0.946,0.946,0.946,0.946,0.727,0.495,0.235,0.235,0.225,0.215,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.241,0.358,0.475,0.592,0.592,0.708,0.708,0.786,0.864,0.864,0.864,0.864,0.902,0.902,0.696,0.477,0.234,0.234,0.234,0.234,0.234,0.351,0.468,0.584,0.701,0.818,0.92,0.92,0.941,0.948,0.804,0.916,0.916,0.94,0.94,0.94,0.94,0.723,0.57,0.407,0.407,0.407,0.407,0.407,0.407,0.407,0.524,0.641,0.757,0.874,0.932,0.944,0.944,0.944,0.944,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.801,0.535,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.357,0.474,0.591,0.708,0.824,0.824,0.824,0.897,0.936,0.936,0.936,0.945,0.945,0.726,0.495,0.234,0.205,0.205,0.205,0.205,0.322,0.439,0.555,0.672,0.672,0.789,0.906,0.938,0.64,0.757,0.874,0.909,0.909,0.939,0.947,0.947,0.947,0.727,0.496,0.234,0.234,0.225,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.346,0.346,0.346,0.218,0.218,0.218,0.218,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.321,0.321,0.438,0.437,0.554,0.554,0.554,0.585,0.585,0.594,0.711,0.828,0.922,0.71,0.485,0.396,0.396,0.396,0.396,0.396,0.396,0.435,0.513,0.513,0.629,0.746,0.863,0.929,0.944,0.944,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.493,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.351,0.468,0.585,0.702,0.818,0.92,0.942,0.942,0.942,0.942,0.942,0.942,0.941,0.941,0.724,0.493,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.438,0.555,0.672,0.789,0.789,0.788,0.827,0.856,0.856,0.927,0.944,0.944,0.725,0.494,0.235,0.235,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.906,0.938,0.947,0.947,0.947,0.947,0.947,0.946,0.946,0.727,0.495,0.235,0.235,0.225,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.762,0.699,0.677,1.001,1.608,0.86,4.653,0.981,-0.061,2.315,0.764,0.716,1.26,2.02,2.193,0.78,1.009,2.3,3.13,1.373,1.303,2.042,1.793,0.764,0.383,0.671,1.713,1.752,1.766,0.572,-0.246,-0.069,0.819,1.462,6.669,4.144,1.951,1.951,2.903,2.312,3.11,1.939,3.643,2.93,3.446,2.541,1.766,1.367,1.115,0.937,0.936,0.99,0.913,1.716,2.325,-0.432,-0.46,-0.43,-0.133,-0.321,-0.011,2.823,3.203,2.159,1.242,0.87,0.635,1.54,0.677,1.282,0.69,0.558,0.475,0.799,0.396,1.385,0.453,0.824,0.441,0.178,0.139,0.075,0.006,-0.103,-0.175,-0.975,0.065,0.487,1.278,1.258,1.496,0.982,1.176,1.536,1.332,1.406,1.338,1.238,2.034,0.629,1.501,1.9,0.771,-0.079,-0.578,-0.446,-0.144,0.399,0.651,0.514,0.614,2.093,1.994,1.741,1.115,0.941,1.132,1.091,1.271,1.156,1.104,1.607,0.931,1.948,4.15,0.818,1.144,5.824,0.617,-0.072,-0.369,-0.118,1.067,-0.064,-0.205,1.401,1.256,2.83,8.844,2.165,1.511,1.13,1.455,2.234,1.535,1.371,1.31,1.265,2.275,1.085,2.518,-0.133,-0.282,3.856,1.107,1.52,1.661,0.321,-0.274,1.084,1.689,1.153,2.04,0.959,0.651,0.727,0.49,0.93,0.881,0.848,0.847,3.198,0.95,0.203,1.584,-0.051,-0.31,-0.38,-0.314,0.182,0.323,0.104,0.167,0.132,1.791,1.799,1.383,1.031,0.76,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.384,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.433,1.308,1.024,1.57,1.246,1.262,1.367,0.987,0.76,2.101,0.68,0.534,0.216,-0.402,-0.174,-0.161,0.321,0.394,1.033,1.535,5.826,2.385,3.597,2.451,2.338,1.022,1.604,1.015,1.278,1.734,1.478,0.78,1.212,0.734,1.245,1.785,2.354,1.24,0.238,-0.159,-0.091,0.389,6.437,1.688,1.972,1.879,2.511,1.773,1.01,0.682,0.672,1.867,1.17,1.283,1.725,1.58,1.474,1.417,1.41,0.657,-0.158,-0.003,0.634,0.978,0.123,0.456,1.074,2.522,6.896,2.711,3.461,2.565,2.162,1.345,0.916,1.625,1.095,1.156,1.606,1.259,1.168,1.208,1.273,0.656,0.496,-0.342,-0.409,-0.256,-0.121,0.188,0.744,1.405,1.986,1.149,2.071,2.781,2.303,1.18,0.876,1.179,1.394,1.976,1.722,1.259,1.205,1.271,1.589,3.362,0.457,-0.307,-0.371,-0.205,1.641,1.489,-0.5,0.045,0.131,0.206,2.194,1.767,1.688,1.367,1.152,1.311,1.708,1.979,1.751,1.536,2.649,0.895,0.829,0.753,1.491,-0.296,-0.203,-0.111,0.283,-0.145,2.107,0.604,0.785,2.383,2.232,1.713,1.369,3.315,0.946,0.739,1.183,1.504,1.334,1.125,0.968,0.901,0.755,2.903,0.721,0.455,0.163,-0.097,4.838,0.897,0.929,0.181,3.716,3.0,1.893,1.76,2.298,1.461,0.803,0.579,0.509,0.454,0.413,0.377,0.349,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.34,1.27,1.51,1.167,1.318,1.763,1.859,1.651,1.509,3.963,2.156,0.809,0.584,0.054,0.395,0.016,0.55,4.337,0.693,0.63,0.986,1.326,1.653,3.649,0.955,3.789,1.242,0.918,1.477,1.787,1.656,2.08,0.627,0.738,0.723,0.101,1.188,1.072,0.109,-0.238,0.608,-0.045,0.168,0.059,0.114,0.932,1.271,2.112,1.333,1.166,0.913,1.322,1.324,2.785,1.577,1.17,1.668,1.926,0.822,2.119,1.441,-0.078,-0.337,0.419,-0.126,-0.062,0.121,0.115,0.775,0.474,0.559,1.214,1.11,1.902,1.166,2.755,1.131,1.115,1.536,1.398,1.728,1.25,1.22,0.544,0.213,-0.063,-0.143,1.116,0.465,0.331,1.028,0.419,1.644,1.869,4.924,2.238,1.363,1.742,1.337,1.082,1.587,1.906,1.226,1.529,0.834,2.825,-0.18,1.008,1.194,-0.282,0.151,2.473,0.963,0.397,0.89,2.167,2.289,1.42,2.139,1.737,2.086,1.25,0.832,0.711,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.894,6.549,0.088,1.35,1.233,4.001,7.98,2.346,2.374,2.409,2.563,2.033,1.518,1.857,1.383,0.73,1.169,0.69,0.608,0.884,1.063,1.069,0.546,0.158,-0.307,0.693,-0.075,6.414,3.367,-0.274,1.484,3.062,3.775,2.207,1.887,1.773,1.637,2.913,0.846,1.003,1.29,1.353,0.766,1.549,4.211,2.731,1.974,0.59,-0.367,0.545,-0.351,0.275,0.706,2.003,-0.043,0.551,0.35,0.433,3.574,1.744,2.639,2.273,1.094,1.319,1.412,1.755,1.995,2.273,1.554,1.477,1.249,0.144,-0.297,-0.056,-0.152,-0.014,0.492,0.573,0.294,0.732,1.231,1.301,1.58,2.17,1.002,0.832,1.514,0.971,1.808,1.712,1.501,1.424,1.176,1.229,1.178,0.403,-0.219,-0.236,-0.261,-1.061,-0.883,0.954,1.391,2.934,0.747,1.463,2.977,2.097,5.057,1.013,1.916,0.724,1.879,1.26,0.584,1.459,2.477,4.181,1.712,0.438,-0.036,-0.029,2.156,0.884,0.396,3.044,0.802,1.75,1.539,2.432,3.883,1.806,7.999,0.985,0.704,1.28,2.118,2.939,1.168,1.583,1.258,2.188,1.197,0.722,1.284,0.69,1.379,1.5,0.84,1.08,0.416,1.99,1.865,2.285,2.81,1.986,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.344,2.865,0.595,0.791,1.42,2.277,2.274,3.384,3.406,2.21,2.33,2.325,2.448,1.028],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,24.19,26.3,24.15,20.89,23.08,22.21,19.81,19.57,21.34,23.0,22.16,22.28,22.21,22.3,22.57,24.12,24.5,24.55,24.5,23.75,23.54,23.63,23.43,23.57,23.27,23.49,24.1,23.43,20.91,18.94,18.54,18.62,18.88,19.21,19.5,19.56,19.4,19.65,19.71,19.44,22.25,23.28,24.73,24.33,24.55,24.41,22.86,20.67,20.63,23.12,24.42,25.01,21.3,23.0,22.37,22.78,23.2,23.6,24.12,24.22,24.38,24.61,23.49,23.81,23.87,25.07,24.26,24.46,25.89,25.1,25.64,24.65,23.7,23.89,24.0,23.82,23.93,24.03,21.71,22.49,21.74,21.79,21.89,21.57,22.36,21.76,21.94,22.44,23.21,23.89,24.54,24.41,24.25,23.89,23.34,23.34,22.86,23.14,23.6,24.01,24.12,24.11,24.0,23.96,24.12,21.99,21.75,21.85,22.0,21.52,22.08,22.09,20.95,22.5,23.64,24.12,24.82,24.52,26.22,27.29,25.61,25.86,24.64,24.14,23.25,23.24,23.45,22.47,21.33,21.86,22.0,22.12,22.27,21.92,22.34,21.9,23.52,24.11,24.18,24.26,23.97,23.59,24.35,26.67,27.33,26.75,26.77,26.17,26.49,26.8,27.06,27.27,27.55,27.85,28.15,28.33,26.83,27.76,28.36,27.57,28.11,28.16,28.05,27.87,27.47,27.1,26.72,26.38,26.35,26.48,26.59,26.73,26.7,26.86,26.87,26.69,26.83,26.9,26.97,27.04,27.24,27.13,27.25,25.93,26.15,25.93,25.54,25.15,24.68,24.17,23.36,23.21,22.69,22.68,22.67,23.24,23.43,23.63,21.13,21.43,20.65,20.61,20.7,21.24,21.41,21.74,22.01,22.36,23.71,23.76,23.88,23.61,23.53,23.29,23.17,23.83,22.45,22.04,22.18,22.35,23.72,23.25,23.4,21.67,20.57,21.48,21.94,22.19,22.12,22.19,21.77,21.1,21.88,23.37,24.03,23.92,23.72,21.24,21.27,21.86,22.37,22.2,22.44,23.61,24.2,24.46,21.48,21.87,20.98,20.93,21.06,21.24,21.37,21.48,22.01,23.8,23.91,23.94,23.43,23.33,23.26,23.1,22.67,22.09,21.62,21.74,22.38,22.49,23.15,23.61,20.51,21.48,20.75,20.78,21.58,21.97,22.03,21.97,21.92,21.81,24.18,24.49,24.23,24.08,23.78,23.33,23.24,22.85,22.83,23.12,23.33,23.31,23.84,24.36,24.61,22.5,21.35,21.26,22.12,22.27,22.14,22.3,22.17,22.7,24.06,24.31,24.32,25.78,26.62,27.05,26.4,26.12,25.71,24.34,23.23,23.6,23.91,24.37,24.55,22.89,21.59,21.49,21.61,21.3,22.12,22.12,22.22,22.38,24.02,24.02,24.11,23.94,25.16,23.06,23.36,23.1,22.76,23.13,23.54,24.03,23.18,24.06,24.41,22.72,21.43,21.26,21.33,21.5,21.63,22.3,21.11,21.97,23.7,23.92,24.23,21.79,22.87,23.43,25.05,25.1,24.57,24.97,25.22,24.93,25.39,25.74,26.04,26.24,26.44,26.64,26.86,27.07,27.19,27.19,27.37,27.36,27.26,27.08,26.21,26.21,26.47,27.0,27.56,28.23,28.85,29.62,30.08,28.69,26.96,25.15,24.91,23.63,22.08,21.91,21.88,21.94,20.98,21.33,21.5,22.81,24.35,24.28,24.16,23.77,24.38,23.48,22.65,22.33,21.89,21.93,21.37,23.14,22.31,23.62,24.38,21.84,20.8,20.7,21.54,21.9,21.92,21.88,21.69,22.12,23.21,23.55,24.19,23.83,24.91,23.8,23.94,23.94,23.98,23.86,23.79,24.0,23.77,23.8,23.83,22.82,21.31,21.27,21.4,21.56,21.81,21.96,21.59,21.7,23.41,24.16,24.16,24.1,24.02,23.69,22.6,22.95,24.38,25.05,24.21,24.22,24.09,24.11,23.01,22.69,21.53,21.43,21.57,21.74,21.88,22.04,22.26,22.75,24.13,24.22,24.01,23.77,24.05,23.93,23.48,21.3,21.14,21.51,22.02,22.33,23.45,24.04,24.28,22.23,20.98,20.89,21.02,22.96,20.39,22.01,22.43,22.9,24.34,24.37,23.26,23.58,24.09,23.92,21.55,21.25,21.87,22.38,22.86,23.28,23.76,24.27,24.5,22.56,23.31,23.59,23.78,23.91,24.07,24.18,22.97,22.31,22.73,22.89,23.87,23.27,23.41,22.95,22.25,22.25,22.07,21.99,22.39,23.31,23.96,20.4,21.01,22.29,20.68,21.91,22.4,21.51,20.97,21.01,21.97,24.03,24.05,23.81,23.78,22.81,23.72,25.32,22.51,21.02,20.94,21.53,21.76,21.61,21.9,21.56,22.35,21.6,20.6,21.51,21.75,20.85,20.37,20.1,20.39,21.0,23.22,23.43,23.66,23.5,23.28,22.88,22.88,22.85,23.98,25.66,22.07,22.39,21.9,22.26,22.52,22.1,20.5,20.59,20.67,21.45,21.83,22.02,22.02,22.6,24.03,23.77,23.87,23.43,23.31,23.11,22.52,22.22,22.56,23.78,23.67,23.7,24.06,24.32,21.53,22.5,20.91,20.97,21.06,21.26,22.01,21.94,21.8,22.05,23.39,23.62,24.08,26.24,26.94,24.73,23.06,22.21,24.15,24.93,20.91,22.36,22.76,23.48,20.26,22.29,20.03,21.6,22.33,21.24,21.36,20.61,21.94,21.91,23.35,23.62,20.7,22.6,23.3,22.53,22.53,22.3,22.14,22.4,21.9,22.65,22.65,23.37,24.01,21.81,20.7,21.39,22.46,21.21,22.1,21.76,21.84,22.15,22.8,21.91,22.57,20.79,22.23,22.22,22.61,22.13,23.41,24.63,22.07,22.12,19.97,18.75,18.92,20.35,21.27,22.2,22.53,22.74,22.9,23.08,22.46,22.77,22.17,22.37,22.76,22.79,22.59,22.25,21.89,20.86,20.55,21.5,21.49,21.77,22.03,22.53]},"Building_2":{"battery_soc":[0.2,0.2,0.209,0.224,0.24,0.24,0.24,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.938,0.721,0.492,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.437,0.437,0.437,0.437,0.436,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.371,0.487,0.604,0.721,0.799,0.838,0.837,0.837,0.837,0.837,0.837,0.837,0.742,0.583,0.248,0.248,0.248,0.248,0.248,0.287,0.365,0.482,0.599,0.715,0.832,0.923,0.942,0.942,0.942,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.727,0.495,0.235,0.206,0.206,0.206,0.206,0.206,0.206,0.323,0.439,0.439,0.556,0.556,0.673,0.607,0.724,0.841,0.841,0.924,0.942,0.942,0.942,0.942,0.765,0.561,0.331,0.216,0.216,0.204,0.204,0.204,0.204,0.243,0.36,0.476,0.593,0.71,0.826,0.922,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.723,0.497,0.272,0.272,0.272,0.272,0.272,0.272,0.271,0.271,0.388,0.505,0.622,0.738,0.738,0.855,0.855,0.855,0.855,0.855,0.927,0.943,0.943,0.943,0.739,0.528,0.305,0.283,0.259,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.243,0.36,0.359,0.476,0.476,0.593,0.593,0.71,0.826,0.922,0.942,0.942,0.942,0.942,0.723,0.493,0.235,0.235,0.235,0.235,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.789,0.789,0.828,0.828,0.828,0.828,0.827,0.922,0.71,0.485,0.234,0.234,0.234,0.234,0.234,0.204,0.204,0.204,0.204,0.321,0.438,0.555,0.671,0.788,0.788,0.788,0.788,0.788,0.788,0.866,0.865,0.93,0.715,0.559,0.34,0.34,0.34,0.34,0.34,0.339,0.339,0.378,0.378,0.495,0.612,0.729,0.845,0.925,0.925,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.498,0.235,0.235,0.206,0.206,0.206,0.206,0.323,0.44,0.556,0.673,0.79,0.906,0.939,0.947,0.947,0.524,0.524,0.64,0.64,0.757,0.874,0.931,0.716,0.489,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.242,0.358,0.475,0.592,0.592,0.709,0.709,0.708,0.708,0.708,0.708,0.708,0.807,0.807,0.629,0.44,0.261,0.261,0.261,0.261,0.261,0.378,0.494,0.611,0.728,0.844,0.925,0.925,0.943,0.948,0.531,0.647,0.647,0.764,0.881,0.935,0.935,0.501,0.413,0.32,0.32,0.32,0.32,0.32,0.32,0.32,0.437,0.553,0.67,0.787,0.903,0.938,0.947,0.947,0.947,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.827,0.656,0.569,0.569,0.569,0.569,0.569,0.569,0.568,0.568,0.568,0.568,0.568,0.685,0.802,0.915,0.915,0.915,0.915,0.915,0.915,0.915,0.94,0.94,0.723,0.492,0.31,0.214,0.214,0.214,0.214,0.331,0.448,0.565,0.681,0.681,0.798,0.915,0.94,0.862,0.928,0.944,0.944,0.944,0.944,0.944,0.943,0.943,0.725,0.532,0.289,0.271,0.25,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.204,0.204,0.204,0.204,0.204,0.204,0.321,0.438,0.438,0.438,0.228,0.228,0.228,0.228,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.322,0.438,0.438,0.555,0.555,0.555,0.555,0.555,0.555,0.671,0.788,0.905,0.698,0.478,0.396,0.396,0.396,0.396,0.396,0.396,0.435,0.512,0.512,0.629,0.746,0.863,0.929,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.499,0.258,0.258,0.258,0.258,0.258,0.257,0.257,0.257,0.374,0.491,0.608,0.724,0.841,0.924,0.943,0.943,0.943,0.943,0.943,0.942,0.942,0.942,0.724,0.493,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.438,0.555,0.672,0.789,0.789,0.788,0.588,0.704,0.704,0.821,0.92,0.942,0.724,0.493,0.234,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.555,0.672,0.789,0.905,0.939,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.726,0.494,0.235,0.235,0.225,0.216,0.216,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.221,0.254,0.272,0.231,0.248,0.671,2.934,1.17,1.131,1.167,1.468,1.285,1.356,1.851,0.942,0.742,1.202,0.976,1.524,1.361,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.47,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.856,0.869,0.5,0.455,1.85,0.976,0.143,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.849,0.644,0.268,0.202,0.232,0.416,0.85,0.7,0.729,0.752,0.693,0.531,0.437,0.441,0.449,0.404,0.336,0.454,0.073,0.125,0.561,0.904,0.719,0.518,0.511,0.669,0.912,1.016,0.728,0.683,0.685,0.591,0.314,0.241,1.601,0.487,0.555,0.868,1.536,1.003,0.964,1.034,0.334,0.302,0.341,1.02,0.737,0.781,0.715,0.584,0.374,1.012,0.776,0.185,0.685,0.202,0.729,0.053,0.924,1.067,0.516,0.937,0.678,1.149,0.966,0.734,0.158,0.158,0.178,0.676,0.679,0.506,0.488,0.412,0.7,0.729,0.684,0.683,0.685,0.7,0.729,1.526,0.436,0.594,1.126,0.673,0.467,0.628,0.712,0.925,0.18,0.175,0.175,0.857,0.653,0.745,0.511,0.528,0.67,0.764,1.184,0.683,0.685,0.7,0.231,0.738,0.971,0.4,0.494,0.514,1.132,0.742,0.7,0.885,0.159,0.165,0.173,0.859,0.765,0.653,0.615,0.62,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.739,0.704,0.895,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.258,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.885,0.916,1.168,9.801,1.415,1.521,1.533,1.541,1.605,1.062,0.853,0.539,0.654,0.746,0.36,0.371,0.725,0.235,0.748,0.275,0.844,0.705,2.847,1.347,1.414,1.021,0.907,1.331,1.137,0.346,0.295,0.213,1.092,0.82,0.642,0.409,0.525,0.599,0.753,0.396,0.683,0.685,0.712,0.747,0.856,0.482,0.759,1.875,0.658,0.777,1.085,1.057,1.51,0.418,0.362,0.763,1.345,0.994,0.857,0.934,0.89,0.492,0.207,0.225,0.968,0.72,0.73,0.752,0.851,0.554,0.544,0.592,0.517,0.843,1.011,0.667,1.867,0.831,0.121,0.171,1.199,0.983,1.252,0.897,1.846,0.525,0.762,0.664,0.696,0.685,0.7,0.729,0.756,0.589,2.158,0.686,1.01,0.714,0.885,0.797,0.929,0.192,0.175,1.405,1.077,1.085,0.806,0.751,0.616,0.947,1.179,0.981,0.683,0.685,0.704,0.379,0.484,0.622,4.528,3.19,2.305,1.767,1.255,1.351,1.528,0.42,0.372,0.331,1.231,0.901,0.954,1.062,0.608,0.452,0.498,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.942,1.124,1.164,2.018,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.644,0.385,0.638,0.742,0.683,0.691,0.718,0.253,2.697,0.708,0.975,2.712,0.878,0.926,2.236,1.511,1.578,0.814,0.392,0.137,0.802,0.705,0.748,0.601,0.847,0.933,1.194,0.885,0.683,0.533,0.202,0.307,0.301,5.053,1.98,1.563,1.068,1.031,1.145,2.424,4.514,0.334,0.229,0.416,0.357,0.305,0.443,0.45,0.233,0.804,1.111,0.785,0.683,0.685,0.352,0.267,0.252,0.36,0.473,0.816,0.836,2.079,2.033,0.354,0.376,0.096,0.134,0.07,0.796,0.526,0.613,0.496,0.508,0.799,0.66,0.291,0.185,0.187,0.7,0.729,0.75,0.373,0.466,0.573,0.602,0.747,0.823,0.94,1.042,0.748,0.402,0.143,1.717,0.823,0.744,0.702,1.067,0.977,1.128,1.156,0.185,0.685,0.7,0.34,0.063,2.656,1.05,1.299,0.681,0.976,1.446,1.103,1.875,1.164,0.148,0.189,1.094,0.842,0.63,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.519,1.758,1.698,1.543,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.905,0.48,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.566,1.104,2.297,0.715,0.391,1.8,1.831,1.158,2.857,1.33,2.405,1.014,1.124,0.708,0.4,0.798,0.712,0.186,0.686,0.216,0.746,0.28,1.511,0.752,0.762,0.72,0.811,0.904,1.865,1.394,1.978,0.807,0.66,0.308,0.58,0.718,0.739,0.65,0.493,0.607,0.662,0.245,0.747,0.745,0.755,0.561,0.433,0.474,0.588,0.699,0.664,0.687,0.862,0.821,0.952,0.187,0.174,0.188,1.025,0.991,0.888,0.852,5.033,0.528,0.294,0.848,0.724,0.73,0.739,0.765,0.822,0.828,1.804,0.886,0.907,1.525,0.928,1.054,1.164,0.482,0.524,0.52,3.156,1.215,1.019,0.949,0.94,0.648,0.664,0.9,0.786,0.242,0.756,0.779,0.945,0.621,1.257,0.156,1.388,0.963,2.198,1.647,1.549,0.772,0.851,0.913,1.726,1.115,1.008,1.208,1.098,1.366,0.58,1.739,0.859,0.762,0.775,0.8,2.232,0.76,1.164,1.053,1.231,1.079,1.197,1.483,2.018,1.01,0.583,0.521,1.359,1.52,0.931,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.139,1.29,1.623,1.632,1.965,2.076,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.16,23.82,25.31,25.84,24.85,24.0,25.3,25.96,25.98,26.41,26.79,24.43,25.51,25.75,25.59,25.96,25.27,25.19,24.86,25.91,25.96,26.25,26.48,26.48,26.37,25.84,25.9,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.1,25.18,25.65,25.76,24.35,24.39,25.54,25.66,25.99,26.27,26.45,26.75,26.94,27.16,27.3,27.36,27.25,27.27,26.81,26.63,25.92,26.41,26.4,26.36,25.81,24.82,23.84,24.81,25.46,25.64,25.65,25.51,26.11,25.36,25.82,26.16,24.29,24.22,24.52,24.79,24.76,24.94,25.3,25.52,25.41,25.37,25.45,25.54,25.62,25.69,24.65,25.31,26.01,26.24,26.31,26.26,26.56,26.58,26.48,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.45,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.09,26.15,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.56,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.43,25.55,24.72,23.83,24.74,25.7,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.54,23.92,24.42,24.99,25.08,25.04,25.28,25.37,25.41,25.44,25.4,25.48,25.56,25.19,24.46,23.3,24.08,25.33,25.86,26.19,26.36,26.5,26.43,26.18,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.01,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.4,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.1,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.3,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,26.32,26.64,24.32,24.07,25.66,26.29,26.54,26.64,24.27,24.45,24.17,23.59,24.93,25.31,24.2,24.89,23.84,24.06,24.83,24.8,24.88,25.03,25.08,25.12,25.19,24.55,22.96,23.59,24.75,25.18,25.48,25.64,25.72,25.55,25.62,25.75,25.73,25.8,25.9,25.69,25.36,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.85,24.42,25.2,25.48,25.62,25.64,25.78,25.67,25.75,24.45,24.03,25.4,25.75,25.86,25.72,25.68,25.75,25.71,25.52,25.68,25.66,25.64,25.02,22.77,22.3,23.48,24.8,25.24,25.36,25.28,25.63,25.74,25.71,25.72,25.74,25.66,25.69,25.8,25.63,24.59,24.85,25.82,24.55,25.37,25.41,25.43,25.48,25.52,23.75,23.54,25.13,25.7,25.83,25.73,25.84,24.02,23.69,23.05,24.5,24.52,23.62,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.97,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.49,23.79,25.21,23.51,24.5,24.7,23.38,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.8,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,24.23,24.85,24.56,25.12,25.24,25.38,25.47,25.64,25.18,24.32,25.04,25.31,24.92,25.34,25.25,25.4,25.55,25.55,25.52,24.11,24.95,24.9,24.79,24.62,24.48,24.31,24.58,25.05,25.47,25.62,25.68,25.82,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.47,24.12,23.36,23.62,24.28,24.29,24.36,24.29,24.63,24.64,24.79,24.88,24.03,23.71,24.81,25.31,25.53,25.54,25.59,25.48,25.16,24.96,24.87,24.78,24.71,24.68,24.4,24.35,24.24,24.26,24.1,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.205,0.214,0.223,0.223,0.223,0.267,0.267,0.335,0.404,0.472,0.541,0.609,0.677,0.594,0.492,0.341,0.322,0.301,0.275,0.236,0.236,0.235,0.235,0.235,0.234,0.234,0.234,0.233,0.233,0.232,0.232,0.232,0.231,0.231,0.231,0.23,0.23,0.229,0.229,0.229,0.228,0.228,0.228,0.227,0.227,0.227,0.226,0.226,0.225,0.225,0.225,0.224,0.224,0.293,0.361,0.361,0.36,0.36,0.359,0.277,0.277,0.276,0.276,0.275,0.275,0.275,0.274,0.274,0.273,0.273,0.272,0.272,0.341,0.409,0.477,0.546,0.614,0.659,0.681,0.68,0.679,0.678,0.677,0.744,0.743,0.703,0.637,0.509,0.508,0.508,0.507,0.506,0.528,0.573,0.573,0.641,0.709,0.777,0.844,0.891,0.916,0.914,0.928,0.936,0.94,0.939,0.937,0.936,0.934,0.807,0.649,0.419,0.306,0.252,0.226,0.225,0.225,0.225,0.293,0.362,0.361,0.43,0.429,0.497,0.344,0.412,0.48,0.48,0.548,0.616,0.615,0.683,0.751,0.678,0.553,0.371,0.283,0.283,0.241,0.24,0.24,0.239,0.262,0.331,0.399,0.468,0.536,0.604,0.672,0.74,0.808,0.871,0.905,0.847,0.892,0.917,0.93,0.807,0.649,0.42,0.419,0.418,0.418,0.417,0.416,0.416,0.415,0.483,0.552,0.62,0.688,0.687,0.755,0.754,0.752,0.751,0.819,0.878,0.908,0.907,0.924,0.798,0.643,0.416,0.388,0.356,0.315,0.256,0.256,0.255,0.255,0.255,0.254,0.254,0.253,0.253,0.253,0.252,0.252,0.251,0.251,0.251,0.25,0.25,0.249,0.249,0.224,0.224,0.224,0.223,0.223,0.222,0.222,0.222,0.221,0.221,0.221,0.22,0.22,0.22,0.219,0.219,0.219,0.218,0.218,0.218,0.217,0.209,0.209,0.208,0.208,0.208,0.207,0.207,0.207,0.206,0.206,0.229,0.228,0.251,0.32,0.319,0.388,0.387,0.456,0.524,0.592,0.66,0.728,0.796,0.795,0.863,0.706,0.618,0.509,0.349,0.349,0.348,0.348,0.272,0.271,0.271,0.27,0.27,0.339,0.407,0.475,0.544,0.612,0.611,0.61,0.678,0.677,0.676,0.675,0.743,0.811,0.704,0.573,0.382,0.381,0.381,0.38,0.38,0.286,0.286,0.285,0.285,0.354,0.422,0.49,0.559,0.627,0.626,0.625,0.624,0.623,0.622,0.69,0.758,0.826,0.717,0.583,0.386,0.386,0.385,0.384,0.384,0.383,0.383,0.405,0.404,0.473,0.541,0.609,0.677,0.745,0.744,0.743,0.811,0.872,0.871,0.905,0.923,0.933,0.806,0.648,0.419,0.419,0.306,0.252,0.251,0.251,0.319,0.388,0.456,0.525,0.593,0.661,0.729,0.797,0.865,0.654,0.653,0.721,0.72,0.788,0.855,0.897,0.775,0.626,0.408,0.381,0.349,0.311,0.254,0.253,0.253,0.253,0.252,0.252,0.251,0.251,0.251,0.25,0.25,0.249,0.249,0.249,0.248,0.248,0.247,0.247,0.247,0.246,0.246,0.245,0.245,0.245,0.244,0.244,0.243,0.243,0.243,0.242,0.242,0.242,0.241,0.241,0.24,0.24,0.24,0.239,0.239,0.219,0.219,0.219,0.209,0.209,0.209,0.208,0.208,0.208,0.207,0.207,0.207,0.206,0.229,0.298,0.366,0.435,0.434,0.502,0.502,0.547,0.546,0.545,0.544,0.612,0.67,0.669,0.587,0.487,0.338,0.338,0.337,0.337,0.336,0.405,0.473,0.541,0.609,0.677,0.745,0.744,0.812,0.873,0.758,0.826,0.824,0.88,0.911,0.928,0.926,0.8,0.696,0.58,0.579,0.578,0.577,0.576,0.575,0.574,0.642,0.687,0.755,0.823,0.88,0.91,0.926,0.934,0.939,0.942,0.941,0.939,0.938,0.936,0.935,0.939,0.862,0.731,0.481,0.48,0.479,0.478,0.478,0.477,0.476,0.475,0.475,0.474,0.542,0.61,0.678,0.746,0.745,0.744,0.743,0.742,0.809,0.808,0.871,0.905,0.783,0.631,0.411,0.302,0.301,0.301,0.3,0.369,0.437,0.506,0.574,0.573,0.641,0.709,0.777,0.596,0.664,0.732,0.8,0.867,0.902,0.922,0.933,0.938,0.81,0.651,0.421,0.392,0.359,0.318,0.318,0.317,0.317,0.316,0.316,0.315,0.315,0.314,0.314,0.313,0.313,0.312,0.255,0.254,0.254,0.254,0.253,0.253,0.226,0.226,0.225,0.225,0.225,0.224,0.224,0.224,0.223,0.223,0.222,0.222,0.222,0.221,0.221,0.221,0.22,0.289,0.358,0.357,0.356,0.276,0.276,0.275,0.275,0.236,0.236,0.235,0.235,0.235,0.234,0.234,0.234,0.233,0.233,0.301,0.301,0.37,0.369,0.437,0.437,0.436,0.435,0.435,0.503,0.571,0.639,0.707,0.619,0.51,0.456,0.455,0.455,0.454,0.453,0.453,0.475,0.52,0.519,0.588,0.656,0.724,0.791,0.859,0.899,0.92,0.931,0.938,0.941,0.94,0.938,0.942,0.813,0.653,0.422,0.421,0.42,0.42,0.419,0.418,0.418,0.417,0.485,0.554,0.622,0.69,0.758,0.826,0.881,0.91,0.926,0.925,0.923,0.922,0.921,0.931,0.804,0.647,0.419,0.306,0.306,0.305,0.251,0.251,0.251,0.25,0.319,0.387,0.387,0.455,0.523,0.592,0.591,0.639,0.438,0.506,0.506,0.574,0.642,0.71,0.621,0.512,0.35,0.35,0.273,0.272,0.235,0.235,0.234,0.234,0.303,0.371,0.44,0.508,0.576,0.644,0.712,0.78,0.848,0.893,0.891,0.916,0.929,0.937,0.808,0.65,0.421,0.392,0.359,0.318,0.317,0.317,0.316,0.316,0.315,0.315,0.314,0.314,0.313,0.313,0.312,0.312,0.311,0.311,0.31,0.31,0.309,0.309,0.308,0.308,0.307,0.307,0.306,0.306,0.305,0.305],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.463,0.466,0.469,0.5,1.033,1.042,2.187,2.373,1.526,1.211,0.972,1.07,1.133,1.637,1.384,0.904,1.635,1.522,1.695,2.464,2.719,2.948,0.658,0.55,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.516,0.59,0.559,0.535,0.519,0.525,0.572,0.535,0.749,1.588,0.915,1.691,0.416,0.565,7.843,1.113,1.721,2.111,1.389,2.802,1.989,1.691,1.649,0.694,0.448,0.478,0.484,0.718,0.714,0.712,0.802,2.49,0.903,2.205,0.749,1.171,0.453,1.069,0.444,0.114,0.129,0.218,0.414,1.332,1.115,1.238,1.352,1.455,0.903,0.578,0.756,0.736,0.722,0.712,0.695,0.549,0.391,0.255,0.137,-0.014,-0.076,0.858,0.495,0.575,0.559,0.737,1.416,2.455,4.128,2.05,0.703,0.929,0.754,0.897,0.834,0.549,0.739,0.492,0.795,7.728,1.186,1.358,1.147,1.183,0.596,0.469,0.731,0.945,0.853,0.996,0.535,1.167,1.137,3.193,1.408,0.833,0.723,0.73,1.159,1.139,1.086,0.834,0.819,1.718,1.302,0.895,0.623,0.404,0.185,1.422,0.96,0.775,0.399,1.025,1.463,2.917,2.009,1.617,1.681,0.782,0.745,0.649,0.828,0.782,0.752,0.721,0.548,1.599,0.745,0.446,0.313,0.429,0.381,0.35,0.744,1.054,0.771,0.971,1.669,2.029,2.266,2.374,1.584,1.459,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.659,0.987,0.845,6.451,2.387,1.683,1.576,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.318,0.859,0.679,1.045,1.614,3.951,2.641,2.393,2.863,1.417,2.082,0.97,0.813,0.97,1.0,1.085,0.561,0.677,0.601,5.116,1.158,1.046,1.482,0.775,0.652,0.792,1.128,0.51,0.828,1.07,0.821,1.868,2.303,2.218,8.726,1.09,0.971,0.484,0.637,0.925,0.903,0.898,0.955,0.859,0.536,0.626,1.005,0.382,0.507,0.561,1.482,1.081,0.807,1.126,1.582,2.145,4.945,4.652,5.853,9.161,1.516,0.881,0.593,0.81,0.793,0.793,0.848,2.033,0.574,0.528,0.44,0.794,0.37,0.662,0.62,0.904,0.598,1.062,0.877,1.72,2.309,1.49,2.256,2.425,1.048,0.753,0.622,0.821,0.793,0.767,0.832,0.855,0.785,0.418,0.575,0.44,0.282,0.429,0.472,0.534,0.642,0.933,0.529,1.64,2.783,3.139,1.363,1.389,1.553,0.905,0.862,0.827,0.804,0.781,0.839,1.011,2.775,0.694,0.966,0.925,0.619,0.793,0.797,1.024,0.878,1.061,1.139,2.354,1.921,1.93,1.138,1.091,3.218,0.589,0.535,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.135,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.599,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.455,1.085,0.673,0.82,0.809,0.809,0.622,1.152,0.988,0.88,0.858,1.673,0.796,1.117,0.958,0.931,0.9,0.906,0.959,1.285,1.175,1.443,1.15,0.961,0.989,0.779,0.804,0.793,0.784,0.542,0.843,2.445,0.376,1.309,0.706,0.783,0.604,1.069,0.706,0.407,0.483,0.377,0.665,1.129,0.829,1.497,1.352,0.834,1.046,1.431,1.018,0.762,0.715,0.605,1.753,0.765,0.579,0.796,0.769,0.578,0.617,0.514,0.572,0.594,0.249,0.369,1.105,1.287,1.366,2.159,3.745,2.145,0.69,0.422,0.513,0.508,2.056,0.766,0.85,1.108,2.932,0.886,0.496,0.475,1.366,0.698,0.951,1.072,0.791,0.842,0.872,1.253,1.292,1.628,1.569,1.338,1.13,0.903,0.855,0.586,0.806,0.791,0.876,8.077,1.162,2.863,1.564,0.659,0.732,0.61,0.655,0.922,1.053,1.24,1.035,1.851,3.095,1.837,2.084,1.009,0.584,0.73,0.677,0.633,0.6,0.586,0.637,0.65,2.323,0.863,0.8,0.917,1.189,2.024,1.51,2.116,2.413,2.828,2.111,2.759,1.601,1.366,1.267,1.019,0.573,0.8,0.748,0.705,0.676,0.671,0.709,0.656,0.81,1.197,1.262,1.012,0.971,0.942,0.985,1.08,1.555,3.629,2.088,2.714,1.917,1.611,1.901,1.255,0.706,0.647,0.736,0.941,0.581,0.838,0.64,1.198,0.922,1.024,0.869,0.572,1.284,1.098,0.961,1.05,0.679,0.674,1.199,1.728,2.026,1.67,1.192,1.015,0.553,0.797,0.615,0.839,0.827,0.83,0.913,0.885,0.736,1.049,1.902,0.526,0.559,1.542,1.392,1.225,0.653,0.682,1.312,1.658,1.391,1.843,1.413,2.374,0.951,1.76,0.807,0.805,0.832,0.804,3.596,1.039,1.035,1.914,1.532,0.414,0.377,0.737,0.53,0.796,0.684,0.889,1.325,2.093,10.08,2.098,1.628,1.101,0.763,0.636,0.819,0.925,0.64,0.859,0.91,1.395,1.676,5.728,7.011,2.642,0.943,1.481,2.295,1.648,1.475,1.524,1.302,1.82,2.442,1.795,9.759,2.157,0.793,0.61,0.995,0.941,0.908,0.898,0.937,0.979,1.247,1.017,1.073,1.025,3.518,1.565,1.076,1.533,1.511,1.178,1.436,9.924,2.11,1.584,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.632,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.696],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.52,22.24,23.42,23.98,24.63,24.42,24.49,23.86,22.85,23.81,24.24,24.28,24.94,25.22,24.87,25.25,25.69,25.45,25.03,24.73,24.45,24.25,24.01,23.64,22.8,22.04,22.55,23.04,22.38,22.29,22.32,23.49,24.54,24.62,24.87,25.03,25.11,25.19,25.3,25.5,25.29,24.86,24.91,24.08,24.05,23.94,23.2,22.88,22.57,23.05,23.37,22.76,22.74,22.81,22.81,23.27,24.27,24.47,24.63,24.8,24.93,25.07,25.2,24.66,25.03,24.59,24.9,24.99,24.84,24.64,24.48,24.37,24.39,24.35,24.21,24.38,24.42,23.81,23.22,23.21,23.63,23.97,24.03,24.12,24.22,24.38,24.94,25.41,25.64,25.63,25.46,25.21,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.61,23.58,24.27,24.61,24.43,24.66,24.65,24.7,24.85,25.05,25.13,25.01,25.14,24.24,23.8,23.52,23.07,22.8,22.51,22.24,22.44,22.21,23.49,24.3,24.5,23.25,23.77,24.06,24.32,24.56,24.37,24.29,24.29,24.57,24.86,25.2,25.26,25.32,25.23,24.95,24.69,24.3,24.08,23.83,23.53,23.46,23.18,23.45,23.68,24.16,24.33,24.7,24.72,24.79,24.88,24.92,24.99,25.19,25.29,25.18,25.41,25.33,25.14,24.98,24.65,24.33,23.64,23.27,23.11,22.71,21.72,21.89,22.57,22.87,23.52,24.17,23.96,24.08,24.17,24.26,24.28,24.32,24.41,24.62,24.81,24.84,24.83,24.66,24.43,24.25,23.46,23.36,23.17,23.14,22.9,22.42,22.9,23.12,23.33,23.49,23.75,23.93,24.11,24.24,24.32,24.43,24.52,24.78,24.99,25.09,25.01,24.79,24.46,24.06,23.71,23.44,22.65,21.7,21.38,21.28,21.11,21.6,21.84,22.26,22.83,22.05,22.0,22.06,23.03,23.98,24.18,22.91,23.41,23.7,23.67,23.56,23.36,22.74,22.45,22.34,22.89,22.61,23.38,23.4,22.22,22.51,22.07,23.03,24.14,24.5,24.15,23.94,23.97,24.04,24.17,24.67,25.05,24.53,24.2,23.79,23.52,23.38,23.07,22.75,22.52,22.51,22.76,23.16,22.64,22.01,20.8,20.82,22.41,23.02,23.28,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.34,23.18,22.99,22.77,22.55,22.97,22.91,23.09,23.18,23.32,23.67,23.31,23.26,24.5,24.39,24.47,24.51,24.6,24.8,24.98,25.36,25.62,25.55,25.19,24.78,24.45,24.11,23.79,23.59,23.26,22.67,23.42,23.98,23.32,23.27,23.69,23.74,24.75,24.57,24.74,24.78,24.84,24.98,24.98,25.12,24.42,24.58,24.49,24.36,24.11,23.72,23.46,23.19,22.6,22.54,22.9,22.59,22.92,23.27,23.72,24.02,23.27,24.16,24.5,24.44,24.55,24.63,24.71,24.92,25.05,25.0,24.29,23.84,23.49,23.15,22.83,22.57,22.19,21.9,22.2,22.45,22.66,22.84,23.01,23.27,23.53,23.74,23.93,24.08,24.17,24.25,24.71,25.0,24.9,24.29,24.04,23.63,23.51,23.35,23.52,23.93,24.3,25.13,25.89,26.78,27.38,23.47,23.4,23.29,24.81,24.59,24.71,24.77,24.79,24.84,24.91,25.08,25.11,24.59,24.05,23.61,23.4,23.14,22.9,22.69,22.5,22.37,22.6,23.04,23.29,23.52,23.58,23.67,24.36,24.47,24.42,24.49,24.58,24.72,24.87,24.38,24.22,24.12,24.54,24.54,24.34,24.01,23.78,23.59,23.47,23.01,23.52,23.79,24.07,24.09,24.0,24.11,24.2,24.39,24.42,24.53,24.69,24.9,24.58,24.82,24.91,24.34,24.16,24.04,23.77,23.53,23.42,23.34,23.18,23.37,23.14,23.52,23.49,23.47,22.28,23.39,24.2,24.65,24.6,24.68,24.05,24.49,24.74,25.1,24.4,24.06,23.76,23.57,23.35,23.13,22.88,22.66,22.52,22.47,23.01,23.4,23.95,24.11,24.2,24.33,23.9,24.43,24.55,24.63,24.72,24.86,24.98,24.75,24.99,24.04,24.12,23.97,23.68,23.45,23.29,23.48,23.29,22.51,22.69,22.66,22.45,22.83,23.14,24.08,24.7,24.3,24.46,24.49,24.51,24.57,24.64,24.83,24.16,24.32,24.18,23.96,23.64,22.89,22.26,21.49,21.15,20.87,21.21,21.66,22.13,22.62,23.11,23.47,24.03,23.33,23.39,23.4,23.4,23.42,23.5,23.97,24.4,24.37,23.84,23.28,22.97,22.67,22.78,22.56,22.21,21.6,21.54,21.5,21.99,22.74,23.09,23.52,23.86,23.95,23.62,23.65,24.12,24.29,24.45,24.63,24.58,24.0,23.82,23.56,23.28,22.97,22.7,22.52,22.42,22.95,23.26,23.04,22.97,23.27,23.64,23.78,24.69,24.46,24.47,24.51,24.59,24.69,24.83,25.08,25.16,24.88,24.66,23.91,23.28,23.02,22.95,22.75,22.75,22.21,23.01,23.44,23.59,23.26,23.44,22.88,23.98,24.28,24.37,24.38,24.42,24.58,23.58,24.23,24.5,23.95,23.98,23.74,23.54,23.26,23.07,22.81,22.55,22.3,22.1,22.28,21.82,22.65,23.05,23.6,24.1,24.44,24.58,24.3,24.38,24.5,24.66,24.69,24.67,24.02,23.32,22.82,23.07,22.66,22.3,21.74,21.37,21.65,22.11,22.62,22.95,23.47,23.09,23.67,24.22,24.5,24.2,24.29,24.35,24.43,24.57,24.79,24.85,24.78,24.52,24.15,22.69,22.77,22.5,22.33,22.11,21.88,21.81,21.51,22.02,22.4,22.66,22.94,23.16,23.3,23.53,23.69,23.81,24.01,24.09,24.3,24.33,24.21,23.31,23.3,23.04,22.35,21.47,21.03,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1267,0.1677,0.2088,0.2588,0.3424,0.4174,0.7023,0.8342,0.9117,1.0485,1.1419,1.2314,1.3407,1.6638,1.9289,2.0712,2.1833,2.3232,2.5083,2.6598,2.8026,2.9563,3.0334,3.0823,3.1234,3.1845,3.2532,3.3282,3.4022,3.4441,3.5361,3.5777,3.6538,3.7542,3.9995,4.1878,4.3471,4.5486,4.7672,4.9382,5.1378,5.2761,5.4473,5.5992,5.7495,5.8519,5.9309,5.9956,6.0513,6.1007,6.1501,6.2029,6.2522,6.3483,6.4866,6.5275,6.5897,6.6552,6.6998,6.9308,6.9844,7.1263,7.2936,7.4158,7.5518,7.6513,7.7362,7.853,7.9113,7.9691,8.0088,8.0456,8.0921,8.1605,8.2128,8.2972,8.4041,8.4746,8.5672,8.607,8.658,8.6864,8.7295,8.7523,8.7688,8.7807,8.8046,8.8904,8.9929,9.083,9.1778,9.2607,9.3562,9.4531,9.5378,9.6214,9.7012,9.7777,9.8742,9.9216,9.9879,10.1013,10.1454,10.1656,10.1909,10.2357,10.2899,10.3441,10.4099,10.4925,10.5895,10.8154,10.9748,11.1673,11.2823,11.3511,11.4276,11.4918,11.5839,11.6639,11.717,11.8047,11.8517,11.9521,12.2973,12.3827,12.4867,12.7049,12.7847,12.8219,12.8691,12.9185,12.9986,13.0579,13.1256,13.2496,13.34,13.4754,13.841,13.9594,14.0391,14.113,14.1973,14.3152,14.4123,14.5032,14.5855,14.6669,14.8266,14.9088,15.0257,15.0766,15.108,15.2395,15.3315,15.4245,15.5225,15.5753,15.6457,15.8054,15.9647,16.0759,16.2042,16.296,16.3528,16.4147,16.4698,16.5549,16.6227,16.6889,16.7545,16.8695,16.9646,17.0206,17.0914,17.1149,17.1425,17.1866,17.2184,17.2658,17.3317,17.3923,17.4687,17.5845,17.7209,17.8617,17.9902,18.0844,18.1665,18.2269,18.2848,18.3315,18.3712,18.4087,18.4453,18.4824,18.5493,18.598,18.6996,18.7422,18.7836,18.8589,18.9433,19.2121,19.3912,19.5557,19.6985,19.8681,20.0593,20.2159,20.3273,20.4341,20.5437,20.6204,20.6841,20.7456,20.8081,20.8585,20.9021,20.9869,21.0325,21.0757,21.1123,21.1496,21.1919,21.2276,21.2956,21.6101,21.7112,21.8463,22.1735,22.3634,22.5832,22.7676,22.901,23.0063,23.0997,23.1742,23.2496,23.3395,23.4346,23.4802,23.5565,23.6031,23.8115,23.9179,24.1,24.2186,24.2894,24.3381,24.3877,24.4707,24.7064,24.8742,25.0701,25.241,25.4005,25.5432,25.656,25.9421,26.0083,26.1077,26.1774,26.2443,26.3407,26.4324,26.5216,26.6119,26.7023,26.7511,26.7915,26.8754,26.9242,26.9901,27.0417,27.129,27.2358,27.4557,27.9476,28.2442,28.4469,28.6947,28.9183,29.1554,29.4726,29.5778,29.6409,29.698,29.796,29.8762,29.954,30.0352,30.1555,30.2074,30.2531,30.2833,30.3215,30.3568,30.4056,30.4486,30.5511,30.7174,30.9033,31.0322,31.1776,31.3547,31.5017,31.628,31.7769,31.8565,31.9407,32.035,32.1287,32.2079,32.2853,32.3672,32.4598,32.5978,32.6862,32.723,32.7653,32.7943,32.8804,32.9608,33.0035,33.0551,33.1278,33.2534,33.3965,33.5608,33.725,33.8265,33.9178,34.0281,34.1378,34.2484,34.3427,34.4302,34.5498,34.611,34.6782,34.7991,34.9948,35.116,35.2101,35.2797,35.3476,35.4103,35.5461,35.6576,35.7878,36.0138,36.1834,36.3156,36.4396,36.6003,36.6769,36.8044,36.8701,36.9431,37.0052,37.0612,37.1124,37.1644,37.2178,37.338,37.4048,37.479,37.5393,37.5994,37.8168,37.909,38.0375,38.1505,38.3652,38.5397,38.6914,38.8442,39.0109,39.1372,39.2094,39.261,39.3131,39.3631,39.3999,39.4339,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.5918,39.718,39.8321,39.8902,39.9782,40.0701,40.1674,40.2585,40.3463,40.4863,40.66,40.733,40.8041,40.9098,40.9957,41.0464,41.1601,41.3585,41.4518,41.5893,41.7233,41.8654,41.9745,42.1357,42.2274,42.3889,42.4771,42.5592,42.659,42.7596,42.8502,42.9485,42.9881,43.0428,43.1431,43.3043,43.4348,43.5322,43.5893,43.637,43.7193,43.8105,43.9589,44.0102,44.0524,44.1705,44.2508,44.3455,44.4409,44.5274,44.5847,44.6764,44.7882,44.921,45.0084,45.0828,45.1587,45.2729,45.326,45.4152,45.4942,45.5404,45.5816,45.6724,45.7467,45.7736,45.8055,45.8324,45.9074,46.0041,46.0811,46.1717,46.2848,46.4639,46.5744,46.6972,46.7612,46.8167,46.8812,46.9865,47.0789,47.1608,47.2498,47.362,47.4077,47.4388,47.4702,47.5644,47.6223,47.6871,47.7786,47.8935,48.063,48.2321,48.4623,48.5892,48.6981,48.8151,48.9233,49.0156,49.1203,49.2336,49.2913,49.3787,49.446,49.5629,49.7984,49.9391,50.0879,50.1714,50.2149,50.3367,50.4247,50.4876,50.5951,50.8523,51.068,51.2231,51.3713,51.5367,51.6694,51.7903,51.8715,51.9382,52.0051,52.0529,52.097,52.1459,52.1871,52.2297,52.2886,52.4127,52.5627,52.916,53.1828,53.2689,53.4112,53.5181,53.7319,54.0744,54.2661,54.4381,54.6405,54.7922,54.9196,55.0263,55.1234,55.2057,55.2737,55.3419,55.3881,55.4315,55.4834,55.5425,55.6036,55.6949,55.7795,55.8479,55.9637,56.0124,56.2366,56.4145,56.4988,56.6202,56.8964,57.1045,57.3164,57.4558,57.5862,57.709,57.8412,57.9092,57.9776,58.0415,58.1277,58.1729,58.2636,58.412,58.5694,58.6758,58.745,58.7913,58.8476,58.9114,59.0057,59.095,59.2416,59.3288,59.4394,59.5484,59.6283,59.8125,59.9335,60.0641,60.1735,60.2387,60.3191,60.3848,60.4815,60.5847,60.6963,60.7839,60.8647,60.9364,60.9883,61.0641,61.0988,61.1351,61.2052,61.284,61.3642,61.4307,61.5239,61.6842,61.8003,61.9158,62.0587,62.1539,62.3923,62.4788,62.5664,62.6666,62.7603,62.8489,62.9348,63.0949,63.1843,63.273,63.3931,63.4635,63.5021,63.5575,63.6061,63.6522,63.7372,63.8872,64.1422,64.2943,64.4899,64.906,65.0579,65.2805,65.3688,65.4651,65.5236,65.6278,65.7137,65.7561,65.8451,65.9656,66.1543,66.2711,66.4875,66.6964,66.8139,66.9323,67.0653,67.1918,67.3737,67.5525,67.7946,68.0149,68.1891,68.406,68.5404,69.0932,69.2159,69.2987,69.3701,69.5105,69.6476,69.7297,69.8239,69.9106,70.0667,70.1601,70.2448,70.3442,70.43,70.6042,70.7285,70.8275,70.9625,71.1348,71.3549,71.5792,71.9747,72.1625,72.2937,72.441,72.5936,72.71,72.7789,72.8382,72.8822,72.9251,72.9677,73.0139,73.0632,73.1574,73.2556,73.4406,73.5831,73.6661,73.7908,73.9456,74.1328,74.3361,74.5677,74.8021,75.0101,75.1806,75.3344,75.482,75.6332],"decisions":[{"clamps":[],"fallback":null,"reason":"Batteries are empty with no price spike now, so hold them; baseline cooling is kept since rooms are within band and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries at floor (no usable charge, price not top, grid charge not needed); cooling at baseline since Building_1 is only 0.88C above setpoint; no trims, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour with no top price: small battery charge per strategy, cooling and tank at baseline, no overcooling, peak headroom respected.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overnight low-price hour with grid charging allowed; small battery charge per strategy, rooms within band, no trim, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.0 from setpoint so cooling stays at baseline; batteries follow strategy, price is not top now and grid charging is ok, so use the suggested small charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour but peak headroom is zero and the batteries hold little usable charge, so hold batteries and keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is at target with zero headroom, so no grid charging; batteries and tanks held, cooling kept at baseline, Building_2 already at zero cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging all batteries gently at 0.098 in this cheap hour ahead of top-price hours; cooling kept at baseline since no room is overcooled enough to trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so no trim; batteries hold per strategy since price is not at top and grid charging at low price is marginal; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.56C below setpoint, so trim cooling; keep battery strategy since top price is ahead; avoid tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled, so cooling is trimmed deeper; batteries charge gently in the cheap hour before the top-price period.","status":"ok"},{"clamps":[{"applied":0.2604,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.066 by at most 0.02 per hour","requested":0.3065,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 slightly overcooled, trim held; batteries follow strategy, charging at low price; top price not active now, no tank charging.","status":"clamped"},{"clamps":[{"applied":0.2812,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.046 by at most 0.02 per hour","requested":0.307,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 3-5: charge batteries gently per strategy; hold cooling near baseline, no DHW, trims held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Follow the strategy battery charge in cheap, clean hours before the top-price window; keep cooling at baseline with no overcooling and dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings unoccupied and not overcooled; hold baseline cooling, follow strategy battery charging in cheap hours, no DHW, no trims.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim Building_3 cooling for overcooling; hold tanks at zero.","status":"ok"},{"clamps":[{"applied":0.6953,"point":"Building_3.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.037","requested":0.7326,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; Building_3 is overcooled so the held trim stays; other cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price final hour: discharge all usable battery charge; trim overcooled occupied rooms 1 and 3 by 0.1 below baseline.","status":"ok"},{"clamps":[{"applied":0.1329,"point":"Building_1.cooling","reason":"indoor 24.2 C is more than 0.5 C below the setpoint 26.5 C, trim held at 0.100","requested":0.2328,"rule":"trim_hold"},{"applied":0.3325,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4321,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hours are near-flat; keep strategy battery actions, hold cooling trims, and leave tanks idle.","status":"clamped"},{"clamps":[{"applied":0.2179,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2975,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top-price hours per strategy; keep baseline cooling since rooms are within band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Keep strategy battery discharge for the top-price hour, hold cooling at baseline since rooms are warm or near setpoint, and leave the hot water tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours, so batteries discharge their small usable charge now; B1 is overcooled and cooling is eased, B2 is warm and gets more cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 0.25C above setpoint so baseline cooling kept; Building_2 overcooled? No, unoccupied and warm, baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries hold, no overcooling, and cooling stays at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour so batteries stay idle; trim cooling in occupied overcooled rooms 1 and 3, leave unoccupied Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.0471,"point":"Building_3.cooling","reason":"indoor 23.8 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.054 by at most 0.02 per hour","requested":0.0813,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy. Building_1 is 2.1C below setpoint so cooling trimmed; others held at baseline.","status":"clamped"},{"clamps":[{"applied":0.0076,"point":"Building_1.cooling","reason":"indoor 21.3 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.088","requested":0.0956,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries near floor with no top-price hours; hold batteries, keep baseline cooling, and let trims follow envelope rules.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling near baseline, Building_1 trim held at 0 since it is not below setpoint by 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since no zone is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 0.06 C above setpoint so cooling stays at baseline and no trim is needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with tiny usable charge; hold batteries and keep baseline cooling, Building_1 at setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with little usable charge; hold batteries and tank, keep baseline cooling; Building_1 is slightly cool but within band, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; cooling near baseline; Building_1 is 1.87C below setpoint but occupied with a trim held at zero, so I keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idles except spare-solar storage; cooling stays at baseline since rooms are near setpoint; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling trims are zero since no room is more than 0.5 C below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is overcooled by over 0.5 C, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with load below peak target and no overcooling, so cooling, storage and tanks hold baseline with batteries idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.69C below setpoint is not occupied-cold enough for trim, keep baseline cooling; Building_2 warm, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle per strategy; Building_1 is 0.91 C below setpoint so cooling trimmed slightly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.6341,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.6 C, trim held at 0.052","requested":0.6866,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.98 C below setpoint so trim held at -0.052 with cooling baseline kept; peak headroom limits charging.","status":"clamped"},{"clamps":[{"applied":0.5975,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.052","requested":0.6,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is overcooled so trim held, cooling kept at baseline; dhw idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is overcooled so trim held; Building_3 is 2.4C below setpoint, so cooling kept at baseline; DHW idle.","status":"ok"},{"clamps":[{"applied":0.487,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.102","requested":0.5894,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 1.18C below setpoint so cooling trim is held at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.2873,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.102","requested":0.39,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.96C below setpoint so trim held; others use baseline cooling with no tank or battery action.","status":"clamped"},{"clamps":[{"applied":0.329,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.102 by at most 0.02 per hour","requested":0.4114,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 0.35C below setpoint so cooling trim held; other buildings use baseline cooling and no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 1.43C so trim held, cooling kept at baseline; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as strategy says, cooling at baseline since no room is overcooled, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top-price hours, so batteries stay idle; trim cooling in overcooled occupied rooms B1 and B3, B2 is warm so baseline.","status":"ok"},{"clamps":[{"applied":0.3435,"point":"Building_1.cooling","reason":"indoor 18.5 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.35,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 1.46C below setpoint, so trim cooling deeper; flat price means batteries idle and dhw stays at zero.","status":"clamped"},{"clamps":[{"applied":0.2467,"point":"Building_1.cooling","reason":"indoor 18.6 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.38C below setpoint, so trim cooling modestly deeper; batteries idle on flat prices with negligible usable charge.","status":"clamped"},{"clamps":[{"applied":0.1858,"point":"Building_1.cooling","reason":"indoor 18.9 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.2419,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled so trim held at baseline cooling, others hold baseline.","status":"clamped"},{"clamps":[{"applied":0.1465,"point":"Building_1.cooling","reason":"indoor 19.2 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.19,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.79C below setpoint so trim deepened slightly within limits; others baseline.","status":"clamped"},{"clamps":[{"applied":0.143,"point":"Building_1.cooling","reason":"indoor 19.5 C is within 0.5 C of the setpoint 20.0 C, trim eases off from 0.056 by at most 0.02 per hour","requested":0.1791,"rule":"trim_hold"}],"fallback":null,"reason":"Flat prices and no top-price hours; hold batteries and tanks idle, keep baseline cooling, and do not end trims since rooms are near setpoint.","status":"clamped"},{"clamps":[{"applied":0.156,"point":"Building_1.cooling","reason":"indoor 19.6 C is within 0.5 C of the setpoint 20.0 C, trim eases off from 0.036 by at most 0.02 per hour","requested":0.1721,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.44 C below setpoint so trim held, cooling at baseline; no DHW.","status":"clamped"},{"clamps":[{"applied":0.1485,"point":"Building_1.cooling","reason":"indoor 19.4 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.016","requested":0.1646,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top-price hours, batteries near floor so hold; Building_1 is 0.6C below setpoint so trim held and cooling kept near baseline; others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is flat with no top-price hour now; hold batteries per strategy, cool at baseline, and trim Building_1 slightly as it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.29C below setpoint so no extra trim; price is flat-ish, not top, so keep strategy battery charge at 0.15 for all buildings; cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled 3 C, so its cooling trim is deepened; B1 stores a little solar; other buildings keep baseline.","status":"ok"},{"clamps":[{"applied":0.0361,"point":"Building_1.cooling","reason":"indoor 22.2 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.100","requested":0.136,"rule":"trim_hold"}],"fallback":null,"reason":"Prices flat with no top-price hour now; overcooled Building_1 trim held, store spare solar in batteries, no tank charging, cooling at baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.073,"rule":"trim_hold"},{"applied":0.2553,"point":"Building_2.cooling","reason":"indoor 27.4 C is near the top of the comfort band, cooling held at the baseline","requested":0.255,"rule":"comfort"}],"fallback":null,"reason":"Trim building 1 for overcooling, hold batteries near strategy, no grid charging at flat price; keep tanks idle and cooling near baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is flat-low now with no top-price hour, so store spare solar only; Building_1 and 2 cooling trims per envelope; no grid charging, no tank use.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_1.battery","reason":"district load 8.92 kWh would pass the peak target 8.60 kWh, charging trimmed","requested":0.08,"rule":"peak"}],"fallback":null,"reason":"Holding baseline cooling since rooms are near setpoint; following battery strategy to shave the peak at the target with no headroom and no top-price hour now.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling kept at baseline with no trim needed; only Building_1 stores spare solar, since no top-price hour is now and load is well under peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold all batteries and cooling at baseline: no overcooling, price and carbon are not at a top-hour window, and peak headroom is limited.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by about 1 C, so I trim its cooling slightly; batteries and tanks hold since prices are not at the top yet.","status":"ok"},{"clamps":[{"applied":0.2542,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.050","requested":0.3043,"rule":"trim_hold"}],"fallback":null,"reason":"Holding batteries and tanks at baseline: price is not top, carbon is high now, and the room temperatures are already within safe limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 3.8 C below setpoint, so cooling is trimmed 0.1 below baseline; other devices hold baseline since peak headroom and price timing give no reason to act.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.33 C so its held trim applies; others hold baseline, batteries idle as no top-price discharge or cheap-hour charge is due now.","status":"ok"},{"clamps":[{"applied":0.0058,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.086,"rule":"trim_hold"}],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is trimmed; other actions follow baseline and battery strategy, with charging deferred to cheaper early-morning hours.","status":"clamped"},{"clamps":[{"applied":0.1653,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.011","requested":0.1761,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings are warm or near setpoint, so cooling stays at baseline; batteries hold since no top-price hour is now and grid charging waits for cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 and B3 overcooled, so cooling is trimmed or held; B2 is warm near its band edge so cooling rises; batteries held per strategy.","status":"ok"},{"clamps":[{"applied":0.0076,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.011","requested":0.0189,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling not present except Building_1 at -1.44C; trim ~0.1 needed. Batteries idle: price not top, charging limited, hold strategy.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries near baseline since price is low and no top-price hours now; cooling kept at baseline as rooms are within band and Building_3 trim is small.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.78C below setpoint so cooling is trimmed slightly; batteries held as prices are low and no top-price hour is now; DHW idle.","status":"ok"},{"clamps":[{"applied":0.03,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.8 C, trim held at 0.022","requested":0.0522,"rule":"trim_hold"}],"fallback":null,"reason":"Building 2 is 2.98C above setpoint so cooling stays at baseline; batteries follow strategy charging in cheap hours; no top price now, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0064,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.022","requested":0.0286,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 12-14h top price: charge batteries per strategy, keep cooling at baseline, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0116,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.022 by at most 0.02 per hour","requested":0.0138,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 16-18h top price: charge Building_2 and Building_3 batteries per strategy; hold Building_1 (soc 0.92) and keep cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.0042,"point":"Building_1.cooling","reason":"indoor 24.2 C is more than 0.5 C below the setpoint 24.8 C, trim held at 0.002","requested":0.0064,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 6 is cheap, so I follow the strategy battery charge in Buildings 2 and 3, hold Building 1 battery idle, and keep cooling at baseline with the trim held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 7 is not top-price; B1 is 0.68C under setpoint so keep cooling at 0 with trim held; charge batteries gently per strategy while grid charging is allowed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries near baseline; charging Buildings 2 and 3 modestly at the cheap 0.029 price ahead of the 16-18h top-price hours, with cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries per strategy; small cheap-hour top-up for Buildings 2 and 3 ahead of top-price hours; cooling unchanged, no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries: price low, not top hour, next top hours 6-8 ahead; B1 and B3 cooling at baseline, B2 unoccupied and warm so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.79C below setpoint but baseline cooling is tiny, so trim is held at 0; batteries idle since top price is not active and charging is not needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries and baseline cooling; Building_1 is only 0.62C above setpoint, price is not top now, and strategy says hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries idle: price not at top, next top hours 3-5 ahead; batteries near charge but no cheap charge needed; cooling at baseline, B1 trim within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so cooling is cut to 0; Building 3 stores cheap solar-hour charge per strategy; other actions keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is 2.36C above setpoint so cooling stays at baseline; batteries follow strategy, charging in cheap hours with grid charging allowed; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward top-price hours; trim overcooled Building_1 by 0.1 cooling; Building_2 is warm so no trim; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: follow strategy battery discharge; cool buildings 1 and 3 near setpoint at baseline, Building 2 is warm so keep baseline cooling, no tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, capped by load; no grid charging, tanks idle, cooling at baseline as rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the 21-23h top-price window; trim B1 slightly for overcooling and boost B2 cooling since it is 1.6C above setpoint.","status":"ok"},{"clamps":[{"applied":0.1614,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.025","requested":0.187,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; prices not at top now, grid charging cheap hours later; trims held, cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.1362,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.025 by at most 0.02 per hour","requested":0.1417,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; price not top now, charging only cheap hours; trim Building_1 held; cool Building_2 at baseline since it is warm.","status":"clamped"},{"clamps":[{"applied":0.1065,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.005","requested":0.112,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baselines: buildings 1 and 3 near setpoint, B2 overheated so cooling stays baseline; no top price now, batteries idle, grid charging not needed at 0.03 price.","status":"clamped"},{"clamps":[{"applied":0.0854,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.005","requested":0.0909,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour 23 with no top-price now; start small battery top-ups ahead of the 17-19h peak-price hours, cooling baselines kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings are warm or near setpoint so cooling stays at baseline; prices are low now, so small battery charging builds charge for the 16-18h top-price hours.","status":"ok"},{"clamps":[{"applied":0.1167,"point":"Building_1.cooling","reason":"indoor 21.7 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.117,"rule":"comfort"}],"fallback":null,"reason":"Overcooled Building_1 trims cooling 0.5C below setpoint; batteries follow strategy charge in cheap hour; no top price now, tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and clean; charge batteries gently per strategy, keep cooling at baseline, tanks idle, no trims needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price window; charge batteries gently per strategy, cooling near baseline, no DHW, Building_1 slightly under setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed (B1 0.43 below setpoint); keep baseline cooling, charge batteries gently in cheap hour, no tank use, no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and not top-price; charge batteries gently per strategy, no DHW, cooling near baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 0.65C below setpoint, so trim cooling slightly; batteries follow strategy, no top price now so no discharge, grid charging ok in cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; B1 and B2 stay at baseline cooling, B3 uses its gentle strategy charge, no DHW, all within limits.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.58C below setpoint, so trim cooling; hold batteries idle as strategy suggests since prices are not top-priced and district load is near target.","status":"ok"},{"clamps":[{"applied":0.1171,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.035","requested":0.1521,"rule":"trim_hold"},{"applied":0.0069,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.034,"rule":"soc"},{"applied":0.0078,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.034,"rule":"soc"}],"fallback":null,"reason":"Building_1 overcooled slightly but within 0.5C of setpoint; keep baseline; hold battery idle until top-price hours; charge modestly per strategy.","status":"clamped"},{"clamps":[{"applied":0.1015,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.035","requested":0.12,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 10 is not top-price; cooling near baseline with trim held, batteries near full so no grid charge, DHW idle, B3 battery small spare-solar store.","status":"clamped"},{"clamps":[{"applied":0.1067,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.035","requested":0.142,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so trim is held; batteries follow strategy, charging modestly in cheap hour before top-price hours ahead; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.117,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.14,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries idle for upcoming 16-18h top prices; Building_1 cooling eased slightly as room is overcooled; others keep baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint and batteries are already near 0.95 SoC, so baseline cooling and idle storage are kept this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are near full and no top-price hour is now, so hold; cooling stays at baseline since no room is overcooled and load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; B2 unoccupied and warm so no trim; battery strategy follows, pre-charge for top price at hours 1-3 with grid charging ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharging batteries evenly over the remaining top-price hours per strategy; room temps are within comfort so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, trim overcooled Building_1 by 0.055, keep others at baseline, tank idle.","status":"ok"},{"clamps":[{"applied":0.5299,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.056","requested":0.5854,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top hours per strategy; B1 overcooled trim held; no DHW or grid charging.","status":"clamped"},{"clamps":[{"applied":0.4215,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.056","requested":0.477,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 19 with price not top; district load near peak target so limiter on; hold baseline cooling, mild battery discharge per strategy, no grid charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak limiter is binding at target, so I deepened the overcooled occupied rooms' trims to cut cooling load and kept the code's battery discharge for Building_3.","status":"ok"},{"clamps":[{"applied":0.1625,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.073","requested":0.2352,"rule":"trim_hold"}],"fallback":null,"reason":"Building 3 is overcooled by 1.84 C, so I deepened its cooling trim; the other buildings and batteries follow the baseline or strategy.","status":"clamped"},{"clamps":[{"applied":0.1406,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.163,"rule":"trim_hold"},{"applied":0.0937,"point":"Building_3.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.097","requested":0.191,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled; trim cooling by envelope-held amounts, hold batteries (price not top, grid charging gains little with near-empty usable charge), tanks idle.","status":"clamped"},{"clamps":[{"applied":0.1302,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.053 by at most 0.02 per hour","requested":0.1629,"rule":"trim_hold"},{"applied":0.079,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.097 by at most 0.02 per hour","requested":0.1561,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low price with no top-price hours now; hold batteries per strategy, trim cooling per envelope, Building_2 is warm so cooling stays at baseline.","status":"clamped"},{"clamps":[{"applied":0.1214,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.033 by at most 0.02 per hour","requested":0.1341,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are slightly overcooled within 0.5 C so trims stay held; price is not top now, batteries hold, no grid charging at low headroom need.","status":"clamped"},{"clamps":[{"applied":0.1452,"point":"Building_2.cooling","reason":"indoor 25.7 C is near the top of the comfort band, cooling held at the baseline","requested":0.145,"rule":"comfort"}],"fallback":null,"reason":"Cheap low-carbon hour before top-price window; charge batteries gently at strategy level, hold cooling near baseline, no DHW charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before top-price block; charge batteries gently per strategy, keep cooling at baseline since rooms are near band, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 overcooled 1.9C above setpoint so cooling kept at baseline; batteries follow strategy charging in cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.24C below setpoint, so no extra trim; batteries follow strategy charging in cheap hour, tanks idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.47C under setpoint, so no extra trim; keep baseline cooling and battery charge, cheap hour, no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the top-price window: charge batteries at the strategy rate, keep cooling at baseline, and leave the tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on with zero headroom; no grid charging, hold cooling at baseline, battery discharge per strategy to cut district peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries gently in a cheap, clean hour; trimming overcooled Building_1 slightly; others keep baseline cooling with tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 overcooled? No, it is 1.58C warm; keep baseline cooling, follow strategy battery charging in cheap hours, no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 0.69C below setpoint, not yet 0.5C-plus trim band edge; hold baseline cooling, charge batteries lightly at low price, avoid tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 11 is not top-price; B1 and B3 cooling trims held at 0 since comfort fine; B2 unoccupied and above setpoint, keep baseline; mild charge per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied Building_1 per envelope; hold batteries near strategy values, charging only where grid charging is ok and no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.81C below setpoint, so trim cooling slightly; hold batteries per strategy, no grid charge at this price beyond small top-up.","status":"ok"},{"clamps":[{"applied":0.1948,"point":"Building_1.cooling","reason":"indoor 24.1 C is more than 0.5 C below the setpoint 25.2 C, trim held at 0.015","requested":0.2093,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price block: follow strategy battery charge for B1 and B3, keep cooling at baseline, tank idle, and B2 near full holds.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Charge batteries in this cheap, clean hour ahead of the top-price hours; keep cooling at baseline since no room is overcooled.","status":"ok"},{"clamps":[{"applied":0.1272,"point":"Building_1.cooling","reason":"indoor 24.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"B1 cooling raised (indoor below band), B3 trims cooling 0.06, B2 and B3 discharge into top-price hours, B1 stores spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Light cooling trims on overcooled occupied B1 and B3; batteries discharge in the top-price hour per strategy; no grid charging since grid_charging_ok is false.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharge batteries on top-price hour per plan; trim Building_3 cooling deeper since it is 2.2C below setpoint; others keep baseline.","status":"ok"},{"clamps":[{"applied":0.229,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3286,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 19: top price not yet active, so hold battery per strategy; B1 and B3 slightly overcooled, keep baseline cooling; charge none; no DHW.","status":"clamped"},{"clamps":[{"applied":0.1479,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2275,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price; keep baseline cooling, follow strategy battery, and let Building_3 trim hold since it is overcooled, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Use strategy battery discharges to cover load near the peak limit; no cooling trims since rooms are not overcooled; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; Building_1 is 0.31 C under setpoint so no trim, batteries idle as strategy says, top price not active now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.19 C but the envelope holds trim at 0; cooling kept near baseline, batteries idle as price is not top and grid charging is marginal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint so cooling stays at baseline; Building 2 is warm, so no trim. Batteries idle; price is not top, grid charging small.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; batteries take a small grid charge at the low price ahead of the 15-17h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; charge batteries gently at strategy level, keep cooling near baseline, Building_1 slightly overcooled is within band so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.89 C below setpoint so cooling trims slightly; other buildings follow baseline with strategy battery charging in cheap hour.","status":"ok"},{"clamps":[{"applied":0.131,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.049 by at most 0.02 per hour","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 4 is cheap and clean with no top price now; charge batteries gently as strategy says, keep cooling near baseline, tank idle.","status":"clamped"},{"clamps":[{"applied":0.1128,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.121,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held near setpoint so cooling stays near baseline; Building 1 eases trim; batteries charge gently in cheap hour per strategy, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Charging batteries gently in this cheap, clean hour ahead of the top-price period; cooling and tanks stay at baseline with no comfort issues.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.05C above setpoint so no trim; price is not top now, so follow strategy battery charging and idle cooling/DHW at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling not triggered; holding baseline cooling and strategy battery charging in cheap, clean hours ahead of the top-price period.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling and battery follow baselines and strategy: Building_3 charges gently in this cheap hour before the top-price hours; no trims needed.","status":"ok"},{"clamps":[{"applied":0.0081,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.14,"rule":"soc"}],"fallback":null,"reason":"Building_1 overcooled 1.44C below setpoint, so trim cooling; top price is 6-8 hours away, so hold battery and charge gently per strategy.","status":"clamped"},{"clamps":[{"applied":0.1195,"point":"Building_1.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.104 by at most 0.02 per hour","requested":0.203,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling where overcooled, hold batteries until top-price hours, and charge only where grid charging is allowed and prices are low.","status":"clamped"},{"clamps":[{"applied":0.2112,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.084 by at most 0.02 per hour","requested":0.2748,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 12: prices not at top, district load near peak target, so hold batteries mostly per strategy; trim B1 cooling as indoor is near setpoint.","status":"clamped"},{"clamps":[{"applied":0.2772,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.064 by at most 0.02 per hour","requested":0.3208,"rule":"trim_hold"}],"fallback":null,"reason":"Cooling kept at baseline with trims held; batteries charge gently in this cheap hour ahead of top-price hours 3-5.","status":"clamped"},{"clamps":[{"applied":0.3683,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.044 by at most 0.02 per hour","requested":0.392,"rule":"trim_hold"}],"fallback":null,"reason":"Trim-hold cooling at baseline with envelope; hold batteries per strategy since top price is 2-4h ahead and grid charging is allowed; no DHW.","status":"clamped"},{"clamps":[{"applied":0.4654,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.024 by at most 0.02 per hour","requested":0.469,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-price hour: charge B1 and B3 batteries per strategy, keep B2 idle near full, no cooling trims needed, tank stays empty.","status":"clamped"},{"clamps":[{"applied":0.3765,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 25.6 C, trim held at 0.004","requested":0.3801,"rule":"trim_hold"}],"fallback":null,"reason":"Hold the battery discharge on top-price hours per strategy; keep cooling at baseline, dhw idle, and no grid charging since grid_charging_ok is false.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Discharge batteries on top-price hour per strategy; deepen overcooled occupied Building_1 and Building_3 trims, hold Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.0949,"point":"Building_1.cooling","reason":"indoor 26.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.100","requested":0.195,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, keep cooling trims held, no tank charging or grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the 21-23h top-price hours; deepen Building_3 cooling trim since it is overcooled by 1.27 C while occupied.","status":"ok"},{"clamps":[{"applied":0.2913,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.3704,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries held at idle since no top-price hour is now and the peak is under target; cooling and DHW follow baseline, with Building_3's held trim kept.","status":"clamped"},{"clamps":[{"applied":0.1966,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.2757,"rule":"trim_hold"}],"fallback":null,"reason":"Hold all batteries and tanks at baseline; no top-price hour now, and indoor temps are within band, so Building_3's held trim stays.","status":"clamped"},{"clamps":[{"applied":0.1766,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.079 by at most 0.02 per hour","requested":0.2357,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 22 at a non-top price; comfort trims held, batteries held per strategy, no tank charging, cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.1247,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.059 by at most 0.02 per hour","requested":0.1638,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low flat-ish price with no top hours now; B1 and B2 indoor near or above setpoint, B3 trim held; keep baseline cooling and idle batteries.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Prices are low and not at the top, so I hold most batteries and add a small grid charge to Building_1, which is near its floor, ahead of the 16-18h price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is 2.2C above setpoint so cooling stays at baseline; batteries hold at zero since top price is not active and grid charging is not needed at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled? No, it is 1.41C warm so no trim; batteries charge gently in cheap hour per strategy, DHW idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the 13-15h top price: charge all three batteries at 0.15 per the strategy; room cooling and hot water stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed; battery charging at strategy level in cheap hour, tanks idle, cooling baseline kept since Building_1 is only 0.62 above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed; follow strategy battery charge of 0.15, no cooling trim since rooms are warm, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6 is cheap and low-carbon, top price starts at hour 10; keep the strategy charge, cooling near baseline, and no tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; charge batteries gently per strategy, keep cooling near baseline, no DHW, and avoid overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 8 is not top-price and tariff is low, so hold batteries per strategy; trims are zero as rooms are near setpoint, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries and cooling at baseline: no overcooling, price not at top, and district load is well below the peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling not triggered; kept baseline cooling, followed battery strategy (store spare solar), no tank charging, no grid charging at the current low price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling at baseline, no overcooling; batteries follow strategy, charging modestly in cheap hours before top-price hours 5-7; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 12 is not top price; trim cooling in overcooled occupied Building_1 and follow strategy battery charging within grid_charging_ok limits.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 13 is cheap and not top price; keep baselines, mild trim for overcooled occupied Building_1, store spare solar via strategy battery actions.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled slightly; hold baseline cooling, battery follows strategy, price is low so store modestly, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour before top-price hours 1-3: B3 tops up gently to about 0.95, others hold; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; Building_3 is overcooled by 0.62 C so cooling trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[{"applied":0.5916,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.7 C, trim held at 0.012","requested":0.6039,"rule":"trim_hold"}],"fallback":null,"reason":"Holding the battery for the top-price hours at the strategy discharge rates; cooling and tank stay at baseline or held trim, no grid charging.","status":"clamped"},{"clamps":[{"applied":0.729,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.012","requested":0.7413,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour with no later top hours, so discharge batteries per strategy; ease Building_1 cooling for overcooling; hold Building_3 trim.","status":"clamped"},{"clamps":[{"applied":0.2797,"point":"Building_1.cooling","reason":"indoor 26.3 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.034","requested":0.3133,"rule":"trim_hold"},{"applied":0.553,"point":"Building_3.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.012","requested":0.5653,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries follow strategy discharge over top-price hours; cooling and DHW hold baseline or held trims to stay within comfort and envelope limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge battery per strategy; deepen overcooled rooms' trim in Buildings 1 and 3; hold Building 2 at baseline.","status":"ok"},{"clamps":[{"applied":0.1418,"point":"Building_1.cooling","reason":"indoor 26.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.034","requested":0.1759,"rule":"trim_hold"},{"applied":0.2454,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.093","requested":0.338,"rule":"trim_hold"}],"fallback":null,"reason":"Holding held cooling trims and discharging batteries evenly over the two remaining top-price hours, keeping district load under the peak target.","status":"clamped"},{"clamps":[{"applied":0.1313,"point":"Building_1.cooling","reason":"indoor 26.7 C is within 0.5 C of the setpoint 27.2 C, trim eases off from 0.034 by at most 0.02 per hour","requested":0.1454,"rule":"trim_hold"},{"applied":0.1628,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.093","requested":0.2554,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour with little usable charge: discharge the remaining battery as the strategy says, keep cooling trims held, and leave the tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0972,"point":"Building_1.cooling","reason":"indoor 26.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.014","requested":0.1113,"rule":"trim_hold"},{"applied":0.0997,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.093 by at most 0.02 per hour","requested":0.1723,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle per strategy; trims held, Building_1 eases toward setpoint, Building_3 trim held; no tank or battery action.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 cooling near baseline with trims held; no DHW, no top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; no room is overcooled, so cooling and tank stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 0.31 C below setpoint but not past 0.5 C, so baseline cooling holds.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling kept at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as suggested, cooling at baseline since no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 0.48C above setpoint so cooling stays at baseline; dhw held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries stay idle; cooling near baseline since rooms are within band and no trim is warranted.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling near baseline, tanks idle, Building_1 is 0.85C above setpoint so no overcooling trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price with no top-price hours, so batteries stay idle; all rooms are warm, so cooling and tanks keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours and rooms within band; holding baseline cooling, idle batteries and tanks, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline, no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; cooling at baseline since no building is overcooled beyond 0.5 C; dhw stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 and Building_3 cooling at baseline; Building_2 is warm so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; battery idle, Building_1 slightly cold so keep baseline cooling, peak headroom is zero so no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top hours; overcooling none, Building_2 warm so baseline cooling; battery idle per flat_24h, DHW idle, follow baseline and strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; cooling follows baseline since no building is overcooled beyond 0.5 C; DHW stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building_1 and 2 at baseline cooling; Building_3 uses its small strategy discharge to shave the district peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top-price hours, so battery idle; cooling near baseline since rooms within band; Building 1 is 1.9C below setpoint but cooling is baseline-limited, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building_1 and 2 overcooled? No, Building_1 is 2.3C below setpoint so cooling trimmed; peak limiter active, district load near target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; Building_1 and 2 are cold/warm within band, keep baseline cooling; Building_3 slightly cool so keep baseline; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 2.1C below setpoint so trim cooling slightly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.1638,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.7 C, trim held at 0.055","requested":0.2,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 1.42C below setpoint so cooling trimmed slightly deeper, others at baseline.","status":"clamped"},{"clamps":[{"applied":0.1317,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.6 C, trim held at 0.055","requested":0.1868,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling baselines kept, Building_1 trim held as overcooled room eases toward setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; cooling follows baseline, Building_1 trim held as room is only 0.85 C above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 2.09 C below setpoint and occupied, so hold its trim and keep cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.8 C below setpoint but occupied within band, so cooling held at baseline with no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling holds baseline since Building_1 is only 1.57C below setpoint with trim held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 1.6C below setpoint and occupied, so hold its cooling trim at baseline without extra depth.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 1.53C below setpoint so trim cooling slightly, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 0.98 C below setpoint so cooling trimmed modestly, others held at baseline.","status":"ok"},{"clamps":[{"applied":0.0922,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.032","requested":0.124,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since Building_1 is only 0.82 C under and Building_2 is above setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.6C below setpoint so trim held at -0.032; batteries idle as price is flat-ish and no top-price hour now; tanks idle.","status":"ok"},{"clamps":[{"applied":0.1478,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.033","requested":0.1803,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; B1 is 0.76C below setpoint, trim held at -0.033 is fine; batteries idle as price is not at top and charging is marginal.","status":"clamped"},{"clamps":[{"applied":0.0844,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.1169,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled by 2.08C so trim held; flat-ish prices, store spare solar only, no grid charging, no tank use.","status":"clamped"},{"clamps":[{"applied":0.1477,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.18,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held for Building_1 overcooling; battery idle-ish, store spare solar, price flat-ish so no grid charging; tanks stay at 0.","status":"clamped"},{"clamps":[{"applied":0.2171,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 trim held; price flat-ish now, not top; store spare solar only; no grid charging, tanks idle, cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.32,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.33,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 0.57C below setpoint, so trim cooling slightly; batteries held per strategy since no top-price hour now and grid charging is cheap-hour only.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 0.83C below setpoint, so trim cooling; hold batteries near strategy since peak headroom is zero and prices nearly flat.","status":"ok"},{"clamps":[{"applied":0.4986,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.5583,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries and use baseline cooling; Building 1 is overcooled so a small trim is held, no top-price hour now, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed deeper; the other buildings and batteries hold baseline since prices are not at the top and charging is not worthwhile now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cold and below its comfort band, so its trim ends; Building_3 gets a small overcool trim; batteries and tanks hold because peak headroom is near zero.","status":"ok","trim_ends":[{"building":"Building_1","reason":"room below comfort band, end held trim"}]},{"clamps":[],"fallback":null,"reason":"Holding baselines: no top-price hour now and batteries hold only tiny usable charge. Building_3 is cold and below its comfort band, so its cooling trim is ended.","status":"ok","trim_ends":[{"building":"Building_3","reason":"indoor below comfort band, ending cooling trim"}]},{"clamps":[],"fallback":null,"reason":"Cool at baseline since rooms are near setpoint; no trim. Battery idle: grid charging is not useful now, top price hours ahead and usable charge is tiny; tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and top-price hours are ahead; battery soc is near floor so charge is tiny, and baseline cooling is kept since all rooms are within band.","status":"ok"},{"clamps":[{"applied":0.2848,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.285,"rule":"comfort"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled-free (indoor below setpoint by ~2C); trim is held at 0 since no trim exists yet; prices are not top, batteries hold, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but its comfort band edge rule holds cooling at baseline; batteries idle as price is not top and charging is marginal; hold baselines.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 23 is low-price with no top-price hours now; hold batteries, trim overcooled Building_1 slightly, keep the others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; small battery charging in the cheap hour builds toward the 16-18h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are slightly warm so baseline cooling holds; batteries idle per strategy since price is low and not top, and no grid charging needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is a low-price hour with grid charging allowed, so I store a small amount in each battery; cooling stays at baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.66C, so trim cooling; hold batteries at strategy charge since grid charging is ok and price is low-cost hour.","status":"ok"},{"clamps":[{"applied":0.1047,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.100","requested":0.2047,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled 0.74C below setpoint so trim held at -0.1; follow strategy battery charging in cheap hour, no top price now.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the top-price window: charge batteries at 0.15, trim overcooled Building_3 to zero cooling, and ease Building_1 cooling to its held trim.","status":"ok"},{"clamps":[{"applied":0.0943,"point":"Building_1.cooling","reason":"indoor 22.2 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1543,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price hours 10-12; keep strategy charging, trim cooling only where overcooled, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled, so trim cooling a little; battery charges gently in this cheap hour per strategy, and no tank charging.","status":"ok"},{"clamps":[{"applied":0.1581,"point":"Building_1.cooling","reason":"indoor 22.2 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.050 by at most 0.02 per hour","requested":0.1885,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling slightly, Building_2 cooling held at baseline, and follow strategy battery charging in cheap clean hours; no tank use.","status":"clamped"},{"clamps":[{"applied":0.2571,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.030 by at most 0.02 per hour","requested":0.2675,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 slightly overcooled so trim held; batteries follow strategy, price not top now, charging modestly; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.22,"point":"Building_1.cooling","reason":"indoor 21.1 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.010","requested":0.2304,"rule":"trim_hold"}],"fallback":null,"reason":"Follow strategy battery charge at low price; trim Building_2 cooling for overcooling; keep Building_1 at baseline since it is cool; Building_3 unoccupied.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2 C below setpoint so trim cooling deeper within limits; batteries charge gently in cheap hours per strategy; no top price now, tanks idle.","status":"ok"},{"clamps":[{"applied":0.1534,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.108","requested":0.262,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling modestly in overcooled occupied Building_1, hold battery charge near strategy values, no tank charging, keep load under peak target.","status":"clamped"},{"clamps":[{"applied":0.2457,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.108 by at most 0.02 per hour","requested":0.3338,"rule":"trim_hold"}],"fallback":null,"reason":"Top price not active now; hold battery per strategy, let baseline cooling run, trim held for Building_1 overcooled, no DHW.","status":"clamped"},{"clamps":[{"applied":0.3391,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.088","requested":0.4272,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and near-full batteries; Building_3 gently charges its battery in this cheap, clean hour ahead of the top-price hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak headroom is zero and price is not top now; Building_1 overcooled slightly, trim held. Battery follows strategy shaving peak; no grid charging at this load.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim overcooled occupied rooms 1 and 3 toward setpoint, hold batteries to discharge into the top-price hours as the strategy indicates, and leave Building 2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, hold cooling trims as held, leave tanks idle and no grid charging.","status":"ok"},{"clamps":[{"applied":0.4204,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5207,"rule":"trim_hold"},{"applied":0.4028,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5031,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries at strategy levels, keep held cooling trims, leave tanks idle; grid charging is not allowed.","status":"clamped"},{"clamps":[{"applied":0.4075,"point":"Building_1.cooling","reason":"indoor 22.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.45,"rule":"comfort"},{"applied":0.3819,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4822,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool and below band so cooling eases above baseline; others hold; batteries idle until top-price hours, dhw stays at 0.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, ease trim"}]},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are overcooled slightly, but envelope holds trim; price not top now, batteries idle per strategy; cooling trims kept at baseline, no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; batteries and tanks hold per strategy with no top-price hour now.","status":"ok"},{"clamps":[{"applied":0.0879,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.1876,"rule":"trim_hold"},{"applied":0.3267,"point":"Building_3.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.061","requested":0.3879,"rule":"trim_hold"}],"fallback":null,"reason":"Peak limiter is on with no headroom, so no charging; small battery discharges shave load and cooling holds the envelope trims.","status":"clamped"},{"clamps":[{"applied":0.0757,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1554,"rule":"trim_hold"},{"applied":0.1368,"point":"Building_3.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 23.8 C, trim held at 0.061","requested":0.198,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low price with no top-price hours now; keep batteries at baseline, trim cooling as envelope allows, and avoid DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2561,"point":"Building_1.cooling","reason":"indoor 24.5 C is near the top of the comfort band, cooling held at the baseline","requested":0.256,"rule":"comfort"},{"applied":0.0194,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.061","requested":0.081,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near floor, no top price now; cooling near baseline, trims held; no grid charging at mid price; DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0224,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.061 by at most 0.02 per hour","requested":0.0636,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled slightly; hold trims, batteries idle as strategy suggests since price is cheap now and top hours ahead, small SOC so no charge needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy says; price is low and not top, so no discharge, and charging is not needed yet. Cooling near baseline, room within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.24C but trim held at 0 and cooling is near baseline; battery follows strategy charge while grid charging is ok in a cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now; follow strategy battery charge of 0.15 in all buildings, keep cooling at baseline and tanks idle, Building_1 not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and clean; charge batteries gently toward top-price hours 11-13 and keep cooling near baseline, no trim as no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 10-12h ahead; charge batteries gently now at low price, keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; grid charging is allowed, so follow strategy charging, hold cooling near baseline, and skip DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.85 C overcooled, so its cooling is trimmed slightly; other buildings and batteries hold baseline, since no top-price hour is active.","status":"ok"},{"clamps":[{"applied":0.0517,"point":"Building_1.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.052,"rule":"comfort"},{"applied":0.017,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0517,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets trim held; batteries follow strategy (store solar, price not top); no grid charging, no tank use.","status":"clamped"},{"clamps":[{"applied":0.0773,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.112,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 and 2 top up batteries gently in this cheap, clean hour before top prices at hours 6-8; Building 3 follows its strategy; cooling kept at baseline or held trim.","status":"clamped"},{"clamps":[{"applied":0.15,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.1847,"rule":"trim_hold"}],"fallback":null,"reason":"Holding all batteries and tanks at baseline; Building_1 trim is held at its envelope limit while the room is 0.53 C below setpoint, and no price or peak trigger applies.","status":"clamped"},{"clamps":[{"applied":0.2361,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.2708,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so its held trim is kept; batteries and tanks hold since no top-price hour is now and the peak headroom is ample.","status":"clamped"},{"clamps":[{"applied":0.3069,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.31,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries: price not at top, next top hours ahead; trim B1 cooling slightly for overcooling, others follow baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.1 C so its cooling is trimmed deeper; Building 3 charges per strategy before the top-price hours; the rest keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_1 trimmed cooling; all batteries charge gently ahead of the top-price hours 1-3 using strategy values; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top-price hours per strategy; B1 cooling trimmed slightly for overcooling; no grid charging.","status":"ok"},{"clamps":[{"applied":0.6148,"point":"Building_1.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.6938,"rule":"trim_hold"}],"fallback":null,"reason":"Battery discharges on top-price hours per strategy; B1 cooling held at trim, others at baseline to stay within comfort and peak limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is below its comfort band so its trim ends and cooling returns to baseline; batteries discharge on the top-price hours per strategy.","status":"ok","trim_ends":[{"building":"Building_1","reason":"indoor below comfort band, end trim"}]},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cool-side near or beyond band edges, so cooling stays at baseline; batteries and tanks hold per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2.7C below setpoint; trim cooling modestly and hold batteries idle as prices are not top now.","status":"ok"},{"clamps":[{"applied":0.2472,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; B1 overcooled 2.07C below setpoint so trim cooling slightly deeper; no top price now, district load below target.","status":"clamped"},{"clamps":[{"applied":0.2287,"point":"Building_1.cooling","reason":"indoor 22.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.229,"rule":"comfort"},{"applied":0.1612,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2287,"rule":"trim_hold"},{"applied":0.6266,"point":"Building_3.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.627,"rule":"comfort"}],"fallback":null,"reason":"Hold batteries as strategy suggests; trim cooling in overcooled occupied Building_1 by holding trim; no tank charging; price not top now.","status":"clamped"},{"clamps":[{"applied":0.1062,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero, so I follow the peak-shaving battery discharge, keep cooling at baseline and hold DHW at zero.","status":"clamped"},{"clamps":[{"applied":0.129,"point":"Building_3.cooling","reason":"indoor 20.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.27,"rule":"comfort"}],"fallback":null,"reason":"Building_3 is overcooled and below its comfort band, so cooling is raised; batteries hold per strategy until the top-price hours 16-18.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are overcooled-free (within band), batteries near floor and price not top; hold baseline cooling and idle batteries and tanks this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are near setpoint so baseline cooling holds; batteries idle as strategy says, price is low and not top-price, no clear reason to differ.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean; charge batteries gently toward the top-price window, keep cooling at baseline since rooms are not overcooled, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.44C below setpoint so trim cooling; hold battery charge at strategy level in cheap hour, no tank charging, no top-price discharge now.","status":"ok"},{"clamps":[{"applied":0.0782,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.052","requested":0.1,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling for overcooled Building_1 per envelope; keep strategy battery charging in cheap hour; no tank charging; grid charging allowed.","status":"clamped"},{"clamps":[{"applied":0.0878,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.052 by at most 0.02 per hour","requested":0.1194,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 6 is cheap and not top-price; charge batteries gently per strategy, keep cooling near baseline, and trim B1 cooling as held.","status":"clamped"},{"clamps":[{"applied":0.1134,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.125,"rule":"trim_hold"}],"fallback":null,"reason":"Price is low and top-price hours are 9-11 ahead; charge batteries gently per strategy, cooling near baseline with Building_1 trim held, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries: price is low now and not top; B1 mildly cooled, B2 is warm so cooling kept at baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort bands and no top-price hour is active, so I keep baseline cooling and hold the batteries as strategy suggests.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 2.63C below setpoint and occupied, so it gets a cooling trim; batteries follow strategy, charging cheap-hour spare solar, no tank charging.","status":"ok"},{"clamps":[{"applied":0.0672,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.066 by at most 0.02 per hour","requested":0.1131,"rule":"trim_hold"}],"fallback":null,"reason":"Store spare solar in batteries, no grid charging at this non-top price; hold tanks idle; keep cooling near baseline with small trim in Building_1.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline, store spare solar, no grid charging at this low price; Building_1 trim eases per envelope; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding baseline cooling since no room is overcooled; charging B2 and B3 batteries gently in this cheap, clean hour before the top-price hours at 3-5.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding baseline cooling since no room is overcooled; battery follows the strategy, with Building_3 gently charging in the cheap hour ahead of the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours: follow strategy battery charging, keep baseline cooling since trims are negligible, and leave DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 trimmed cooling; battery discharges over the top-price hours per strategy; building 2 unoccupied, cooling kept at baseline.","status":"ok"},{"clamps":[{"applied":0.5568,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.061","requested":0.6182,"rule":"trim_hold"},{"applied":0.5384,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.084","requested":0.6226,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, hold cooling at baseline with held trims, no grid charging or tank use.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get deeper cooling trims, batteries follow the strategy discharge in the top-price hours, and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling trimmed for overcooled Building_1 and Building_3 (occupied, below setpoint); Building_2 is warm and in band, so baseline; batteries and tanks held idle.","status":"ok"},{"clamps":[{"applied":0.3078,"point":"Building_3.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.394,"rule":"trim_hold"}],"fallback":null,"reason":"No top-price hour now and batteries are near floor, so they stay idle; trim cooling only where overcooled and hold baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.2625,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3629,"rule":"trim_hold"},{"applied":0.2624,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.3486,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baseline cooling with held trims, batteries idle as strategy says, no top price now and no cheap charge window yet; tanks stay at zero.","status":"clamped"},{"clamps":[{"applied":0.1766,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.263,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; trim cooling for overcooled Buildings 1 and 3 per held trims; no DHW; price not top now.","status":"clamped"},{"clamps":[{"applied":0.1106,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.211,"rule":"trim_hold"},{"applied":0.2576,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.3435,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; top price hours ahead at 17-19, cooling trims held, B1 and B3 slightly overcooled so ease cooling a bit.","status":"clamped"},{"clamps":[{"applied":0.085,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.12,"rule":"trim_hold"},{"applied":0.0489,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.086","requested":0.105,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling in overcooled occupied rooms per envelope; hold batteries (no top price now, grid charging at low price is marginal); tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: small grid charge on all three batteries ahead of top-price hours 15-17, differing from the hold strategy; cooling and tanks kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling, cut none since rooms are near setpoint; charge batteries gently in cheap hour per strategy, no tank use, no end trims.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before top-price block at 13-15h; charge batteries gently, keep cooling near baseline, no DHW, trims held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.96C below setpoint and occupied, so trim cooling modestly; keep batteries at strategy charge in cheap hour before the 12-14h top price.","status":"ok"},{"clamps":[{"applied":0.0873,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.055 by at most 0.02 per hour","requested":0.1222,"rule":"trim_hold"}],"fallback":null,"reason":"Charge batteries gently in cheap, clean early hour before top-price window; cooling near baseline with building 1 trim held; no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the top-price window: keep the strategy battery charge of 0.15 in each building, hold tanks at 0, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baselines on cooling; Building_1 is near setpoint, so no trim; battery follows strategy charging in cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.02 C from setpoint, so no trim; batteries follow strategy, cooling at baseline, tank idle, load is under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline; B1 slightly cold so no trim; top price ahead at hours 7-9, so store small charge now per strategy and hold batteries.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but the envelope blocks deeper cooling near its band edge, so baseline holds; Building_3 charges per strategy before top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool baselines kept; rooms are within band. Charge Building_3 gently per strategy in this cheap hour before top-price hours; others near full.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trims are unneeded (rooms near setpoint), battery follows strategy with cheap-hour charging held; tank idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its cooling is trimmed; batteries hold charge for the 3-5h top-price window, with Building 3 charging gently at low price.","status":"ok"},{"clamps":[{"applied":0.1016,"point":"Building_1.cooling","reason":"indoor 25.8 C is more than 0.5 C below the setpoint 26.7 C, trim held at 0.085","requested":0.1867,"rule":"trim_hold"}],"fallback":null,"reason":"Holding B1 cooling trim, batteries near 0.95 for top-price hours 2-4, B3 gentle charge per strategy, no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.1282,"point":"Building_1.cooling","reason":"indoor 26.6 C is within 0.5 C of the setpoint 26.7 C, trim eases off from 0.085 by at most 0.02 per hour","requested":0.1933,"rule":"trim_hold"}],"fallback":null,"reason":"Trims held in comfort band; B1 and B2 batteries near 0.95, B3 takes small solar-backed charge; holding storage for top-price hours 1-3 ahead.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy_battery, trim overcooled occupied Building_3 slightly, keep tanks idle, no grid charging.","status":"ok"},{"clamps":[{"applied":0.5914,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.015","requested":0.6061,"rule":"trim_hold"}],"fallback":null,"reason":"Top price now: discharge batteries evenly over remaining top hours; hold cooling near baseline, keep trims, no grid charging or DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Discharging batteries across top-price hours per strategy; deepening Building_3 cooling trim since it is overcooled and occupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries since no top-price hour is now and the district is near peak; Building 3 is overcooled so its cooling trim is held at -0.1.","status":"ok"},{"clamps":[{"applied":0.3667,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.4471,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero and top price is not now; battery discharge per strategy shaves peak, cooling near baseline, no dhw.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get trimmed cooling per the envelope; batteries follow strategy_battery to shave the peak, with Building_2 left at baseline.","status":"ok"},{"clamps":[{"applied":0.1968,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.080","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries (price not top, low usable charge); trim cooling mildly where overcooled, hold tanks at 0 and keep baseline cooling elsewhere.","status":"clamped"},{"clamps":[{"applied":0.1376,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.072","requested":0.2094,"rule":"trim_hold"},{"applied":0.1691,"point":"Building_3.cooling","reason":"indoor 23.7 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.2295,"rule":"trim_hold"}],"fallback":null,"reason":"Trims are held in code and rooms are near setpoint, so baseline cooling stands; batteries hold per strategy since no top-price hour is now.","status":"clamped"},{"clamps":[{"applied":0.1113,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.072 by at most 0.02 per hour","requested":0.1631,"rule":"trim_hold"},{"applied":0.0578,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1182,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, low-carbon hour before the 16-18h top price: charge all three batteries at 0.15, keep cooling trims and tanks at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 trims held; battery charging in cheap hour per strategy, cooling kept near baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent (all rooms within 0.7C of setpoint); follow strategy battery charging in cheap hour, cooling at baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now; keep strategy battery charge, cooling at baseline since B1 is 0.63C below setpoint only mildly, hold DHW at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed (B1 0.73 below setpoint, trim held 0); battery charging is cheap and clean, so keep strategy charge; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling none; B1 slightly under setpoint so keep baseline cooling; batteries follow strategy charge in cheap hour, tanks idle, B2/B3 as strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 0.92C below setpoint, so trim cooling; top price is 10-12h ahead, so keep the battery plan and follow strategy_battery.","status":"ok"},{"clamps":[{"applied":0.1154,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.127,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling trim held; top price is 9 hours ahead, so charge modestly now on cheap clean hours and keep dhw idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim held at zero, Building_1 and 2 near setpoint; top price hours ahead, so hold batteries; Building_3 follows strategy, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.56C under setpoint, so light trim; batteries follow strategy; headroom zero so no charging; top price not now.","status":"ok"},{"clamps":[{"applied":0.0907,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.030","requested":0.1211,"rule":"trim_hold"}],"fallback":null,"reason":"Building_2 is overcooled? No: it is 1.87C warm, so keep baseline cooling; hold batteries near strategy, no DHW, no trims since rooms are not overcooled.","status":"clamped"},{"clamps":[{"applied":0.1612,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.030 by at most 0.02 per hour","requested":0.172,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling for overcooling, hold batteries per strategy, keep tanks idle; top-price hours are ahead so charge gently and avoid grid peaks.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Indoor temperatures are within band and prices are not at the top, so baseline cooling holds and the cheap-hour battery charge from the strategy is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 3 hours ahead; hold batteries, cool at baseline, charge gently now in cheap hour per strategy, no DHW, no trim since no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 cooling for overcooling; gently charge Buildings 2 and 3 batteries in this cheap, clean hour before top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price run: keep strategy charging, hold Building 1 near 0.95 SOC, leave cooling at baseline and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharging batteries over the remaining top-price hours per strategy; B1 overcooled 1.4C below setpoint so cooling trimmed slightly; tanks idle.","status":"ok"},{"clamps":[{"applied":0.5194,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.084","requested":0.6029,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries over the two top hours per strategy; trim overcooled Building_3 slightly; no grid charging or tank use.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours, so batteries discharge their usable charge; room trims deepened for overcooled occupied rooms.","status":"ok"},{"clamps":[{"applied":0.5236,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.6239,"rule":"trim_hold"}],"fallback":null,"reason":"Cool Building_1 deeper for overcooling, discharge Building_3 battery over the top-price hours per strategy, hold others at baseline.","status":"clamped"},{"clamps":[{"applied":0.2816,"point":"Building_1.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3812,"rule":"trim_hold"},{"applied":0.3738,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4741,"rule":"trim_hold"}],"fallback":null,"reason":"Holding overcooled trims and battery discharge at strategy levels for top-price hours; no grid charging or tank use.","status":"clamped"},{"clamps":[{"applied":0.1934,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.293,"rule":"trim_hold"},{"applied":0.265,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.3653,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge stored battery energy as per strategy, keep held cooling trims, leave tanks idle and avoid grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Final top-price hour: discharge all usable battery charge; keep held cooling trims; tank idle; no grid charging.","status":"ok"},{"clamps":[{"applied":0.1277,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.080","requested":0.2074,"rule":"trim_hold"},{"applied":0.1372,"point":"Building_3.cooling","reason":"indoor 23.7 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2175,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; buildings near setpoint, hold baseline cooling and no DHW, trims held.","status":"clamped"},{"clamps":[{"applied":0.0932,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1529,"rule":"trim_hold"},{"applied":0.2607,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.321,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; cooling follows baseline with held trims, Building_1 and Building_3 are overcooled slightly so keep trim held.","status":"clamped"},{"clamps":[{"applied":0.0601,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1204,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle per strategy; Building_1 and Building_3 are overcooled slightly, so trims held at baseline with null for cooling.","status":"clamped"},{"clamps":[{"applied":0.0419,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.0822,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling and tanks keep baseline with held trims.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, so batteries idle; buildings near setpoint so cooling stays at baseline and dhw stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor and no top-price hours; hold batteries, keep baseline cooling since no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with tiny usable charge; hold batteries and tank, keep baseline cooling since no band edge is breached.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; hold batteries idle, keep cooling at baseline, no DHW, no trims since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 0.59 C below setpoint so trim cooling slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 0.02C above setpoint so no extra trim; Building_2 is hot, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.47C below setpoint so trim cooling modestly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.1459,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.186,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries near floor with little usable charge; hold batteries, keep cooling at baseline, trims held, no DHW.","status":"clamped"},{"clamps":[{"applied":0.1958,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.236,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; trim Building_1 held and cooling near baseline; no DHW; charge only spare solar at low carbon.","status":"clamped"},{"clamps":[{"applied":0.5587,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.040 by at most 0.02 per hour","requested":0.5788,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, battery idle; Building_1 overcooled 0.22C so trim held; district load at peak target so no added cooling or charging.","status":"clamped"},{"clamps":[{"applied":0.4407,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.020","requested":0.4608,"rule":"trim_hold"}],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is cool and below its band, so baseline cooling is kept for the held trim, and other devices hold baseline.","status":"clamped"},{"clamps":[{"applied":0.3829,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 25.6 C, trim held at 0.020","requested":0.403,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is overcooled 2.7C below setpoint, so hold the trim and keep cooling near baseline with no extra trim.","status":"clamped"},{"clamps":[{"applied":0.2042,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2243,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 3.8C below setpoint, trim held at -0.02 so keep baseline cooling; no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2761,"point":"Building_1.cooling","reason":"indoor 25.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2962,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, peak headroom tiny (0.09 kWh); keep cooling near baseline, trim held, battery idle, tanks idle to avoid raising district peak.","status":"clamped"},{"clamps":[{"applied":0.3637,"point":"Building_1.cooling","reason":"indoor 25.1 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.37,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.1C so trim held deeper at -0.02 eased, cooling near baseline; no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2617,"point":"Building_1.cooling","reason":"indoor 24.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2818,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 2.65 C so trim held at -0.02, keep baseline cooling; peak headroom ok, dhw idle.","status":"clamped"},{"clamps":[{"applied":0.1853,"point":"Building_1.cooling","reason":"indoor 25.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2054,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price and no top-price hours, so batteries stay idle; indoor temperatures are near band edges, so cooling stays at baseline.","status":"clamped"},{"clamps":[{"applied":0.1885,"point":"Building_1.cooling","reason":"indoor 25.2 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2086,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 and Building_3 are near comfort band edges, so baseline cooling is kept.","status":"clamped"},{"clamps":[{"applied":0.1139,"point":"Building_1.cooling","reason":"indoor 24.9 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.134,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; cooling baselines kept, Building_1 trim held at -0.02 since it is near setpoint, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0779,"point":"Building_1.cooling","reason":"indoor 25.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.098,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline with Building_1 trim held as envelope allows.","status":"clamped"},{"clamps":[{"applied":0.0542,"point":"Building_1.cooling","reason":"indoor 25.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0743,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as strategy suggests, cooling at baseline with trims held, tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0376,"point":"Building_1.cooling","reason":"indoor 26.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.054,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is overcooled so trim held at -0.02 with cooling near baseline; others follow baseline.","status":"clamped"},{"clamps":[{"applied":0.0247,"point":"Building_1.cooling","reason":"indoor 26.2 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0448,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries hold, Building_1 overcooled 0.98 C so trim held at -0.02, others at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0151,"point":"Building_1.cooling","reason":"indoor 26.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0352,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling trims held near baseline since rooms are within 0.5C of setpoint.","status":"clamped"},{"clamps":[{"applied":0.0066,"point":"Building_1.cooling","reason":"indoor 26.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0267,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is 0.58 C below setpoint so cooling is trimmed per envelope, others hold baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is overcooled so trim cooling 0.02 below baseline, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 overcooling is slight, so keep baseline cooling and no trim; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline, Building_2 overcooled trim not needed since unoccupied and warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries per strategy (flat price, no top hours); cool buildings near baseline, Building_1 slightly below setpoint so trim stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries near floor, no top price now, keep baseline cooling; Building_2 is 1.5C over setpoint so no trim needed beyond baseline, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint and not overcooled, prices are flat-low, and no top-price hours are now, so all devices keep baseline and batteries hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is flat-ish and not top now; hold batteries per strategy, cooling at baseline, Building_1 trim held at zero since not overcooled.","status":"ok"},{"clamps":[{"applied":0.3641,"point":"Building_2.cooling","reason":"indoor 26.7 C is near the top of the comfort band, cooling held at the baseline","requested":0.364,"rule":"comfort"}],"fallback":null,"reason":"Buildings are warm or near setpoint, so cooling stays at baseline; batteries hold since grid charging is cheap now but carbon is high and no top-price discharge is due.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak is at target with no headroom, so no charging; Building_3 shaves its small battery discharge and cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 is over its band so cooling is raised slightly; other buildings hold baseline, batteries idle as strategy suggests with no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries near floor, follow baseline cooling; Building_1 is 0.91 above setpoint so no overcool trim; price not top now, so no discharge or charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled by 3.5 C and 3.5 C, but envelope trims are off; keep baseline cooling, idle batteries, tanks at 0; price not top now, grid charging minimal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are far above setpoint so keep baseline cooling; batteries have ~0 usable charge and price is not top, so hold batteries idle and no tank action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All three rooms are warm, so cooling stays at baseline; batteries hold near floor with low price now and no grid charging yet, to build charge for the 22-24h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: small battery charge ahead of the 21-23h top-price window; cooling kept at baseline since all rooms are warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm, not overcooled, so cooling stays at baseline; batteries and tanks hold since no top-price window is now and usable charge is minimal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are too warm, so cooling stays at baseline with no trim; batteries hold since prices are low and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Indoor temps are above setpoint so no overcooling trim; batteries near floor with tiny usable charge and price not top, so hold batteries and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 2 are warm and occupied, so cooling is raised toward comfort; batteries held per strategy since usable charge is minimal and no top-price window is active.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled about 1.2 C, so cooling is trimmed to 0.01; other buildings and batteries hold baseline since prices are low and carbon is high now.","status":"ok"},{"clamps":[{"applied":0.234,"point":"Building_1.cooling","reason":"indoor 24.9 C is near the top of the comfort band, cooling held at the baseline","requested":0.2,"rule":"comfort"},{"applied":0.1999,"point":"Building_2.cooling","reason":"indoor 26.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.18,"rule":"comfort"}],"fallback":null,"reason":"Buildings 1 and 2 are overcooled, so trim cooling modestly; batteries idle as price is not top; no grid charging, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: small battery top-up toward 0.95 before the 14-16h top-price window; cooling kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is a cheap, low-carbon hour; keep the strategy battery charge small, cooling near baseline, and tank idle, with no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price block at 12-14h; follow strategy charge, keep cooling near baseline, no overcooling since rooms are within band and not too cold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and clean, so charge batteries gently per strategy; Building_1 is slightly cool, so keep baseline cooling and no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent; Building_1 cooling is at baseline, batteries follow strategy charge in cheap hour, no DHW, price not top now.","status":"ok"},{"clamps":[{"applied":0.3332,"point":"Building_2.cooling","reason":"indoor 26.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.333,"rule":"comfort"}],"fallback":null,"reason":"Overcooling trim cuts B1 cooling; batteries charge gently in cheap hour, no DHW; B2 warm so baseline cooling kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy suggests; price not at top now, no cheap-hour charge needed; keep cooling at baseline and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed; batteries 1 and 3 start a small grid charge ahead of the top-price hours 7-9.","status":"ok"},{"clamps":[{"applied":0.0082,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.078","requested":0.0858,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool near its band edge so cooling stays at baseline; batteries hold except B1 storing spare solar; no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.084,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.078 by at most 0.02 per hour","requested":0.1416,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests since price is not top now; cool B1 and B2 near baseline, B3 unoccupied at baseline, keep DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1674,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.058 by at most 0.02 per hour","requested":0.205,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says: price not at top now, and top hours ahead; keep cooling near baseline with held trims, no DHW.","status":"clamped"},{"clamps":[{"applied":0.2603,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.5 C, trim eases off from 0.038 by at most 0.02 per hour","requested":0.278,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held for overcooled B1; batteries follow strategy; top price is 3h ahead so B1 and B3 charge gently, B2 idle, tanks at 0.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled so cooling is trimmed deeper; batteries charge gently in this cheap hour ahead of the top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is unoccupied and near setpoint; hold baseline. Battery charging at strategy levels in cheap hour before top prices; no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the remaining top-price hours; cooling and DHW stay at baseline, no comfort trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries per strategy, hold cooling at baseline since rooms are not occupied or only mildly cool; no DHW or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over remaining top-price hours; cooling kept at baseline near comfort edges; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trimmed cooling in occupied overcooled rooms 1 and 3 per the trim rule; batteries and tanks held as strategy advises, since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.301,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.092","requested":0.3928,"rule":"trim_hold"},{"applied":0.1628,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.073","requested":0.2363,"rule":"trim_hold"}],"fallback":null,"reason":"Holding batteries and tanks at baseline; Building_1 is overcooled by 1.6 C so its held cooling trim stays in place, and the district is under its peak target.","status":"clamped"},{"clamps":[{"applied":0.0838,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.12,"rule":"trim_hold"},{"applied":0.134,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.073","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get trimmed cooling; batteries held at strategy (price not top, grid charging not cheap enough); DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1202,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 cooling trims held as overcooled rooms ease off; batteries held per strategy, load below peak target.","status":"clamped"},{"clamps":[{"applied":0.1407,"point":"Building_1.cooling","reason":"indoor 22.3 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.141,"rule":"comfort"},{"applied":0.0489,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.1407,"rule":"trim_hold"},{"applied":0.1019,"point":"Building_3.cooling","reason":"indoor 23.6 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.053 by at most 0.02 per hour","requested":0.135,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets deeper trim per envelope; batteries follow strategy, charging modestly in cheap hour before top-price 17-19; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0109,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.103,"rule":"trim_hold"},{"applied":0.0302,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.034","requested":0.064,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled rooms in B1 and B3 get trims held; B2 is warm so baseline cooling; batteries charge gently in cheap hour per strategy, grid charging ok.","status":"clamped"},{"clamps":[{"applied":0.0415,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.034 by at most 0.02 per hour","requested":0.055,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 15-17: charge batteries at 0.15 per hour, keep cooling at baseline since rooms are warm or near setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the 14-16h top price: gently charge batteries per strategy and keep cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean with top-price hours at 13-15 ahead; charge batteries gently and keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.5C below setpoint: trim cooling deeper; batteries follow strategy, charging in cheap hour before top price at 12-14.","status":"ok"},{"clamps":[{"applied":0.0678,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.063","requested":0.1304,"rule":"trim_hold"}],"fallback":null,"reason":"Trim-free cooling near baseline, hold batteries at strategy values since top price is 11+ hours away; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.0721,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.063 by at most 0.02 per hour","requested":0.1147,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling by held trim, keep batteries near strategy values; top price hours ahead at 10-12 so hold charge; no tank use.","status":"clamped"},{"clamps":[{"applied":0.0851,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.043 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"},{"applied":0.0087,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.03,"rule":"soc"},{"applied":0.0069,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.03,"rule":"soc"}],"fallback":null,"reason":"Hold cooling near baseline with a small trim in Building_1, store spare solar in batteries, no tank use, and follow strategy_battery in Building_3 at a cheap clean hour.","status":"clamped"},{"clamps":[{"applied":0.1035,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.023 by at most 0.02 per hour","requested":0.1061,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero, so I discharge batteries per strategy to shave load; cooling and DHW stay at baseline since no room is overcooled.","status":"clamped"},{"clamps":[{"applied":0.0842,"point":"Building_1.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.003","requested":0.0868,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 9 is not top price; hold strategy battery charge, cool baseline, trim easing per envelope, no tank use, charge batteries modestly in cheap hour.","status":"clamped"},{"clamps":[{"applied":0.0243,"point":"Building_1.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.003","requested":0.0269,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and the strategy battery charge; the cool occupied room in Building_1 is outside its band, so no trim applies.","status":"clamped"},{"clamps":[{"applied":0.0421,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.003","requested":0.045,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled so trim held; batteries follow strategy, top price hours ahead, charging in cheap hours; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0696,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Building 1 is overcooled, so cooling is trimmed; Buildings 2 and 3 charge batteries in the cheap hours before the price peak.","status":"clamped"},{"clamps":[{"applied":0.0706,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.039 by at most 0.02 per hour","requested":0.0895,"rule":"trim_hold"},{"applied":0.0692,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"},{"applied":0.0389,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"Holding most batteries near baseline; small grid top-up for Building_2 and Building_3 ahead of the 3-5h top-price hours, no tank charging, cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.2 C below setpoint, so its cooling is trimmed deeper; batteries hold near 0.95 SOC and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"District load is at the peak target, so I follow the strategy battery discharges to shave the peak; comfort is within band and cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining peak hours, trim overcooled occupied Building_1 slightly, keep tanks idle and no grid charging.","status":"ok"},{"clamps":[{"applied":0.1322,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.015","requested":0.1469,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: follow strategy battery discharges across top hours; keep cooling near baseline, no tank action, no grid charging since grid_charging_ok is false.","status":"clamped"},{"clamps":[{"applied":0.1259,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.015","requested":0.1406,"rule":"trim_hold"}],"fallback":null,"reason":"Following strategy battery discharge for top-price hours; cooling at baseline since no room is overcooled beyond 0.5 C, and load is under the peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by 0.93 C, so its cooling is trimmed to 0.077; batteries hold for the 21-23h top-price window and other devices stay at baseline.","status":"ok"},{"clamps":[{"applied":0.0382,"point":"Building_3.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.043","requested":0.0814,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price and no trim needed; B1 and B3 slightly cool, holding baseline; batteries idle as strategy says, top hours 20-22 ahead.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by 0.66 C so cooling is trimmed to 0.068; B3 follows its held trim; batteries and tanks hold since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.0752,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.023 by at most 0.02 per hour","requested":0.0784,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings near setpoint, no top price now; hold batteries per strategy, cooling at baseline, no tank charging, no trim changes needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy says; no top price now, cheap hours ahead. Cooling near baseline, rooms within band, trims held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; charge batteries gently in this cheap hour as strategy suggests, cooling kept at baseline since Building_2 is warm and others near band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak and low carbon: charge batteries gently ahead of the 15-17h top-price hours, keep cooling at baseline, and leave the hot water tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price block at 14-16h; charge batteries gently, keep cooling at baseline, tanks idle, no trim needed as rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean with no top price ahead until 13h; keep baseline cooling, charge batteries gently at strategy level, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 0.95C but not beyond 0.5C band edge trigger; hold baseline cooling, follow strategy battery charging in cheap hours before top price at hour 12.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.82 C under setpoint so trim cooling slightly; batteries follow strategy charging in cheap hour, no top price now, peak headroom ample.","status":"ok"},{"clamps":[{"applied":0.1022,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.029","requested":0.1308,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled within the held trim, so cooling stays with the envelope; batteries follow strategy charge in this cheap hour, with the tanks left at zero.","status":"clamped"},{"clamps":[{"applied":0.1017,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.1103,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries already near 0.95 and grid charging is allowed at low price; keep strategy charging, no trims needed as rooms are within band, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline with trim easing; charge batteries gently in cheap hour as strategy suggests since top price is 2-3 hours ahead; no tank use.","status":"ok"},{"clamps":[{"applied":0.0064,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.0033,"point":"Building_2.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Battery charging in cheap hour before top-price hours 7-9; Building_1 overcooled slightly, trim held; no dhw; cooling near baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 2.75C overcooled while occupied, so cooling is cut to 0; batteries stay near 0.95 and are held for the top-price hours at 6-8.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut to zero; other buildings keep baseline, batteries are near full and idle until the top-price hours.","status":"clamped"},{"clamps":[{"applied":0.0444,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.035 by at most 0.02 per hour","requested":0.0596,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries idle at non-top price, keep baseline cooling, trims held; Building_1 overcooled slightly so trim held at -0.015 with no change.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding baseline everywhere: no overcooling, battery near full and storing only spare solar, no top-price hour now, district load well below peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices low, not top; store spare solar only, keep baselines, no trim since buildings near setpoint, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint, so baseline cooling holds; batteries are near full and held for the top-price hours ahead, with a tiny charge in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy_battery, capped at load; no overcooling, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed slightly; batteries follow the top-price discharge plan; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, trim overcooled occupied rooms, keep the tanks idle, and hold the district peak target.","status":"ok"},{"clamps":[{"applied":0.0303,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1104,"rule":"trim_hold"},{"applied":0.1526,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.029","requested":0.1816,"rule":"trim_hold"}],"fallback":null,"reason":"Holding all batteries per strategy: price is near low and top-price hours are ahead; cooling and tanks stay at baseline with held trims.","status":"clamped"},{"clamps":[{"applied":0.1389,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.1479,"rule":"trim_hold"}],"fallback":null,"reason":"Not a top-price hour and no overcooling, so I keep baseline cooling and hold batteries idle; the district load stays below the peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort bands and no top-price hour is now, so I keep baseline cooling and hold the batteries for the evening peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 22 at non-top price with headroom 0; cooling held at baseline, battery follows strategy hold, charge none since price not lowest, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is 1.6 C overcooled so its cooling is trimmed to 0.05; batteries hold until cheaper early-morning hours before the 17-19h top-price window.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.099","requested":0.0466,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; price not top now, grid charging cheap hours later. Building 2 overcooled-warm so cool more; B1/B3 keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.099 by at most 0.02 per hour","requested":0.037,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says; price is low and not top, so no discharge; charge battery 1 and 2 lightly from cheap hours is not needed yet; keep cooling at baseline with no trim.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 2 is off-peak with no top-price hours now; hold batteries per strategy, keep cooling at baseline, and let Building_3's trim ease off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.7C below setpoint so cooling is trimmed lightly; batteries follow strategy, Building_1 charges gently in a cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly but within 0.5C so no trim; battery charge kept per strategy in cheap hour; peak headroom ample; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price window: charge batteries gently per strategy, keep cooling at baseline, DHW idle, no trim needed as rooms are within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour with grid charging allowed; charge batteries toward 0.95 before top-price hours, no comfort trims needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 9-11: charge batteries at the strategy rate, keep cooling at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries at baseline per strategy; no top price now, cooling near baseline, B1 slightly under setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries and baseline cooling; Building_1 is 0.52C below setpoint so a small trim is allowed, price not at top and grid charging is cheap-ish but no clear need.","status":"ok"},{"clamps":[{"applied":0.0675,"point":"Building_1.cooling","reason":"indoor 22.7 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.068,"rule":"comfort"}],"fallback":null,"reason":"Hour 10 is not top-price; store spare solar only, keep cooling near baseline, no tank charging, no grid charging of batteries.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Comfort is within band and prices are not at top; keep baseline cooling, store spare solar in Building_1 battery per strategy, others idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; room near setpoint so no trim. Batteries: B3 strategy charge 0.15 in cheap hour; B1/B2 idle since battery near full and price not top.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Temperatures are within band, prices are low and not at top, and batteries are near 0.95 before the top-price hours, so I keep all baseline actions.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 overcooled 1.0C below setpoint, trim cooling modestly; top price 2-4h ahead, so hold batteries and follow strategy charging only lightly.","status":"ok"},{"clamps":[{"applied":0.3452,"point":"Building_1.cooling","reason":"indoor 24.0 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.050","requested":0.3952,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour with no top price now; trim B1 cooling as held, charge B3 gently toward 0.95 before the top-price hours 1-3, and keep the others at baseline.","status":"clamped"},{"clamps":[{"applied":0.4296,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.8 C, trim held at 0.050","requested":0.4796,"rule":"trim_hold"}],"fallback":null,"reason":"Follow strategy battery discharge over top-price hours; keep cooling at baseline with held trim in Building_1; no grid charging or tank action.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price now with 3 top hours ahead: discharge batteries evenly per strategy; B1 trim held; B3 overcooled but unoccupied, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; room temps near band edges so cooling kept at baseline; district load below 0.9 x forecast.","status":"ok"},{"clamps":[{"applied":0.4777,"point":"Building_1.cooling","reason":"indoor 21.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.478,"rule":"comfort"}],"fallback":null,"reason":"Overcooled rooms and peak headroom 0; battery discharge held near strategy values, no grid charging at 0.029 price with top hours ahead, tank idle.","status":"clamped"},{"clamps":[{"applied":0.2948,"point":"Building_1.cooling","reason":"indoor 21.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.44,"rule":"comfort"}],"fallback":null,"reason":"Building_1 is cool and below its comfort band, so cooling is raised; Building_3 is overcooled so a small trim applies; batteries and tanks hold.","status":"clamped"},{"clamps":[{"applied":0.2006,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.055 by at most 0.02 per hour","requested":0.2355,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling and idle batteries and tanks; no top-price hour now, load is below the peak target, and Building_1 is cold so no trim.","status":"clamped"},{"clamps":[{"applied":0.1866,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.035 by at most 0.02 per hour","requested":0.2015,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 2.1C but trim is held at 0; deepen cooling cut modestly. Hold batteries, price not top, no discharge; hold tanks at 0.","status":"clamped"},{"clamps":[{"applied":0.0631,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.091","requested":0.1544,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap clean hour before the 17-19h top price: charge batteries at the strategy rate, keep cooling trims held, leave tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0554,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.091 by at most 0.02 per hour","requested":0.1267,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-carbon hour before the 16-18h top price: charge batteries per strategy, cooling at baseline since no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour with grid charging allowed: store 0.15 per battery as strategy says; cooling and tank left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries gently in cheap hour before top-price hours 14-16; no overcooling, cooling at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, not top price; charge batteries gently with grid charging ok, keep cooling at baseline, tanks idle, Building_1 slightly overcooled? No, it is 1.24 below setpoint so trim applies.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly (-1.33C) but within trim rules; price is low, charge batteries gently per strategy, no tank charging, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.2C below setpoint; trim cooling deeper. Price is low now, so charge batteries gently ahead of top-price hours 11-13.","status":"ok"},{"clamps":[{"applied":0.0273,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.18","requested":0.0,"rule":"deviation"},{"applied":0.1773,"point":"Building_1.cooling","reason":"trim ended, indoor 23.0 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.0273,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 0.74C so trim cooling; hold batteries per strategy, charging modestly in cheap hour before top-price window at hours 10-12.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled so cooling trimmed; batteries discharge to shave the district peak at the 10.35 kWh target, Building_3 move limited to 0.5.","status":"ok"},{"clamps":[{"applied":0.0856,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.13,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling slightly for overcooling, hold batteries per strategy, no grid charge at top-price-ahead hours, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1292,"point":"Building_1.cooling","reason":"indoor 22.4 C is within 0.5 C of the setpoint 22.8 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1895,"rule":"trim_hold"}],"fallback":null,"reason":"Charging batteries gently in a cheap, clean hour before the top-price hours; cooling kept at baseline since no room is overcooled.","status":"clamped"},{"clamps":[{"applied":0.059,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1193,"rule":"trim_hold"}],"fallback":null,"reason":"Cooling kept at baseline where rooms are near band edges or unoccupied; batteries follow the strategy charge in the cheap, clean hour before the top-price hours.","status":"clamped"},{"clamps":[{"applied":0.1557,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.196,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling held, idle Building_2 and Building_3 batteries as strategy suggests, cool baseline elsewhere; top price is 5 hours away, so store gently.","status":"clamped"},{"clamps":[{"applied":0.3889,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.040 by at most 0.02 per hour","requested":0.409,"rule":"trim_hold"}],"fallback":null,"reason":"Hold cooling near baseline with small trim in B1; idle DHW; battery per strategy since price is not top now and charging is cheap and clean.","status":"clamped"},{"clamps":[{"applied":0.4096,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.020","requested":0.43,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled slightly, so ease trim per envelope; batteries follow strategy, charging in cheap hour before top price hours 3-5 within headroom.","status":"clamped"},{"clamps":[{"applied":0.3842,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 25.1 C, trim held at 0.020","requested":0.4045,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baselines; B1 cooling trim blocked by comfort-edge rule, batteries near full with cheap-hour trickle charge only, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 and Building_3 cooling for overcooling, keep Building_2 at baseline, and hold batteries near the strategy values ahead of the top-price hours.","status":"ok"},{"clamps":[{"applied":0.6164,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.6845,"rule":"trim_hold"}],"fallback":null,"reason":"Discharging stored battery energy across the top-price hours as the strategy suggests; cooling held at baseline since rooms are within comfort limits.","status":"clamped"},{"clamps":[{"applied":0.7186,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.068","requested":0.7867,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the two remaining top-price hours; B1 room is cold so cooling kept at baseline; others held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours: discharge all usable battery energy, cool overcooled occupied rooms deeper, leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get a 0.1 deeper cooling trim; batteries follow strategy discharge over top-price hours; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get held trims of -0.1; batteries follow strategy discharge during top-price hours; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.2084,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.218,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held at -0.1 for overcooled occupied rooms; battery follows strategy, top-price discharge; no grid charging; tank idle.","status":"clamped"},{"clamps":[{"applied":0.1496,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2496,"rule":"trim_hold"},{"applied":0.2379,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.3383,"rule":"trim_hold"}],"fallback":null,"reason":"Hold battery per strategy; cooling trims held at setpoint-edge rules; no grid charging, no tank charging, top price now so discharge stays small.","status":"clamped"},{"clamps":[{"applied":0.1,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2,"rule":"trim_hold"},{"applied":0.1078,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.100","requested":0.2082,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; overcooled rooms get trim held at -0.1, which is already at the envelope limit; no tank action needed.","status":"clamped"},{"clamps":[{"applied":0.0818,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"},{"applied":0.0567,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled, so trim cooling deeper but within held trim limits; keep dhw at 0.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, keep baseline cooling, trims held near setpoint, no DHW action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline since rooms are not overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; buildings 1 and 3 keep baseline cooling, building 2 is near setpoint so baseline too.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling follows baseline since no building is overcooled beyond 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling near baseline with small overcool-free rooms; tanks idle; hold strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling follows baseline since rooms are within band and Building_1 is only 0.54C under setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline, Building_1 is 0.37 below setpoint so no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.13C above setpoint so cooling stays at baseline, no trim needed; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 0.19C above setpoint so cooling stays at baseline with no trim; dhw held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery follows strategy values to shave peak; Building_1 is cool near its band edge so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; cooling kept at baseline since rooms are near setpoint; Building_1 is 1.7C below setpoint so trim is not allowed to deepen beyond the envelope.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.55C below setpoint so trim cooling modestly, others hold baseline.","status":"ok"},{"clamps":[{"applied":0.4373,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.535,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling near baseline with trims held, DHW idle, peak headroom is ample.","status":"clamped"},{"clamps":[{"applied":0.4956,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.5931,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries stay idle; buildings 1 and 2 are overcooled, so I keep the held trim and baseline cooling with no extra action.","status":"clamped"},{"clamps":[{"applied":0.5912,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.6887,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price and high carbon now, so batteries stay idle; Building_1 trim is already held deeper than needed, others near setpoint, so baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.6952,"point":"Building_1.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.7927,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top hours; cooling near baseline with trims held; Building_1 overcooled? no, it is 1.49 below setpoint so trim held; battery idle for peak headroom.","status":"clamped"},{"clamps":[{"applied":0.6096,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.7071,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 2.2C below setpoint so its trim is held, and other buildings keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.54,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.098","requested":0.6375,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, Building_1 overcooled so trim held, cooling near baseline elsewhere, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat-price hour so batteries stay idle; B1 and B3 are overcooled so cooling is trimmed 0.1 below baseline, B2 is near setpoint.","status":"ok"},{"clamps":[{"applied":0.3199,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.100","requested":0.4196,"rule":"trim_hold"},{"applied":0.315,"point":"Building_3.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4154,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top-price hours, batteries near floor and no discharge need; buildings 1 and 3 overcooled, so keep held trim and hold cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.1741,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2,"rule":"trim_hold"},{"applied":0.2178,"point":"Building_3.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled so trim held at -0.1 with cooling at baseline; no DHW or grid charging.","status":"clamped"},{"clamps":[{"applied":0.1104,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.21,"rule":"trim_hold"},{"applied":0.162,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.262,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Buildings 1 and 3 overcooled by 1.1-1.3C get held trim; Building 2 at baseline; no dhw.","status":"clamped"},{"clamps":[{"applied":0.3492,"point":"Building_1.cooling","reason":"indoor 24.0 C is near the top of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"},{"applied":0.1113,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.212,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled, so trim cooling per envelope hold while keeping rooms within band.","status":"clamped"},{"clamps":[{"applied":0.0527,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.100","requested":0.1531,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.8 C below setpoint so cooling trimmed modestly; Building_2 is warm so keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0914,"point":"Building_1.cooling","reason":"indoor 21.0 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.085","requested":0.176,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled so trim held, Building_3 unchanged at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.1987,"point":"Building_1.cooling","reason":"trim ended, indoor 22.3 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.12,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is overcooled so trim cooling modestly; others hold baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, DHW idle, cooling near baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle; cooling and tanks keep baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; buildings 1 and 3 slightly under setpoint, keep baseline cooling and no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.71 C below setpoint, so a small cooling trim is held, not deepened, and no end_trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling kept at baseline since rooms are within band and Building_1 only mildly overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 1.27C below setpoint so trim cooling; flat price and no top hour means battery idle except small charge per strategy; keep dhw zero.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.088","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets deeper cooling trim; all batteries charge gently at the cheap, low-carbon hour within peak headroom, tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0762,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.088 by at most 0.02 per hour","requested":0.1446,"rule":"trim_hold"}],"fallback":null,"reason":"Building_2 is overcooled by 1.2 C so its cooling is trimmed; batteries follow strategy charging in this cheap, clean hour before the top-price period.","status":"clamped"},{"clamps":[{"applied":0.1729,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.068 by at most 0.02 per hour","requested":0.2213,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 11: no top price now, district load 4.2 below target 10.35; hold batteries per strategy, keep baseline cooling with small trim held for Building_1.","status":"clamped"},{"clamps":[{"applied":0.2339,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.048","requested":0.2823,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests: price is flat-ish, not top-price now; Building_1 is overcooled slightly, so keep trim held and let envelope ease.","status":"clamped"},{"clamps":[{"applied":0.4191,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.048","requested":0.468,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 0.66C below setpoint so trim is held; batteries follow strategy, district load near peak target so no charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Deepened cooling trim for overcooled Building_1 and Building_3 per the strategy; Building_2 is warm so it keeps baseline; batteries held.","status":"ok"},{"clamps":[{"applied":0.19,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 26.7 C, trim held at 0.100","requested":0.29,"rule":"trim_hold"},{"applied":0.6103,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.072","requested":0.6827,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is 2.9C below setpoint so cooling trim is held; batteries idle as price is not top now and grid charging is not cheapest, following strategy.","status":"clamped"},{"clamps":[{"applied":0.5401,"point":"Building_1.cooling","reason":"trim ended, indoor 25.3 C is at or above the setpoint 24.2 C, cooling back to the baseline","requested":0.44,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled; trim cooling per envelope, hold batteries idle as strategy says, and keep tanks at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled so cooling is trimmed; batteries discharge to cover load near the peak per strategy; no grid charging.","status":"ok"},{"clamps":[{"applied":0.6926,"point":"Building_1.cooling","reason":"indoor 21.0 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.031","requested":0.7234,"rule":"trim_hold"},{"applied":0.6232,"point":"Building_3.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 23.7 C, trim held at 0.100","requested":0.7235,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near idle, trim cooling in overcooled Building_3 per held trim, price not top now; keep baselines except Building_3 cooling kept at baseline.","status":"clamped"},{"clamps":[{"applied":0.4351,"point":"Building_1.cooling","reason":"indoor 20.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.031","requested":0.4659,"rule":"trim_hold"},{"applied":0.5321,"point":"Building_3.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.100","requested":0.6324,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled so trims held; batteries idle as top price is 3 hours ahead and charge is minimal; peak headroom is small.","status":"clamped"},{"clamps":[{"applied":0.3156,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.031","requested":0.3464,"rule":"trim_hold"},{"applied":0.3388,"point":"Building_3.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.100","requested":0.4391,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled, so trims are held; price not top now, batteries hold idle near floor, no grid charging at this hour.","status":"clamped"},{"clamps":[{"applied":0.3137,"point":"Building_1.cooling","reason":"indoor 21.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.314,"rule":"comfort"},{"applied":0.2829,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.031","requested":0.3137,"rule":"trim_hold"},{"applied":0.2947,"point":"Building_3.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.295,"rule":"comfort"},{"applied":0.1944,"point":"Building_3.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.2947,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled, so I hold their trims; batteries idle since price is not top and grid charging has little headroom to gain.","status":"clamped"},{"clamps":[{"applied":0.213,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.031","requested":0.2438,"rule":"trim_hold"},{"applied":0.1484,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.2487,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; buildings 1 and 3 trims held as envelope requires; batteries idle since usable charge is tiny and no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.0966,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.148,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled rooms get trimmed cooling per envelope; batteries idle since price is low and charging is small; no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.1147,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.031","requested":0.145,"rule":"trim_hold"},{"applied":0.2703,"point":"Building_2.cooling","reason":"indoor 24.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.27,"rule":"comfort"},{"applied":0.0646,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 24.0 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.145,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_3 trim held; batteries idle per strategy since price is low and not top; no charging needed, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1573,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.031","requested":0.188,"rule":"trim_hold"},{"applied":0.0698,"point":"Building_3.cooling","reason":"indoor 23.9 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.13,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets held trim; batteries idle as price is not top now and usable charge is tiny; no grid charging at mid price; DHW idle.","status":"clamped"},{"clamps":[{"applied":0.2281,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.4 C, trim held at 0.031","requested":0.259,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 0.79C below setpoint so cooling trim is held; batteries idle since price is not top and little usable charge; keep tank at 0.","status":"clamped"},{"clamps":[{"applied":0.1225,"point":"Building_1.cooling","reason":"indoor 20.6 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.031","requested":0.1533,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and charging batteries gently at the cheap, clean hour; no top-price discharge yet, tanks stay idle, load is well under peak target.","status":"clamped"},{"clamps":[{"applied":0.1011,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.2 C, trim held at 0.031","requested":0.1319,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled 1.66C below setpoint: trim held; battery charge kept at strategy 0.15 in cheap hour before top-price window at 11-14h.","status":"clamped"},{"clamps":[{"applied":0.1709,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.031 by at most 0.02 per hour","requested":0.1817,"rule":"trim_hold"}],"fallback":null,"reason":"Low-price, low-carbon hour with no overcooling; charge all batteries at 0.15 ahead of the top-price hours 11-13, keeping cooling and tanks at baseline.","status":"clamped"},{"clamps":[{"applied":0.2162,"point":"Building_1.cooling","reason":"indoor 20.9 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.011","requested":0.227,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.37C below setpoint; trim held and eased per envelope. Batteries follow strategy charging in cheap hour; no top price now, tank idle.","status":"clamped"},{"clamps":[{"applied":0.2194,"point":"Building_1.cooling","reason":"indoor 20.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.011","requested":0.2302,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.85C below setpoint so trim is held; batteries follow strategy charging in cheap hour; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1932,"point":"Building_1.cooling","reason":"indoor 20.1 C is more than 0.5 C below the setpoint 22.3 C, trim held at 0.011","requested":0.204,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 2.2C; trim held at -0.011 and cooling kept near baseline, batteries idle as strategy suggests, DHW off.","status":"clamped"},{"clamps":[{"applied":0.1629,"point":"Building_1.cooling","reason":"indoor 20.4 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.011","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; price not top now, next top hours 7-9 ahead; keep cooling near baseline, trim held for Building_1 overcooled slightly.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is 3.45 C overcooled, so cooling is cut to zero; the other buildings keep baseline cooling and the battery strategy, with no grid charging before the top-price hours.","status":"ok"},{"clamps":[{"applied":0.0554,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.082","requested":0.1373,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; B1 overcooled 1.2C below setpoint so trim held at -0.082; batteries idle as price not top, charging deferred to cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its trim is held deeper; batteries charge gently in this cheap hour ahead of the top-price period.","status":"ok"},{"clamps":[{"applied":0.171,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.083","requested":0.2535,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling slightly as it is overcooled; hold batteries at strategy charge in cheap hour; top price is 3 hours away so keep charging; no DHW.","status":"clamped"},{"clamps":[{"applied":0.2495,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.083","requested":0.332,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 16-18h top price; charge batteries at the strategy rate, keep cooling trims held, tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim cooling for overcooled occupied B1 per held trim; hold batteries near strategy since top price is 2-4 hours ahead; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge evenly over the three remaining top-price hours; B1 cooling trimmed to the 0.1 depth since it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim overcooled occupied rooms 1 and 3; hold tank at 0 and keep Building 2 baseline.","status":"ok"},{"clamps":[{"applied":0.1839,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 25.4 C, trim held at 0.100","requested":0.2839,"rule":"trim_hold"},{"applied":0.3275,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.4192,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: spreading the usable battery charge over the remaining top-price hours instead of the front-loaded strategy value; cooling trims held.","status":"clamped"},{"clamps":[{"applied":0.1307,"point":"Building_1.cooling","reason":"indoor 24.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.131,"rule":"comfort"},{"applied":0.0307,"point":"Building_1.cooling","reason":"indoor 24.0 C is more than 0.5 C below the setpoint 26.4 C, trim held at 0.100","requested":0.1307,"rule":"trim_hold"},{"applied":0.3318,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.092","requested":0.423,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says; top price hours ahead at 21-23, so keep charge; Building_1 and Building_3 cooling eased per held trim.","status":"clamped"},{"clamps":[{"applied":0.2992,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.092","requested":0.3909,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20: price not top now, so no discharge; keep batteries idle; cooling at baseline, B1 trim held; top-price hours ahead, district load near target so no action beyond baseline.","status":"clamped"},{"clamps":[{"applied":0.2052,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.092","requested":0.2969,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled but a trim would be clamped near its band edge, so baseline holds; batteries idle as price is not top and cheaper charging hours come later.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled but the envelope would block deeper cooling near its band edge, so baseline is kept; Building 3 holds its trim; batteries idle as no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.11,"point":"Building_3.cooling","reason":"indoor 23.6 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.092 by at most 0.02 per hour","requested":0.182,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is 2.55C below setpoint, so trim cooling; hold batteries idle as price is not top and no charging needed now.","status":"clamped"},{"clamps":[{"applied":0.0163,"point":"Building_3.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.072","requested":0.0887,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool near its band edge so cooling stays at baseline; batteries start small grid charging in the cheap hours before the 16-18h peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed slightly; others hold baseline, and batteries start small charging in the cheapest hour ahead of top-price hours.","status":"ok"},{"clamps":[{"applied":0.2578,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.033 by at most 0.02 per hour","requested":0.2703,"rule":"trim_hold"}],"fallback":null,"reason":"Price is low and not top-price, so no discharge; battery charging stays at strategy baseline of 0 with grid charging ok; cooling holds baseline, trims near zero.","status":"clamped"},{"clamps":[{"applied":0.2204,"point":"Building_1.cooling","reason":"indoor 20.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.013","requested":0.2329,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price block 12-15h; charge batteries gently, keep cooling near baseline, no tank charging, Building_1 trim held.","status":"clamped"},{"clamps":[{"applied":0.18,"point":"Building_1.cooling","reason":"indoor 20.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.013","requested":0.1925,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled 1.6C below setpoint: trim held; keep baseline cooling, charge batteries gently in cheap hour as strategy suggests.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is over 1.5 C below setpoint, so its cooling trim deepens to 0.1; batteries charge gently in the cheap, clean hour before the top-price period.","status":"ok"},{"clamps":[{"applied":0.0812,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.100","requested":0.1811,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap clean hour before top-price block: charge batteries gently per strategy, keep cooling baseline with held trims, tank idle.","status":"clamped"},{"clamps":[{"applied":0.0859,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1658,"rule":"trim_hold"}],"fallback":null,"reason":"Follow the strategy battery charge in all buildings before the upcoming top-price hours; cooling trims held, no comfort breach.","status":"clamped"},{"clamps":[{"applied":0.1191,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.179,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held near setpoint; battery charging from spare solar and cheap grid hour per strategy; no top price now, tank idle.","status":"clamped"},{"clamps":[{"applied":0.11,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.060","requested":0.17,"rule":"trim_hold"}],"fallback":null,"reason":"Hold cooling near baseline with held trims, keep batteries idle or small charge in cheap hours before top-price hours 6-9, no tank charging.","status":"clamped"},{"clamps":[{"applied":0.0331,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.093,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baseline cooling where rooms are near setpoint, hold Building_1 trim, and follow the battery plan; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1116,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.1515,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and tank idle; building 3 takes the small strategy charge of 0.017 in this cheap, clean hour before the top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding batteries near 0.94 for the top-price hours ahead; B1 trims cooling to keep its held overcooling trim, B3 stores a small amount of cheap solar.","status":"ok"},{"clamps":[{"applied":0.2544,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.2943,"rule":"trim_hold"}],"fallback":null,"reason":"Prices are low and no top-price hour is now; batteries are near 0.95 so I keep baseline, with small cooling trims left to the envelope.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trimmed occupied overcooled rooms in Buildings 1 and 3 toward setpoint; batteries near full and idle, tanks idle, Building 2 unoccupied.","status":"ok"},{"clamps":[{"applied":0.3856,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.055","requested":0.4403,"rule":"trim_hold"},{"applied":0.511,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.037","requested":0.5485,"rule":"trim_hold"}],"fallback":null,"reason":"Top price starts in 1-3 hours; hold batteries, keep cooling near baseline, no tank charging, and follow strategy_battery as a small pre-charge.","status":"clamped"},{"clamps":[{"applied":0.4786,"point":"Building_1.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.055","requested":0.5333,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: all three batteries discharge evenly over the three top-price hours; Building_3 cooling trimmed deeper for overcooling, others held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed deeper; batteries discharge at the top price per strategy, with no grid charging and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are occupied and 2.2 C overcooled, so cooling is trimmed 0.1 below baseline; batteries follow strategy discharge for top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are overcooled by 1.4 to 2.6 C, so cooling is trimmed by the held 0.1; batteries hold since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.2068,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3067,"rule":"trim_hold"},{"applied":0.2405,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.2 C, trim held at 0.100","requested":0.3409,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 and Building_3 held trims at -0.1; Building_2 near setpoint. Price not top now, hold batteries per strategy; no grid charging needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding batteries and tanks at baseline since no top-price hour is now; trim Building_1 cooling to its held depth and ease Building_3 per the envelope.","status":"ok"},{"clamps":[{"applied":0.1332,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.19,"rule":"trim_hold"},{"applied":0.2148,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.080","requested":0.27,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get small trims per envelope; batteries held per strategy since price is not at top and grid charging is marginal.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trims cooling for overcooled occupied rooms, holds battery per strategy, headroom zero so no grid charging; price not top now so no discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 and 3 are overcooled, so cooling is trimmed; Building 1 is warm so cooling holds baseline; batteries and tanks hold while prices are not at top.","status":"ok"},{"clamps":[{"applied":0.0475,"point":"Building_2.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.1002,"rule":"trim_hold"},{"applied":0.0586,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.072 by at most 0.02 per hour","requested":0.1108,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 1.81C so cooling is trimmed; batteries held idle as prices are low and not top-price; no DHW.","status":"clamped"},{"clamps":[{"applied":0.0536,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.052 by at most 0.02 per hour","requested":0.072,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 2 is cheap and clean with no top price now; keep the suggested gentle battery charge, hold cooling near baseline, and leave DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0596,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.0718,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 3 is cheap and low-carbon with no top price now; charge batteries gently per strategy, keep cooling near baseline, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly? No, 1.25C above setpoint is below; cooling near baseline; charge batteries gently in cheap hour per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent; cooling near baseline. Charge batteries gently in cheap hour per strategy, no tank charge, peak headroom ample.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.97 C overcooled so its cooling is trimmed; all batteries charge at 0.15 in this cheap, clean hour before the top-price window.","status":"ok"},{"clamps":[{"applied":0.1098,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.048 by at most 0.02 per hour","requested":0.1376,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 9-11: charge batteries toward 0.95 per strategy; cooling trimmed only for overcooled Building_3.","status":"clamped"},{"clamps":[{"applied":0.1725,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.028 by at most 0.02 per hour","requested":0.1803,"rule":"trim_hold"},{"applied":0.1111,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.037 by at most 0.02 per hour","requested":0.1279,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling with held trims, following strategy battery charges at the low price; no tank use and no early trim ends.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling and battery follow baseline and strategy; Building_3 gently charges in this cheap, clean hour before the top-price period; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_2 cooling slightly for overcooling; keep Building_1 and Building_3 on baseline, follow Building_3's gentle battery charge, and leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline, no DHW, batteries follow strategy; top price 5 hours ahead so store spare solar only, no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 0.83 C, so its cooling is trimmed slightly; batteries hold near 0.94 for the 16-18h top-price window, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 2.3 C, so cooling is trimmed deeper; other devices hold baseline since prices are low and no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.0878,"point":"Building_1.cooling","reason":"indoor 26.2 C is within 0.5 C of the setpoint 26.7 C, trim eases off from 0.102 by at most 0.02 per hour","requested":0.169,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling trims held; price not top now, batteries near full so store only spare solar; no grid charging needed; tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding baselines; no overcooling, Building_3 unoccupied, and district load is well under the 6.57 kWh peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries evenly over remaining top hours, trim overcooled occupied Building_1 slightly, keep cooling otherwise at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries evenly over remaining top hours, keep cooling near baseline, no dhw or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim overcooled occupied Building_1 by 0.1, keep Building_3 at baseline near band edge, Building_2 unoccupied.","status":"ok"},{"clamps":[{"applied":0.6055,"point":"Building_3.cooling","reason":"indoor 22.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.606,"rule":"comfort"}],"fallback":null,"reason":"Building 1 and 2 are overcooled trims held; B1 trim -0.1 held, B2 cooling near baseline; battery idle-ish; price not top now, grid charging minor; keep baseline except trims.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_3 is cold, so I keep cooling at baseline; batteries follow strategy, which shaves the peak; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed 0.1 below baseline; batteries and tanks hold since prices are not at the top.","status":"ok"},{"clamps":[{"applied":0.2248,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3243,"rule":"trim_hold"},{"applied":0.2173,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3168,"rule":"trim_hold"}],"fallback":null,"reason":"District load is above 0.9x forecast, so Building_3 discharges to cover its load; overcooled rooms keep their held cooling trim.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms in B1 and B3 get trim held at -0.1; battery idle per strategy since price is low and not top-price, grid charging low value.","status":"ok"},{"clamps":[{"applied":0.3796,"point":"Building_1.cooling","reason":"trim ended, indoor 23.5 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.28,"rule":"trim_hold"},{"applied":0.0853,"point":"Building_3.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.1853,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled 1.26C, so trim cooling deeper; batteries idle per strategy, prices are not top-rate now, no grid charging needed.","status":"clamped"},{"clamps":[{"applied":0.066,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.146,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cold and below its band, so cooling is eased toward its floor; other devices hold baseline, batteries idle since no top price now.","status":"clamped"},{"clamps":[{"applied":0.0572,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1172,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 14-16h top price: charge batteries at the strategy rate, keep baseline cooling since no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 is 2.2C below setpoint, so trim cooling; hold battery charging at strategy level since grid charging is allowed and prices are low.","status":"ok"},{"clamps":[{"applied":0.0569,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.124","requested":0.1806,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top price; charge batteries gently per strategy, cooling near baseline, Building_1 slightly overcooled is within band so no trim change.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour before top-price hours 11-13: charge batteries at the strategy rate, keep cooling at baseline, tank idle, no trim to end.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6 is cheap and clean; charge batteries gently per strategy, cooling at baseline since rooms are near setpoint, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; Building_1 is 0.86C below setpoint trim not needed; battery charging at strategy level within limits, no top price now, grid charging ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.6 C, so its cooling is trimmed; batteries and tanks hold since no top-price hour is near.","status":"ok"},{"clamps":[{"applied":0.1957,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2761,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 overcooled slightly, keep baseline with held trim; batteries follow strategy, no tank charging; top price hours ahead so charging is modest.","status":"clamped"},{"clamps":[{"applied":0.1341,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.2,"rule":"comfort"}],"fallback":null,"reason":"B1 is below its comfort band so cooling rises above baseline and its trim ends; B2 and B3 discharge to shave the district peak near target.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"indoor below comfort band, overcooling trim ends"}]},{"clamps":[],"fallback":null,"reason":"Overcooled B1 eases trim; batteries follow strategy, B2/B3 low-SOC charging ok at low price; no top-price discharge now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 4-6 hours ahead, so hold batteries and trim only overcooled Building_1; Building_3 is cool so no trim, batteries follow strategy charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets a small cooling trim; batteries follow strategy, with B1 and B3 charging gently in cheap hours and B2 idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_1 cooling 0.1 below baseline since its occupied room is 1.85 C under setpoint; keep other buildings on baseline and charge batteries in this cheap hour.","status":"ok"},{"clamps":[{"applied":0.5614,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.661,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 15 is not top price; hold cooling near baseline, let batteries follow strategy, keep tanks idle, and avoid charging B1 beyond strategy since load is near peak target.","status":"clamped"},{"clamps":[{"applied":0.6079,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7077,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly per strategy, no grid charging, tanks idle, keep cooling at baseline to avoid comfort clamps.","status":"clamped"},{"clamps":[{"applied":0.6345,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7343,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, deepen Building_3 cooling trim for overcooling, hold other cooling; no grid charging or DHW.","status":"clamped"},{"clamps":[{"applied":0.6292,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.729,"rule":"trim_hold"},{"applied":0.6133,"point":"Building_3.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7133,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharging batteries per strategy over the three top-price hours; cooling trims held, B2 warm so baseline cooling.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms in B1 and B3 keep trim at -0.1; B2 at setpoint; batteries idle since top price is 21-23h and grid charging is marginal.","status":"ok"},{"clamps":[{"applied":0.4529,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5531,"rule":"trim_hold"},{"applied":0.3717,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4721,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price now; battery stays near strategy with small discharge to shave peak, cooling trims held, no DHW.","status":"clamped"},{"clamps":[{"applied":0.2684,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3686,"rule":"trim_hold"},{"applied":0.2539,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3543,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near baseline (price not top, small usable charge); keep cooling trims as held; no DHW; Building_1 and 3 overcooled so trims held.","status":"clamped"},{"clamps":[{"applied":0.2363,"point":"Building_1.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3365,"rule":"trim_hold"},{"applied":0.3049,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4053,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero and battery usable charge is tiny; keep baseline cooling, follow strategy battery, and hold DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms in B1 and B3 get the held trim of -0.1 from baseline; B2 is in band, so baseline holds. Batteries stay idle, as the strategy suggests.","status":"ok"},{"clamps":[{"applied":0.08,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.13,"rule":"trim_hold"},{"applied":0.0959,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are over 0.5 C cool so trims are held; batteries idle as price is not top and usable charge is tiny; tanks stay at zero.","status":"clamped"},{"clamps":[{"applied":0.0677,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1481,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled slightly; hold baseline cooling with trims held, batteries idle as price is low and no top-price hours now, tanks at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging ok: keep strategy battery charge 0.15, cooling at baseline with trims held near zero since rooms are within band.","status":"ok"},{"clamps":[{"applied":0.1801,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.33","requested":0.18,"rule":"deviation"},{"applied":0.0287,"point":"Building_2.cooling","reason":"indoor 23.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.029,"rule":"comfort"}],"fallback":null,"reason":"Overcooled B1 1.5C below setpoint gets trim; batteries follow strategy charge in cheap clean hour; no DHW; top price starts at hour 13.","status":"clamped"},{"clamps":[{"applied":0.0778,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.150","requested":0.228,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price window: charge batteries gently per strategy; overcooled Building_1 trim held, cooling near baseline; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1792,"point":"Building_1.cooling","reason":"trim ended, indoor 22.5 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.09,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets a trim held, cooling near baseline elsewhere; charge batteries gently in cheap hour per strategy, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 cooling trimmed for overcooling; all batteries follow strategy charge of 0.15 ahead of the top-price hours; tanks idle.","status":"ok"},{"clamps":[{"applied":0.1638,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.059 by at most 0.02 per hour","requested":0.2032,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price window; charge batteries at 0.15 per strategy, cooling and DHW stay at baseline.","status":"clamped"},{"clamps":[{"applied":0.2047,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.039 by at most 0.02 per hour","requested":0.2241,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 trim held at -0.019 within 0.5C band; keep baseline cooling, follow strategy battery charging in cheap hour; no top price now, no dhw.","status":"clamped"},{"clamps":[{"applied":0.2136,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.019","requested":0.233,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 9: no top price now, so hold batteries near strategy values; Building_1 trim eases from baseline, Building_2 idle-unoccupied at baseline, small charging in cheap hour.","status":"clamped"},{"clamps":[{"applied":0.2146,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"Building_1 is below its comfort band, so cooling rises above baseline and its trim ends; Building_3 charges gently ahead of top-price hours; others hold.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, end overcooling trim"}]},{"clamps":[],"fallback":null,"reason":"Holding baselines in all buildings; Building_3 charges 0.1 gently ahead of top-price hours 5-7, Building_1 and Building_2 batteries are near 0.95.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 2.5C but unoccupied-band logic keeps trim; batteries follow strategy; top price 4-6h ahead so hold charge; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 13 is not top-price and cheap hours follow, so batteries hold; trim Building_1 slightly is unnecessary, Building_3 strategy charge is small, keep baselines except clear overcool.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now; charge batteries gently in the cheap hour ahead of top-price hours 2-4, keep tank idle, and keep cooling at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cool but its trim cannot be applied near the band edge, so baseline cooling holds; batteries follow strategy, with a small charge in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 2.2 C while occupied, so cooling is trimmed 0.1 below baseline; batteries discharge evenly over the three top-price hours.","status":"ok"},{"clamps":[{"applied":0.5914,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.6912,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the two remaining top hours; cooling trim held for overcooled occupied Building_1; no grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge all usable battery charge, hold Building_1 cooling at the 0.1 trim, keep other cooling at baseline, tank idle.","status":"ok"},{"clamps":[{"applied":0.2045,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 26.4 C, trim held at 0.100","requested":0.304,"rule":"trim_hold"},{"applied":0.7036,"point":"Building_3.cooling","reason":"indoor 21.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.704,"rule":"comfort"}],"fallback":null,"reason":"Trim cooling in overcooled occupied buildings, hold batteries per strategy, no grid charging, tanks idle; district load near peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled so its cooling is trimmed slightly; batteries follow strategy discharge over top-price hours; tanks stay idle and grid charging is off.","status":"ok"},{"clamps":[{"applied":0.2676,"point":"Building_2.cooling","reason":"indoor 24.3 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.014","requested":0.2816,"rule":"trim_hold"}],"fallback":null,"reason":"Holding overcooled rooms at baseline due to band-edge rule; discharging batteries per strategy during the top-price hour; no DHW or grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with flat-ish plan: follow strategy batteries, hold cooling near baseline, no tank use, let envelope trim hold for Building_2.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is more than 0.5C overcooled, DHW held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle. Building_1 overcooled 2.9C below setpoint but occupied band logic holds baseline; keep baseline cooling, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is overcooled, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling holds baseline, with trims not needed since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day and all buildings near or above setpoint with no overcooling; hold batteries idle, keep baseline cooling and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling near baseline, no trim needed as rooms are within band and not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; trim Building_3 cooling slightly for overcooling, hold Building_1 at baseline near its band edge, and keep Building_2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling near baseline since rooms are within band, dhw off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; cooling follows baseline since no building is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; buildings 1 and 2 are near setpoint so baseline cooling holds, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, Building_1 overcooled slightly but within 0.5C of band so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle and cooling follows baseline; Building_1 is 1.67C below setpoint so a small trim applies.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 2.3C below setpoint so trim cooling held, DHW tanks idle, baseline cooling otherwise.","status":"ok"},{"clamps":[{"applied":0.4061,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.44,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 2.08 C below setpoint, so it is overcooled and cooling is trimmed below baseline.","status":"clamped"},{"clamps":[{"applied":0.4755,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.5,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 1.7C, so trim cooling deeper within envelope; others near baseline with no trim needed.","status":"clamped"},{"clamps":[{"applied":0.574,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.7057,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; cooling holds baseline with Building_1 trim held at -0.132 while it is overcooled.","status":"clamped"},{"clamps":[{"applied":0.6772,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.8089,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 1.85C below setpoint so trim held, cooling at baseline; DHW and other cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.8546,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.855,"rule":"comfort"},{"applied":0.7229,"point":"Building_1.cooling","reason":"indoor 22.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.8546,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.2C below setpoint so trim held at -0.132 with cooling baseline, dhw and battery at baseline.","status":"clamped"},{"clamps":[{"applied":0.8319,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.95,"rule":"comfort"},{"applied":0.9582,"point":"Building_3.cooling","reason":"indoor 20.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":1.0,"rule":"comfort"}],"fallback":null,"reason":"Building 1 and 3 are cold and occupied, so cooling rises; Building 1's trim ends. Flat prices mean batteries stay idle and tanks stay at zero.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, trim ends"}]},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Buildings 1 and 3 are cold so cooling stays at baseline, Building 2 unoccupied and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with overcooled Building_1 (4.5C below setpoint); hold batteries, trim cooling modestly, keep dhw idle and let baseline run elsewhere.","status":"ok"},{"clamps":[{"applied":0.3574,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.425,"rule":"trim_hold"}],"fallback":null,"reason":"Rooms are cold or near setpoint, flat prices give no battery arbitrage, and district load is well below target, so baseline holds.","status":"clamped"},{"clamps":[{"applied":0.2731,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.3407,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline with held trim for overcooled Building_1, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.2152,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2828,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as suggested. Building_1 is overcooled, so the held trim stays and cooling is kept at baseline.","status":"clamped"},{"clamps":[{"applied":0.1475,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2151,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 2.4C, trim held at -0.068 with no deeper cut needed; others at baseline.","status":"clamped"}],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,2.0,3.0,4.0,5.0,5.0,5.0,5.0,5.0,6.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,9.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,19.0,21.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,38.0,39.0,40.0,41.0,42.0,44.0,45.0,46.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,48.0,49.0,50.0,51.0,53.0,55.0,57.0,60.0,63.0,65.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,68.0,68.0,69.0,69.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,71.0,72.0,73.0,74.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,81.0,83.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,88.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,98.0,99.0,100.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,102.0,104.0,105.0,107.0,108.0,108.0,108.0,108.0,108.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,111.0,113.0,114.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,116.0,117.0,117.0,118.0,120.0,121.0,123.0,125.0,126.0,127.0,128.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,133.0,133.0,134.0,136.0,138.0,140.0,142.0,144.0,146.0,148.0,150.0,151.0],"district_grid_kwh":[1.428,1.505,1.446,1.419,1.418,1.731,2.889,2.572,9.774,4.524,2.596,4.693,3.205,3.072,3.749,5.508,4.518,2.425,3.846,4.798,6.35,5.199,4.935,5.313,2.662,1.693,1.42,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.504,6.967,7.557,5.909,6.901,4.779,5.918,5.252,5.194,3.539,2.73,2.239,1.924,1.707,1.708,1.824,1.704,3.322,4.782,0.983,1.686,1.836,1.408,7.666,1.84,4.907,5.783,4.224,4.7,3.44,2.933,4.038,2.015,1.998,1.37,1.274,1.608,2.363,1.808,2.916,3.695,2.42,3.176,1.364,1.75,0.977,1.479,0.677,0.393,-0.773,0.408,1.462,3.514,3.092,3.252,2.845,3.3,3.352,2.926,2.89,2.757,2.646,3.336,1.638,2.291,3.892,1.512,0.613,0.276,1.015,1.716,1.858,2.26,1.407,1.653,3.85,5.468,6.605,3.946,2.36,2.645,2.22,3.181,2.766,1.837,3.031,1.625,3.471,11.931,2.928,3.569,7.487,2.738,1.202,1.25,1.579,2.745,0.947,0.949,2.115,3.098,4.646,12.543,4.061,2.756,2.552,2.914,4.076,3.357,3.142,2.845,2.813,5.519,2.823,4.008,1.616,0.796,4.509,3.156,3.192,3.361,0.9,0.925,2.722,5.463,3.815,4.402,3.15,1.961,2.142,1.903,2.941,2.346,2.285,2.268,3.978,3.287,1.919,2.43,0.757,0.633,1.133,0.777,1.626,2.262,1.034,1.302,1.973,4.68,4.83,4.41,3.23,2.838,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.474,1.431,2.602,2.919,9.291,6.191,5.687,4.933,5.866,6.606,5.413,3.852,3.693,3.788,2.651,2.203,2.125,2.161,1.742,1.507,2.93,1.578,1.493,1.265,0.886,1.289,1.072,2.349,10.873,3.493,4.669,11.31,6.567,7.595,6.376,4.609,3.643,3.227,2.574,2.608,3.106,3.289,1.577,2.637,1.61,7.204,3.648,6.248,4.07,2.427,1.514,1.609,2.848,8.085,2.861,3.338,2.913,5.471,4.896,3.87,9.817,2.286,3.437,2.407,2.315,3.332,3.169,3.085,3.119,3.124,1.675,1.227,2.877,1.673,2.263,1.769,2.995,3.665,3.748,8.384,5.056,6.951,8.503,7.67,8.132,10.967,3.634,2.183,1.974,3.385,2.773,2.691,2.807,4.156,1.783,1.568,0.691,0.902,0.956,1.551,1.476,3.515,2.834,3.169,2.196,4.991,6.073,5.044,4.333,5.147,2.751,2.909,3.262,3.239,2.737,2.673,2.832,3.2,4.736,3.033,0.954,1.079,0.792,2.955,2.758,0.963,0.88,1.239,2.14,4.912,5.635,5.634,3.481,3.157,3.811,3.792,3.821,3.261,3.025,4.134,2.114,2.323,4.15,6.713,3.861,3.027,2.275,2.331,2.004,4.659,1.901,2.218,3.854,5.818,4.534,4.253,5.515,2.645,4.409,2.27,2.524,2.145,1.938,1.769,1.797,1.846,4.154,2.309,2.566,2.084,1.979,7.515,3.188,4.44,3.907,7.421,6.03,5.245,5.283,5.762,4.365,2.495,1.784,1.801,1.728,1.272,1.175,1.383,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.944,2.007,3.042,3.178,3.362,3.151,3.036,4.838,6.005,2.505,2.439,3.625,2.946,1.739,3.903,6.805,3.201,2.344,2.283,2.423,3.741,5.53,3.146,5.541,3.05,2.84,3.449,3.476,3.132,3.397,1.371,1.888,3.469,5.529,4.477,3.341,1.959,1.397,2.822,3.085,5.089,0.876,0.72,2.012,2.756,3.247,3.272,2.968,1.98,3.171,3.866,4.588,3.022,2.57,2.625,3.946,1.838,3.059,2.711,1.507,1.077,3.114,2.421,0.864,1.091,0.459,1.278,1.649,2.642,3.106,3.882,6.143,3.819,4.244,2.213,1.919,2.229,3.642,3.194,2.829,3.078,3.85,1.565,1.006,0.934,3.23,1.987,2.222,3.141,1.958,2.888,2.884,7.895,4.354,3.735,4.013,3.742,3.189,3.619,3.916,1.996,3.021,2.325,4.041,7.961,4.826,5.108,2.581,1.491,4.181,3.019,2.155,3.687,4.385,3.677,2.643,5.084,5.674,4.553,4.148,2.807,2.303,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.213,9.224,2.975,4.917,3.697,7.391,11.838,6.626,5.944,6.997,5.246,4.401,3.69,3.356,2.847,2.348,2.359,1.597,1.499,1.796,2.04,2.114,3.156,2.921,2.058,4.002,1.611,7.747,6.152,2.637,4.197,9.548,7.193,7.326,4.817,4.508,4.246,4.569,2.35,2.362,2.212,2.98,1.562,3.133,5.132,5.441,3.648,2.376,1.222,1.928,1.838,3.238,3.061,5.031,1.442,1.886,1.857,2.741,6.318,4.152,4.48,3.781,2.254,2.778,2.272,3.342,3.567,3.858,3.028,2.794,2.459,1.78,2.303,1.134,1.095,2.39,2.704,2.749,1.134,1.588,2.732,3.984,3.963,4.901,3.266,8.24,2.992,3.025,3.464,3.241,3.063,2.967,5.536,3.09,3.041,4.12,2.2,1.085,1.641,0.605,0.701,2.914,2.558,4.346,2.592,6.712,14.271,5.214,7.633,3.054,3.327,2.024,3.599,2.971,1.466,3.075,4.166,6.521,4.009,7.423,7.13,4.001,4.062,4.564,4.337,6.241,3.048,4.126,3.755,5.978,7.441,4.61,18.966,4.239,2.863,2.47,4.851,4.74,2.837,3.257,2.994,5.398,3.205,2.903,3.41,2.945,5.975,4.262,3.399,4.631,2.937,3.751,3.823,13.567,6.44,4.501,5.053,5.277,4.022,2.382,2.05,1.522,1.483,1.472,1.598,1.704,3.256,3.394,6.398,4.925,2.867,4.312,5.35,6.469,7.03,8.005,8.103,7.187,5.896,5.316,5.103,5.225],"emission_kg":[0.575,1.151,1.685,2.206,2.736,3.403,4.545,5.603,9.833,11.772,12.988,15.276,16.851,18.349,20.147,22.744,24.823,25.913,27.601,29.693,32.489,34.814,37.033,39.388,40.535,41.209,41.753,42.54,43.421,44.372,45.326,45.878,47.172,47.781,48.997,50.669,54.776,57.918,60.56,63.861,67.373,70.085,73.196,75.321,77.964,80.37,82.752,84.362,85.64,86.638,87.45,88.134,88.798,89.504,90.177,91.526,93.52,94.099,95.02,96.08,96.852,100.993,101.96,104.514,107.503,109.674,112.07,113.786,115.236,117.248,118.234,119.222,119.883,120.468,121.132,122.042,122.794,124.103,125.744,126.91,128.546,129.259,130.213,130.743,131.535,131.95,132.249,132.354,132.565,133.312,135.106,136.702,138.398,139.861,141.518,143.099,144.384,145.57,146.636,147.683,149.044,149.759,150.825,152.699,153.464,153.815,154.261,155.07,156.068,157.067,158.271,159.011,159.873,161.866,164.662,167.982,169.936,171.06,172.283,173.308,174.69,175.816,176.537,177.66,178.26,179.552,184.28,185.504,187.093,190.513,191.784,192.404,193.226,194.101,195.511,196.029,196.613,197.661,199.16,201.343,207.112,208.948,210.168,211.246,212.443,214.018,215.272,216.448,217.544,218.658,220.951,222.126,223.918,224.704,225.196,227.312,228.824,230.388,232.03,232.469,233.047,234.327,236.822,238.497,240.437,241.829,242.676,243.588,244.391,245.503,246.354,247.164,248.002,249.515,250.857,251.749,252.953,253.346,253.794,254.5,255.006,255.762,256.832,257.324,257.94,258.863,261.05,263.303,265.372,266.893,268.202,269.149,270.028,270.715,271.27,271.789,272.302,272.845,273.871,274.616,276.233,276.9,277.559,278.78,280.176,284.642,287.561,290.212,292.504,295.209,298.225,300.696,302.484,304.191,305.866,306.952,307.834,308.635,309.384,309.975,310.485,311.474,312.016,312.542,312.993,313.447,314.007,314.519,315.567,320.578,322.222,324.425,329.759,332.853,336.335,339.209,341.293,342.925,344.324,345.426,346.505,347.737,348.996,349.59,350.562,351.162,353.89,355.295,357.773,359.341,360.313,361.033,361.805,363.15,367.034,368.416,370.04,371.46,374.131,376.521,378.415,383.152,384.211,385.708,386.745,387.685,388.989,390.224,391.446,392.714,394.045,394.796,395.431,396.711,397.475,398.56,399.418,400.863,402.61,404.378,408.283,410.597,413.735,417.613,421.183,425.035,430.174,431.84,432.844,433.735,435.167,436.307,437.441,438.674,440.625,441.52,442.314,442.828,443.488,444.119,444.991,445.758,447.573,449.015,450.602,451.684,454.117,457.095,459.59,461.742,464.26,465.589,466.91,468.349,469.674,470.762,471.794,472.952,474.364,476.606,478.108,478.711,479.395,479.872,481.297,482.616,483.307,483.722,484.302,485.302,487.574,490.171,492.787,494.397,495.792,497.415,498.936,500.398,501.589,502.664,504.158,504.975,505.925,507.681,510.541,512.238,513.606,514.661,515.7,516.657,518.705,519.54,520.502,522.162,524.681,526.651,528.526,530.983,532.134,533.963,534.888,535.84,536.642,537.359,538.017,538.698,539.406,541.01,541.895,542.858,543.674,544.535,547.714,549.075,550.957,552.617,555.753,558.304,560.524,562.784,565.305,567.278,568.414,569.216,570.063,570.863,571.459,571.998,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,574.715,576.938,578.936,579.954,581.474,583.1,584.783,586.334,587.804,590.201,593.243,594.535,595.819,597.717,599.292,600.236,602.348,606.008,607.684,608.886,610.043,611.247,613.077,615.83,617.43,620.251,621.765,623.133,624.666,626.191,627.56,629.058,629.679,630.578,632.319,635.15,637.477,639.199,640.223,641.09,642.59,644.247,646.918,647.374,647.748,648.783,650.18,651.781,653.35,654.75,655.658,657.047,658.786,660.711,661.959,663.084,664.314,666.273,667.213,668.783,670.167,670.985,671.725,673.373,674.737,675.237,675.829,676.078,676.77,677.662,679.092,680.775,682.876,686.18,688.221,690.485,691.622,692.633,693.795,695.724,697.453,699.015,700.719,702.859,703.717,704.296,704.878,706.618,707.693,708.89,710.573,711.618,713.161,714.701,718.931,721.288,723.323,725.478,727.437,729.033,730.65,732.316,733.113,734.295,735.193,736.786,740.266,742.38,744.743,746.057,746.777,748.836,750.329,751.384,753.157,755.252,756.997,758.241,760.602,763.188,765.255,767.127,768.354,769.329,770.284,770.956,771.531,772.146,772.65,773.225,774.068,775.795,777.801,782.368,786.01,787.273,789.437,791.116,794.578,800.188,803.334,806.154,809.465,811.913,813.929,815.606,817.086,818.294,819.233,820.116,820.701,821.227,821.846,822.538,823.268,824.392,825.448,826.305,827.834,828.515,831.842,834.562,835.871,837.787,842.173,845.406,848.618,850.707,852.677,854.532,856.492,857.487,858.501,859.385,860.519,861.131,862.414,864.709,867.292,869.126,870.314,871.092,872.039,873.125,874.74,876.272,878.805,879.553,880.503,881.435,882.805,885.939,887.991,890.212,892.055,893.125,894.329,895.269,896.584,897.979,899.495,900.726,901.903,902.972,903.765,904.866,905.386,905.959,907.075,908.357,909.672,910.214,910.974,912.275,914.174,916.064,918.428,920.002,923.831,925.152,926.406,927.77,929.016,930.185,931.307,933.451,934.701,935.982,937.723,938.701,939.278,940.175,940.984,941.758,943.189,944.451,946.603,947.893,951.224,958.288,960.875,964.635,966.073,967.554,968.389,969.831,970.966,971.51,972.67,974.312,977.049,978.847,982.31,985.509,987.365,989.296,991.502,993.616,996.636,998.091,1000.034,1001.781,1004.536,1007.953,1010.079,1018.85,1020.739,1021.949,1022.953,1024.731,1026.42,1027.419,1028.574,1029.667,1031.719,1032.971,1034.087,1035.382,1036.574,1039.119,1040.996,1042.529,1044.654,1046.008,1047.73,1049.479,1055.672,1058.55,1060.551,1062.805,1065.142,1066.942,1068.015,1068.959,1069.663,1070.352,1071.028,1071.768,1072.548,1074.005,1075.466,1077.993,1079.949,1081.146,1083.009,1085.407,1088.41,1091.707,1095.467,1099.269,1102.612,1105.359,1107.859,1110.218,1112.562],"kpi":{"all_time_peak_average":0.959269,"annual_normalized_unserved_energy_total":0.019385,"carbon_emissions_total":0.96101,"cost_total":0.919048,"daily_one_minus_load_factor_average":0.965129,"daily_peak_average":0.92641,"discomfort_cold_delta_average":0.464022,"discomfort_cold_delta_maximum":3.109464,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.060087,"discomfort_hot_delta_average":0.255475,"discomfort_hot_delta_maximum":5.110755,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.016849,"discomfort_proportion":0.076937,"electricity_consumption_total":0.969511,"monthly_one_minus_load_factor_average":0.999678,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684992,"ramping_average":1.007618,"zero_net_energy":0.968237},"run":"citylearn_challenge_2023_phase_2_local_evaluation_agent_citylearn_20261022T222703Z","steps":719},"agent_run":{"budget_stopped":false,"budget_usd":2.0,"calls":719,"clamped_hours":312,"cost_usd":0.5315,"envelope":{"battery_rate_per_step":0.5,"comfort_band_k":2.0,"comfort_margin_k":0.5,"cooling_max":1.0,"cooling_max_deviation":0.15,"cooling_min":0.0,"cooling_rate_per_step":0.35,"dhw_rate_per_step":0.5,"overcool_guard_unoccupied":true,"peak_forecast_days":2,"peak_limit":true,"peak_target_fraction":1.0,"soc_max":0.95,"soc_min":0.1,"spread_check":true,"storage_max":1.0,"storage_min":-1.0,"trim_hold":true,"trim_hold_c":0.5,"trim_min_depth":0.002,"trim_release_step":0.02},"fallback_hours":0,"model_id":"claude-haiku-5-5","model_key":"haiku","supervisor":"live","trim_ends_early":7},"agent_sample":false,"baseline":{"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.725,0.633,0.607,1.001,1.608,0.534,4.653,0.483,-0.357,1.817,0.266,0.219,0.945,2.824,3.039,2.14,1.419,2.336,3.167,1.823,1.303,2.042,1.886,1.125,0.744,0.671,1.713,1.752,1.766,0.572,-0.245,-0.069,0.819,1.462,6.669,4.144,2.167,2.167,3.119,2.733,3.531,2.36,3.981,2.93,3.446,2.771,1.996,1.597,1.345,1.167,1.085,1.056,0.979,1.281,1.827,-0.118,-0.286,-0.743,-0.767,-0.321,-0.061,2.823,3.203,2.159,1.652,1.282,0.964,1.54,0.677,1.02,0.69,0.649,0.566,0.452,0.405,1.394,0.36,0.824,0.441,0.178,0.139,0.075,0.006,0.084,-0.175,-0.312,0.37,2.084,1.383,1.363,1.519,1.005,1.032,1.204,0.834,0.908,0.841,0.74,1.702,0.649,1.501,2.044,0.892,0.065,-0.434,-0.302,-0.145,0.399,0.651,1.341,1.712,3.301,2.332,2.04,1.413,1.158,1.266,1.144,0.775,0.658,1.104,1.109,0.93,1.45,5.714,0.799,0.646,5.824,0.119,-0.412,-0.309,-0.341,0.568,-0.373,0.001,3.061,1.979,2.83,8.927,2.165,1.511,1.13,1.289,1.736,1.238,0.991,0.848,0.767,1.873,0.998,2.518,0.266,0.062,5.66,1.286,1.119,1.178,0.97,0.791,2.262,1.689,1.153,2.04,0.959,0.651,0.561,0.49,0.432,0.383,0.35,0.349,3.199,0.452,0.203,1.584,-0.29,-0.446,-0.411,-0.314,0.182,0.323,0.609,0.97,1.585,1.969,1.98,1.566,1.143,0.818,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.385,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.659,1.535,1.25,1.57,1.246,1.262,1.367,0.988,0.878,2.232,0.811,0.668,0.35,-0.269,-0.223,-0.154,0.455,0.885,1.278,1.827,5.826,2.385,3.597,2.451,2.338,1.022,1.687,1.019,1.279,1.568,1.391,1.191,1.042,0.981,0.954,1.91,1.899,0.785,0.426,0.228,0.271,0.751,8.035,2.459,2.762,2.716,2.511,1.773,1.42,1.134,0.999,1.867,1.17,1.283,1.227,1.083,0.976,0.919,0.912,0.799,-0.092,-0.027,0.777,1.121,0.266,0.716,1.03,3.647,8.064,3.658,3.461,2.842,2.439,1.622,1.303,1.625,1.095,1.156,1.108,0.973,0.882,0.84,0.823,0.656,0.496,-0.416,-0.483,-0.313,-0.121,0.188,0.744,2.478,3.105,2.534,2.482,3.192,2.715,1.592,1.289,1.509,1.228,1.478,1.224,0.987,0.851,0.773,1.287,3.362,0.391,-0.307,-0.371,-0.205,1.991,1.839,-0.232,0.265,0.758,1.208,2.194,2.594,2.069,1.662,1.447,1.026,1.21,1.481,1.253,1.038,2.151,0.886,0.84,0.753,1.616,-0.171,-0.16,-0.111,0.282,0.224,2.107,1.77,1.998,3.705,2.641,2.159,1.815,3.686,1.274,0.984,1.183,1.504,1.333,1.125,0.968,0.901,0.91,2.903,0.721,0.62,0.328,0.068,4.92,0.98,1.011,0.264,3.799,3.082,1.976,1.843,2.38,1.544,0.885,0.661,0.591,0.537,0.496,0.46,0.429,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.341,1.27,1.438,1.167,1.319,1.597,1.361,1.153,1.011,3.963,1.66,0.809,0.571,0.041,0.632,0.17,0.622,4.299,0.693,1.403,1.806,2.239,2.031,4.027,1.332,4.166,1.122,0.797,0.979,1.289,1.158,1.903,0.884,0.82,0.787,0.652,0.721,1.083,0.014,-0.078,0.686,0.25,0.981,0.693,0.785,0.992,1.271,2.112,1.4,1.165,0.914,0.824,0.827,2.287,1.079,0.924,1.733,2.043,0.857,2.248,1.565,-0.023,-0.235,0.481,-0.126,-0.062,0.121,0.666,1.976,1.994,0.888,1.214,1.11,1.902,1.166,2.755,1.131,1.116,1.039,0.9,1.23,0.752,0.722,0.544,0.213,-0.372,-0.313,1.116,0.465,0.497,1.233,1.444,2.514,2.845,5.034,2.238,1.363,2.117,1.214,0.877,1.089,1.408,1.226,1.032,0.88,2.685,1.355,0.84,0.944,-0.187,0.317,2.427,1.013,0.481,0.986,2.991,3.158,2.811,2.549,2.184,2.534,1.661,1.244,1.04,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.75,1.634,4.402,8.38,2.747,2.775,2.818,2.972,2.443,1.928,1.857,1.732,1.079,1.169,0.69,0.608,0.884,1.063,1.069,0.909,0.01,-0.139,0.892,0.124,7.091,3.778,0.137,1.484,3.241,3.902,2.334,2.013,1.9,1.763,3.035,0.973,1.13,1.417,0.981,0.892,1.095,4.255,2.278,2.019,0.635,-0.163,0.882,-0.051,0.116,0.547,1.941,1.163,1.806,1.093,0.844,3.574,1.744,2.639,2.274,0.928,1.121,1.464,1.309,1.549,2.185,1.682,1.743,1.495,0.39,-0.05,0.108,0.011,0.15,0.716,0.798,1.338,1.966,2.61,1.711,1.991,2.574,1.412,1.201,1.514,1.213,1.31,1.214,1.003,0.926,0.874,0.908,1.117,0.402,-0.219,-0.236,-0.115,-0.644,-0.548,0.954,2.208,3.8,2.127,1.98,2.977,2.506,5.466,1.424,1.916,1.306,1.381,1.271,1.092,0.961,1.979,3.683,2.124,0.769,-0.199,-0.153,2.156,0.873,0.736,3.454,2.032,3.027,2.922,2.843,4.405,2.218,8.411,1.397,1.116,1.28,1.62,3.058,1.286,1.085,1.004,1.852,1.138,0.765,1.284,0.69,1.379,1.5,0.84,1.08,1.649,3.27,3.253,2.696,2.846,2.022,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.571,3.406,1.136,1.332,1.962,2.818,2.816,3.383,3.406,2.488,2.608,2.603,2.726,1.306],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.14,21.16,21.58,21.71,21.76,21.9,22.21,23.79,24.19,24.27,24.25,23.54,23.35,23.15,22.93,22.99,22.29,22.35,22.63,22.06,20.25,18.2,17.59,17.46,17.51,17.65,17.79,18.04,18.13,18.44,18.59,18.56,20.71,21.5,22.96,23.44,23.74,23.72,22.23,20.12,20.13,21.89,22.52,23.0,20.89,22.58,23.02,22.51,22.65,22.93,23.37,23.75,23.96,24.27,23.2,23.56,23.64,24.86,24.07,24.29,25.23,24.97,25.47,24.52,23.58,23.53,23.56,23.55,23.65,23.76,21.56,22.35,21.61,21.68,21.78,21.47,21.93,21.67,21.38,21.87,22.57,23.24,23.89,24.12,23.98,23.68,23.14,22.78,22.29,22.44,22.58,22.79,22.94,23.07,23.18,23.32,23.54,21.49,21.32,21.46,21.65,21.21,21.59,21.82,20.68,22.27,23.42,23.79,24.49,24.34,26.05,26.65,25.5,25.71,24.52,24.03,23.16,23.15,23.37,22.4,21.27,21.29,21.49,21.77,22.04,21.72,22.17,21.75,22.53,23.09,23.28,23.51,23.4,23.21,24.0,25.66,25.96,26.23,26.3,25.78,26.12,26.43,26.71,26.93,27.22,27.53,27.84,28.04,26.6,27.52,28.11,27.36,27.9,27.97,27.88,27.73,27.35,27.01,26.64,26.32,26.01,26.06,26.05,26.08,26.18,26.32,26.5,26.37,26.54,26.63,26.71,26.79,27.0,26.91,27.05,25.78,26.02,25.81,25.44,25.07,24.61,24.11,23.32,23.17,22.65,22.64,22.64,22.69,22.67,22.67,20.95,21.2,20.46,20.43,20.53,20.71,20.78,21.05,21.32,21.67,23.0,23.06,23.21,22.98,22.72,22.5,22.27,23.27,21.93,21.6,21.78,21.99,23.38,22.63,22.48,21.35,20.19,20.17,20.3,20.52,20.57,20.73,20.62,20.23,21.08,21.71,22.3,22.33,22.16,20.54,19.95,20.43,20.7,21.17,21.46,21.73,21.96,22.18,20.54,20.92,20.14,20.16,20.35,20.6,20.78,20.94,21.13,22.84,22.95,23.03,22.59,22.53,22.27,22.06,21.58,20.99,20.92,21.06,21.25,21.23,21.7,21.93,19.91,20.84,20.15,20.23,20.44,20.71,20.95,21.15,21.29,21.26,23.1,23.51,23.71,23.6,23.38,22.99,22.53,22.16,21.82,21.93,21.9,21.75,22.01,22.22,22.41,21.49,20.35,20.42,20.67,20.96,21.26,21.52,21.51,22.1,23.5,23.81,23.87,24.66,25.34,25.84,25.85,25.65,25.32,24.02,22.96,22.82,22.88,23.05,23.24,22.31,21.05,21.04,21.2,20.93,21.43,21.61,21.84,21.73,23.32,23.55,23.77,23.65,24.25,23.01,22.64,22.34,21.84,21.92,22.09,22.3,21.57,22.18,22.51,21.69,20.44,20.42,20.55,20.78,20.98,21.26,20.6,21.47,22.9,23.09,23.38,21.29,22.35,22.9,24.51,24.56,24.06,24.45,24.67,24.37,24.79,25.08,25.32,25.47,25.62,25.78,25.95,26.13,26.52,26.62,26.86,26.91,26.86,26.73,25.93,25.96,26.25,26.8,27.36,28.05,28.68,29.45,29.91,28.54,26.84,25.3,24.9,23.62,22.06,21.89,21.86,21.93,20.97,21.31,21.49,21.96,23.28,23.38,23.48,23.31,23.83,23.23,22.39,22.11,21.68,20.93,20.24,21.54,20.58,21.51,21.87,21.04,19.88,19.96,20.08,20.29,20.46,20.69,20.82,21.34,22.5,22.89,23.1,23.02,23.48,23.27,23.23,23.28,23.32,23.4,23.36,23.38,23.38,23.44,23.51,22.53,21.06,21.06,21.2,21.01,21.22,21.56,20.93,21.01,22.81,23.42,23.57,23.71,23.68,23.4,22.35,22.23,22.87,23.33,23.54,23.62,23.59,23.65,22.62,22.34,21.22,21.16,21.33,21.52,21.68,21.85,22.08,22.59,23.98,24.09,23.9,23.67,23.56,23.42,22.93,21.13,20.92,21.34,21.85,22.18,22.3,22.49,22.66,21.73,20.46,20.48,20.65,20.93,20.41,20.93,21.3,21.79,23.17,23.46,22.63,22.98,23.52,23.36,21.23,20.93,21.06,21.32,21.5,21.67,21.87,22.09,22.28,21.49,22.33,22.67,22.92,23.11,23.33,23.5,22.38,21.82,22.29,22.49,22.82,22.24,22.28,21.8,21.08,20.93,20.61,20.34,20.53,21.16,21.49,19.42,19.21,20.14,19.59,20.9,21.43,20.59,20.14,20.26,20.34,22.17,22.36,22.42,22.47,21.65,22.26,23.68,21.91,20.06,20.12,20.63,20.81,20.65,20.89,20.55,21.24,20.48,19.56,20.43,20.62,20.03,19.59,19.38,19.7,20.32,21.85,21.94,22.11,21.98,21.8,21.44,21.26,21.13,22.02,23.34,21.27,21.49,21.09,21.51,21.8,20.98,19.78,19.85,19.96,19.75,19.96,20.19,20.39,20.96,22.35,22.4,22.57,22.22,22.05,21.89,21.32,20.81,21.03,21.97,21.68,21.63,21.77,21.91,20.46,20.85,20.03,20.04,20.24,20.49,20.72,20.89,20.99,21.37,22.79,23.07,23.27,24.88,25.59,24.33,22.6,21.87,23.34,23.75,20.79,21.59,21.56,21.9,19.95,20.79,20.01,20.09,20.27,20.55,20.65,20.07,20.54,20.62,22.52,22.92,20.17,21.77,22.12,21.39,21.3,21.0,20.78,20.88,20.3,20.8,20.61,21.01,21.3,20.5,19.36,18.87,19.35,19.71,20.04,20.06,20.34,20.75,21.66,20.86,21.64,19.93,21.48,21.53,21.34,20.87,21.92,22.87,21.36,21.34,19.3,18.14,18.36,19.84,20.77,21.73,22.08,22.33,22.51,22.73,22.15,22.49,21.45,21.22,21.47,21.4,21.16,20.79,20.34,19.9,19.57,20.24,20.04,20.14,20.23,20.52]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.345,2.934,0.672,0.633,0.669,0.97,0.787,1.197,2.665,1.802,1.708,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.471,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.455,1.85,0.977,0.827,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.85,0.532,0.268,0.202,0.232,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.428,0.723,1.826,0.673,0.718,0.518,0.511,0.503,0.58,0.518,0.23,0.185,0.187,0.202,0.231,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,1.16,1.171,1.317,1.129,0.737,0.781,0.715,0.584,0.374,0.514,0.278,0.185,0.187,0.202,0.231,0.298,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.822,0.925,1.038,1.108,0.679,0.552,0.488,0.412,0.7,0.563,0.186,0.185,0.187,0.202,0.231,1.118,0.35,0.594,1.127,0.674,0.467,0.628,0.712,0.926,1.0,1.022,1.022,0.857,0.653,0.745,0.511,0.528,0.67,0.764,0.686,0.185,0.187,0.202,0.231,0.24,0.971,0.4,0.494,0.514,0.822,0.672,0.699,0.885,0.926,0.955,1.009,0.942,0.855,0.746,0.725,0.619,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.738,0.704,0.896,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.257,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.886,0.916,1.168,9.8,1.415,1.521,1.533,1.541,1.605,1.062,0.854,0.539,0.654,0.746,0.36,0.205,0.227,0.235,0.25,0.275,0.345,0.705,2.349,0.969,1.006,0.935,0.907,1.331,1.137,1.166,1.158,1.182,1.092,0.82,0.642,0.518,0.525,0.6,0.753,0.396,0.185,0.187,0.214,0.249,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,1.215,1.205,1.706,1.345,0.994,0.857,0.933,0.999,0.492,0.207,0.225,0.471,0.223,0.232,0.254,0.353,0.554,0.544,0.592,0.517,0.843,0.679,0.668,1.592,1.638,0.706,0.994,1.2,0.983,1.252,0.897,1.846,0.524,0.596,0.664,0.198,0.187,0.202,0.231,0.414,0.589,2.082,0.685,1.01,0.714,0.885,0.797,0.929,1.012,1.021,2.391,1.077,1.195,0.806,0.751,0.616,0.448,0.681,0.483,0.185,0.187,0.206,0.24,0.452,0.622,6.144,3.19,1.807,1.768,0.757,0.853,1.282,1.227,1.225,1.287,1.232,0.937,0.991,1.101,0.608,0.452,0.497,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.163,2.019,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.459,0.385,0.638,0.576,0.185,0.192,0.22,0.253,2.199,0.708,0.975,2.712,0.878,0.926,2.237,1.089,1.578,1.481,1.102,0.808,0.802,0.705,0.748,0.601,0.35,0.435,0.696,0.387,0.185,0.187,0.202,0.231,0.278,6.647,1.482,1.563,0.569,0.533,0.915,2.424,6.174,0.663,0.577,0.416,0.357,0.305,0.443,0.45,0.233,0.306,0.613,0.287,0.185,0.187,0.202,0.231,0.252,0.309,0.462,0.816,0.836,2.079,2.033,0.354,0.376,0.551,0.778,0.395,0.796,0.526,0.613,0.496,0.507,0.597,0.66,0.291,0.185,0.187,0.202,0.231,0.266,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,1.565,1.265,0.827,2.076,0.823,0.744,0.702,0.569,0.479,0.63,0.658,0.185,0.187,0.202,0.231,0.359,2.37,0.984,1.299,0.681,0.976,1.447,1.103,1.875,1.984,0.872,1.098,1.164,0.918,0.71,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.481,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.068,0.766,2.297,0.715,1.178,1.8,1.831,1.158,2.944,1.33,2.405,1.014,1.124,0.708,0.401,0.798,0.713,0.186,0.188,0.216,0.248,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,1.583,1.483,0.616,0.58,0.718,0.739,0.65,0.492,0.441,0.33,0.245,0.249,0.247,0.257,0.279,0.369,0.475,0.589,0.698,0.664,0.687,0.862,0.821,0.952,1.007,1.017,1.095,1.025,0.991,0.888,0.851,5.033,0.691,0.413,0.351,0.226,0.232,0.241,0.267,0.467,0.748,1.804,0.926,0.907,1.525,0.928,1.054,1.164,1.302,1.39,1.489,3.266,1.215,1.019,0.949,0.94,0.648,0.664,0.402,0.288,0.242,0.258,0.281,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,1.592,1.718,1.883,1.726,1.224,1.008,1.208,1.098,1.366,0.579,1.241,0.361,0.264,0.277,0.302,1.734,0.617,1.13,1.053,1.231,1.078,1.197,1.483,2.018,1.833,1.453,1.494,1.359,1.588,0.999,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.14,1.29,1.624,1.632,1.964,2.077,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.25,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.57,25.4,25.83,25.92,24.47,24.48,25.61,25.72,26.05,26.33,26.51,26.83,27.01,27.22,27.36,27.41,27.3,27.31,26.84,26.65,26.79,26.72,26.69,26.59,25.99,24.94,23.92,24.89,25.54,25.71,25.71,25.57,26.16,25.39,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.46,25.54,25.63,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.44,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.08,26.14,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.57,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.71,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.33,23.86,24.38,24.96,25.06,25.03,25.26,25.36,25.41,25.43,25.4,25.48,25.55,25.19,24.45,23.3,24.08,25.32,25.86,26.18,26.35,26.5,26.43,26.17,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.39,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,27.48,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,24.97,25.35,24.23,24.91,23.86,24.08,24.85,24.82,24.89,25.04,25.09,25.12,25.19,24.55,22.96,23.6,24.76,25.19,25.48,25.64,25.73,25.55,25.62,25.76,25.74,25.8,25.9,25.69,25.37,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.43,25.78,25.88,25.74,25.7,25.77,25.73,25.53,25.69,25.67,25.64,25.02,23.62,22.53,23.67,24.99,25.38,25.46,25.37,25.7,25.81,25.77,25.77,25.79,25.7,25.72,25.83,25.65,24.6,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.75,23.54,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.98,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.5,23.79,24.89,23.51,24.47,24.69,23.37,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.81,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,23.76,24.17,24.28,24.83,24.98,25.16,25.31,25.52,25.09,24.27,24.91,25.24,24.87,25.3,25.21,25.37,25.53,25.53,25.51,24.1,24.94,24.9,24.78,24.61,24.48,24.3,24.57,25.04,25.46,25.62,25.67,25.81,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.48,24.12,23.36,23.62,24.28,24.29,24.36,24.22,24.52,24.61,24.75,24.86,24.02,23.7,24.8,25.3,25.52,25.54,25.59,25.48,25.15,24.95,24.87,24.78,24.71,24.68,24.4,24.34,24.24,24.25,24.09,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,0.829,0.891,1.994,1.803,1.649,1.968,1.807,1.774,2.584,2.719,2.948,0.809,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.639,0.589,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.915,1.691,0.415,0.565,8.096,1.113,1.721,2.25,1.528,2.802,1.989,1.722,1.679,0.726,0.479,0.478,0.484,0.476,0.472,0.47,0.56,2.248,0.742,2.124,0.749,1.171,0.453,1.069,0.202,0.114,0.249,0.422,0.807,1.332,1.114,1.238,1.352,1.374,0.742,0.579,0.514,0.494,0.481,0.47,0.528,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.952,1.225,2.137,2.804,4.356,2.4,0.973,1.143,0.754,0.656,0.592,0.549,0.497,0.492,0.553,8.204,0.944,1.117,1.147,0.941,0.355,0.469,0.49,0.703,1.24,1.54,1.379,1.715,1.358,3.324,1.408,0.834,0.723,0.65,0.917,0.898,0.844,0.592,0.578,1.476,1.06,0.654,0.397,0.281,0.361,1.26,0.871,0.725,0.775,1.628,2.323,3.137,2.229,1.836,1.845,0.891,0.745,0.649,0.586,0.541,0.511,0.48,0.548,1.358,0.745,0.446,0.313,0.188,0.172,0.237,0.744,0.988,1.193,1.485,2.414,2.149,2.623,2.755,2.023,1.66,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.658,0.987,0.845,6.452,2.388,1.682,1.651,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.319,0.859,0.703,1.045,1.614,4.011,2.641,2.393,2.863,1.419,2.082,0.97,0.84,0.97,0.92,0.844,0.561,0.48,0.601,4.874,0.917,0.805,1.241,0.534,0.411,0.792,0.886,0.994,1.375,1.684,1.595,2.146,2.303,2.388,9.131,1.259,1.141,0.599,0.637,0.684,0.661,0.657,0.714,0.617,0.536,0.625,0.764,0.382,0.507,0.561,1.241,0.84,1.134,1.53,2.179,2.146,4.945,4.652,5.853,9.45,1.516,0.881,0.593,0.569,0.552,0.551,0.606,1.792,0.574,0.528,0.44,0.794,0.37,0.42,0.379,0.663,1.167,1.71,1.728,1.96,2.549,1.729,2.494,2.664,1.286,0.673,0.622,0.58,0.552,0.526,0.591,0.613,0.785,0.418,0.334,0.219,0.282,0.305,0.403,0.493,1.076,1.46,1.527,1.917,3.356,3.53,1.587,1.556,1.479,0.664,0.62,0.585,0.563,0.54,0.598,0.768,2.533,1.353,0.967,0.685,0.618,0.552,0.556,0.874,1.251,1.729,2.102,2.715,2.296,2.326,1.591,1.314,3.385,0.757,0.647,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.6,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.631,1.084,0.593,0.579,0.568,0.567,0.622,0.91,0.988,0.719,0.858,1.673,0.796,0.874,0.753,0.931,1.151,1.215,1.42,1.489,1.38,1.647,1.299,0.812,0.841,0.575,0.563,0.551,0.543,0.542,0.602,2.226,0.732,1.068,0.706,0.581,0.492,1.007,0.706,0.793,0.803,0.736,0.665,1.249,0.949,1.561,1.361,0.834,0.804,1.27,0.776,0.521,0.512,0.495,1.692,0.73,0.558,0.78,0.769,0.578,0.617,0.514,0.572,0.573,0.484,0.834,1.975,1.368,1.391,2.159,3.745,2.419,0.82,0.525,0.513,0.509,1.815,0.524,0.609,0.866,2.932,0.886,0.497,0.475,1.125,0.698,0.725,0.948,1.168,1.311,1.565,1.591,1.445,1.725,1.611,1.096,0.889,0.661,0.613,0.586,0.565,0.548,0.634,8.641,0.92,2.622,1.322,0.42,0.601,0.535,0.613,1.087,1.637,1.918,2.038,2.217,3.475,2.241,2.363,1.288,0.808,0.73,0.677,0.633,0.6,0.586,0.637,0.651,2.323,0.863,0.977,0.917,1.189,2.025,1.51,2.116,2.496,2.828,2.111,3.038,1.88,1.644,1.545,1.298,0.852,0.8,0.748,0.706,0.676,0.671,0.709,0.656,0.81,0.955,1.02,1.012,0.971,1.19,1.186,1.281,1.755,4.027,2.367,2.992,2.196,1.889,2.179,1.534,0.929,0.814,0.737,0.699,0.581,0.597,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.72,0.808,0.95,1.266,1.62,1.983,2.28,1.924,1.448,1.216,0.673,0.636,0.615,0.598,0.585,0.589,0.671,0.643,0.594,0.97,1.857,0.499,0.541,1.542,1.496,1.311,1.227,1.175,2.316,1.937,1.67,2.065,1.637,2.575,1.149,1.905,0.655,0.598,0.591,0.562,3.354,0.9,0.883,1.806,1.471,0.414,0.377,0.737,0.53,0.752,1.076,1.373,2.043,2.442,10.08,2.374,2.07,1.379,1.041,0.858,0.744,0.683,0.64,0.618,0.668,1.154,1.676,5.556,7.639,2.401,0.942,1.24,2.053,1.408,1.747,2.14,2.081,2.099,2.959,2.074,10.153,2.433,1.072,0.834,0.753,0.701,0.667,0.656,0.695,0.737,1.006,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.906,1.666,2.159,10.01,2.211,1.709,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.695],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.34,22.04,22.87,23.26,23.79,24.0,24.11,23.58,22.63,23.22,23.65,23.94,24.63,24.94,24.62,25.03,25.49,25.27,24.87,24.59,24.34,24.15,23.93,23.58,22.75,22.0,22.52,23.01,22.36,22.28,22.31,23.47,24.18,24.53,24.77,24.94,25.04,25.13,25.24,25.45,25.24,24.82,24.88,24.05,24.03,23.92,23.18,22.87,22.56,22.75,22.98,22.65,22.64,22.65,22.64,23.08,24.05,24.34,24.52,24.7,24.84,24.99,25.13,24.6,24.98,24.54,24.86,24.95,24.8,24.61,24.45,24.35,24.38,24.33,24.2,24.37,24.41,23.81,23.21,23.21,23.62,23.96,24.02,24.11,24.21,24.38,24.93,25.4,25.63,25.63,25.46,25.2,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.49,23.03,23.43,23.67,23.92,24.22,24.28,24.39,24.57,24.8,24.89,24.81,24.94,24.06,23.63,23.38,22.96,22.71,22.44,22.19,22.1,21.86,22.84,23.45,23.61,22.9,23.46,23.8,24.09,24.36,24.2,24.13,24.15,24.45,24.74,25.09,25.16,25.23,25.15,24.88,24.63,24.25,24.03,23.79,23.51,23.23,22.87,22.9,22.99,23.3,23.47,23.85,24.14,24.28,24.45,24.54,24.66,24.88,25.01,24.93,25.17,25.12,24.94,24.81,24.5,24.21,23.54,23.19,22.98,22.59,21.6,21.76,21.98,22.09,22.51,23.09,23.36,23.57,23.75,23.91,23.98,24.05,24.18,24.41,24.61,24.67,24.68,24.53,24.32,24.17,23.39,23.31,23.13,23.1,22.88,22.39,22.88,23.1,23.31,23.48,23.74,23.92,24.1,24.23,24.31,24.43,24.52,24.78,24.99,25.08,25.0,24.79,24.46,24.06,23.7,23.44,22.64,21.61,21.35,21.26,21.09,21.58,21.83,22.25,22.52,22.04,21.96,22.03,23.0,23.85,24.12,22.85,23.36,23.67,23.64,23.53,23.34,22.73,22.44,22.34,22.39,22.06,22.66,22.55,21.92,21.9,21.47,22.29,23.24,23.65,23.6,23.47,23.58,23.7,23.87,24.39,24.8,24.3,24.0,23.62,23.4,23.28,22.99,22.69,22.48,22.48,22.73,23.13,22.62,22.0,20.79,20.81,22.4,23.01,23.27,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.33,23.18,22.99,22.77,22.55,22.55,22.45,22.5,22.49,22.54,22.77,22.38,22.24,23.26,23.66,23.82,23.95,24.12,24.37,24.58,24.99,25.27,25.22,24.89,24.52,24.24,23.94,23.66,23.48,23.1,22.52,22.84,23.21,22.57,22.44,22.7,22.76,23.62,23.86,24.1,24.23,24.37,24.56,24.61,24.79,24.14,24.32,24.27,24.18,23.96,23.59,23.36,23.11,22.54,22.16,22.3,21.86,22.04,22.21,22.48,22.73,22.2,22.95,23.36,23.66,23.88,24.05,24.22,24.48,24.65,24.66,23.99,23.59,23.3,23.0,22.71,22.48,22.11,21.84,22.16,22.42,22.63,22.81,22.99,23.25,23.51,23.73,23.92,24.07,24.16,24.24,24.7,24.99,24.89,24.28,24.03,23.62,23.51,23.45,23.53,23.95,24.38,25.15,25.91,26.8,27.4,23.48,23.41,23.29,24.34,24.51,24.61,24.68,24.72,24.78,24.86,25.04,25.07,24.55,24.02,23.58,23.38,23.13,22.89,22.68,22.49,22.37,22.6,22.58,22.7,22.77,22.85,23.01,23.65,23.91,24.0,24.12,24.27,24.44,24.62,24.17,24.03,23.95,24.39,24.41,24.22,23.9,23.68,23.52,23.4,22.95,23.47,23.45,23.65,23.72,23.75,23.92,24.04,24.26,24.31,24.42,24.59,24.82,24.51,24.75,24.84,24.28,24.1,23.99,23.73,23.49,23.38,23.31,23.16,23.22,22.94,23.25,23.32,23.35,22.2,22.72,23.58,23.97,24.14,24.28,23.73,24.2,24.49,24.86,24.2,23.88,23.6,23.44,23.24,23.05,22.81,22.61,22.48,22.44,22.99,23.38,23.61,23.79,23.92,24.14,23.74,24.3,24.44,24.53,24.63,24.78,24.9,24.69,24.93,23.99,24.08,23.94,23.65,23.43,23.27,23.14,22.9,22.06,22.04,21.9,21.59,21.82,21.98,22.68,23.22,23.43,23.7,23.86,23.98,24.11,24.24,24.48,23.87,24.07,23.97,23.78,23.5,22.78,22.17,21.43,21.1,20.83,21.18,21.18,21.49,21.79,22.06,22.23,22.57,22.66,22.81,22.94,23.03,23.11,23.23,23.74,24.2,24.2,23.7,23.17,22.88,22.6,22.38,22.13,21.71,20.99,20.85,20.7,21.06,21.65,21.86,22.12,22.46,22.65,22.82,22.99,23.56,23.82,24.04,24.26,24.25,23.72,23.59,23.37,23.14,22.86,22.62,22.47,22.37,22.42,22.66,22.34,22.16,22.31,22.5,22.66,23.41,23.7,23.83,23.97,24.12,24.28,24.46,24.73,24.84,24.6,24.42,23.71,23.12,22.9,22.68,22.48,22.32,22.09,22.41,22.72,22.72,22.43,22.5,22.0,22.97,23.31,23.47,23.62,23.8,24.04,23.17,23.71,24.02,23.58,23.67,23.5,23.35,23.11,22.96,22.73,22.48,22.25,22.06,22.25,21.79,22.17,22.37,22.67,22.95,23.25,23.37,23.48,23.66,23.89,24.13,24.22,24.25,23.67,23.03,22.59,22.9,22.52,22.19,21.66,21.31,21.22,21.58,21.94,22.14,22.49,22.06,22.46,22.78,23.0,23.26,23.45,23.65,23.84,24.05,24.32,24.43,24.41,24.2,23.88,22.49,22.62,22.37,22.24,22.04,21.83,21.77,21.48,21.99,22.38,22.64,22.92,23.15,23.29,23.52,23.68,23.8,23.91,24.05,24.26,24.3,24.19,23.29,23.29,23.03,22.34,21.47,21.02,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1241,0.1603,0.1964,0.2464,0.33,0.3814,0.6663,0.7621,0.8181,0.9188,0.9761,1.0296,1.118,1.557,1.9468,2.2693,2.4031,2.5534,2.7429,2.9065,3.0492,3.203,3.287,3.3492,3.4008,3.4618,3.5306,3.6055,3.6796,3.7214,3.8135,3.855,3.9311,4.0315,4.2769,4.4651,4.6306,4.8384,5.0633,5.2464,5.4582,5.6087,5.7897,5.9416,6.0919,6.2045,6.2902,6.3616,6.424,6.48,6.5337,6.5884,6.6396,6.7017,6.8043,6.8452,6.9073,6.9728,7.0174,7.2756,7.3291,7.4711,7.6424,7.7686,7.9165,8.0279,8.1231,8.2409,8.2968,8.348,8.3876,8.4271,8.4693,8.5062,8.5374,8.6007,8.6835,8.7396,8.825,8.8648,8.9158,8.9443,8.9874,9.0055,9.0221,9.0618,9.1507,9.4274,9.5262,9.6193,9.7148,9.7984,9.8825,9.9556,10.0115,10.0593,10.1032,10.144,10.2127,10.2534,10.317,10.4347,10.4799,10.5011,10.5264,10.5712,10.6254,10.6796,10.7454,10.9481,11.1891,11.5854,11.768,11.9759,12.1099,12.1928,12.2794,12.3452,12.4015,12.4457,12.4988,12.5507,12.5977,12.6623,13.0736,13.1369,13.2048,13.4231,13.471,13.4988,13.5459,13.5884,13.6468,13.7678,13.9125,14.2339,14.3739,14.5157,14.8889,15.0073,15.0871,15.1609,15.2333,15.3154,15.3825,15.4411,15.4886,15.5341,15.6634,15.7336,15.8434,15.8955,15.9252,16.1143,16.2068,16.2856,16.368,16.5291,16.7309,17.0599,17.2256,17.3432,17.4779,17.5745,17.6344,17.6916,17.7466,17.7959,17.828,17.8583,17.8881,18.0032,18.0625,18.1184,18.1893,18.2128,18.2333,18.2622,18.2887,18.3361,18.4001,18.5601,18.7602,19.054,19.2015,19.3606,19.5083,19.6217,19.7113,19.7717,19.8296,19.8763,19.916,19.9536,19.9901,20.0272,20.0941,20.1428,20.2444,20.287,20.3284,20.4037,20.4881,20.7569,20.936,21.1005,21.2454,21.4151,21.6062,21.7628,21.8808,21.9942,22.1103,22.187,22.2508,22.3122,22.3748,22.4251,22.4722,22.5607,22.6101,22.6572,22.6977,22.7349,22.7773,22.813,22.8848,23.2143,23.3224,23.4659,23.7949,23.9849,24.2046,24.3891,24.5224,24.6278,24.7236,24.799,24.8744,24.9523,25.0236,25.0811,25.1324,25.1861,25.3647,25.4676,25.6149,25.7022,25.7595,25.8054,25.8628,25.9494,26.2457,26.539,26.8678,27.1901,27.3577,27.5004,27.6301,27.9445,28.025,28.1294,28.2024,28.2693,28.33,28.3858,28.4393,28.4937,28.5483,28.6013,28.6416,28.7137,28.7666,28.8367,28.8924,28.9803,29.067,29.4188,30.0524,30.495,30.6976,30.9535,31.1852,31.4303,31.7703,31.8754,31.9386,31.9957,32.0578,32.1083,32.1565,32.2057,32.2915,32.3435,32.3892,32.4193,32.4575,32.4929,32.5249,32.5609,32.6483,32.9582,33.2821,33.5904,33.7549,33.9509,34.117,34.2623,34.43,34.5261,34.5983,34.6782,34.7361,34.7861,34.8318,34.8779,34.9448,35.0829,35.1671,35.1968,35.2327,35.2617,35.3544,35.443,35.4845,35.6225,35.8126,36.1134,36.2647,36.473,36.6597,36.7763,36.881,36.9664,37.0404,37.1151,37.1736,37.2253,37.3092,37.359,37.4186,37.5325,37.7981,37.9193,37.9919,38.0615,38.1079,38.1555,38.2798,38.529,38.8195,39.2357,39.4278,39.5849,39.7345,39.9204,40.0129,40.1524,40.2229,40.2992,40.3612,40.4173,40.4685,40.5205,40.5783,40.6985,40.7653,40.8443,40.9094,40.9714,41.1912,41.2858,41.4166,41.5321,41.7492,41.926,42.0801,42.2353,42.4044,42.5331,42.6077,42.6617,42.7162,42.7685,42.8077,42.8441,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,43.0044,43.1306,43.2373,43.3005,43.3884,43.4684,43.5299,43.5852,43.6372,43.7772,43.9152,43.9882,44.0542,44.1595,44.2523,44.3074,44.4163,44.5953,44.6886,44.9254,45.1672,45.4293,45.5553,45.7335,45.8421,46.0189,46.085,46.145,46.21,46.2748,46.3296,46.4058,46.4529,46.5007,46.5959,46.83,46.9253,47.023,47.057,47.0868,47.1629,47.2614,47.4931,47.6198,47.7429,47.8645,47.9483,48.0465,48.1457,48.2324,48.2897,48.3457,48.424,48.521,48.5726,48.6196,48.6899,48.8046,48.8578,48.9486,49.0304,49.0766,49.1178,49.2104,49.2847,49.3117,49.3429,49.4426,49.6531,49.9092,49.9981,50.0894,50.2026,50.3816,50.5,50.6207,50.6877,50.7432,50.7934,50.8773,50.9339,50.9799,51.0336,51.1458,51.1914,51.2226,51.254,51.3411,51.399,51.4588,51.5528,51.7978,52.0965,52.4037,52.6573,52.7887,52.9004,53.0295,53.1128,53.1777,53.2466,53.3241,53.3819,53.4335,53.4806,53.5834,53.8829,54.0033,54.1359,54.2123,54.2537,54.3704,54.4577,54.5218,54.6369,55.0248,55.3738,55.7227,55.8955,56.0873,56.2471,56.3881,56.4893,56.5719,56.6389,56.6867,56.7308,56.7797,56.8209,56.8634,56.9223,57.0465,57.1965,57.5587,57.8256,57.9232,58.0771,58.1956,58.421,58.7775,58.9807,59.1643,59.3867,59.5583,59.7056,59.8323,59.9374,60.0379,60.116,60.1842,60.2304,60.2738,60.3257,60.3848,60.4459,60.5477,60.6066,60.6582,60.7798,60.8321,61.1058,61.3015,61.3955,61.5227,61.8181,62.038,62.2616,62.4127,62.5548,62.6894,62.8332,62.9113,62.9882,63.0559,63.1099,63.1588,63.2149,63.3646,63.4875,63.5951,63.6657,63.712,63.778,63.8348,63.903,63.966,64.0893,64.3062,64.5734,64.7687,64.868,65.0596,65.1881,65.3262,65.4414,65.5005,65.5608,65.6281,65.6904,65.7593,65.847,65.9232,66.0029,66.0776,66.1344,66.2089,66.2459,66.2821,66.3565,66.445,66.5342,66.7438,66.9877,67.341,67.4772,67.6128,67.7739,67.8876,68.1424,68.2395,68.3416,68.4086,68.4676,68.5204,68.5704,68.7005,68.7663,68.8464,68.9633,69.0332,69.0717,69.1272,69.1757,69.2219,69.3056,69.5746,69.9597,70.2917,70.5158,70.9318,71.1038,71.3511,71.4594,71.5637,71.6455,71.7186,71.7835,71.8407,71.8938,71.9785,72.1314,72.2602,72.4812,72.7304,72.8263,72.9447,73.0559,73.1728,73.357,73.6721,74.076,74.48,74.6744,74.9247,75.0792,75.6556,75.7981,75.9009,75.9789,76.0834,76.2026,76.2668,76.3252,76.3831,76.5081,76.5886,76.6664,76.7588,76.84,77.0141,77.1357,77.2333,77.3674,77.6835,78.0583,78.4635,78.8735,79.0672,79.2051,79.3524,79.5051,79.6215,79.6904,79.7497,79.7937,79.8366,79.8802,79.9264,79.9757,80.0699,80.1681,80.3597,80.5179,80.6165,80.7569,80.9273,81.1301,81.3492,81.5808,81.8152,82.0312,82.2098,82.3716,82.5272,82.6864],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,4.0,5.0,5.0,5.0,6.0,7.0,8.0,9.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,17.0,17.0,18.0,19.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,21.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,30.0,30.0,30.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,32.0,33.0,35.0,37.0,39.0,40.0,41.0,41.0,41.0,41.0,42.0,43.0,43.0,43.0,43.0,43.0,43.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,70.0,72.0,74.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,88.0,89.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,98.0,99.0,100.0,102.0,104.0,106.0,107.0,108.0,109.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,111.0,112.0,113.0,114.0,116.0,118.0,120.0,123.0,126.0,127.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0,141.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,143.0,144.0,145.0,146.0,147.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,149.0,150.0,152.0,154.0,156.0,158.0,159.0,160.0,161.0,161.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,163.0,164.0,166.0,168.0,170.0,172.0,174.0,176.0,178.0,179.0,180.0,181.0,182.0,183.0,184.0,185.0,185.0,186.0,186.0,186.0,187.0,188.0,189.0,189.0,190.0,191.0,192.0,194.0,196.0,198.0,200.0,202.0,204.0,206.0,207.0,208.0,209.0,210.0,211.0,212.0,213.0,214.0,215.0,216.0,217.0,218.0,219.0,220.0,221.0,222.0,223.0,224.0,225.0,226.0,227.0,228.0,229.0,230.0,231.0,232.0,233.0,234.0,235.0,236.0,237.0,238.0,239.0,239.0,239.0,240.0,241.0,241.0,242.0,243.0,244.0,245.0,246.0,248.0,249.0,250.0,251.0,252.0,253.0,254.0,255.0,256.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,258.0,260.0,262.0,264.0,266.0,268.0,269.0,270.0,271.0,272.0,273.0,273.0,273.0,273.0,274.0,274.0,274.0,274.0,274.0,275.0,276.0,277.0,278.0,279.0,281.0,283.0,285.0,287.0,288.0,290.0,291.0,292.0,293.0,294.0,295.0,296.0,297.0,298.0,299.0,299.0,300.0,301.0,301.0,302.0,303.0,304.0,305.0,306.0,307.0,309.0,311.0,313.0,315.0,316.0,317.0,318.0,319.0,320.0,321.0,322.0,323.0,323.0,323.0,324.0,324.0,325.0,326.0,327.0,328.0,330.0,332.0,334.0,336.0,338.0,340.0,342.0,344.0,346.0,348.0],"district_grid_kwh":[1.428,1.505,1.355,1.254,1.245,1.731,2.889,1.763,9.774,3.287,1.561,3.455,1.967,1.835,3.033,7.483,6.644,5.496,4.59,5.157,6.502,5.611,4.935,5.313,2.906,2.15,1.782,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.72,7.182,7.773,6.33,7.322,5.2,6.256,5.252,5.194,3.894,2.96,2.47,2.155,1.937,1.856,1.89,1.77,2.147,3.545,1.297,1.861,1.522,0.774,8.602,1.79,4.906,5.922,4.363,5.111,3.852,3.293,4.069,1.935,1.768,1.37,1.366,1.458,1.277,1.078,2.185,2.862,1.927,2.93,1.364,1.75,0.977,1.479,0.623,0.393,0.365,1.515,4.717,3.387,3.195,3.275,2.867,2.91,2.527,1.93,1.652,1.52,1.409,2.374,1.408,2.199,4.036,1.553,0.726,0.4,1.158,1.716,1.858,2.26,3.453,4.108,6.755,6.265,7.132,4.595,2.846,2.993,2.272,1.946,1.528,1.837,1.793,1.624,2.234,14.217,2.169,2.332,7.487,1.643,0.541,1.309,1.115,2.005,1.689,2.467,5.478,4.803,4.867,12.803,4.062,2.756,2.552,2.501,2.839,2.32,2.023,1.642,1.576,4.467,2.408,3.766,1.79,1.017,6.488,3.173,2.703,2.828,2.745,3.44,5.607,5.683,4.035,4.621,3.315,2.07,1.976,1.903,1.704,1.108,1.048,1.031,3.978,2.049,1.919,2.43,0.517,0.256,0.583,0.595,1.626,2.196,2.728,3.41,5.008,5.06,5.457,5.067,3.89,3.098,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.473,1.431,2.602,2.919,9.291,6.191,5.687,5.009,5.866,6.606,5.413,4.078,3.919,4.015,2.651,2.203,2.124,2.162,1.742,1.625,3.061,1.708,1.627,1.398,1.02,1.239,1.081,2.482,11.388,3.738,4.962,11.371,6.567,7.595,6.376,4.61,3.643,3.311,2.605,2.608,2.693,2.462,1.988,1.772,1.857,6.174,3.531,5.053,2.995,1.965,1.574,1.971,2.968,10.165,5.0,5.604,5.494,5.75,4.896,4.45,10.784,2.784,3.608,2.522,2.315,2.095,1.931,1.847,1.882,1.887,1.817,1.292,2.446,1.816,2.405,1.911,3.014,2.975,5.996,10.799,7.544,6.951,8.78,7.948,8.408,11.751,3.634,2.183,1.974,2.148,1.747,1.665,1.699,2.967,1.783,1.568,0.617,0.828,0.9,0.978,1.234,2.998,5.282,5.52,5.256,5.642,6.724,5.696,4.984,5.799,3.32,2.497,2.764,2.001,1.726,1.579,1.594,2.314,4.736,2.89,0.713,0.858,0.792,3.181,3.039,1.191,2.353,3.24,5.127,5.189,7.144,6.405,4.0,3.62,2.954,2.555,2.584,2.023,1.788,2.897,1.723,2.06,3.908,9.112,3.986,2.331,2.275,1.591,1.633,4.263,4.248,4.951,7.094,6.588,5.392,5.131,6.378,3.196,4.822,2.437,2.636,2.145,1.938,1.77,1.797,2.001,4.154,2.309,2.732,2.249,2.143,7.597,3.27,4.523,3.99,7.504,6.113,5.327,5.365,5.845,4.447,2.577,1.867,1.884,1.81,1.354,1.258,1.464,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.689,2.183,3.04,2.766,2.125,1.913,1.798,4.838,4.768,2.505,2.265,3.612,3.182,1.893,3.733,6.142,3.201,4.036,4.123,4.467,4.322,6.112,3.727,6.066,2.283,2.073,2.249,2.238,1.894,2.633,1.628,1.653,3.291,8.031,3.27,3.352,1.164,0.947,2.608,3.38,7.948,2.159,2.099,2.072,2.876,3.367,3.404,2.977,1.98,1.933,2.709,3.35,1.785,1.624,2.43,3.966,1.838,3.115,2.807,1.562,1.179,3.177,2.421,0.864,1.071,1.7,3.588,4.364,3.052,3.13,3.882,6.143,4.092,4.172,2.316,1.919,1.733,2.902,1.956,1.592,1.854,3.85,1.565,0.697,0.765,2.988,1.987,2.052,3.223,4.177,5.09,5.236,8.701,4.507,3.832,4.43,2.879,2.245,2.381,2.679,1.996,1.784,1.63,3.55,10.355,4.131,4.549,2.434,1.418,4.005,2.995,2.197,3.948,6.611,5.949,5.947,5.929,6.577,5.484,4.838,3.497,2.856,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.522,9.224,3.376,5.317,4.097,7.792,12.321,7.027,6.345,7.686,5.935,5.089,4.38,3.635,3.474,2.697,2.359,1.597,1.499,1.796,2.04,2.114,3.519,2.034,1.647,4.201,1.81,9.459,6.764,3.249,4.398,10.212,7.598,7.731,5.222,4.913,4.651,4.97,2.7,2.657,2.34,1.869,1.689,1.94,5.176,4.247,3.693,2.421,1.425,2.265,1.896,2.339,2.163,4.23,3.696,4.555,3.329,3.406,6.572,4.407,4.737,3.983,2.042,2.087,2.324,2.156,2.381,3.031,2.633,2.755,2.564,1.949,2.504,1.271,1.24,2.554,3.033,3.06,3.573,4.158,6.021,4.673,4.652,5.527,3.9,8.808,3.354,3.531,2.316,2.037,1.826,1.73,4.495,2.274,2.749,4.012,2.179,1.085,1.787,1.022,1.036,2.87,4.586,6.564,5.659,7.689,14.271,5.899,8.485,3.742,3.605,2.828,2.528,2.242,1.975,1.837,2.928,5.284,4.422,7.582,8.349,3.137,4.062,3.813,4.011,6.318,5.371,6.885,6.885,6.669,8.588,5.3,19.771,4.928,3.554,2.693,3.614,4.12,2.218,2.019,2.001,4.323,2.76,2.671,3.168,2.784,5.975,4.17,3.347,4.601,5.388,6.389,6.906,14.065,6.646,4.731,5.053,5.277,4.022,2.381,2.05,1.522,1.483,1.507,1.598,1.704,3.256,3.394,6.625,5.467,3.408,4.853,5.891,7.011,7.572,8.004,8.103,7.465,6.174,5.593,5.381,5.503],"emission_kg":[0.575,1.151,1.652,2.112,2.577,3.244,4.386,5.112,9.342,10.75,11.628,13.312,14.279,15.174,16.629,20.157,23.213,25.683,27.698,29.946,32.81,35.319,37.538,39.892,41.145,42.001,42.683,43.47,44.351,45.302,46.256,46.808,48.102,48.711,49.927,51.599,55.706,58.848,61.594,64.997,68.609,71.514,74.816,77.127,79.922,82.327,84.709,86.481,87.866,88.967,89.876,90.652,91.374,92.107,92.805,93.678,95.155,95.734,96.655,97.715,98.487,103.113,104.08,106.634,109.696,111.938,114.543,116.465,118.093,120.12,121.067,121.941,122.602,123.228,123.83,124.322,124.771,125.751,127.023,127.951,129.46,130.173,131.127,131.658,132.45,132.78,133.08,133.431,134.213,136.623,138.353,140.002,141.709,143.185,144.645,145.837,146.685,147.363,147.951,148.508,149.476,150.091,151.115,153.058,153.843,154.212,154.658,155.467,156.465,157.464,158.667,160.484,162.627,166.123,169.327,172.911,175.186,176.542,177.926,178.976,179.821,180.444,181.164,181.828,182.429,183.261,188.894,189.8,190.839,194.258,195.021,195.485,196.307,197.057,198.087,199.144,200.391,203.106,205.429,207.717,213.605,215.441,216.662,217.74,218.768,219.864,220.731,221.488,222.121,222.745,224.6,225.603,227.287,228.091,228.556,231.601,233.121,234.445,235.826,237.166,238.824,241.459,244.055,245.827,247.863,249.328,250.222,251.063,251.866,252.511,252.913,253.284,253.665,255.178,256.015,256.906,258.111,258.504,258.837,259.301,259.722,260.479,261.517,262.816,264.428,266.771,269.136,271.682,274.059,275.891,277.32,278.266,279.145,279.833,280.388,280.907,281.42,281.963,282.989,283.734,285.351,286.018,286.677,287.897,289.294,293.759,296.678,299.329,301.656,304.362,307.378,309.848,311.742,313.553,315.328,316.414,317.297,318.098,318.846,319.437,319.987,321.02,321.608,322.18,322.679,323.134,323.693,324.206,325.313,330.562,332.321,334.662,340.025,343.119,346.601,349.475,351.559,353.191,354.626,355.741,356.821,357.889,358.832,359.581,360.234,360.926,363.264,364.624,366.628,367.781,368.569,369.246,370.142,371.543,376.427,378.842,381.568,384.247,387.054,389.443,391.622,396.825,398.114,399.686,400.773,401.712,402.533,403.285,404.017,404.782,405.586,406.4,407.034,408.133,408.963,410.116,411.043,412.498,413.916,416.744,421.774,425.226,428.364,432.368,436.068,440.051,445.557,447.223,448.227,449.118,450.027,450.745,451.446,452.193,453.585,454.481,455.275,455.789,456.449,457.08,457.653,458.294,459.843,462.529,465.293,467.883,470.634,473.931,476.749,479.224,482.061,483.664,484.799,486.017,486.836,487.522,488.132,488.784,489.805,492.047,493.478,493.965,494.546,495.023,496.556,498.009,498.682,499.79,501.306,503.703,506.103,509.396,512.37,514.22,515.82,517.078,518.102,519.091,519.83,520.465,521.512,522.178,523.021,524.674,528.556,530.253,531.308,532.363,533.073,533.8,535.674,537.541,539.687,542.743,545.596,547.938,550.201,553.042,554.432,556.433,557.426,558.42,559.222,559.939,560.597,561.278,562.045,563.649,564.534,565.559,566.44,567.329,570.542,571.939,573.856,575.551,578.722,581.308,583.563,585.858,588.415,590.426,591.6,592.439,593.324,594.163,594.797,595.374,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,598.129,600.352,602.221,603.328,604.847,606.262,607.326,608.268,609.139,611.536,613.951,615.243,616.436,618.326,620.028,621.056,623.077,626.379,628.055,630.125,632.214,634.434,636.549,639.591,641.486,644.575,645.709,646.707,647.707,648.689,649.517,650.678,651.415,652.202,653.853,657.966,659.665,661.393,662.001,662.545,663.93,665.72,669.891,671.018,672.108,673.174,674.632,676.292,677.924,679.328,680.236,681.083,682.301,683.707,684.444,685.155,686.294,688.262,689.202,690.8,692.234,693.052,693.791,695.474,696.837,697.337,697.918,698.84,700.782,703.143,704.796,706.492,708.593,711.896,714.084,716.309,717.5,718.51,719.414,720.951,722.01,722.888,723.915,726.055,726.913,727.493,728.074,729.685,730.759,731.865,733.592,735.821,738.539,741.337,745.998,748.438,750.526,752.904,754.412,755.535,756.599,757.738,758.535,759.233,759.863,761.263,765.69,767.499,769.604,770.807,771.492,773.464,774.946,776.021,777.919,781.078,783.902,786.702,789.455,792.453,794.942,797.126,798.654,799.863,800.818,801.49,802.065,802.68,803.184,803.759,804.602,806.329,808.335,813.018,816.66,818.093,820.433,822.294,825.944,831.782,835.119,838.129,841.766,844.535,846.867,848.857,850.46,851.935,853.013,853.896,854.481,855.007,855.626,856.318,857.048,858.302,859.036,859.684,861.289,862.02,866.082,869.073,870.534,872.542,877.233,880.648,884.037,886.302,888.45,890.482,892.614,893.756,894.896,895.832,896.543,897.205,897.999,900.314,902.33,904.187,905.397,906.175,907.287,908.253,909.42,910.503,912.632,914.492,916.787,918.458,920.161,923.421,925.599,927.947,929.888,930.858,931.763,932.723,933.572,934.503,935.694,936.764,937.924,939.039,939.908,940.989,941.545,942.115,943.3,944.738,946.202,947.911,949.899,952.768,954.995,957.214,959.88,961.759,965.852,967.333,968.797,969.709,970.493,971.189,971.843,973.584,974.504,975.662,977.358,978.327,978.904,979.801,980.61,981.384,982.794,985.055,988.307,991.121,994.937,1002.001,1004.928,1009.108,1010.869,1012.474,1013.641,1014.653,1015.51,1016.243,1016.936,1018.09,1020.308,1022.291,1025.828,1029.643,1031.158,1033.089,1034.932,1036.887,1039.945,1042.509,1045.751,1048.955,1052.028,1055.973,1058.417,1067.561,1069.756,1071.259,1072.353,1073.677,1075.146,1075.926,1076.642,1077.373,1079.017,1080.095,1081.121,1082.325,1083.451,1085.996,1087.833,1089.343,1091.453,1093.937,1096.87,1100.03,1106.45,1109.419,1111.524,1113.777,1116.114,1117.914,1118.987,1119.932,1120.635,1121.324,1122.016,1122.757,1123.536,1124.993,1126.454,1129.071,1131.242,1132.665,1134.762,1137.402,1140.657,1144.208,1147.968,1151.77,1155.242,1158.118,1160.749,1163.237,1165.706],"kpi":{"all_time_peak_average":1.0,"annual_normalized_unserved_energy_total":0.018316,"carbon_emissions_total":1.0,"cost_total":1.0,"daily_one_minus_load_factor_average":1.0,"daily_peak_average":1.0,"discomfort_cold_delta_average":0.790764,"discomfort_cold_delta_maximum":3.437551,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.15377,"discomfort_hot_delta_average":0.237991,"discomfort_hot_delta_maximum":5.059987,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.017627,"discomfort_proportion":0.171398,"electricity_consumption_total":1.0,"monthly_one_minus_load_factor_average":1.0,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684408,"ramping_average":1.0,"zero_net_energy":1.0},"run":"baseline","steps":719},"baseline_sample":false,"carbon":[0.4025,0.3826,0.3695,0.367,0.374,0.3852,0.3954,0.4112,0.4328,0.4285,0.4576,0.4875,0.4915,0.4876,0.4797,0.4715,0.46,0.4494,0.4389,0.4361,0.4404,0.4471,0.4497,0.4431,0.431,0.3983,0.3831,0.3726,0.371,0.3669,0.3727,0.3815,0.4067,0.4241,0.4621,0.4818,0.4843,0.4828,0.48,0.4738,0.4647,0.459,0.4509,0.4446,0.4466,0.458,0.4586,0.455,0.4681,0.4455,0.4221,0.4006,0.3888,0.3875,0.3949,0.4061,0.4168,0.4094,0.429,0.468,0.5007,0.5185,0.5224,0.5205,0.517,0.5139,0.5097,0.4989,0.4943,0.4983,0.4894,0.4943,0.4825,0.4589,0.413,0.3851,0.4159,0.4486,0.4443,0.4817,0.5151,0.5229,0.5451,0.5432,0.5356,0.5314,0.5271,0.5193,0.5156,0.511,0.5107,0.5161,0.5213,0.5146,0.502,0.4717,0.4391,0.4105,0.3868,0.3956,0.4078,0.4366,0.4654,0.4814,0.5058,0.5082,0.5142,0.5267,0.5363,0.5374,0.5328,0.526,0.5216,0.5175,0.5113,0.5026,0.4951,0.4765,0.4624,0.4618,0.4347,0.4071,0.3921,0.3705,0.3695,0.3723,0.3963,0.4178,0.4454,0.4567,0.4645,0.4861,0.508,0.5154,0.5138,0.5126,0.5056,0.4957,0.4837,0.47,0.4599,0.452,0.4427,0.4223,0.411,0.3863,0.3738,0.3741,0.3852,0.3962,0.4154,0.4162,0.4471,0.4496,0.457,0.4693,0.479,0.4898,0.4885,0.4881,0.482,0.4699,0.4568,0.4392,0.4405,0.4419,0.432,0.4257,0.422,0.3781,0.3629,0.3546,0.3694,0.3803,0.4083,0.4647,0.4958,0.4864,0.4747,0.4667,0.463,0.4656,0.4728,0.4764,0.4727,0.468,0.4674,0.4664,0.4691,0.4709,0.4614,0.4531,0.4395,0.4258,0.405,0.3994,0.4061,0.4235,0.4433,0.4432,0.4603,0.4527,0.4604,0.4691,0.4786,0.4806,0.4715,0.4662,0.4646,0.4612,0.4566,0.4564,0.4643,0.4623,0.4421,0.4098,0.4005,0.3769,0.3463,0.3391,0.3386,0.3375,0.3438,0.3518,0.3569,0.3526,0.3825,0.4152,0.4462,0.4609,0.4704,0.4719,0.4717,0.4711,0.4585,0.4507,0.4521,0.448,0.4334,0.4279,0.4141,0.3964,0.383,0.3768,0.3684,0.3729,0.3787,0.3851,0.3966,0.3851,0.4006,0.4304,0.4545,0.4721,0.4805,0.4829,0.4865,0.4877,0.4882,0.4879,0.4896,0.4825,0.4631,0.4357,0.4309,0.4058,0.3914,0.3897,0.3963,0.4066,0.4258,0.4484,0.4584,0.4444,0.4566,0.4795,0.4853,0.4825,0.4767,0.4716,0.4659,0.4575,0.4515,0.4561,0.4655,0.4737,0.4685,0.4584,0.4601,0.4513,0.423,0.4112,0.4213,0.4395,0.4692,0.5021,0.5067,0.4979,0.5033,0.5202,0.5214,0.5194,0.5164,0.5085,0.5007,0.4927,0.4876,0.4904,0.4946,0.4965,0.4894,0.4829,0.4542,0.4409,0.4092,0.3975,0.3858,0.409,0.4413,0.4734,0.495,0.4785,0.4719,0.4788,0.4821,0.4782,0.4728,0.4713,0.4679,0.4675,0.4625,0.4609,0.4643,0.4625,0.4421,0.4257,0.401,0.3826,0.3652,0.3553,0.3614,0.3867,0.4089,0.4231,0.426,0.4083,0.4236,0.4421,0.4459,0.4454,0.4396,0.4394,0.4335,0.4307,0.4331,0.4344,0.441,0.4455,0.4348,0.415,0.4075,0.3772,0.3739,0.3702,0.3717,0.3788,0.3836,0.386,0.3835,0.3753,0.3914,0.415,0.423,0.4272,0.4238,0.4247,0.4226,0.423,0.4234,0.4277,0.4375,0.4522,0.4554,0.4494,0.4699,0.4636,0.4684,0.4589,0.4732,0.4855,0.4789,0.4768,0.498,0.497,0.498,0.504,0.4996,0.4978,0.494,0.4969,0.4925,0.49,0.4953,0.49,0.5059,0.5096,0.5066,0.5072,0.4997,0.5116,0.5008,0.4922,0.4842,0.4955,0.5066,0.5156,0.5266,0.5235,0.5347,0.5428,0.5414,0.5377,0.5237,0.5128,0.5068,0.497,0.4892,0.4979,0.5083,0.5091,0.4967,0.4817,0.4443,0.4388,0.4372,0.4411,0.4525,0.4759,0.5019,0.512,0.5197,0.5154,0.5226,0.5302,0.5315,0.5295,0.5248,0.5216,0.5196,0.5143,0.5069,0.4931,0.4796,0.4716,0.4583,0.4382,0.4497,0.4196,0.4129,0.4379,0.4687,0.4964,0.5112,0.5131,0.5107,0.5163,0.5228,0.5295,0.5354,0.5401,0.5424,0.5426,0.5412,0.541,0.5415,0.5417,0.5413,0.5378,0.5346,0.5334,0.514,0.5264,0.5217,0.5296,0.5413,0.5521,0.5536,0.5561,0.5483,0.542,0.5397,0.5388,0.5407,0.539,0.5357,0.5338,0.534,0.5344,0.5357,0.5413,0.5449,0.5369,0.5236,0.5002,0.447,0.4253,0.3993,0.3911,0.3865,0.3941,0.4275,0.438,0.4626,0.4592,0.4826,0.4924,0.4948,0.4893,0.4809,0.4778,0.4747,0.4708,0.4643,0.4558,0.454,0.4513,0.4369,0.4235,0.4127,0.4064,0.3774,0.3634,0.3545,0.391,0.4141,0.4023,0.387,0.374,0.3948,0.4243,0.44,0.4543,0.4684,0.4738,0.4748,0.4745,0.4732,0.4667,0.4581,0.4544,0.4411,0.4244,0.4,0.3742,0.3659,0.351,0.3448,0.3389,0.3452,0.3564,0.3613,0.3623,0.3822,0.4039,0.4294,0.4422,0.4495,0.4567,0.4594,0.4494,0.4384,0.4336,0.4372,0.4369,0.4289,0.4231,0.4292,0.4,0.3806,0.3916,0.4096,0.4473,0.4746,0.5027,0.5002,0.4897,0.4909,0.4962,0.4989,0.5006,0.5034,0.5033,0.5037,0.5021,0.4998,0.496,0.4942,0.4957,0.4874,0.4749,0.4333,0.4133,0.3936,0.3909,0.393,0.4066,0.4211,0.4348,0.4457,0.4234,0.4368,0.4599,0.4642,0.4741,0.4782,0.4784,0.4781,0.4765,0.4766,0.4771,0.4823,0.4817,0.4647,0.4416,0.4147,0.3936,0.3846,0.3815,0.3782,0.3873,0.4045,0.4211,0.4227,0.4043,0.4363,0.4719,0.4859,0.4885,0.4911,0.4931,0.4954,0.4974,0.4963,0.495,0.4962,0.4926,0.4706,0.4453,0.4126,0.4005,0.3821,0.3709,0.3773,0.3942,0.4197,0.4484,0.4666,0.4463,0.4606,0.4754,0.4833,0.4874,0.484,0.4774,0.4709,0.4654,0.4609,0.4593,0.4611,0.4625,0.4455,0.4228,0.4063,0.3665,0.3565,0.3518,0.3547,0.365,0.3802,0.3906,0.3844,0.3798,0.4046,0.4259,0.4406,0.4509,0.4588,0.461,0.459,0.4576,0.4565,0.4468,0.4448,0.446,0.4428,0.4476,0.4507,0.4607,0.462,0.4648,0.4593,0.4635,0.4575,0.4475,0.4305,0.395,0.397,0.4176,0.432,0.4482,0.4642,0.4689,0.4698,0.4692,0.4652,0.4658,0.4703,0.4624,0.4486],"day":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],"episode_hours":719,"headline":{"cost_pct":-8.1,"discomfort_points":-9.4,"emissions_pct":-3.9,"text":"Cost down 8.1% and emissions down 3.9% at equal or better comfort","tone":"win"},"hour_of_day":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"hours":719,"id":"citylearn_challenge_2023_phase_2_local_evaluation","name":"CityLearn 2023 challenge, local evaluation","occupied":{"Building_1":[1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Building_2":[1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],"Building_3":[1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1]},"outdoor_c":[24.7,24.1,23.9,23.9,23.8,23.9,25.0,26.9,29.3,31.7,33.9,35.9,37.5,38.7,39.3,39.5,39.2,38.1,36.1,32.6,31.2,29.6,28.0,26.8,25.9,25.2,24.9,24.8,24.8,24.7,25.4,27.0,29.4,32.1,34.5,36.6,38.3,39.5,40.2,40.3,39.8,38.7,36.5,32.4,31.3,30.8,29.3,27.8,26.7,26.0,25.5,25.2,25.0,24.9,25.3,26.4,28.4,30.5,32.6,32.2,31.2,31.7,31.8,31.6,31.1,30.1,28.7,26.9,26.3,25.9,25.4,24.9,24.8,24.6,24.5,24.2,23.7,23.4,23.8,24.9,26.7,28.3,29.2,29.6,29.7,29.8,29.6,29.5,29.6,29.8,29.1,27.6,26.0,25.2,24.8,24.4,23.9,23.2,22.8,22.4,22.2,22.2,23.5,25.5,27.8,30.0,32.3,34.1,35.5,36.5,36.9,37.0,36.6,35.7,33.9,29.9,28.6,27.9,27.4,26.6,25.3,24.5,23.8,23.4,23.1,23.2,24.6,26.8,28.8,30.8,32.7,34.2,35.3,36.2,36.8,36.9,36.4,35.4,33.2,29.9,28.9,28.4,27.5,26.7,25.9,25.1,24.5,23.7,22.9,22.9,24.6,26.6,28.8,30.9,32.8,34.4,35.6,36.4,36.8,37.0,36.5,35.0,32.2,29.7,28.9,28.3,27.3,26.0,24.7,23.5,22.6,22.0,21.6,21.4,23.5,26.0,28.5,30.8,32.7,34.3,35.6,36.5,36.7,36.5,36.0,35.1,33.2,30.3,29.0,28.5,27.9,26.5,25.5,24.8,24.2,23.9,23.5,23.3,24.6,26.5,28.8,30.9,32.8,34.4,35.5,36.3,36.5,36.2,35.3,34.0,32.2,29.1,27.8,27.0,26.4,25.8,25.2,24.5,23.9,23.5,23.4,23.4,24.6,26.6,29.4,31.5,33.5,35.1,36.5,37.4,37.8,37.7,37.1,35.9,33.8,31.3,29.4,28.1,27.1,26.5,25.9,25.6,25.4,25.4,25.3,25.2,25.7,27.3,29.3,31.0,33.0,35.2,36.6,37.3,37.4,37.0,36.3,35.2,33.4,31.0,29.2,28.0,27.0,26.2,25.7,25.4,25.3,25.3,25.2,25.0,25.7,27.5,29.4,31.1,32.8,34.2,35.4,36.2,36.8,37.0,36.8,35.9,34.1,31.0,29.6,28.4,27.4,26.3,25.3,24.6,24.4,24.1,24.1,24.1,25.3,27.2,28.8,30.3,31.8,33.1,34.3,35.4,36.3,36.8,36.7,36.0,34.2,31.5,30.9,29.7,28.1,26.9,26.0,24.9,23.9,23.1,22.6,22.4,24.4,26.8,29.3,31.6,33.3,34.5,35.2,35.6,35.6,35.4,35.0,34.2,32.9,30.2,28.8,28.1,27.4,26.6,25.7,24.9,24.2,23.8,23.6,23.6,24.9,27.1,29.4,31.6,33.5,35.0,36.0,36.6,36.8,36.6,36.2,35.3,33.8,31.8,29.9,28.5,27.5,26.7,26.0,25.5,25.2,24.9,24.5,24.2,24.9,26.8,29.0,31.0,32.8,34.3,35.6,36.4,36.8,36.7,36.0,34.9,33.3,31.3,29.7,28.6,27.7,26.8,26.1,25.4,25.1,24.7,24.3,23.9,24.7,26.8,29.3,31.5,33.4,35.0,36.2,36.8,36.8,36.2,34.8,33.4,32.0,30.6,29.4,28.3,27.3,26.4,25.7,25.2,24.8,24.5,24.2,24.0,24.7,26.2,28.7,31.0,32.9,34.3,35.3,35.4,35.2,34.9,33.3,30.9,28.5,26.8,26.1,25.7,25.4,25.0,24.6,24.3,24.2,24.0,23.8,23.7,24.0,24.7,25.7,26.7,27.3,27.7,28.2,28.6,28.7,28.3,27.7,26.8,25.7,24.5,23.8,23.7,23.8,24.0,24.2,24.3,24.1,23.9,23.8,23.7,23.9,24.5,25.4,26.3,27.3,28.0,28.4,28.4,28.0,27.7,27.4,26.8,26.0,25.0,24.5,24.4,24.2,24.1,23.9,23.8,23.6,23.5,23.4,23.3,24.5,25.9,28.1,30.7,32.5,33.9,35.0,35.7,35.9,35.8,35.2,34.2,32.5,29.4,28.2,27.3,26.4,25.6,25.0,24.6,24.2,23.8,23.3,22.9,24.7,27.0,29.6,32.1,34.3,36.2,37.5,38.4,38.7,38.6,37.7,36.3,34.1,31.8,30.1,29.0,27.9,26.9,26.0,25.3,24.7,24.2,23.9,23.8,25.1,27.2,29.6,32.0,34.2,35.9,37.1,37.8,37.9,37.3,36.2,34.5,32.7,30.6,29.0,27.9,26.8,26.0,25.5,25.2,25.0,24.9,24.7,24.6,25.5,27.4,29.3,31.2,32.8,34.1,35.8,36.8,37.0,36.6,35.3,33.8,32.0,30.0,28.7,27.7,26.8,26.0,25.6,25.5,25.4,25.3,25.2,25.1,25.6,26.6,27.8,29.2,30.8,32.1,33.4,34.0,34.0,33.6,32.9,32.1,31.0,29.2,28.0,27.2,26.5,25.9,25.5,25.2,25.0,24.8,24.5,24.4,25.2,26.3,28.0,29.9,31.9,33.6,34.7,35.3,35.5,35.4,34.9,34.1,32.6,30.5,29.5,28.4,27.4,26.5,25.8,25.1,24.5,23.9,23.8,23.8,25.0,27.1,29.4,31.9,34.1,35.8,37.0,37.8,38.3,38.3,38.0,37.0,35.2,32.1,30.4,29.0,28.0,27.1,26.4,25.6,25.0,24.4,23.9,23.9,25.5,27.6,30.0,32.5,34.7,36.4,37.7,38.6,39.0,38.9,38.1,36.8,34.8,32.2,30.4,29.1,28.0,27.0,26.2,25.7,25.4,25.2,24.9,24.7,25.9,28.1,30.4,32.6,34.6,36.3,37.6,38.4,38.7,38.5,37.6,36.0,33.8,31.5,29.8,28.6,27.5,26.7,26.1,25.7,25.6,25.4,25.2,25.1,26.1,28.0,30.2,32.6,34.8,36.7,38.1,39.0,39.4,39.1,38.1,36.6,34.5,32.0,29.9,28.5,27.3],"price":[0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289],"setpoint_c":{"Building_1":[23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.56,25.56,26.5,24.44,21.67,24.44,22.83,20.72,20.56,21.67,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.61,25.0,24.5,24.44,24.44,24.44,22.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,22.44,22.78,24.44,24.44,24.44,24.39,23.56,22.22,22.56,24.44,24.44,24.44,22.22,24.44,24.44,23.22,23.56,23.83,24.11,24.44,24.78,25.06,23.33,23.89,23.89,25.67,24.44,24.44,25.83,25.0,25.83,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,24.44,24.39,24.39,24.39,24.39,24.39,24.33,24.33,24.33,24.33,24.44,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,23.89,24.44,24.44,25.22,25.0,27.22,27.22,27.22,26.67,25.67,25.78,24.44,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.11,27.0,26.89,26.78,26.67,26.56,26.39,26.28,26.17,26.06,25.94,25.83,25.72,25.61,25.5,25.39,25.28,25.11,25.0,24.89,24.78,24.67,24.56,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.56,26.28,24.17,24.28,24.44,24.44,25.78,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.22,23.33,23.89,24.44,24.44,24.44,23.61,23.33,24.17,24.44,24.44,24.44,24.44,24.44,24.44,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,25.67,26.67,26.67,26.67,26.67,26.67,25.33,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.0,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,25.56,25.0,26.67,25.56,23.5,23.33,24.28,24.44,25.33,26.67,24.78,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.5,25.67,24.44,24.44,24.44,24.22,23.33,23.56,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.61,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.78,25.0,24.78,23.33,23.78,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.11,24.94,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.39,24.44,24.44,24.44,24.44,24.44,24.44,23.06,22.78,24.17,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.33,23.89,24.0,24.44,24.44,22.22,22.22,23.28,22.22,23.67,23.89,22.44,22.22,22.22,22.28,24.44,24.44,24.44,24.44,24.44,25.44,26.67,24.22,23.33,24.06,24.44,24.28,23.89,24.06,24.44,24.44,23.28,22.39,23.33,23.17,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.44,26.39,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,24.44,25.17,24.44,24.44,24.44,24.44,22.78,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,26.39,26.67,25.0,24.44,24.44,26.67,26.0,23.33,24.44,24.44,24.44,22.22,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.22,24.44,24.44,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,22.78,24.44,22.22,24.44,24.44,24.44,24.44,25.94,26.44,24.44,24.44,22.22,21.11,21.67,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44],"Building_2":[24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,23.94,24.44,23.44,22.78,23.78,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.61,23.33,23.72,25.0,25.0,25.0,25.0,25.0,24.67,23.61,23.33,24.0,24.44,24.28,22.78,22.94,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,23.61,22.78,23.61,24.44,24.44,24.44,24.44,24.94,25.0,25.0,25.0,23.33,23.33,23.44,23.5,23.61,23.67,23.78,23.89,23.94,24.06,24.11,24.22,24.33,24.39,23.33,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.11,23.89,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.22,24.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.56,23.39,22.22,21.67,23.28,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.33,24.17,25.0,25.0,25.0,25.0,25.0,25.0,24.0,23.89,24.39,23.89,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.61,23.89,22.78,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,23.44,24.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,24.39,24.44,23.67,23.33,24.5,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,23.33,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.61,23.33,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.72,23.89,24.17,24.33,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.67,23.33,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.89,23.33,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.5,23.33,24.83,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,24.72,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.33,22.78,23.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.33,23.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.56,23.33,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.17,22.22,23.11,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.78,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,25.0,23.83,23.33,24.5,24.28,23.33,24.06,22.94,22.78,24.78,25.0,25.0,25.0,25.0,25.0,23.83,22.78,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.5,23.33,23.83,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,24.39,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,24.06,24.17,24.78,22.78,22.78,24.94,25.0,25.0,25.0,25.0,24.17,24.11,24.44,24.83,25.0,24.22,23.89,24.67,23.44,23.22,22.78,24.44,25.0,25.0,25.0,25.0,24.56,24.44,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.44,24.22,24.44,24.5,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.61,24.44,24.22,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,24.44,24.67,25.0,25.0,24.0,23.89,24.28,23.89,24.56,25.0,25.0,25.0,25.0,25.0,25.0,24.06,24.61,25.0,25.0,25.0,24.56,23.89,24.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.67,25.0,25.0,25.0,25.11],"Building_3":[24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,24.39,24.44,23.94,24.17,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.39,23.33,24.44,24.44,23.33,23.17,23.11,24.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.33,23.33,23.61,23.89,23.33,23.33,23.33,23.33,23.56,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.78,23.33,23.39,23.72,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.89,23.89,23.89,23.72,23.33,23.33,23.33,23.33,23.56,23.89,23.89,23.94,23.94,24.0,24.0,24.0,24.06,24.06,24.11,24.11,24.17,24.17,24.17,24.22,24.22,24.28,24.28,24.33,24.33,24.33,24.39,24.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.39,23.78,23.33,23.33,23.33,23.33,23.5,23.56,22.78,22.78,22.78,23.67,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.67,24.44,23.89,23.33,23.33,23.33,23.78,24.44,24.44,24.17,23.89,23.89,23.89,23.89,24.17,24.44,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,23.61,23.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,24.44,24.44,24.44,24.44,24.11,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.22,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.11,23.67,23.33,23.33,23.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.11,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,24.33,24.44,24.44,24.44,24.44,24.44,24.39,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.17,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,23.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,24.44,24.06,23.89,23.89,23.89,24.28,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,23.89,23.89,23.89,24.33,23.89,23.89,23.89,23.89,23.89,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.17,24.44,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.72,23.33,23.56,23.89,23.89,23.89,24.0,23.89,23.89,23.89,24.33,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.0,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.22,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44]}}],"schema":2}; diff --git a/docs/data/viewer.json b/docs/data/viewer.json index 51826d2..fbc86c8 100644 --- a/docs/data/viewer.json +++ b/docs/data/viewer.json @@ -1 +1 @@ -{"buildings":[{"id":"Building_1","name":"Building 1"},{"id":"Building_2","name":"Building 2"},{"id":"Building_3","name":"Building 3"}],"comfort_band_k":2.0,"dataset":"citylearn_challenge_2023_phase_2_local_evaluation","kpis":[{"id":"cost_total","name":"Electricity cost","unit":"ratio to no control"},{"id":"carbon_emissions_total","name":"Carbon emissions","unit":"ratio to no control"},{"id":"electricity_consumption_total","name":"Grid import","unit":"ratio to no control"},{"id":"discomfort_proportion","name":"Discomfort","unit":"share of occupied hours"},{"id":"discomfort_hot_proportion","name":"Too warm","unit":"share of occupied hours"},{"id":"discomfort_cold_proportion","name":"Too cool","unit":"share of occupied hours"},{"id":"ramping_average","name":"Ramping","unit":"ratio to no control"},{"id":"daily_peak_average","name":"Daily peak","unit":"ratio to no control"},{"id":"all_time_peak_average","name":"All-time peak","unit":"ratio to no control"},{"id":"daily_one_minus_load_factor_average","name":"1 - daily load factor","unit":"ratio to no control"},{"id":"one_minus_thermal_resilience_proportion","name":"1 - thermal resilience","unit":"share of outage hours"},{"id":"power_outage_normalized_unserved_energy_total","name":"Unserved energy in outages","unit":"share"}],"sample":false,"scenarios":[{"agent":{"actions":{"Building_1":{"battery":[0.0,0.0,0.03,0.05,0.05,0.0,0.0,0.15,0.0,0.0,0.0,0.0,0.1,0.15,0.0,-0.41,-0.05,-0.109,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.1,0.1,0.15,-0.1,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.1,0.02,0.0,0.007,0.002,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.092,-0.5,0.0,0.1,0.0,0.15,0.15,0.1,0.05,0.089,0.02,0.0,0.005,0.0,0.0,0.0,0.0,0.0,0.0,0.002,0.0,0.0,0.0,-0.335,-0.428,-0.08,0.0,0.0,-0.01,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.05,0.01,-0.3,0.0,0.0,0.1,0.0,0.1,0.1,0.03,0.0,0.0,0.0,-0.5,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.097,0.02,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.24,-0.2,-0.35,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.039,0.0,0.0,0.0,0.0,0.0,0.009,0.0,0.002,0.0,0.0,-0.5,-0.25,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,-0.22,0.1,0.0,-0.2,-0.2,-0.07,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.06,0.01,0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.3,-0.48,-0.065,-0.007,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.049,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.5,-0.335,-0.04,0.0,0.0,0.0,0.0,-0.005,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.07,0.0,0.0,0.0,0.019,0.0,0.0,0.0,0.0,-0.5,-0.33,-0.04,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.083,0.0,0.0,0.019,0.0,0.0,0.0,0.0,0.0,-0.066,-0.19,-0.3,0.0,0.0,-0.2,0.0,0.15,0.15,0.15,0.15,0.1,0.129,0.02,0.013,0.0,0.0,-0.4,0.15,0.15,0.05,0.0,0.05,0.0,-0.44,-0.3,-0.058,-0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.004,0.0,0.0,0.0,0.0,0.0,0.0,-0.35,-0.44,-0.057,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.1,0.0,0.029,0.006,-0.16,0.1,0.05,0.0,0.027,0.0,0.0,0.0,-0.17,-0.2,-0.248,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.08,0.02,0.0,0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.17,-0.494,-0.167,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.12,0.053,0.0,0.0,0.0,0.0,0.0,0.01,0.0,0.0,0.0,0.0,0.0,-0.36,-0.4,-0.078,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.04,0.01,0.0,-0.34,0.15,0.15,0.0,0.0,0.069,0.0,0.0,0.01,-0.5,-0.32,-0.037,-0.104,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.5,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.05,0.0,0.0,0.017,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.29,-0.45,-0.095,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.038,0.0,0.0,0.0,0.009,0.0,0.0,0.0,0.0,0.0,-0.334,-0.45,-0.06,0.0,0.0,0.0,0.15,-0.12,0.15,0.0,0.05,0.15,0.15,0.15,0.1,0.1,0.0,0.071,0.0,0.015,0.0,0.0,0.0,0.0,-0.5,-0.33,-0.04,0.0,0.0,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.04,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.5,-0.3,-0.04,0.1,-0.08,0.15,-0.12,0.15,0.15,0.15,0.15,0.15,0.12,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.41,-0.38,-0.149,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.068,0.081,0.079,0.072,0.063,0.072,0.072,0.085,0.293,0.199,0.146,0.306,0.307,0.368,0.461,0.647,0.781,0.477,0.233,0.306,0.642,0.216,0.214,0.41,0.373,0.188,0.096,0.078,0.073,0.094,0.106,0.12,0.0,0.088,0.184,0.277,0.456,0.544,0.619,0.616,0.55,0.679,0.489,0.39,0.319,0.558,0.706,0.433,0.34,0.2,0.2,0.15,0.179,0.172,0.127,0.185,0.241,0.0,0.136,0.073,0.037,0.108,0.151,0.307,0.56,0.49,0.12,0.1,0.0,0.22,0.047,0.036,0.081,0.031,0.052,0.0,0.014,0.0,0.0,0.0,0.072,0.092,0.009,0.103,0.12,0.0,0.097,0.061,0.178,0.274,0.221,0.18,0.142,0.091,0.091,0.206,0.02,0.1,0.119,0.095,0.109,0.055,0.103,0.155,0.083,0.134,0.084,0.152,0.2,0.285,0.376,0.46,0.483,0.525,0.477,0.213,0.218,0.143,0.163,0.101,0.102,0.074,0.183,0.185,0.133,0.121,0.169,0.17,0.21,0.35,0.1,0.151,0.2,0.172,0.295,0.1,0.126,0.31,0.218,0.29,0.245,0.337,0.207,0.185,0.227,0.28,0.199,0.16,0.121,0.103,0.15,0.149,0.25,0.204,0.13,0.2,0.321,0.376,0.454,0.38,0.1,0.168,0.122,0.11,0.138,0.101,0.041,0.05,0.033,0.019,0.008,0.0,0.0,0.069,0.017,0.012,0.101,0.081,0.112,0.153,0.202,0.261,0.317,0.352,0.371,0.388,0.246,0.22,0.13,0.145,0.111,0.064,0.081,0.059,0.048,0.041,0.035,0.024,0.049,0.07,0.203,0.202,0.242,0.307,0.379,0.461,0.535,0.554,0.496,0.495,0.445,0.315,0.255,0.119,0.184,0.286,0.1,0.223,0.1,0.155,0.04,0.122,0.057,0.148,0.114,0.017,0.18,0.2,0.352,0.396,0.52,0.505,0.317,0.561,0.554,0.388,0.285,0.101,0.141,0.094,0.225,0.296,0.153,0.186,0.089,0.154,0.15,0.129,0.267,0.13,0.1,0.219,0.334,0.331,0.689,0.798,0.525,0.521,0.258,0.305,0.237,0.1,0.113,0.256,0.199,0.206,0.135,0.164,0.092,0.139,0.104,0.168,0.052,0.049,0.185,0.225,0.2,0.423,0.503,0.599,0.694,0.669,0.425,0.267,0.25,0.229,0.174,0.309,0.18,0.158,0.126,0.127,0.13,0.083,0.125,0.12,0.194,0.0,0.113,0.153,0.233,0.328,0.408,0.501,0.536,0.475,0.418,0.294,0.298,0.184,0.185,0.11,0.213,0.274,0.212,0.092,0.122,0.093,0.125,0.19,0.153,0.1,0.153,0.211,0.1,0.146,0.19,0.248,0.3,0.32,0.43,0.45,0.275,0.237,0.164,0.16,0.208,0.275,0.219,0.127,0.18,0.08,0.127,0.156,0.22,0.121,0.14,0.236,0.331,0.226,0.519,0.51,0.54,0.616,0.35,0.31,0.21,0.303,0.207,0.153,0.202,0.28,0.239,0.189,0.079,0.135,0.138,0.245,0.1,0.1,0.15,0.236,0.566,0.311,0.303,0.124,0.214,0.302,0.282,0.205,0.209,0.134,0.09,0.0,0.058,0.0,0.035,0.027,0.017,0.008,0.018,0.033,0.066,0.103,0.159,0.406,0.706,0.459,0.53,0.909,0.972,0.66,0.444,0.243,0.089,0.176,0.233,0.193,0.234,0.305,0.249,0.195,0.161,0.227,0.1,0.162,0.013,0.052,0.142,0.188,0.27,0.261,0.352,0.482,0.471,0.433,0.312,0.293,0.176,0.1,0.05,0.09,0.152,0.228,0.1,0.163,0.1,0.084,0.092,0.09,0.032,0.0,0.014,0.059,0.089,0.01,0.115,0.12,0.147,0.122,0.118,0.09,0.08,0.064,0.064,0.053,0.115,0.203,0.12,0.12,0.149,0.131,0.09,0.161,0.108,0.013,0.0,0.06,0.07,0.106,0.143,0.236,0.187,0.053,0.11,0.082,0.088,0.084,0.074,0.134,0.135,0.186,0.12,0.134,0.1,0.099,0.101,0.116,0.124,0.0,0.124,0.209,0.296,0.3,0.354,0.44,0.708,0.687,0.378,0.295,0.223,0.1,0.118,0.07,0.179,0.257,0.135,0.164,0.07,0.177,0.05,0.166,0.12,0.1,0.196,0.409,0.33,0.342,0.485,0.831,0.895,0.553,0.45,0.387,0.308,0.1,0.2,0.162,0.205,0.0,0.079,0.0,0.063,0.056,0.074,0.209,0.334,0.325,0.365,0.398,0.447,0.507,0.606,0.693,0.707,0.537,0.405,0.36,0.274,0.21,0.349,0.235,0.176,0.15,0.085,0.063,0.13,0.145,0.179,0.208,0.0,0.145,0.2,0.203,0.468,0.448,0.14,0.54,0.751,0.623,0.316,0.346,0.164,0.159,0.143,0.145,0.188,0.231,0.153,0.132,0.16,0.227,0.23,0.204,0.174,0.0,0.137,0.1,0.2,0.232,0.345,0.433,0.427,0.284,0.1,0.306,0.276,0.168,0.1,0.07,0.186,0.263,0.233,0.193,0.18,0.181,0.166,0.1,0.17,0.093,0.002,0.211,0.194,0.339,0.29,0.533,0.609,0.542,0.327,0.307,0.288,0.233,0.19,0.272,0.2,0.2,0.21,0.166,0.141,0.128,0.11,0.152,0.189,0.1,0.116,0.256,0.1,0.097,0.401,0.707,0.725,0.34,0.349,0.598,0.404,0.324,0.1,0.38,0.232,0.164,0.165,0.115,0.132,0.109,0.22,0.14,0.276,0.134,0.1,0.584,0.281,0.452,0.561,0.708,0.584,0.58,0.592,0.453,0.269,0.337,0.1,0.092,0.225,0.285,0.18,0.17,0.116,0.14,0.18,0.198,0.233,0.1,0.386,0.387,0.654,0.491,0.525,0.627,0.691,0.463,0.204,0.426,0.383,0.515,0.5,0.293,0.1,0.093,0.0,0.049,0.053,0.0,0.073,0.122,0.215,0.321,0.532,0.388,0.607,0.556,0.659,0.855,0.832,0.678,0.518,0.275,0.3,0.133,0.115],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_2":{"battery":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.0,0.0,0.0,0.0,0.15,0.0,-0.195,-0.02,-0.104,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.1,-0.1,0.1,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.138,0.03,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.107,-0.18,-0.45,0.0,0.15,0.0,0.15,0.15,0.1,0.15,0.1,0.03,0.0,0.009,0.002,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.29,-0.293,-0.23,0.0,0.0,-0.03,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.047,0.01,-0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.23,-0.404,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.1,0.15,0.15,0.0,0.088,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.25,-0.25,-0.28,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.012,0.0,0.0,0.0,0.0,-0.5,-0.24,-0.2,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.1,0.15,0.1,-0.4,0.0,0.0,-0.1,-0.05,-0.02,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.068,0.01,0.007,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.29,-0.315,-0.035,0.0,0.0,0.0,-0.005,0.15,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.3,-0.45,-0.088,0.0,0.0,0.0,0.0,-0.01,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.409,-0.18,-0.2,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.253,-0.255,-0.29,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,0.15,0.058,0.01,0.0,0.0,-0.5,0.15,0.0,0.1,0.0,0.15,0.0,-0.31,-0.3,-0.087,-0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.01,0.0,0.0,0.004,0.0,0.0,0.0,0.0,0.0,0.0,-0.35,-0.275,-0.198,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.0,0.0,0.09,0.02,-0.5,0.15,0.15,0.15,0.0,0.0,0.08,-0.1,-0.17,-0.144,-0.104,0.0,0.0,0.15,0.0,0.15,0.15,0.13,0.02,0.01,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.14,-0.194,-0.099,0.0,0.0,0.15,0.0,0.15,0.1,0.07,0.02,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.39,-0.31,-0.12,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.145,0.03,0.009,0.0,-0.09,0.0,0.082,0.0,0.0,0.018,0.0,0.0,0.0,-0.5,-0.218,-0.125,-0.06,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.5,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.05,0.0,0.0,0.017,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.395,-0.37,-0.07,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.038,0.0,0.0,0.0,0.0,0.0,0.009,0.0,-0.252,-0.25,-0.27,0.0,0.0,0.0,0.15,-0.18,0.15,0.0,0.05,0.15,0.15,0.15,0.1,0.1,0.0,0.067,0.0,0.0,0.0,0.0,0.0,0.0,-0.33,-0.44,-0.06,0.0,0.0,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.04,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.4,-0.385,-0.05,0.1,-0.08,0.15,-0.12,0.15,0.15,0.15,0.15,0.15,0.12,0.05,0.01,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.46,-0.34,-0.144,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.497,0.159,0.233,0.3,0.401,0.474,0.604,0.696,0.671,0.622,0.462,0.276,0.346,0.362,0.32,0.06,0.011,0.089,0.129,0.006,0.0,0.0,0.0,0.023,0.453,0.189,0.278,0.428,0.47,0.728,0.838,0.984,0.64,0.601,0.479,0.256,0.203,0.192,0.199,0.131,0.083,0.057,0.04,0.028,0.02,0.014,0.007,0.026,0.074,0.121,0.181,0.255,0.271,0.448,0.403,0.167,0.204,0.35,0.152,0.099,0.107,0.178,0.15,0.035,0.007,0.02,0.103,0.073,0.0,0.0,0.0,0.0,0.0,0.027,0.059,0.069,0.091,0.111,0.164,0.176,0.235,0.236,0.167,0.104,0.068,0.055,0.077,0.118,0.147,0.02,0.0,0.0,0.0,0.0,0.0,0.215,0.099,0.144,0.392,0.456,0.451,0.487,0.575,0.586,0.585,0.547,0.433,0.23,0.185,0.145,0.113,0.082,0.145,0.041,0.0,0.0,0.0,0.0,0.0,0.065,0.137,0.171,0.21,0.261,0.458,0.543,0.448,0.452,0.486,0.469,0.366,0.204,0.156,0.13,0.097,0.227,0.167,0.0,0.0,0.0,0.0,0.0,0.134,0.064,0.19,0.416,0.169,0.255,0.342,0.425,0.541,0.535,0.527,0.457,0.31,0.193,0.169,0.14,0.148,0.214,0.256,0.222,0.0,0.0,0.0,0.0,0.0,0.104,0.085,0.137,0.211,0.28,0.346,0.408,0.495,0.485,0.493,0.452,0.35,0.22,0.169,0.15,0.129,0.082,0.053,0.036,0.1,0.013,0.007,0.002,0.04,0.104,0.181,0.224,0.267,0.328,0.384,0.448,0.541,0.521,0.498,0.442,0.343,0.201,0.154,0.123,0.188,0.067,0.048,0.032,0.02,0.012,0.008,0.004,0.035,0.093,0.203,0.276,0.346,0.419,0.502,0.719,0.698,0.695,0.685,0.622,0.476,0.313,0.217,0.152,0.205,0.247,0.076,0.009,0.019,0.021,0.021,0.02,0.046,0.219,0.567,0.25,0.452,0.446,0.441,0.525,0.611,0.588,0.569,0.522,0.415,0.267,0.195,0.143,0.147,0.182,0.251,0.093,0.0,0.0,0.005,0.008,0.051,0.121,0.208,0.423,0.295,0.362,0.421,0.491,0.596,0.604,0.605,0.639,0.474,0.282,0.218,0.189,0.297,0.135,0.009,0.017,0.021,0.016,0.013,0.01,0.049,0.111,0.168,0.194,0.221,0.277,0.335,0.402,0.81,0.805,0.339,0.452,0.41,0.277,0.259,0.226,0.248,0.149,0.181,0.16,0.006,0.0,0.0,0.0,0.047,0.119,0.452,0.243,0.293,0.347,0.399,0.446,0.525,0.527,0.529,0.758,0.415,0.293,0.196,0.161,0.127,0.115,0.219,0.132,0.0,0.0,0.002,0.004,0.062,0.139,0.288,0.509,0.578,0.316,0.379,0.479,0.593,0.602,0.608,0.574,0.48,0.319,0.278,0.317,0.184,0.117,0.138,0.08,0.006,0.015,0.013,0.012,0.059,0.129,0.191,0.247,0.3,0.379,0.459,0.536,0.879,0.917,0.515,0.511,0.447,0.308,0.218,0.165,0.121,0.091,0.169,0.187,0.0,0.005,0.037,0.012,0.045,0.156,0.173,0.213,0.287,0.364,0.444,0.503,0.587,0.564,0.515,0.495,0.363,0.268,0.2,0.164,0.118,0.087,0.2,0.173,0.0,0.002,0.008,0.01,0.333,0.17,0.269,0.529,0.128,0.311,0.635,0.476,0.692,0.62,0.364,0.328,0.227,0.154,0.118,0.095,0.069,0.109,0.226,0.089,0.0,0.0,0.0,0.0,0.008,0.064,0.046,0.07,0.082,0.1,0.127,0.174,0.225,0.153,0.134,0.095,0.064,0.039,0.035,0.028,0.018,0.052,0.137,0.045,0.0,0.0,0.0,0.0,0.001,0.017,0.031,0.158,0.227,0.038,0.084,0.116,0.146,0.149,0.148,0.118,0.136,0.074,0.059,0.048,0.079,0.16,0.21,0.039,0.0,0.0,0.0,0.0,0.011,0.072,0.121,0.177,0.231,0.303,0.367,0.426,0.521,0.729,0.595,0.349,0.526,0.207,0.168,0.14,0.106,0.077,0.197,0.158,0.0,0.0,0.0,0.0,0.045,0.428,0.357,0.505,0.299,0.433,0.7,0.6,0.948,0.972,0.372,0.507,0.455,0.31,0.226,0.189,0.282,0.343,0.037,0.003,0.013,0.018,0.013,0.011,0.057,0.206,0.29,0.445,0.507,0.768,0.71,0.455,0.667,0.706,0.693,0.605,0.482,0.321,0.232,0.179,0.128,0.26,0.28,0.0,0.007,0.013,0.017,0.017,0.066,0.44,0.364,0.2,0.621,0.38,0.499,0.859,0.904,0.565,0.896,0.451,0.623,0.292,0.337,0.209,0.056,0.27,0.233,0.0,0.0,0.013,0.02,0.022,0.182,0.175,0.17,0.166,0.204,0.373,0.505,0.377,0.654,0.685,0.688,0.262,0.187,0.161,0.145,0.116,0.133,0.112,0.063,0.026,0.029,0.027,0.024,0.021,0.053,0.115,0.189,0.233,0.285,0.335,0.412,0.443,0.522,0.525,0.529,0.498,0.388,0.281,0.232,0.206,0.453,0.103,0.1,0.073,0.008,0.02,0.017,0.016,0.07,0.194,0.429,0.306,0.363,0.551,0.478,0.592,0.65,0.68,0.71,0.688,0.947,0.341,0.291,0.249,0.221,0.183,0.162,0.096,0.046,0.024,0.025,0.022,0.089,0.179,0.336,0.339,0.392,0.469,0.562,0.639,0.77,0.789,0.839,0.855,0.649,0.385,0.286,0.364,0.291,0.295,0.169,0.208,0.0,0.034,0.033,0.032,0.298,0.142,0.404,0.355,0.377,0.492,0.589,0.768,1.0,0.907,0.721,0.6,0.54,0.435,0.265,0.217,0.159,0.121,0.179,0.172,0.0,0.032,0.031,0.034,0.067,0.15,0.278,0.375,0.464,0.572,0.692,0.797,0.933,0.925,0.856,0.729,0.663,0.344,0.264,0.207,0.137],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_3":{"battery":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,-0.07,-0.03,-0.116,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.01,0.1,0.0,0.1,-0.1,0.1,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.05,0.15,0.15,0.096,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.04,0.0,-0.075,-0.127,-0.25,0.0,0.1,0.0,0.15,0.1,0.05,0.05,0.064,0.035,0.0,0.02,0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.289,-0.371,-0.385,0.0,-0.18,-0.09,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,-0.3,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.376,-0.23,-0.2,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.1,0.15,0.15,0.1,0.1,0.15,0.0,0.15,0.0,0.1,0.0,0.089,0.04,0.0,-0.23,-0.49,-0.34,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.1,0.129,0.0,0.0,0.0,0.0,0.07,0.0,0.0,0.0,0.05,-0.5,-0.45,-0.3,-0.08,-0.039,-0.018,-0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.1,0.15,0.1,-0.21,0.1,0.0,-0.15,-0.15,-0.07,0.15,0.0,0.0,0.15,0.15,0.15,0.12,0.15,0.15,0.15,0.05,0.0,0.0,0.1,0.0,0.0,0.118,0.0,0.0,-0.2,-0.41,-0.367,-0.17,0.0,0.0,0.0,-0.088,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.12,0.0,0.0,0.0,0.0,0.1,0.07,0.03,0.0,-0.34,-0.49,-0.29,0.0,0.0,0.0,0.0,-0.14,0.15,0.15,0.15,0.15,0.15,0.12,0.15,0.15,0.0,0.0,0.15,0.05,0.06,0.03,0.0,0.0,-0.35,-0.49,-0.29,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.05,0.05,0.0,0.05,0.0,-0.326,-0.44,-0.32,0.0,0.0,-0.1,0.0,0.15,0.15,0.15,0.15,0.1,0.2,0.15,0.15,0.0,0.1,-0.4,0.15,0.15,0.1,0.0,0.05,0.0,-0.38,-0.4,-0.285,-0.13,-0.067,-0.033,-0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.1,0.0,0.0,0.0,0.08,0.0,0.0,0.1,-0.35,-0.37,-0.29,0.15,0.0,0.1,0.0,0.15,0.15,0.15,0.12,0.0,0.1,0.0,0.15,0.128,-0.22,0.05,0.1,0.1,0.07,0.0,0.045,0.0,-0.24,-0.223,-0.2,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.1,0.03,0.0,0.049,0.0,0.0,0.0,0.0,0.0,0.035,0.0,0.0,0.0,0.0,-0.15,-0.253,-0.49,0.0,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.1,0.1,0.0,0.06,0.0,0.0,0.03,0.02,0.0,0.0,0.0,0.0,0.0,-0.35,-0.4,-0.33,-0.1,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.2,0.15,0.137,0.07,-0.43,0.15,0.15,0.0,0.0,0.1,0.08,0.0,0.03,-0.49,-0.45,-0.227,-0.21,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.0,0.15,0.0,0.15,0.15,0.15,-0.34,0.0,0.15,0.0,0.1,0.15,0.15,0.15,0.0,0.15,0.15,0.133,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,-0.287,-0.38,-0.36,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.06,0.0,-0.371,-0.36,-0.33,0.0,0.0,0.0,0.15,-0.22,0.15,0.0,0.05,0.15,0.15,0.15,0.05,0.15,0.1,0.1,0.0,0.1,0.0,0.0,0.1,0.0,-0.326,-0.49,-0.25,-0.12,-0.06,0.15,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.15,0.15,0.1,0.0,0.0,0.0,0.05,0.0,0.07,0.0,-0.49,-0.458,-0.22,0.1,-0.1,0.1,-0.14,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.128,0.07,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.49,-0.37,-0.359,-0.07,-0.036,-0.018,-0.009,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.053,0.019,0.01,0.005,0.0,0.0,0.053,0.103,0.269,0.351,0.319,0.36,0.435,0.526,0.599,0.66,0.7,0.5,0.351,0.283,0.253,0.224,0.27,0.328,0.139,0.081,0.058,0.018,0.009,0.039,0.033,0.05,0.13,0.225,0.296,0.373,0.448,0.537,0.644,0.819,0.911,0.679,0.385,0.475,0.39,0.35,0.149,0.05,0.06,0.051,0.043,0.036,0.032,0.026,0.031,0.071,0.173,0.176,0.322,0.266,0.246,0.394,0.422,0.431,0.316,0.24,0.301,0.234,0.201,0.167,0.104,0.005,0.02,0.024,0.021,0.019,0.013,0.012,0.121,0.041,0.144,0.078,0.084,0.076,0.092,0.097,0.114,0.147,0.171,0.2,0.181,0.14,0.172,0.193,0.148,0.078,0.045,0.035,0.028,0.022,0.013,0.0,0.001,0.03,0.054,0.088,0.13,0.178,0.266,0.342,0.404,0.468,0.504,0.527,0.449,0.494,0.297,0.105,0.156,0.106,0.084,0.062,0.048,0.036,0.02,0.019,0.098,0.114,0.234,0.27,0.301,0.333,0.386,0.449,0.52,0.535,0.596,0.4,0.251,0.228,0.345,0.213,0.113,0.106,0.082,0.1,0.094,0.082,0.041,0.028,0.055,0.116,0.125,0.152,0.199,0.267,0.349,0.414,0.48,0.5,0.54,0.527,0.436,0.314,0.239,0.236,0.151,0.115,0.082,0.06,0.045,0.033,0.016,0.018,0.081,0.083,0.089,0.124,0.17,0.224,0.285,0.451,0.53,0.56,0.583,0.6,0.514,0.355,0.315,0.242,0.172,0.128,0.097,0.078,0.061,0.052,0.043,0.036,0.054,0.09,0.134,0.172,0.233,0.306,0.364,0.534,0.549,0.506,0.481,0.478,0.476,0.308,0.131,0.191,0.121,0.113,0.086,0.067,0.053,0.043,0.033,0.032,0.047,0.079,0.136,0.192,0.266,0.326,0.41,0.472,0.549,0.694,0.84,0.7,0.648,0.552,0.348,0.279,0.192,0.074,0.197,0.18,0.131,0.0,0.0,0.026,0.362,0.051,0.139,0.192,0.244,0.322,0.47,0.561,0.599,0.621,0.578,0.503,0.332,0.476,0.3,0.3,0.098,0.018,0.064,0.078,0.096,0.087,0.08,0.067,0.058,0.074,0.169,0.235,0.274,0.333,0.4,0.48,0.542,0.587,0.535,0.55,0.341,0.419,0.5,0.537,0.451,0.1,0.078,0.0,0.045,0.037,0.042,0.038,0.137,0.091,0.151,0.193,0.229,0.272,0.328,0.394,0.476,0.479,0.582,0.573,0.428,0.352,0.301,0.369,0.272,0.035,0.09,0.073,0.059,0.048,0.033,0.033,0.055,0.097,0.124,0.166,0.216,0.274,0.329,0.381,0.429,0.513,0.588,0.5,0.26,0.447,0.311,0.222,0.217,0.04,0.087,0.072,0.061,0.052,0.038,0.035,0.061,0.248,0.187,0.213,0.269,0.336,0.391,0.421,0.508,0.616,0.6,0.622,0.528,0.38,0.301,0.234,0.196,0.321,0.12,0.012,0.071,0.062,0.054,0.047,0.066,0.1,0.146,0.264,0.339,0.41,0.491,0.516,0.582,0.622,0.614,0.568,0.457,0.366,0.295,0.243,0.1,0.139,0.086,0.089,0.076,0.065,0.055,0.049,0.072,0.205,0.269,0.326,0.412,0.43,0.691,0.594,0.592,0.587,0.563,0.454,0.415,0.417,0.39,0.318,0.23,0.01,0.068,0.063,0.058,0.053,0.048,0.044,0.066,0.101,0.146,0.208,0.264,0.316,0.373,0.412,0.408,0.497,0.479,0.394,0.237,0.204,0.168,0.174,0.1,0.04,0.055,0.052,0.049,0.045,0.038,0.037,0.157,0.089,0.097,0.058,0.063,0.079,0.098,0.114,0.127,0.134,0.175,0.101,0.075,0.065,0.07,0.076,0.053,0.051,0.051,0.044,0.037,0.034,0.028,0.107,0.045,0.037,0.078,0.091,0.106,0.12,0.137,0.164,0.18,0.17,0.161,0.212,0.182,0.142,0.138,0.294,0.049,0.0,0.037,0.034,0.033,0.128,0.035,0.029,0.051,0.242,0.175,0.199,0.243,0.314,0.376,0.441,0.506,0.55,0.549,0.468,0.266,0.245,0.086,0.202,0.153,0.166,0.086,0.07,0.061,0.053,0.041,0.038,0.131,0.125,0.334,0.254,0.277,0.339,0.41,0.487,0.523,0.637,0.751,0.699,0.55,0.567,0.421,0.338,0.208,0.137,0.045,0.093,0.069,0.065,0.054,0.049,0.071,0.252,0.213,0.267,0.341,0.423,0.596,0.667,0.769,0.753,0.811,0.526,0.399,0.37,0.318,0.262,0.212,0.053,0.136,0.1,0.086,0.092,0.075,0.075,0.072,0.106,0.177,0.283,0.37,0.442,0.538,0.544,0.623,0.732,0.809,0.624,0.632,0.439,0.145,0.17,0.119,0.145,0.1,0.1,0.091,0.03,0.058,0.051,0.073,0.107,0.178,0.212,0.234,0.288,0.347,0.394,0.437,0.368,0.409,0.419,0.3,0.365,0.204,0.197,0.16,0.03,0.077,0.071,0.065,0.06,0.055,0.052,0.062,0.09,0.173,0.208,0.296,0.367,0.441,0.48,0.399,0.57,0.572,0.559,0.408,0.2,0.358,0.21,0.3,0.141,0.111,0.086,0.042,0.062,0.052,0.253,0.1,0.121,0.272,0.261,0.285,0.342,0.412,0.479,0.557,0.626,0.668,0.612,0.606,0.581,0.405,0.317,0.1,0.11,0.135,0.096,0.092,0.08,0.066,0.061,0.126,0.164,0.315,0.45,0.543,0.468,0.553,0.655,0.676,0.837,0.702,0.713,0.561,0.372,0.354,0.405,0.13,0.146,0.097,0.11,0.093,0.089,0.08,0.07,0.096,0.152,0.2,0.262,0.344,0.683,0.632,0.634,0.697,0.748,0.747,0.724,0.604,0.463,0.342,0.273,0.2,0.089,0.127,0.116,0.086,0.091,0.084,0.074,0.086,0.129,0.202,0.404,0.34,0.445,0.704,0.82,0.824,1.0,0.958,0.739,0.626,0.306,0.3,0.123,0.34],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]}},"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.223,0.262,0.301,0.301,0.301,0.418,0.418,0.418,0.418,0.418,0.496,0.612,0.612,0.253,0.209,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.395,0.472,0.589,0.501,0.617,0.617,0.734,0.734,0.734,0.734,0.734,0.85,0.928,0.943,0.943,0.948,0.95,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.948,0.867,0.433,0.433,0.511,0.511,0.627,0.744,0.822,0.861,0.93,0.946,0.945,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.95,0.949,0.949,0.949,0.654,0.28,0.209,0.209,0.209,0.2,0.2,0.317,0.434,0.55,0.667,0.784,0.9,0.939,0.947,0.681,0.681,0.681,0.759,0.759,0.836,0.914,0.938,0.937,0.937,0.937,0.503,0.503,0.503,0.503,0.503,0.62,0.737,0.853,0.928,0.944,0.944,0.949,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.735,0.558,0.25,0.25,0.367,0.367,0.367,0.483,0.483,0.6,0.717,0.833,0.911,0.941,0.941,0.941,0.941,0.941,0.941,0.948,0.948,0.949,0.949,0.949,0.548,0.327,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.55,0.667,0.745,0.55,0.628,0.628,0.451,0.274,0.212,0.329,0.329,0.329,0.445,0.562,0.679,0.772,0.889,0.936,0.943,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.682,0.265,0.207,0.201,0.201,0.201,0.201,0.2,0.317,0.434,0.551,0.667,0.784,0.901,0.939,0.947,0.947,0.947,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.535,0.24,0.204,0.204,0.204,0.204,0.204,0.2,0.317,0.434,0.55,0.667,0.784,0.877,0.877,0.931,0.931,0.931,0.931,0.946,0.946,0.946,0.945,0.945,0.533,0.241,0.206,0.206,0.206,0.206,0.206,0.206,0.284,0.284,0.4,0.517,0.634,0.751,0.867,0.932,0.932,0.931,0.946,0.946,0.946,0.946,0.945,0.945,0.887,0.719,0.453,0.453,0.453,0.276,0.276,0.393,0.51,0.626,0.743,0.821,0.921,0.937,0.947,0.947,0.947,0.596,0.713,0.83,0.868,0.868,0.907,0.907,0.523,0.257,0.207,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.64,0.256,0.206,0.323,0.323,0.4,0.4,0.517,0.634,0.751,0.844,0.844,0.922,0.922,0.944,0.948,0.807,0.884,0.923,0.923,0.944,0.944,0.944,0.944,0.793,0.616,0.397,0.397,0.397,0.513,0.513,0.63,0.747,0.863,0.926,0.941,0.941,0.948,0.948,0.948,0.948,0.948,0.947,0.947,0.947,0.947,0.947,0.947,0.796,0.367,0.22,0.22,0.22,0.336,0.336,0.453,0.57,0.687,0.803,0.897,0.938,0.938,0.938,0.938,0.938,0.938,0.945,0.945,0.945,0.945,0.945,0.945,0.628,0.278,0.209,0.209,0.209,0.209,0.325,0.442,0.559,0.676,0.792,0.909,0.94,0.948,0.948,0.648,0.765,0.881,0.881,0.881,0.935,0.935,0.934,0.942,0.52,0.237,0.204,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.433,0.55,0.667,0.784,0.35,0.35,0.466,0.466,0.544,0.661,0.778,0.894,0.894,0.933,0.933,0.933,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.945,0.945,0.945,0.945,0.688,0.296,0.212,0.212,0.212,0.212,0.212,0.212,0.329,0.445,0.562,0.679,0.796,0.912,0.942,0.941,0.941,0.941,0.948,0.948,0.948,0.948,0.948,0.948,0.653,0.26,0.207,0.207,0.207,0.207,0.324,0.218,0.335,0.335,0.373,0.49,0.607,0.724,0.802,0.879,0.879,0.934,0.934,0.946,0.946,0.946,0.945,0.945,0.533,0.241,0.206,0.206,0.206,0.323,0.323,0.323,0.44,0.556,0.673,0.79,0.821,0.899,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.503,0.237,0.202,0.28,0.209,0.326,0.219,0.336,0.453,0.57,0.686,0.803,0.896,0.935,0.943,0.943,0.943,0.943,0.943,0.942,0.942,0.942,0.942,0.942,0.583,0.249,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.825,0.799,0.773,1.001,1.608,1.032,4.653,0.483,-0.357,1.817,0.598,0.716,0.945,1.462,2.873,2.106,1.419,2.336,3.167,1.823,1.303,2.042,1.887,1.125,0.744,0.671,1.655,1.752,1.766,0.572,-0.361,-0.07,0.819,1.462,6.669,3.988,2.029,1.876,2.708,2.645,3.119,2.36,3.602,2.93,3.446,2.155,1.751,1.175,1.173,0.951,1.085,1.056,0.825,1.281,1.785,-0.042,0.046,-0.411,-0.437,-0.653,0.437,2.823,3.701,2.159,1.48,1.244,0.611,2.038,1.007,1.086,0.69,0.502,0.571,0.335,0.405,1.368,0.36,0.501,0.441,0.178,0.139,0.075,0.006,-0.103,-0.175,-0.381,0.065,0.424,1.307,1.666,1.519,1.417,1.531,1.536,0.602,1.06,0.907,0.74,1.717,0.573,1.501,2.044,0.608,0.055,-0.671,-0.296,-0.144,0.399,0.651,0.193,0.08,2.787,2.331,1.63,1.31,0.951,1.764,1.505,1.273,1.156,1.602,1.607,1.06,1.483,4.718,0.799,0.646,5.944,-0.426,-0.21,-0.037,-0.394,0.569,-0.485,-0.07,1.401,1.815,2.83,8.701,2.165,1.77,1.614,1.787,2.057,1.223,0.991,0.868,0.767,1.873,0.998,2.518,0.266,-0.238,5.353,1.286,1.054,1.116,0.173,-0.219,0.989,1.58,1.651,1.998,0.959,1.027,0.561,0.988,0.93,0.881,0.682,0.477,3.198,0.452,0.203,1.584,-0.29,-0.416,-0.411,-0.306,0.182,0.323,-0.918,0.14,1.108,1.692,1.963,1.378,1.142,0.818,0.619,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.384,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.473,1.79,2.23,2.226,2.274,1.659,1.124,1.239,1.57,0.768,1.262,0.98,0.987,0.513,2.232,0.536,0.668,0.575,-0.181,0.275,0.14,0.787,-0.107,1.453,1.432,4.752,1.721,3.365,2.949,2.338,1.022,2.106,1.24,1.776,1.967,1.478,1.314,0.735,1.004,0.954,1.665,1.897,0.373,-0.141,0.054,0.272,0.355,7.039,0.865,2.135,2.691,1.895,1.773,1.42,0.775,1.323,2.365,1.668,1.697,1.404,1.522,0.89,0.952,0.762,0.8,-0.092,-0.286,0.776,0.933,-0.316,0.716,1.03,2.079,6.952,3.526,3.051,2.429,2.173,1.622,1.288,2.123,1.593,1.5,1.367,1.37,1.28,0.69,1.055,0.545,0.496,-0.687,-0.421,-0.348,-0.121,0.188,0.644,0.695,1.671,1.785,2.153,2.822,2.449,1.21,1.182,1.613,1.228,1.976,1.721,1.226,1.349,1.227,1.561,3.362,0.291,-0.245,-0.371,-0.205,1.625,1.671,-0.246,0.045,0.128,0.213,2.194,2.593,1.077,1.519,1.759,1.512,1.708,1.979,1.585,1.301,2.218,0.717,0.84,0.753,0.246,0.327,0.208,0.055,0.283,0.005,2.107,-0.075,0.744,3.514,2.003,1.866,1.474,3.58,1.274,0.984,1.183,1.504,1.334,1.125,0.66,0.901,0.91,2.877,0.277,0.558,0.18,0.068,4.868,0.364,0.601,-0.149,3.461,2.746,1.976,1.843,2.38,1.544,0.852,0.356,0.591,0.353,0.496,0.46,0.418,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.838,1.27,1.438,1.665,1.816,2.095,1.859,1.651,1.176,3.996,1.378,0.809,-0.034,-0.098,0.632,0.101,0.589,4.299,0.693,0.241,0.345,2.05,2.119,3.617,1.664,3.563,1.247,1.243,1.477,1.688,0.762,2.234,0.76,0.789,0.743,0.055,0.828,1.138,-0.113,0.011,0.686,-0.012,0.981,0.06,0.121,0.092,1.271,2.067,1.88,1.119,1.404,1.293,1.324,2.552,0.911,0.843,1.763,2.043,0.774,2.247,1.33,-0.023,-0.337,0.481,-0.166,-0.062,0.121,0.101,0.119,1.037,0.888,1.151,1.608,1.902,1.664,3.253,1.629,1.613,1.243,1.077,1.167,0.752,0.722,0.544,0.213,-0.616,-0.313,1.116,0.465,0.291,1.064,0.086,1.186,2.586,4.624,2.238,1.363,2.24,1.563,1.142,1.587,1.906,1.404,1.157,0.657,2.685,-0.178,1.338,1.156,-0.266,0.317,2.656,0.602,0.224,0.984,1.376,2.096,2.07,2.252,2.184,2.533,1.046,1.243,1.04,1.197,0.353,0.677,0.35,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.39,1.28,4.062,7.971,2.747,2.362,2.203,2.727,2.443,1.928,1.857,1.322,1.079,0.969,0.69,0.608,0.884,0.945,1.069,0.91,0.158,-0.139,0.805,0.297,7.091,4.276,0.019,1.982,1.171,3.489,2.216,2.013,1.617,1.913,3.124,1.471,1.13,1.468,0.981,0.892,1.063,4.255,2.277,2.019,0.635,-0.5,0.882,-0.399,-0.103,0.136,1.658,0.2,0.312,0.778,0.718,3.574,1.744,2.23,1.912,1.142,1.619,1.932,1.807,2.047,2.585,1.807,1.742,1.17,0.39,-0.022,-0.508,0.011,-0.262,0.57,0.181,0.23,0.472,2.411,1.711,1.991,2.574,1.91,0.803,1.972,1.176,1.341,1.712,1.501,1.424,1.207,1.127,1.001,0.638,-0.307,-0.473,-0.115,-0.814,-0.845,0.954,0.633,2.296,1.584,1.98,2.977,3.004,5.466,0.832,2.414,1.804,1.525,1.528,0.955,1.223,1.982,3.61,1.724,0.768,-0.199,-0.562,2.156,0.256,0.736,3.042,0.372,1.414,2.177,3.175,3.728,2.307,8.012,1.33,1.251,1.778,2.014,2.939,1.447,0.991,0.957,1.757,1.031,0.766,0.813,0.69,1.379,1.5,0.84,1.08,0.288,2.008,3.067,2.283,2.846,2.022,2.571,2.628,1.56,0.765,0.736,0.351,0.552,0.567,0.349,0.613,1.808,1.644,3.225,3.406,0.521,1.332,1.346,2.203,2.816,3.384,2.993,2.488,1.991,2.435,2.11,0.894],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.13,21.16,21.58,21.93,21.8,21.94,22.24,24.08,24.2,24.32,24.27,23.56,23.61,23.4,23.46,23.79,22.65,23.31,23.02,23.21,20.48,18.7,18.9,18.55,19.4,19.02,19.5,19.04,19.12,19.75,19.4,19.48,22.3,22.03,23.53,24.47,24.28,24.26,22.69,20.53,20.5,22.55,22.97,24.54,20.79,22.61,23.11,22.65,23.43,23.16,24.05,24.03,24.32,24.51,24.75,24.01,24.06,25.18,24.35,24.54,25.96,25.16,25.89,24.69,23.76,23.87,23.82,23.74,24.11,23.96,21.77,23.71,22.18,22.0,22.06,21.7,22.4,21.86,21.59,22.81,22.81,24.08,24.13,24.39,24.19,23.86,23.38,23.3,22.89,22.74,23.72,23.33,23.9,23.51,24.01,23.76,23.97,21.84,21.63,21.85,21.92,21.46,21.81,22.02,21.3,23.57,24.08,24.35,25.18,24.66,26.55,27.11,25.77,26.31,24.72,24.72,23.36,23.92,23.72,22.73,21.52,21.73,21.74,22.0,22.25,21.91,22.34,21.9,22.67,23.88,24.11,23.78,23.79,23.53,24.23,26.45,26.45,26.81,26.63,26.18,26.42,27.12,27.1,27.28,27.55,27.84,28.13,28.32,26.82,27.74,28.34,27.55,28.09,28.15,28.03,27.86,27.46,27.09,26.71,26.37,26.06,26.68,26.26,26.74,26.46,26.57,26.94,26.63,26.78,26.85,26.91,26.98,27.18,27.08,27.21,25.89,26.12,25.9,25.51,25.13,24.66,24.15,23.8,23.88,23.37,23.02,22.99,22.99,24.02,23.07,21.44,22.74,20.6,21.79,20.8,22.21,21.05,22.2,21.62,22.71,24.5,23.44,24.09,23.3,23.56,23.1,23.31,24.49,22.34,22.11,22.21,22.39,23.75,23.27,23.78,21.66,20.63,21.53,20.9,21.96,20.99,21.23,21.71,20.6,22.3,23.52,23.29,22.99,23.47,20.87,20.5,21.46,21.22,22.84,22.0,22.37,23.52,23.41,21.2,21.53,20.94,21.58,21.11,21.96,21.36,21.96,21.65,23.32,24.16,23.48,23.51,24.19,22.68,22.62,22.01,21.4,21.28,22.05,22.53,22.43,22.41,22.59,20.47,21.35,21.14,21.47,21.38,21.37,21.98,21.71,22.15,21.73,24.11,23.85,24.21,23.95,23.71,23.45,23.13,22.97,23.14,23.05,23.29,23.01,23.68,23.39,23.98,22.26,21.14,21.1,22.07,21.61,22.05,22.1,22.04,22.8,24.01,24.26,24.26,25.75,26.14,26.33,26.23,25.96,25.6,24.25,23.15,23.59,23.49,23.91,23.71,22.71,21.36,21.32,21.93,21.2,22.27,21.9,22.16,22.09,23.6,24.13,24.0,23.89,25.13,23.01,23.37,22.93,22.17,23.23,23.11,23.68,22.41,22.86,23.13,22.24,20.94,20.87,20.97,22.06,21.4,21.71,21.03,22.7,23.57,23.96,23.82,21.83,23.5,24.05,25.91,25.9,25.39,25.21,25.33,24.94,25.31,25.67,26.81,26.17,26.91,26.51,26.59,26.74,27.08,27.14,27.35,27.34,27.26,27.07,26.21,26.21,26.47,27.0,27.56,28.23,28.85,29.62,30.07,28.68,26.96,25.39,24.99,23.69,22.12,21.94,21.91,21.97,21.0,22.06,21.52,23.6,23.96,23.77,23.91,23.61,24.07,23.44,22.57,22.28,21.84,21.96,21.42,22.22,23.03,23.78,23.17,22.03,20.69,21.78,20.73,21.41,21.56,21.62,21.73,22.7,23.64,24.06,23.81,23.66,24.76,23.78,23.94,23.76,23.98,23.83,23.91,23.83,23.92,23.84,23.96,22.83,21.33,21.97,21.76,21.38,21.53,22.08,21.16,21.85,23.31,24.17,23.93,24.17,23.98,23.68,22.58,22.96,24.35,23.79,24.21,24.03,23.97,23.99,22.91,22.6,21.45,21.96,21.59,22.0,21.94,22.11,22.31,22.79,24.84,24.2,24.11,23.81,24.09,23.9,23.43,21.32,21.14,22.13,22.15,22.5,23.59,23.37,23.97,22.16,20.94,21.7,21.11,22.17,20.74,22.26,21.57,22.83,23.85,23.94,23.02,23.98,24.36,23.84,21.63,21.27,22.15,22.22,22.09,22.2,23.75,22.6,22.89,21.99,23.94,23.13,24.4,23.66,23.88,23.97,22.78,22.15,22.58,22.76,23.06,23.09,23.11,22.7,22.1,21.5,21.82,22.07,21.89,22.16,22.39,20.24,20.82,21.07,21.18,21.96,22.4,21.43,21.23,20.98,21.03,23.51,22.77,23.16,23.68,22.05,22.72,25.05,21.83,21.05,21.05,22.28,21.46,22.7,22.62,22.69,22.43,21.61,20.81,21.37,21.5,21.09,20.32,20.07,20.32,20.9,23.19,22.31,23.42,22.92,23.25,22.55,21.95,21.78,22.59,24.15,21.68,21.92,22.52,23.16,23.54,21.65,20.57,20.43,20.51,20.49,20.43,20.64,21.69,21.39,22.78,24.45,22.82,23.58,22.69,23.53,21.68,21.41,21.48,22.4,22.08,21.99,22.1,22.22,20.85,21.23,20.7,20.36,20.56,20.76,20.97,21.44,21.54,21.66,23.25,24.03,23.54,25.44,26.52,24.47,22.87,22.58,24.31,24.17,21.25,21.95,21.9,23.54,19.71,20.86,21.13,21.06,21.55,21.32,21.7,20.74,21.96,21.05,22.94,24.29,20.11,22.57,22.16,22.34,21.57,22.24,22.09,21.58,21.63,22.34,21.45,23.06,23.32,21.48,20.6,21.16,21.09,21.69,21.49,21.47,21.67,21.79,23.49,21.43,22.37,20.56,22.06,22.07,21.82,21.3,22.3,23.99,21.49,21.65,19.6,18.95,19.56,21.14,21.53,23.06,22.76,22.99,23.91,23.38,23.4,23.1,22.75,21.74,22.89,21.79,22.57,22.09,21.09,20.69,20.76,21.04,22.07,21.43,22.81,23.04]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.278,0.278,0.278,0.278,0.278,0.278,0.394,0.394,0.222,0.204,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.278,0.278,0.356,0.267,0.345,0.345,0.462,0.462,0.462,0.462,0.462,0.578,0.695,0.812,0.919,0.943,0.943,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.941,0.941,0.847,0.687,0.295,0.295,0.412,0.412,0.528,0.645,0.723,0.84,0.917,0.941,0.94,0.948,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.948,0.948,0.692,0.432,0.229,0.229,0.229,0.202,0.202,0.319,0.436,0.553,0.669,0.786,0.903,0.939,0.947,0.885,0.885,0.885,0.885,0.885,0.885,0.885,0.884,0.884,0.707,0.504,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.55,0.628,0.745,0.862,0.861,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.93,0.929,0.708,0.487,0.239,0.239,0.356,0.356,0.356,0.473,0.472,0.589,0.706,0.823,0.9,0.939,0.939,0.939,0.939,0.939,0.938,0.947,0.947,0.947,0.947,0.947,0.525,0.313,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.434,0.511,0.628,0.706,0.355,0.355,0.355,0.267,0.223,0.205,0.322,0.322,0.322,0.438,0.555,0.672,0.765,0.882,0.935,0.942,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.947,0.77,0.514,0.235,0.204,0.204,0.204,0.204,0.2,0.317,0.434,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.68,0.288,0.21,0.21,0.21,0.21,0.21,0.201,0.318,0.435,0.551,0.668,0.785,0.878,0.878,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.932,0.574,0.414,0.237,0.237,0.237,0.237,0.237,0.237,0.315,0.315,0.432,0.548,0.665,0.782,0.899,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.713,0.487,0.23,0.23,0.23,0.23,0.23,0.347,0.464,0.581,0.697,0.775,0.892,0.937,0.945,0.945,0.945,0.515,0.632,0.632,0.709,0.709,0.826,0.826,0.552,0.286,0.209,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.939,0.947,0.947,0.946,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.64,0.397,0.222,0.339,0.338,0.416,0.416,0.533,0.65,0.766,0.86,0.86,0.86,0.86,0.93,0.945,0.517,0.634,0.75,0.867,0.867,0.867,0.929,0.84,0.69,0.562,0.47,0.47,0.47,0.587,0.587,0.704,0.82,0.921,0.937,0.944,0.944,0.949,0.949,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.824,0.652,0.564,0.564,0.564,0.681,0.681,0.798,0.875,0.93,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.944,0.944,0.944,0.944,0.944,0.602,0.328,0.222,0.222,0.222,0.222,0.338,0.455,0.572,0.689,0.805,0.918,0.941,0.948,0.948,0.868,0.868,0.932,0.932,0.932,0.946,0.946,0.946,0.946,0.519,0.326,0.215,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.317,0.317,0.317,0.433,0.433,0.55,0.667,0.784,0.35,0.35,0.466,0.466,0.544,0.661,0.778,0.894,0.894,0.933,0.933,0.933,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.945,0.945,0.945,0.945,0.599,0.274,0.212,0.212,0.212,0.212,0.212,0.212,0.328,0.445,0.562,0.679,0.795,0.795,0.912,0.912,0.941,0.941,0.941,0.941,0.941,0.941,0.948,0.948,0.725,0.503,0.265,0.264,0.264,0.264,0.381,0.222,0.339,0.339,0.378,0.494,0.611,0.728,0.806,0.883,0.883,0.935,0.935,0.935,0.935,0.935,0.935,0.935,0.643,0.259,0.206,0.206,0.206,0.323,0.323,0.323,0.44,0.556,0.673,0.79,0.821,0.899,0.938,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.937,0.586,0.248,0.204,0.282,0.211,0.328,0.222,0.338,0.455,0.572,0.689,0.805,0.899,0.938,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.945,0.944,0.944,0.544,0.244,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.677,2.934,0.672,0.633,0.669,0.97,1.285,1.197,2.017,1.736,1.692,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.47,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.787,1.85,1.308,0.495,1.07,0.363,0.968,1.006,0.656,0.581,0.607,1.347,1.03,0.766,0.661,0.331,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.072,0.125,0.332,0.673,1.216,0.518,1.009,1.001,0.912,1.016,0.562,0.284,0.187,0.234,0.238,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,0.197,0.199,0.554,1.129,0.737,0.682,0.715,1.082,0.872,1.012,0.776,0.683,0.685,0.359,0.264,0.066,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.158,0.161,-0.107,1.108,0.679,0.552,0.488,0.91,1.198,1.061,0.518,0.683,0.685,0.202,0.525,1.118,0.35,0.594,1.126,0.674,0.467,0.628,0.712,0.925,0.17,0.192,0.092,0.857,1.151,0.745,0.511,1.026,0.67,1.262,1.184,0.683,0.519,0.367,0.231,0.24,0.971,0.4,0.494,0.553,0.822,0.672,0.7,0.885,-0.686,0.158,0.586,0.942,0.855,0.746,0.725,0.62,0.373,0.307,0.389,0.41,0.217,0.218,0.236,0.332,0.536,0.653,0.739,0.704,0.895,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.258,0.23,0.215,0.219,0.24,0.318,0.415,1.1,1.363,1.218,1.414,1.5,8.473,1.415,1.521,1.201,1.375,1.539,1.56,0.854,0.539,1.152,1.244,0.858,0.604,0.725,0.461,0.284,0.3,0.346,0.705,2.349,0.849,1.006,0.935,0.907,1.331,0.473,0.203,0.113,1.066,1.092,0.82,0.642,0.502,1.023,1.098,1.251,0.894,0.683,0.685,0.379,0.282,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,0.219,-0.289,1.414,1.345,0.994,0.857,0.933,0.966,0.99,0.705,0.723,0.968,0.72,0.63,0.254,0.585,0.554,0.544,0.592,0.517,0.843,0.679,0.667,1.592,0.28,0.006,0.33,1.199,0.983,1.252,0.897,1.846,0.856,0.596,1.162,0.696,0.685,0.7,0.729,0.58,0.589,2.082,0.686,1.01,0.714,0.885,0.797,0.929,0.172,0.175,1.429,1.077,1.194,0.806,0.751,1.114,0.947,1.179,0.981,0.517,0.685,0.399,0.273,0.452,0.622,4.501,3.688,1.807,2.099,0.757,1.351,1.282,0.198,0.229,0.997,1.198,0.937,0.991,1.101,0.608,0.452,0.498,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.164,2.018,1.939,1.128,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.185,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.151,1.154,0.46,0.883,1.136,1.074,0.683,0.691,0.385,0.286,2.199,0.708,0.987,2.712,0.679,0.926,2.236,1.089,1.578,0.319,0.102,0.151,1.3,0.705,1.08,0.601,0.848,0.933,1.194,0.785,0.185,0.187,0.202,0.53,0.344,5.01,1.98,2.061,1.067,0.533,0.915,2.689,5.842,0.098,0.099,0.071,0.357,0.305,0.941,0.45,0.731,0.804,1.043,0.354,0.218,0.187,0.221,0.231,0.252,0.309,0.462,0.816,0.836,2.032,2.033,0.354,0.376,0.086,0.134,0.066,0.796,0.526,1.111,0.496,1.005,0.929,0.892,0.34,0.185,0.187,0.202,0.231,0.265,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,0.27,0.236,0.428,2.076,0.823,0.744,1.2,1.067,0.977,1.128,1.156,0.665,0.287,0.231,0.231,0.06,2.37,1.256,1.299,0.681,1.037,1.447,1.103,1.875,0.354,-0.078,0.683,1.106,0.918,0.71,0.814,0.966,1.008,0.282,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.817,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.48,0.89,0.818,0.414,0.202,0.216,0.241,0.269,0.389,1.799,1.566,0.68,2.297,1.213,1.178,2.298,2.329,1.656,1.284,1.104,2.903,1.014,1.456,1.165,0.817,1.296,0.713,0.352,0.185,0.216,0.304,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,0.272,0.255,0.384,0.58,0.718,0.739,0.65,0.492,0.939,0.828,0.743,0.747,0.745,0.257,0.777,0.37,0.601,0.589,0.699,0.664,0.687,0.862,0.851,0.952,0.171,0.187,0.198,1.025,0.991,0.888,1.349,4.435,1.032,0.413,0.517,0.701,0.73,0.739,0.599,0.799,0.748,2.025,0.926,0.907,1.525,0.928,1.053,1.164,0.207,-0.07,1.29,3.266,1.127,1.517,0.949,0.94,1.146,1.162,0.9,0.786,0.375,0.59,0.447,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,0.264,0.44,1.717,2.058,0.959,1.506,0.81,1.596,1.864,1.078,1.717,0.795,0.663,0.443,0.335,1.734,0.558,1.13,1.053,1.231,1.079,1.197,1.483,2.018,0.306,0.324,1.168,1.359,1.577,0.962,0.877,0.552,0.461,0.59,0.574,0.185,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.139,1.29,1.623,1.632,1.965,2.058,1.83,1.668,1.995,1.243,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.26,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,25.53,26.23,26.22,25.9,24.76,24.46,25.3,25.74,25.83,24.4,24.42,25.56,25.67,26.0,26.28,26.46,26.77,26.96,27.18,27.32,27.37,27.26,27.29,26.82,26.64,26.77,26.71,26.68,26.58,25.98,24.93,23.92,24.89,25.53,25.71,25.7,25.57,26.16,25.38,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.45,25.54,25.62,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.56,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.45,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,25.08,25.77,25.91,25.93,26.1,26.13,26.04,26.08,26.16,26.2,26.21,26.26,26.02,26.1,26.08,26.06,26.07,26.02,25.93,25.87,24.93,25.55,25.43,25.56,25.72,25.88,26.0,26.03,26.19,26.22,26.01,25.87,25.77,25.72,25.67,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.7,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.54,23.92,24.42,24.99,25.08,25.04,25.28,25.37,25.41,25.44,25.4,25.48,25.56,25.19,24.45,23.3,24.08,25.33,25.86,26.19,26.36,26.5,26.43,26.18,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.93,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.99,25.8,26.04,25.87,25.68,25.53,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.4,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.48,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.95,25.08,25.05,25.11,25.26,25.37,25.48,25.52,24.26,23.67,25.25,25.94,25.81,26.07,26.39,26.55,26.58,26.67,26.72,27.04,27.42,27.93,28.56,29.13,29.69,30.26,30.91,31.45,28.83,28.25,27.49,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,25.33,25.47,24.32,24.97,23.91,24.11,25.06,24.87,24.95,25.08,25.13,25.16,25.22,24.57,22.97,23.61,24.78,25.21,25.5,25.66,25.74,25.56,25.63,25.77,25.75,25.81,25.91,25.7,25.37,25.72,25.94,26.0,26.04,25.96,25.84,25.75,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.53,25.83,25.91,25.77,25.72,25.78,25.74,25.54,25.7,25.68,25.65,25.03,23.62,22.53,23.76,25.03,25.41,25.48,25.39,25.72,25.82,25.78,25.78,25.79,25.71,25.73,25.83,25.66,24.61,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.76,23.55,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,25.38,25.17,25.24,25.26,25.27,25.32,24.11,22.99,24.61,25.62,25.82,25.95,26.04,25.97,26.03,25.5,25.21,24.64,24.47,23.4,23.9,25.42,25.04,25.13,25.12,25.13,25.15,25.21,25.23,25.23,25.3,23.62,22.89,24.78,25.51,25.85,26.03,26.05,26.0,23.5,23.8,25.07,23.52,24.49,24.7,23.38,23.32,24.59,23.21,24.52,23.4,24.2,23.49,23.92,24.92,22.73,22.71,24.48,25.16,25.48,25.74,25.86,24.55,24.52,24.85,25.4,25.7,24.61,23.98,24.77,23.21,23.18,22.41,24.14,24.9,25.01,25.05,25.13,24.76,24.65,24.9,25.27,25.35,25.46,25.58,25.7,25.9,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,24.21,24.3,24.4,25.06,25.14,25.29,25.4,25.59,25.14,24.3,24.94,25.26,24.89,25.32,25.23,25.38,25.54,25.54,25.52,24.11,25.12,24.93,24.82,24.64,24.49,24.32,24.59,25.06,25.48,25.63,25.68,25.82,25.73,25.19,25.42,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.46,25.11,25.33,25.52,25.58,24.14,24.95,23.63,24.15,24.55,24.54,24.5,24.14,23.38,23.63,24.29,24.62,24.45,24.33,24.69,24.68,24.82,24.91,24.05,23.73,25.23,25.48,25.66,25.64,25.67,25.54,25.21,25.0,24.9,24.81,24.73,24.7,24.42,24.39,24.31,24.36,24.14,24.82,24.83,24.85,25.05]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.232,0.216,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.205,0.25,0.25,0.296,0.243,0.289,0.289,0.357,0.357,0.356,0.355,0.355,0.423,0.492,0.56,0.628,0.696,0.718,0.786,0.854,0.897,0.895,0.894,0.892,0.891,0.889,0.911,0.91,0.927,0.925,0.885,0.818,0.687,0.686,0.731,0.73,0.798,0.842,0.864,0.886,0.914,0.929,0.927,0.935,0.94,0.939,0.937,0.936,0.934,0.933,0.931,0.93,0.928,0.927,0.776,0.584,0.386,0.385,0.291,0.244,0.244,0.313,0.381,0.45,0.518,0.586,0.654,0.722,0.79,0.634,0.633,0.632,0.631,0.63,0.629,0.628,0.627,0.626,0.432,0.312,0.208,0.208,0.207,0.207,0.207,0.275,0.344,0.413,0.458,0.526,0.594,0.639,0.684,0.752,0.751,0.819,0.818,0.862,0.861,0.901,0.918,0.916,0.796,0.546,0.37,0.369,0.437,0.437,0.436,0.504,0.504,0.572,0.64,0.708,0.776,0.821,0.879,0.877,0.876,0.875,0.873,0.904,0.903,0.901,0.9,0.921,0.666,0.436,0.28,0.238,0.218,0.208,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.338,0.383,0.452,0.497,0.387,0.433,0.432,0.354,0.276,0.239,0.308,0.307,0.307,0.375,0.444,0.512,0.567,0.635,0.703,0.771,0.792,0.791,0.79,0.835,0.833,0.832,0.885,0.884,0.882,0.777,0.566,0.377,0.288,0.288,0.287,0.287,0.241,0.31,0.378,0.447,0.515,0.583,0.651,0.719,0.787,0.841,0.84,0.838,0.837,0.836,0.88,0.911,0.923,0.922,0.745,0.495,0.345,0.344,0.343,0.343,0.342,0.269,0.338,0.407,0.475,0.543,0.611,0.666,0.734,0.801,0.8,0.799,0.867,0.888,0.914,0.927,0.925,0.924,0.742,0.492,0.342,0.341,0.34,0.34,0.339,0.339,0.384,0.384,0.452,0.52,0.589,0.657,0.725,0.793,0.791,0.79,0.858,0.879,0.901,0.9,0.921,0.92,0.75,0.524,0.358,0.358,0.357,0.305,0.305,0.373,0.442,0.51,0.578,0.623,0.714,0.782,0.85,0.849,0.893,0.687,0.755,0.823,0.867,0.866,0.888,0.886,0.69,0.484,0.336,0.268,0.233,0.215,0.207,0.207,0.207,0.206,0.206,0.206,0.205,0.205,0.205,0.204,0.204,0.204,0.203,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.268,0.337,0.405,0.474,0.542,0.61,0.678,0.746,0.745,0.79,0.789,0.787,0.786,0.822,0.82,0.819,0.864,0.682,0.491,0.34,0.409,0.408,0.454,0.453,0.521,0.589,0.657,0.712,0.71,0.755,0.754,0.822,0.88,0.764,0.786,0.831,0.876,0.906,0.905,0.924,0.923,0.797,0.681,0.576,0.575,0.574,0.642,0.641,0.709,0.777,0.845,0.89,0.902,0.901,0.922,0.92,0.919,0.918,0.916,0.915,0.929,0.928,0.926,0.925,0.923,0.844,0.712,0.462,0.462,0.461,0.529,0.528,0.597,0.665,0.733,0.8,0.845,0.89,0.888,0.915,0.913,0.912,0.924,0.932,0.93,0.929,0.927,0.926,0.924,0.743,0.537,0.366,0.313,0.313,0.312,0.381,0.449,0.518,0.586,0.654,0.745,0.813,0.875,0.905,0.684,0.752,0.82,0.819,0.818,0.862,0.898,0.896,0.909,0.658,0.428,0.31,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.269,0.269,0.268,0.337,0.336,0.405,0.473,0.541,0.365,0.365,0.433,0.433,0.478,0.546,0.614,0.682,0.681,0.749,0.817,0.877,0.899,0.897,0.896,0.894,0.893,0.891,0.89,0.889,0.887,0.909,0.907,0.757,0.561,0.375,0.375,0.374,0.373,0.373,0.372,0.441,0.509,0.577,0.645,0.713,0.758,0.826,0.871,0.892,0.891,0.89,0.888,0.887,0.885,0.912,0.91,0.718,0.532,0.361,0.36,0.36,0.359,0.428,0.313,0.382,0.381,0.403,0.472,0.54,0.608,0.63,0.698,0.743,0.788,0.787,0.832,0.83,0.829,0.874,0.872,0.703,0.453,0.323,0.26,0.229,0.297,0.297,0.297,0.365,0.434,0.502,0.57,0.638,0.683,0.751,0.819,0.864,0.862,0.861,0.86,0.881,0.88,0.911,0.909,0.659,0.425,0.31,0.356,0.303,0.349,0.276,0.345,0.413,0.482,0.55,0.618,0.686,0.754,0.822,0.88,0.91,0.909,0.907,0.906,0.905,0.903,0.902,0.9,0.65,0.459,0.274,0.237,0.218,0.208,0.203,0.203,0.203,0.202,0.202,0.202,0.201,0.201,0.201,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,1.07,0.891,1.787,1.664,1.49,1.743,1.767,1.774,2.584,2.719,2.948,0.808,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.144,2.045,1.534,1.671,1.107,0.566,0.59,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.931,1.852,0.415,0.726,7.935,1.274,1.721,2.341,1.349,2.802,1.972,1.721,1.895,0.967,0.682,0.719,0.726,0.557,0.714,0.712,0.716,2.248,0.742,2.124,0.749,1.171,0.533,1.069,0.267,0.114,0.129,0.218,0.404,1.332,1.275,1.238,1.593,1.535,0.823,0.66,0.618,0.551,0.481,0.503,0.552,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.487,0.627,1.517,2.804,4.005,2.256,0.735,1.385,0.963,0.898,0.834,0.79,0.739,0.733,0.795,7.721,0.944,1.117,1.147,0.942,0.355,0.469,0.49,0.703,0.459,1.062,0.936,1.5,1.358,3.291,1.408,0.991,0.964,0.891,1.078,1.139,1.086,0.753,0.739,1.718,1.06,0.895,0.397,0.442,0.361,1.403,0.936,0.725,0.405,0.718,1.509,2.989,2.314,1.734,1.845,1.097,0.745,0.891,0.828,0.782,0.752,0.641,0.757,1.358,0.745,0.446,0.313,0.3,0.172,0.237,0.744,1.068,0.388,0.702,1.539,1.877,2.4,2.662,1.971,1.66,1.031,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.659,0.987,0.845,6.451,2.387,1.559,1.523,2.058,3.144,2.328,1.434,1.719,1.319,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.688,0.665,0.738,0.56,1.02,0.365,1.166,1.614,3.709,2.124,2.28,3.105,1.419,2.082,1.211,0.874,1.211,1.113,1.022,0.66,0.677,0.681,4.874,0.672,0.935,1.241,0.534,0.601,0.792,0.886,0.671,0.715,0.884,1.322,1.73,2.303,2.149,8.745,1.223,1.208,0.84,0.878,0.925,0.903,0.898,0.955,0.811,0.536,0.625,0.764,0.382,0.668,0.673,1.289,0.84,0.586,0.501,1.713,1.868,4.892,4.619,5.604,9.224,1.677,1.123,0.66,0.783,0.763,0.744,0.848,2.033,0.574,0.528,0.682,0.875,0.466,0.468,0.379,0.662,0.383,0.808,1.261,1.754,2.432,1.597,2.459,2.465,1.17,0.673,0.863,0.822,0.793,0.767,0.832,0.855,0.785,0.418,0.575,0.3,0.363,0.305,0.484,0.493,0.518,0.702,1.012,1.501,3.356,3.09,1.433,1.763,1.504,0.905,0.862,0.746,0.885,0.781,0.839,0.768,2.694,0.708,1.208,0.926,0.78,0.552,0.556,0.874,0.639,0.851,1.643,2.239,1.927,2.094,1.442,1.254,3.385,0.757,0.452,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.039,1.362,1.618,2.216,1.761,2.065,2.472,2.609,1.864,0.987,0.811,0.661,0.666,0.628,0.599,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.323,1.939,1.791,0.696,1.326,0.834,0.82,0.809,0.809,0.863,0.91,1.149,0.719,0.858,1.673,0.925,0.874,0.753,0.96,0.588,0.619,0.953,1.518,1.29,1.698,1.299,0.955,1.017,0.816,0.756,0.553,0.704,0.542,0.843,2.432,0.377,1.148,0.867,0.742,0.605,1.007,0.778,0.793,0.417,0.377,0.343,1.123,0.904,1.774,1.355,1.061,1.046,1.511,0.937,0.569,0.512,0.574,1.692,0.73,0.558,0.78,0.769,0.635,0.617,0.514,0.572,0.573,0.225,0.376,1.1,1.368,1.375,2.4,3.745,2.384,0.932,0.766,0.754,0.67,1.976,0.515,0.705,0.866,2.932,0.934,0.529,0.475,1.125,0.698,0.725,0.948,0.604,0.667,1.033,1.168,1.401,1.308,1.852,1.338,1.13,0.903,0.855,0.908,0.806,0.769,0.747,7.949,1.162,2.863,1.322,0.42,0.762,0.664,0.613,0.955,0.716,1.095,1.672,1.736,3.475,2.241,2.363,1.288,0.808,0.547,0.677,0.608,0.6,0.586,0.637,0.65,2.323,0.863,0.977,0.917,1.16,2.025,1.352,1.862,2.219,2.828,1.834,2.621,1.754,1.644,1.545,1.298,0.574,0.8,0.697,0.655,0.676,0.643,0.709,0.656,0.81,1.197,1.02,0.975,1.196,1.19,1.227,1.357,1.997,3.48,2.091,3.234,2.196,1.634,2.202,1.559,1.171,0.73,0.938,0.911,0.716,0.677,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.8,0.808,0.244,0.507,1.04,1.64,2.208,1.666,1.364,1.154,0.752,0.878,0.857,0.839,0.827,0.75,0.913,0.804,0.674,0.97,1.857,0.499,0.541,1.488,1.499,0.894,0.606,0.595,1.785,1.937,1.279,2.065,1.641,2.103,1.39,1.905,0.736,0.756,0.832,0.804,3.436,1.117,1.025,1.967,1.471,0.575,0.377,0.737,0.692,0.752,0.551,0.584,1.362,2.249,9.983,2.616,2.07,0.987,1.074,1.069,0.927,0.914,0.882,0.779,0.91,1.395,1.837,5.555,7.611,2.401,1.023,1.24,2.166,1.129,0.958,0.986,1.727,2.26,2.52,2.235,9.927,2.258,1.174,0.933,0.966,0.916,0.909,0.898,0.937,0.944,1.119,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.117,1.07,1.581,9.621,2.153,1.681,1.561,1.673,1.356,0.775,0.74,0.655,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.76,0.884,1.897,2.026,1.811,2.679,2.766,2.71,2.982,1.826,1.904,1.385,3.61],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.5,22.22,23.13,23.8,24.1,24.24,24.3,23.73,22.74,23.32,23.74,24.02,24.7,25.01,24.68,25.08,25.54,25.31,24.91,24.63,24.37,24.18,23.95,23.59,22.77,22.01,22.52,23.49,22.38,22.51,22.44,23.57,24.47,24.65,24.89,25.04,25.13,25.2,25.31,25.51,25.3,24.87,24.92,24.08,24.06,23.94,23.2,22.88,22.58,23.08,23.48,22.77,22.8,22.75,22.79,23.17,24.25,24.44,24.61,24.78,24.91,25.05,25.19,24.65,25.02,24.58,24.89,24.98,24.83,24.63,24.47,24.37,24.39,24.34,24.21,24.38,24.42,23.81,23.21,23.21,23.63,23.96,24.03,24.11,24.22,24.38,24.94,25.41,25.64,25.63,25.46,25.21,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.61,23.09,24.03,23.82,24.17,24.38,24.41,24.51,24.67,24.89,24.98,24.88,25.01,24.12,23.69,23.43,23.0,22.74,22.47,22.2,22.44,22.09,23.17,24.05,23.82,23.17,23.64,24.17,24.29,24.55,24.35,24.27,24.27,24.55,24.84,25.18,25.24,25.31,25.22,24.94,24.68,24.29,24.07,23.82,23.53,23.46,23.41,23.39,23.58,23.86,23.82,24.24,24.42,24.53,24.66,24.73,24.83,25.04,25.16,25.06,25.29,25.23,25.04,24.89,24.57,24.27,23.59,23.23,23.01,22.72,22.32,22.25,22.61,22.55,22.91,23.38,23.62,23.78,23.93,24.07,24.12,24.17,24.29,24.51,24.7,24.75,24.75,24.59,24.37,24.21,23.42,23.33,23.37,23.41,23.22,22.86,23.13,23.97,23.58,24.03,24.03,24.17,24.3,24.4,24.45,24.55,24.63,24.88,25.08,25.16,25.07,24.85,24.51,24.1,23.73,23.54,22.67,21.73,21.77,21.38,21.2,21.66,21.89,22.3,23.15,22.06,22.05,22.27,23.49,24.23,24.39,23.07,23.83,23.9,23.8,23.66,23.42,22.79,22.49,22.37,22.42,22.45,22.77,23.5,22.01,22.53,22.16,23.31,24.26,24.26,24.12,23.89,23.93,24.01,24.15,24.64,25.03,24.51,24.18,23.78,23.51,23.37,23.06,22.74,22.52,22.92,22.83,23.75,22.83,22.21,21.26,21.0,22.7,23.17,23.84,23.84,24.12,24.33,24.57,24.47,24.63,24.11,23.71,23.45,23.27,23.06,22.83,22.59,22.98,22.71,22.65,22.97,22.91,23.26,22.66,22.84,24.24,24.11,24.25,24.31,24.42,24.64,24.83,25.22,25.48,25.42,25.07,24.68,24.37,24.04,23.74,23.55,23.21,22.66,22.92,24.09,22.62,23.06,23.26,23.16,24.49,24.24,24.46,24.55,24.64,24.79,24.81,24.97,24.29,24.46,24.39,24.27,24.04,23.66,23.56,23.17,22.6,22.58,22.43,22.45,22.75,22.94,23.18,23.32,22.57,23.25,24.21,23.99,24.21,24.34,24.46,24.69,24.84,24.82,24.13,23.71,23.39,23.07,22.91,22.77,22.51,22.41,22.42,22.64,22.79,22.94,23.09,23.94,23.71,24.13,24.14,24.25,24.31,24.37,24.82,25.1,24.98,24.36,24.1,23.68,23.55,23.49,23.56,23.97,24.39,25.17,25.93,26.82,27.41,23.49,23.42,23.3,24.82,24.61,24.72,24.78,24.8,24.85,24.92,25.09,25.12,24.6,24.06,23.61,23.4,23.14,22.91,22.94,22.51,22.4,22.62,23.07,23.0,23.2,23.04,23.44,24.07,24.16,24.22,24.3,24.42,24.58,24.75,24.28,24.12,24.04,24.46,24.48,24.28,23.95,23.73,23.56,23.43,22.98,23.5,23.79,23.85,23.92,23.89,24.07,24.15,24.35,24.39,24.49,24.66,24.88,24.56,24.8,24.89,24.32,24.14,24.02,23.75,23.51,23.41,23.33,23.21,23.35,23.16,23.32,23.44,23.42,22.25,23.37,24.18,24.33,24.45,24.54,23.93,24.41,24.66,25.03,24.34,24.0,23.71,23.53,23.31,23.1,22.86,22.64,22.51,22.46,23.0,23.86,23.79,24.98,24.14,24.44,23.96,24.48,24.59,24.66,24.75,24.89,25.0,24.78,25.01,24.06,24.14,23.98,23.69,23.46,23.29,23.47,23.2,22.35,22.2,22.25,21.72,21.94,22.07,22.76,23.28,24.06,23.86,24.12,24.16,24.26,24.36,24.58,23.96,24.14,24.03,23.83,23.59,22.81,22.47,21.88,21.69,21.09,21.79,22.14,22.09,22.17,22.35,22.46,23.5,22.89,23.21,23.34,23.29,23.4,23.44,23.91,24.35,24.32,23.8,23.33,22.98,22.67,22.79,22.5,21.87,21.12,21.33,20.84,21.2,22.6,22.6,23.06,22.9,23.25,23.28,23.39,24.07,24.16,24.33,24.52,24.47,23.91,23.75,23.5,23.23,22.93,22.68,22.51,22.86,22.77,22.8,23.13,22.46,23.09,23.0,23.14,24.17,24.09,24.17,24.26,24.36,24.49,24.65,24.91,25.0,24.74,24.54,23.81,23.2,23.06,22.89,23.33,22.45,22.27,22.51,22.81,23.57,22.51,23.14,22.39,23.22,23.53,23.64,23.97,24.01,24.23,23.32,23.88,24.18,23.7,23.77,23.58,23.41,23.16,23.0,22.75,22.51,22.27,22.51,22.36,21.91,22.25,22.44,23.54,23.69,23.73,23.91,23.89,23.99,24.17,24.38,24.44,24.45,23.83,23.21,22.7,22.99,22.59,22.24,22.11,21.39,21.9,21.77,22.13,22.76,22.72,22.29,23.45,23.43,23.84,23.85,24.01,24.07,24.2,24.36,24.6,24.68,24.63,24.38,24.04,22.61,22.71,22.44,22.29,22.08,21.86,21.8,21.88,22.12,22.51,22.73,23.1,23.86,23.59,23.79,24.03,24.02,24.09,24.2,24.39,24.41,24.28,23.37,23.6,23.25,22.43,21.92,21.7,21.06,20.81,21.26,21.44,22.52,22.55,23.62,22.07]}},"complete":true,"cost_usd":[0.0413,0.0849,0.127,0.168,0.2088,0.2589,0.3425,0.4181,0.703,0.7988,0.8547,0.9555,1.0225,1.112,1.2004,1.5094,1.8774,2.1877,2.3149,2.464,2.6535,2.8171,2.9599,3.1136,3.1977,3.2599,3.3114,3.3725,3.4395,3.5145,3.5885,3.6304,3.7225,3.764,3.8401,3.9405,4.1858,4.3696,4.5311,4.7305,4.9435,5.124,5.3159,5.4664,5.6341,5.7854,5.9356,6.0283,6.1069,6.1661,6.2235,6.2732,6.3269,6.3816,6.4284,6.4905,6.5918,6.6332,6.7109,6.7764,6.8353,7.0792,7.1596,7.3016,7.5044,7.635,7.7778,7.8877,7.9727,8.1255,8.2124,8.2857,8.3457,8.3908,8.4354,8.476,8.5141,8.5811,8.6639,8.7106,8.796,8.8358,8.8868,8.9176,8.9607,8.9783,8.9949,9.0066,9.0306,9.0986,9.1952,9.3164,9.4118,9.529,9.6466,9.7413,9.8072,9.872,9.9224,9.9631,10.0341,10.0735,10.1371,10.2548,10.2917,10.3126,10.3379,10.3827,10.4369,10.4911,10.557,10.6084,10.6616,10.9466,11.1292,11.3149,11.4387,11.5087,11.6311,11.7278,11.8198,11.8999,11.9888,12.0765,12.1388,12.2123,12.5741,12.6373,12.7053,12.927,12.9714,12.9992,13.0464,13.0888,13.1473,13.1835,13.2552,13.3924,13.5213,13.6631,14.0288,14.1472,14.2534,14.3626,14.4708,14.5765,14.6646,14.7445,14.7972,14.856,14.9922,15.0624,15.1792,15.2314,15.2639,15.4441,15.5408,15.6195,15.7001,15.7441,15.7974,15.9494,16.1076,16.2567,16.3873,16.4839,16.575,16.6322,16.723,16.8081,16.876,16.9325,16.9754,17.0965,17.1558,17.2118,17.2826,17.3061,17.331,17.36,17.3865,17.4339,17.5002,17.523,17.5817,17.7713,17.9029,18.055,18.1945,18.3063,18.396,18.4545,18.5124,18.5591,18.6038,18.6414,18.6779,18.715,18.782,18.8306,18.9322,18.9749,19.0162,19.0915,19.176,19.4447,19.6238,19.7762,19.9058,20.0635,20.2497,20.4063,20.5164,20.6179,20.7307,20.8074,20.8573,20.9188,20.9701,21.0205,21.057,21.1455,21.187,21.2341,21.3024,21.3611,21.4256,21.4868,21.5825,21.8382,21.9548,22.0869,22.3665,22.5175,22.7253,22.9456,23.079,23.1843,23.3136,23.4108,23.522,23.6286,23.7219,23.7924,23.8414,23.8988,24.0774,24.1661,24.3171,24.3889,24.4338,24.4801,24.5375,24.6125,24.8511,24.9557,25.1394,25.4374,25.5749,25.7176,25.8403,26.1325,26.2358,26.3709,26.4797,26.58,26.6672,26.7571,26.8198,26.8832,26.939,26.992,27.0323,27.1044,27.1573,27.2266,27.2779,27.3671,27.4539,27.6231,28.0603,28.4506,28.6332,28.8756,29.0985,29.3364,29.6684,29.807,29.906,29.9894,30.0796,30.1622,30.239,30.2908,30.397,30.4458,30.4915,30.5286,30.5692,30.6074,30.6408,30.6768,30.7613,30.841,30.9869,31.1849,31.3338,31.5156,31.67,31.8031,31.962,32.0673,32.1395,32.2553,32.349,32.4272,32.5087,32.5894,32.6761,32.8141,32.8955,32.9322,32.9704,33.0018,33.0838,33.1699,33.2114,33.2546,33.3135,33.4692,33.6083,33.8165,33.9615,34.0694,34.2035,34.3182,34.4279,34.5384,34.6208,34.7039,34.8022,34.8551,34.9147,35.0333,35.1923,35.3446,35.4303,35.5158,35.5622,35.618,35.7422,35.7914,35.8984,36.2594,36.418,36.5559,36.6888,36.8673,36.958,37.0975,37.168,37.2386,37.3007,37.3567,37.399,37.451,37.5089,37.6284,37.6823,37.7595,37.8203,37.8823,38.1006,38.1748,38.29,38.3929,38.5898,38.7569,38.911,39.0662,39.2353,39.364,39.4307,39.4759,39.5286,39.5756,39.6135,39.6499,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.6919,39.8456,39.9718,40.0785,40.1724,40.2961,40.4119,40.5092,40.6003,40.6689,40.8177,40.9476,41.0253,41.075,41.1791,41.2661,41.323,41.4308,41.6099,41.704,41.7714,41.8339,42.0189,42.1628,42.3264,42.4559,42.6152,42.7034,42.7958,42.8967,42.9901,43.0334,43.1239,43.1674,43.2299,43.3317,43.4904,43.6057,43.7242,43.7769,43.8104,43.8864,43.9875,44.2095,44.2433,44.2784,44.308,44.3882,44.4837,44.6177,44.7029,44.7954,44.8863,44.9985,45.1096,45.1588,45.2034,45.2774,45.3921,45.4429,45.5337,45.6087,45.6549,45.6978,45.789,45.8632,45.8902,45.9214,45.9456,45.9825,46.1117,46.2007,46.2896,46.4389,46.6179,46.7641,46.9121,47.0072,47.0855,47.1462,47.2399,47.2944,47.3433,47.3969,47.5091,47.5562,47.5883,47.6197,47.7068,47.7647,47.8185,47.9076,47.9639,48.0865,48.3239,48.5533,48.6834,48.7829,48.9372,49.0519,49.146,49.2506,49.3639,49.4501,49.5152,49.5631,49.6691,49.9008,50.0427,50.1965,50.2729,50.3142,50.4441,50.5232,50.5798,50.691,50.8345,51.0217,51.2813,51.4298,51.6215,51.7814,51.9045,52.0057,52.0883,52.1469,52.1823,52.2257,52.2664,52.3075,52.3501,52.409,52.5332,52.6831,53.0454,53.3122,53.4091,53.5524,53.6523,53.8605,54.1971,54.4004,54.5639,54.7564,54.9174,55.0646,55.1913,55.2964,55.377,55.4551,55.5152,55.56,55.6034,55.6545,55.7101,55.7713,55.8731,55.9576,56.0068,56.1247,56.203,56.4766,56.7023,56.8095,56.9725,57.1442,57.3375,57.5792,57.7303,57.8664,58.0192,58.1783,58.2922,58.3667,58.4465,58.5066,58.5593,58.6185,58.7682,58.8911,58.9987,59.0693,59.1156,59.1816,59.2384,59.3031,59.3566,59.4716,59.5136,59.5766,59.7058,59.7915,59.981,60.1019,60.2256,60.3285,60.4105,60.5067,60.6088,60.707,60.8117,60.9156,61.0168,61.1011,61.1724,61.2292,61.3037,61.3376,61.3737,61.4423,61.5274,61.5865,61.6455,61.7191,61.9769,62.1131,62.2373,62.3985,62.5413,62.7537,62.8808,62.9819,63.0569,63.1486,63.2372,63.3231,63.4747,63.5627,63.6436,63.7785,63.8484,63.8916,63.9471,63.9956,64.0465,64.1301,64.2117,64.3807,64.6292,64.8477,65.2583,65.4664,65.7137,65.7935,65.9276,66.0443,66.1413,66.2347,66.2987,66.3737,66.4702,66.628,66.7499,66.9709,67.2193,67.3152,67.4359,67.5291,67.6493,67.8134,67.9069,68.0735,68.4032,68.6217,68.8317,69.008,69.5546,69.7046,69.8286,69.9382,70.0741,70.2087,70.296,70.3635,70.428,70.5563,70.6352,70.713,70.7916,70.8728,71.047,71.1686,71.2661,71.4002,71.5006,71.7003,72.0415,72.4281,72.6199,72.7558,72.9018,73.0422,73.1399,73.2016,73.2609,73.2953,73.3382,73.3818,73.4212,73.4705,73.5578,73.656,73.8377,73.9912,74.0691,74.2095,74.3543,74.5272,74.7457,74.9766,75.1898,75.4058,75.5522,75.7054,75.8313,75.9761],"decisions":[{"clamps":[],"fallback":null,"reason":"Top price not now; batteries at soc floor with zero usable energy, so hold. Grid charging cheap hour but flat-ish prices, keep baseline cooling; no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices flat-ish and not at top now; batteries at floor so no discharge; grid charging ok but cheapest hours not clearly; hold storage, keep baseline cooling, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour: small grid charge in Building_1 within the 0.15 kWh peak headroom; other devices stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; small battery charge in Building_1 within district headroom, others idle, no overcooling, tanks left at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band, so cooling stays at baseline. Building 1 tops up its battery modestly within the 0.26 kWh peak headroom; others hold since they're at floor.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero at the peak target, so no grid charging; hold batteries and tanks, keep baseline cooling since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero at the peak limit, so no grid charging; batteries idle, Building_2 cooling already at zero while overcooled, others keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_2 is already at zero cooling. Small grid charge into Building_1 and Building_2 ahead of later price peaks, kept within headroom. Others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint so cooling stays at baseline; no top price now and carbon is high, so the batteries hold and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not now; B1 and B2 are slightly overcooled-free, so keep baseline cooling, idle batteries and DHW; B3 battery empty, no charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 5-7 hours ahead, not now; hold batteries, avoid grid charging at this price, let Building_1 cooling ease as it is overcooled slightly, keep tanks empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is in 4-6 hours, so hold batteries and charge only with spare solar; cool at baseline since rooms are near setpoint; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at setpoint so cooling stays at baseline; Building_1 stores spare solar at low carbon, and batteries are held for the top-price hours 3-5.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price and no overcooling: charge all three batteries modestly ahead of the 2-4 h top-price window, leave cooling at baseline and the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is near its low and carbon is rising, so hold batteries for the top-price hours ahead and charge later in cheap, low-carbon early morning hours; no cooling change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load within usable kWh; cool Building_3 slightly less as it is overcooled; hold cooling where rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery only as far as its small usable energy allows; trim overcooled occupied Building_3 slightly; keep tanks idle.","status":"ok"},{"clamps":[{"applied":0.4769,"point":"Building_1.cooling","reason":"indoor 22.3 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.477,"rule":"comfort"},{"applied":-0.109,"point":"Building_1.battery","reason":"discharge would take charge from 0.21 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1042,"point":"Building_2.battery","reason":"discharge would take charge from 0.20 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1161,"point":"Building_3.battery","reason":"discharge would take charge from 0.22 below 0.1","requested":-0.2,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover own load; buildings 1 and 3 overcooled slightly, trim cooling; no grid charging; DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Batteries sit at their 0.2 floor with no usable energy and grid charging is off, so they stay idle; Building_3 is overcooled and gets reduced cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are at soc floor with no usable energy and grid charging is off, so no discharge or charge; Building_3 is slightly overcooled so cooling is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are at or above setpoint so cooling stays at baseline; batteries are at floor with no usable energy and grid charging is off, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cold and near its band edge, so cooling stays at baseline; battery is at floor and grid charging is off, so no battery or tank action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is more than 0.5 C overcooled, so cooling and tanks keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price so batteries stay idle; rooms are at or above setpoint, so baseline cooling is kept and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; Building_1 and Building_3 are overcooled slightly, Building_2 unoccupied and not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; Building_1 and Building_2 cooling adjusted per overcooling rule, Building_3 near setpoint keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are near setpoint, building 2 is warm so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings 1 and 3 are cooled slightly below baseline toward setpoint is not needed as they are not overcooled; use baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Building_1 is slightly overcooled, so its cooling is trimmed; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is overcooled, so baseline cooling and dhw are kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price day: battery idle, no grid charging; cool building 1 slightly, building 2 and 3 are not overcooled so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top hours; batteries idle, buildings near setpoint, Building_2 overcooled? No, it is warm, so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; overcooled occupied Building_1 gets cooling cut to 0; warm rooms keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours: battery idle; Building_1 and 3 overcooled-check: B1 is 0.36 below setpoint so small cut; B3 warm, no cut; B2 unoccupied, no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price day with no top-price hours, so battery stays idle; cooling near baseline since rooms are near setpoint; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle and no top-price discharge; cooling near baseline since rooms are near setpoint; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle; rooms are within or above band, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by 0.88 C so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle. Building_1 is 0.83 C under setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, tanks held at 0. Building_1 is overcooled 1.2C below setpoint so cooling is trimmed slightly; others at or above setpoint keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery idles; Building_1 is overcooled by 1.5 C so trim its cooling slightly; others keep baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries and tanks stay idle; cut Building_1 cooling slightly for overcooling, leave others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, so batteries idle. Overcooled occupied rooms 1 and 3 get 0.1 less cooling; building 2 is warm, so its cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 2 are overcooled near setpoint so modest cooling cut or baseline kept, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling only in overcooled occupied rooms (B1, B3), keep B2 at baseline since it is warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so batteries stay idle; Building_3 is slightly overcooled so its cooling is trimmed, others keep baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries idle and tanks at zero. Cooling kept at baseline; Building_3 is cool near its band edge so no extra cut.","status":"ok"},{"clamps":[{"applied":0.4331,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.58","requested":0.433,"rule":"deviation"}],"fallback":null,"reason":"Flat-price day so batteries stay idle. Building_1 and Building_3 are overcooled, so their cooling is trimmed; Building_2 is above setpoint, so it keeps baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.1 C below setpoint, so cooling is trimmed; flat price day keeps batteries idle and tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idles; buildings 1 and 2 are overcooled slightly, so reduce cooling modestly; no DHW or charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so battery idle; Building_1 is 0.6C below setpoint and occupied, so cut cooling modestly; others near setpoint, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; Building_1 is 0.98 C below setpoint so cooling is trimmed slightly; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so battery idle; Building_1 is only 0.5 C below setpoint (no cut yet); others at or above setpoint, so keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, no grid charging; Building_1 and Building_3 cooling near baseline, Building_2 overcooled not applicable since it is warm, so cooling baseline held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 0.9 C below setpoint so its cooling is trimmed slightly; other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is overcooled by about 0 C; battery held since prices flat-ish and not top now; charge only when cheap, grid charging ok, so small early charge avoided; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.6 C so cooling is trimmed slightly; prices are flat and batteries sit at floor, so storage and tank stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled occupied Building_1 cooling to zero, store spare solar in batteries at low price, hold the rest for top-price hours 22-24, keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not top price; store spare solar and pre-charge batteries before evening top-price hours, cooling kept at baseline, tanks idle.","status":"ok"},{"clamps":[{"applied":0.0733,"point":"Building_1.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.1,"rule":"comfort"}],"fallback":null,"reason":"Top price not now; B1 overcooled 2.4C below setpoint so cut cooling to 0.1; B2 and B3 warm so keep baseline cooling; store solar in batteries, no grid charge, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so cooling is trimmed; batteries charge in the cheap, low-price window ahead of the top-price evening hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices flat-ish and top_price_now false; district at peak target so limit load, discharge batteries to cover own load, cool Building_2 baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling none; battery 1 stores solar, others take small grid charges ahead of 17-22h top price; tank idle; cooling baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and carbon high now, so grid charging waits for the cheaper midday hours; cooling stays at baseline and storage holds.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries at the cheap 0.029 price ahead of the 23-24h top price; trim overcooled Building_3, keep others on baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_3 cooling for overcooling, raise Building_2 cooling as it runs warm, hold batteries for top-price hours 22-24, and leave Building_1 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are above or near setpoint so cooling stays at baseline; Building 1 is overcooled and gets slight cut; battery idle before top-price hours 21-23; no grid charging at 19h.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are slightly overcooled so cooling is trimmed; Building_2 is warm so cooling is kept; batteries and tanks held idle this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; price is not at top now, so battery holds and charges only at cheap hours; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not top now; start topping up batteries before the 18-20h peak, and trim Building_3 cooling since it is overcooled.","status":"ok"},{"clamps":[{"applied":0.0995,"point":"Building_1.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap, low-carbon hour before the 17-19h top-price window: top up batteries 2 and 3 and small charge for 1, cooling and DHW left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 2 hold cooling, Building_3 eases overcooling, and batteries charge in the cheap hours before the 16-18h top price.","status":"ok"},{"clamps":[{"applied":0.1383,"point":"Building_2.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Cheap low-carbon hour with grid charging allowed: top up Buildings 2 and 3 batteries, hold Building 1 near full, keep cooling at baseline and DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0067,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries top up in cheap low-carbon hours ahead of the 14-16h top-price window.","status":"clamped"},{"clamps":[{"applied":0.0016,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Overcooling is minor, so baseline cooling holds; price is low and not top, so batteries hold, but B1 and B3 may top up gently since grid charging is ok in cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut to 0; Building_3 charges 0.15 from cheap, clean grid power ahead of the 12-14h top price; DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest hour with flat-ish low price: no overcooling, tanks idle, Building_3 battery charges 0.15 toward 0.95 before the afternoon top-price hours.","status":"ok"},{"clamps":[{"applied":0.0963,"point":"Building_3.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled by 0.75 C, so cooling is cut to 0. Building_3 charges 0.1 from cheap grid power ahead of the top-price hours. Others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 2 overcooling not needed; B3 near setpoint, hold baseline. Price not top now, grid charging limited; store spare solar only, hold batteries and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.18C so cooling is cut; price is not at top, so batteries hold; Building 2 is warm, keep cooling; charge is limited while price is mid-level.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries near full since no top-price hour is now and carbon is high; cooling stays at baseline as no room is overcooled; DHW left idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; battery holds charge for the top-price hours 6-8 and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are not overcooled; keep baseline cooling. Building_2 is unoccupied and warm, so no cut. Price not top now; grid charging ok but cheap-hour charging is modest, so hold batteries near baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries near full and no top price now, so hold; small top-up on Building_3 for the 16-18h peak; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling and dhw kept at baseline since no room is overcooled; batteries held near full soc for the top-price hours 3-5, with no grid charging needed now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.3 C below setpoint so cooling is cut to 0; Building_3 tops its battery to about 0.95 ahead of the top-price hours 2-4.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are near full and top-price hours are ahead, so hold; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge B2 and B3 to cover their loads, trim overcooled B1 slightly, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover each building's load, sized to load_now; keep cooling at baseline since rooms are at or above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its building load; rooms are at or above setpoint, so cooling stays at baseline and DHW is idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries for top-price hours 21-23; slight cooling trim in overcooled Building_1, others at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled, trimmed cooling; B2 above setpoint so cooling kept; spare low-price hour used to start battery charging ahead of top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 21 is not top price; B1 and B3 are cooler than setpoint and B2 is warm, so cooling stays baseline; batteries idle until top-price hours 19-21 pass, with the district near its peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is near its low and grid charging is allowed, so all three batteries charge 0.15 ahead of the 18-20h top price; B1 is slightly overcooled and eases off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, cheap and low carbon: charge batteries toward 0.95 ahead of the 17-19h top-price window; rooms within band so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not now; buildings 1 and 2 are overcooled slightly, so reduce cooling modestly; grid charging ok at low price, charge batteries gradually.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut; Building_2 is warm so cooling is kept; batteries top up cheaply before the 15-17h price peak.","status":"ok"},{"clamps":[{"applied":0.0893,"point":"Building_1.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0643,"point":"Building_3.battery","reason":"charge would take charge from 0.89 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Hour 2 is cheap and not top price; grid charging ok, so charge batteries modestly toward 0.95 before 14-16h peak; cool slightly less in overcooled rooms.","status":"clamped"},{"clamps":[{"applied":0.0199,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Overnight cheap hour with grid charging allowed; top up batteries toward 0.95 before the 13-15h top-price window. Cooling and DHW left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 4, cheap price and low carbon: charge batteries lightly where grid charging is allowed, keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[{"applied":0.0046,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.005,"rule":"soc"},{"applied":0.0095,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Rooms are within band and not overcooled, so baselines stay. Batteries are near 0.95, so only small top-ups before the 16-18h price peak; tanks stay empty.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is slightly overcooled so cooling is trimmed; batteries are near full, so only small grid top-ups before the price peak; no discharge at low price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, price is not top and load is well below target, so keep baseline cooling, idle batteries and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are not overcooled and batteries are near full with no top price now, so keep baseline cooling and hold storage idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.2 C overcooled so cooling is trimmed to 0.083; other rooms are at or above setpoint. Batteries held, not top price, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled so cooling trimmed a little; batteries held since no top price now and soc already near 0.95; others unchanged.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.08 C below setpoint, so cooling is trimmed; batteries idle until top-price hours, tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0016,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Overcooling is minor (Building_1 -0.36 C, within band); top price not now, so hold batteries; store spare solar in Building_1 and 3 moderately; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 13, price not top; B1 battery already at 0.95 so no charge; B2 unoccupied, no overcooling; B3 near setpoint; keep baseline cooling, idle storage and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint, so baseline cooling holds; price is not at top and batteries are near full, so storage and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now and batteries are already near 0.95 for the top-price hours ahead; no overcooling, so keep baseline cooling and hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, trim slightly overcooled Building_1, hold DHW at zero, no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its building load; trim overcooled Building_1 slightly; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed slightly; all batteries discharge to cover load at the top price and keep district load within target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price not top now; B2 unoccupied and B1 overcooled slightly, so cooling is trimmed; batteries hold for 21-23h peak; district load near target, so limit charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; Building_3 discharges to ease the binding district peak limit, Building_1 and 2 hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on: discharge batteries to cut district load; trim overcooled rooms slightly; hold DHW and charging for cheaper hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms B1 and B3 get reduced cooling; B2 is warm so kept at baseline. Batteries and tanks idle until cheap early-morning charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with grid charging allowed: small battery charge toward the evening top-price hours; cooling kept at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 16-18h top-price peak: charge all batteries at 0.15 and trim cooling for the overcooled rooms in Buildings 1 and 3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 15-17h top price: charge all three batteries at 0.15; cooling and DHW stay at baseline or null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and not top price; charge batteries moderately within grid_charging_ok, avoid overcooling, leave DHW idle, keep cooling near baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 13-15h top-price window: charge each battery 0.15 toward 0.95, no discharge, cooling and tanks at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 12-14h top price: charge batteries modestly, keep cooling at baseline since rooms are near setpoint, tank idle.","status":"ok"},{"clamps":[{"applied":0.0495,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0473,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 11-13: top up batteries toward 0.95, trim overcooled Building_1 slightly, and leave the rest at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Pre-charge batteries toward 0.95 ahead of the 10-12h top-price hours; B1 and B2 are nearly full, so only small charges; cooling kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price low and not top now, so no cooling change. Load at target and above 0.9x forecast, so discharge batteries to cut district load; hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled-free; cooling kept at baseline, battery idle as price not top now, charging not advised at this hour's mid price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 slightly under-cooled? No: all rooms warm or near setpoint, so keep baseline cooling; price not top now, so hold batteries and tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.76C below setpoint, so trim cooling slightly; no top price now, so hold batteries; price is low and grid charging is allowed, so mild charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 2.6C below setpoint, so cooling is cut modestly; no top price now, so batteries hold, and charging only starts once grid_charging_ok in cheap hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling eases off; spare solar is stored in its battery; the other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly cool, reduce cooling a bit; top price not now, so store spare solar in batteries; Building_2 unoccupied and warm, keep baseline; Building_3 keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and overcooled by 0.87 C, so cooling is trimmed; batteries hold for the top-price hours ahead and only spare solar is stored.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price now is mid-level, not top; battery held near full for top hours 1-3 ahead, no grid charge needed. Cooling near baseline; Building_1 and Building_2 slightly warm, Building_3 cool.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get less cooling; top-price hour so batteries cover building load; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover load, trim cooling where rooms are overcooled, no grid charging or tank charging.","status":"ok"},{"clamps":[{"applied":-0.4038,"point":"Building_2.battery","reason":"discharge would take charge from 0.50 below 0.1","requested":-0.5,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover own load; B2 unoccupied, B1 near setpoint, B3 overcooled so cut cooling; no grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 is warm so cooling stays. Batteries hold charge for the 21-23h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.64C above setpoint so no cooling cut; top price is at hours 20-22 ahead, not now, so no discharge; grid charging of batteries is ok but low prices hit early morning, so hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling slightly in overcooled occupied rooms 1 and 3; hold batteries and tanks since no top-price discharge is due now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling only in Building_2 (1.52C above setpoint, no cut needed); price not top now, battery held, charging deferred to cheap hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; batteries start gentle grid charging ahead of the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price now and cheaper than top hours ahead, so charge batteries toward 0.95 before the 16-18h peak; trim slightly overcooled Building_1.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hours now; charge batteries toward 0.95 before the 15-17h top-price window. Comfort rooms stay at baseline cooling.","status":"ok"},{"clamps":[{"applied":0.0967,"point":"Building_1.battery","reason":"charge would take charge from 0.85 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour, price not top; charge batteries modestly with grid_charging_ok true, cool slightly less in overcooled Building_2 is not needed, keep cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge batteries toward the 13-15h top-price window, trim overcooled Building_1, and keep the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour with grid charging allowed: top up Buildings 2 and 3 batteries ahead of the 12-14h peak; Building 1 is near 0.95 so it holds; rooms are within band, so no cooling change.","status":"ok"},{"clamps":[{"applied":0.0061,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building_1 slightly cool, no cooling cut; price not top, grid charging ok but cheap hour so charge modestly; B2 overheated so no cooling cut; B3 charge modestly from solar and cheap hour.","status":"clamped"},{"clamps":[{"applied":0.0885,"point":"Building_2.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour with grid charging allowed: top up Buildings 2 and 3 batteries modestly, hold Building 1 near full, keep cooling at baseline and tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; Building_3 stores 0.15 of capacity at low price; batteries hold for top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"No top-price hour now and no room is overcooled, so cooling stays at baseline and storage and tanks hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold storage for top-price hours 16-18; charge Building_3 battery modestly at low price, keep tanks empty and cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 cooling near baseline; Building_2 unoccupied and warm so baseline kept; top price not now, so battery holds, charging low price hours ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.2C below setpoint, so cooling is trimmed; battery holds for top-price hours 16-18, with spare solar stored in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.57C under setpoint, so cooling is cut slightly; price not top now, no discharge; batteries hold for 4-6h peak; district load near target.","status":"ok"},{"clamps":[{"applied":0.0889,"point":"Building_3.battery","reason":"charge would take charge from 0.86 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; top-price hours are ahead, so I hold storage and top up Building_3 from the cheap grid, with no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled so cooling is trimmed; batteries hold or top up gently ahead of the price peak at hours 2-4; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 cooling slightly as it is overcooled; hold batteries since top-price hours are ahead and Building_1 is already near 0.95 SOC; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building load; B1 is cool so cooling kept at baseline; B2 is above setpoint so cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads, cut overcooled occupied rooms' cooling, leave the tank idle and do not grid-charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward building load; trim cooling in the two overcooled occupied rooms; leave unoccupied Building_2 cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries hold for the top-price hours 21-23 and district load is below the 0.9 discharge trigger.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled, so cooling is trimmed; batteries top up at low price, no discharge as top price is not active now, tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling slightly in overcooled Buildings 1 and 3, leave Building 2 at baseline, and hold batteries idle until cheaper, lower-carbon early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are not overcooled enough to cut cooling; battery held near floor since top price is 2 to 3 hours ahead, charging is not needed now, and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 is above setpoint so it keeps baseline. Batteries charge at the low price, with no grid charge at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now; B2 overcooled slightly? No, B2 is 2.39C above setpoint so cool normally; hold batteries, charge cheap hours only, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the 15-17h top-price window: charge all three batteries about 0.15 each, keep cooling at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, top price not now; charge batteries modestly with grid charging ok, avoid tank charging, trim cooling only where overcooled (none here).","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and grid charging is allowed, so all three batteries charge gradually toward 0.95 before the 13-15h top-price window; no cooling changes.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge batteries gently toward 0.95 before the 12-14h top-price window; B2 overcooled slightly so cooling held at 0, others kept at baseline.","status":"ok"},{"clamps":[{"applied":0.0388,"point":"Building_1.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0495,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Hour 5 is cheap and not top-price; charge batteries modestly within headroom, idle heat pumps except Building_3 near band, no DHW.","status":"clamped"},{"clamps":[{"applied":0.1293,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Cheap early hour with headroom: top up Building_3 battery toward 0.95, hold others, keep cooling at baseline since rooms are above setpoint, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 and B2 near setpoint; top price not now, so hold batteries, grid charging ok at low price, dhw idle; modest charging within headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is minor (B1 0.52 C below setpoint, B2/B3 above setpoint); top price not now, so hold batteries and keep baseline cooling, no tank or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are near full and price is not top, so storage and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so hold them idle; tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0116,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.012,"rule":"soc"}],"fallback":null,"reason":"Cooling left at baseline since rooms are at or above setpoint; small solar-fed charging tops batteries toward 0.95 ahead of the 5-7h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price is 4-6 hours ahead, so hold batteries; Building_2 is unoccupied and near setpoint; charge batteries modestly only where grid charging is allowed and load is low.","status":"ok"},{"clamps":[{"applied":0.0023,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; Building_1 stores its spare solar; top-price hours are ahead, so the rest of the battery is held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are not overcooled, so cooling stays at baseline; price is not top now, so batteries hold and dhw stays 0; Building_2 is unoccupied and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low now with top-price hours 1-3 ahead, so hold batteries and top B3 up slightly; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover own load, cool slightly below baseline only if overcooled, no grid charging, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load, trim cooling only where occupied rooms are overcooled, and keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads; cool slightly less in overcooled Building_1 and Building_3 room; no grid charging; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get slightly less cooling; batteries discharge only within usable charge at top price; building 2 unoccupied and above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is overcooled so cooling is trimmed slightly; batteries discharge into the top-price hour within usable energy; no charging at top price; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now with no usable battery in B1/B2; B1 and B3 cooling trimmed as overcooled, B2 warm so cooling held, B3 small discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by about 1 C so its cooling is trimmed slightly; batteries are at floor with no usable charge, and no grid charging or tank charging is allowed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price weekend with no top hours: battery idle, no grid charging; cool slightly in Building_1 and hold others near baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle; Building_1 and Building_3 get slight cooling trims since they are overcooled, Building_2 is above setpoint so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery idles; cooling near baseline since rooms are near setpoint; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; no room is overcooled, so cooling holds baseline and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_2 is 1.06 C above setpoint so cooling is raised; others hold baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so storage stays idle; rooms are near setpoint and load is well under peak target, so baseline cooling is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings slightly below setpoint, so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so storage stays idle; no room is overcooled, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so storage stays idle. All rooms are at or above setpoint, so baseline cooling holds and DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idles; buildings 1 and 2 are not overcooled, Building 3 is 0.4C below setpoint so keep baseline cooling; no dhw.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; cooling only trimmed where overcooled, and tanks held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so battery stays idle; no room is overcooled and load is well under target, so baseline actions are kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle. Rooms are at or above setpoint, so cooling stays at baseline and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries stay idle. Rooms are at or above setpoint, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Rooms are not overcooled, so cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no usable battery energy and zero peak headroom, so storage stays idle, tanks stay empty and cooling follows baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are not overcooled, building 2 is warm so baseline cooling kept, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; Building 1 and 3 are overcooled so cooling is trimmed slightly; Building 2 is above setpoint so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks stay at 0; trim cooling only in overcooled occupied rooms (B1, B3), keep B2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling slightly in overcooled occupied rooms 1 and 3, keep room 2 at baseline; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim overcooled Building_3 slightly, hold Building_1 near baseline near band edge, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks hold at 0; cooling kept at baseline since rooms are near band edges or warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery idles; overcooled Building_3 trimmed toward 0.1, Building_1 kept at baseline near band edge, Building_2 above setpoint left alone.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle and tanks stay at 0; Building_1 is overcooled by 1.7 C so its cooling is trimmed by 0.1, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so battery stays idle; trim cooling only in Building_1 and Building_3, which are overcooled; Building_2 is warm so it stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle; cooling and tank left at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled 1.8C below setpoint so cooling is cut to 0.1; others held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle and DHW is off; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Building_1 is overcooled 1.6 C below setpoint, so its cooling is cut; the other buildings keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries idle to avoid round-trip losses; no room is overcooled, so cooling and DHW stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, so batteries stay idle; Building_1 is overcooled 1.4 C so its cooling is cut slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; Building 2 is above setpoint so no extra cooling cut; tank stays at zero and baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices, so batteries stay idle and tanks hold at 0; Building_1 is overcooled 1.17 C so its cooling is trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint and Building 2 is overheated, so cooling stays at baseline; prices are flat-ish with no top hour now, so batteries hold and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; others hold baseline; batteries trickle-charge at low price before the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed; all batteries charge modestly in the cheap, low-carbon hours ahead of the evening top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not overcooled anywhere, so cooling stays at baseline; storing solar and a modest pre-peak battery charge since grid charging is allowed and load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1 C overcooled so cooling is trimmed; all batteries trickle-charge at low price before the top-price evening hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is at its low and not a top hour, so I'm topping up batteries gently before the 19-24h peak-price window; cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_1 gets slightly less cooling; batteries discharge to cover load since district load exceeds 0.9x forecast; no grid charging at zero headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in the two overcooled occupied rooms, hold batteries near idle before the top-price hours, and store only spare solar.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.46 C overcooled, so its cooling is trimmed slightly; batteries hold since carbon is high and grid charging waits for cheaper hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Ease cooling in overcooled B1 and B3, discharge batteries to keep district load under target, and skip grid charging with almost no headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled so its cooling is trimmed; batteries discharge to cover load since district load is above 0.9x forecast; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint so cooling stays at baseline; district load is past 0.9x forecast, so batteries discharge only their small usable energy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 16-18h top-price window: charge batteries modestly, hold tanks at 0, and avoid cooling cuts in rooms near the comfort band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or below band with no top-price hour now and load under 0.9x forecast; hold batteries and keep baseline cooling, saving charging for low-carbon hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cool but baseline cooling already sits at the safe edge, so I hold baseline; Building_2 is warm; batteries and tank idle until cheap early-morning charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets slightly less cooling; Building_2 stays at baseline; Building_3 kept at baseline due to band edge; batteries charge modestly at the low price to prepare for top hours 17-19.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, grid charging allowed: charge all batteries toward 0.95 before the 16-18h top price. Trim cooling for overcooled occupied rooms 1 and 3; hold room 2.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with grid charging allowed: charge each battery 0.15 toward 0.95 before top-price hours 15-17; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and not top price; charge batteries moderately with grid charging allowed, hold DHW at zero, and trim cooling only where rooms are overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get slightly less cooling; all batteries charge at the low price and low carbon ahead of the 13-15h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.0681,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Overcooled rooms trimmed, Building_2 left alone above setpoint, and batteries topped up on cheap low-carbon hours ahead of the 12-14h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 5 is a cheap, low-carbon hour: trim overcooled Building_1 and Building_3, top up batteries toward 0.95 before the 11-13 top-price hours, and keep tanks empty.","status":"ok"},{"clamps":[{"applied":0.0068,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0075,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Building 1 slightly cold, no cooling cut; price not top, so no discharge; grid charging ok at low price, store modestly in batteries, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 7: price low and not top, batteries near full so hold idle; B1 and B2 overcooled slightly, B3 at setpoint so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Battery held idle: not a top-price hour and load is well below target. Cooling trimmed only in overcooled B1 and B3; B2 is warm, so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 slightly overcooled, trimmed cooling; B2 warm so baseline; B3 mildly overcooled, trimmed; B3 battery tops up at low price; others hold; no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled (about 2.7 and 1.0 C below setpoint) so cooling is trimmed; battery idle since top price is 6-8h ahead and no price now; Building 3 unoccupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_1 cooling since it is overcooled; hold batteries for the top-price hours ahead and keep tanks idle; other cooling stays at baseline.","status":"ok"},{"clamps":[{"applied":0.118,"point":"Building_3.battery","reason":"charge would take charge from 0.83 above 0.95","requested":0.12,"rule":"soc"}],"fallback":null,"reason":"B1 is occupied and 0.93 C below setpoint, so cooling is trimmed slightly; B3 tops up its battery toward 0.95 from spare solar ahead of the top-price hours 4-6.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is minor, so cooling stays near baseline; prices are low and not top, so battery holds and no grid charging or tank use this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.46C under setpoint, so cooling is trimmed; batteries hold for top-price hours 2-4 ahead and load is far below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is at target with zero headroom, so I discharge modestly to cut district load while keeping most battery charge for the top-price hours 16-18.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its building load; cooling held at baseline since rooms are near or below band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load; ease cooling where occupied rooms are overcooled; leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery only down to its floor. Cooling kept at baseline since rooms are near or below band, so no cut.","status":"ok"},{"clamps":[{"applied":0.2575,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.41","requested":0.257,"rule":"deviation"},{"applied":0.3322,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.48","requested":0.332,"rule":"deviation"}],"fallback":null,"reason":"Cut overcooled occupied rooms (B1, B3) toward lower cooling, hold batteries idle as no top-price hour is now and carbon is high, B2 at setpoint keeps baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 is cooling-capped only if warm; it is cool near band edge, so hold baseline. Other rooms are not overcooled. Battery and tank held idle; no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; batteries hold since carbon and price are high now and cheaper early-morning charging is ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled Building_1 and Building_3 cooling, and discharge the small usable batteries to hold district load near target since it exceeds 0.9x forecast.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; batteries start modest grid charging at low price before the 17-19h top-price hours. DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is at its low, so I charge all three batteries from the grid toward the top-price hours and ease Building_3's overcooling; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries in the cheap hour ahead of top-price hours 15-17; cooling held at baseline since rooms are not overcooled, and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now: charge all three batteries at 0.15 toward 0.95 before the 14-16h peak; trim overcooled Building_1 slightly; hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets less cooling; all batteries charge at the cheap hour ahead of the 13-15h top price; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, grid charging allowed: batteries charge toward 0.95 before the 12-14h top price. B1 cooling trimmed slightly as it is overcooled; others hold.","status":"ok"},{"clamps":[{"applied":0.0491,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0495,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Hour 5 is cheap and low-carbon with no top price ahead; Building_1 is overcooled so cooling is trimmed, and batteries top up gently before the 11-13h peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling left to baseline since rooms are near setpoint; small top-up charges for batteries before 10-12h top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled slightly, trimmed cooling; B2 warm so baseline kept; B3 charges battery at low price ahead of top-price hours; no DHW, no discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near or above setpoint so cooling stays at baseline; batteries are held since top price is not now and SOC is near target; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the coming top-price hours; B1 is overcooled but near its band edge, so keep baseline cooling; B2 and B3 are warm, so no cuts.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.13 C below setpoint so its cooling is trimmed; other rooms are at or above setpoint, and batteries hold for the top-price hours 6-8.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not now; buildings 1 and 3 slightly cool-side near setpoint, so keep baseline cooling; battery near full, hold for top-price hours 5-7; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by about 1 C, so cooling is trimmed slightly; B3 stores spare solar ahead of the top-price hours; the rest holds.","status":"ok"},{"clamps":[{"applied":0.0696,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Overcooled occupied Building_1 gets reduced cooling; batteries hold for the top-price hours 3-5, with Building_3 topping up from spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour is now; batteries are near full, so only topping up Building_3 and holding cooling and tanks at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now, batteries are already near 0.95 so hold them for the top-price hours ahead; no overcooling correction needed, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, keep cooling at baseline near comfort edge, no grid charging, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, trim overcooled Building_3, hold Building_1 cooling as its room is below band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries up to usable energy; cooling kept at baseline since rooms are cool or at setpoint; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; Building_2 is above setpoint so it keeps baseline. Batteries and tanks held idle until top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied rooms B1 and B3, hold batteries since no top-price hour is now and charging is not cheap, leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are cool-side near setpoint; B1 is 1.9C below so trim cooling slightly; top price hours ahead, so hold batteries and avoid grid charging now.","status":"ok"},{"clamps":[{"applied":0.2287,"point":"Building_1.cooling","reason":"indoor 22.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.229,"rule":"comfort"}],"fallback":null,"reason":"Building_3 is overcooled so cooling is trimmed slightly; Building_1 is cool so cooling stays at baseline. Batteries hold for the 18-20h top-price hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak limiter is on with zero headroom, so no grid charging; small discharges cover load near forecast peak, and cooling stays at baseline since rooms are at or outside band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 16-18h top price: charge batteries modestly, cut overcooled Building_3 cooling, leave comfortable rooms at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms fall inside the envelope limits, so cooling stays at baseline. Charging batteries at the low price ahead of the 15-17h top-price hours; tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 slightly cut cooling; all batteries charge 0.15 in cheap low-carbon hour before 14-16 top-price window; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries charge in this cheap low-carbon hour ahead of the 13-15h top-price window; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get slightly less cooling; all batteries charge at cheap hour before the 12-14h top-price window; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5: price low and not top, so charge batteries modestly with grid while under peak target; cooling near baseline since rooms are near setpoint, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled so cooling is trimmed; B3 charges from the cheap grid ahead of the 10-12h top price; other storage holds and B2 stays unchanged.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with grid charging allowed: top up batteries slightly toward 0.95 before the 9-11h top-price window; no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 2 cooling kept near baseline; Building 1 is 0.57C below setpoint so slight cut; no top price now, batteries idle, tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and none is overcooled, so baseline cooling holds; batteries stay idle as carbon is high and storage is held for the top-price hours ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 cut to zero cooling; B3 tops battery from cheap solar and grid; others hold for the 6-8h top-price peak.","status":"ok"},{"clamps":[{"applied":0.0188,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"No building is overcooled, so cooling stays at baseline. Small solar storage now; batteries hold charge for top-price hours 5-7.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled so cooling is trimmed; battery 3 stores spare solar; no top-price discharge now, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so only small solar storage or idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms near setpoint or above it, so cooling stays at baseline; batteries are near full and held for the 2-4h top-price hours; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by 0.74C, so cooling is trimmed slightly; batteries hold for the top-price hours 1-3 ahead; other settings stay at baseline.","status":"ok"},{"clamps":[{"applied":-0.5,"point":"Building_1.battery","reason":"move of 0.60 exceeds 0.5 per step","requested":-0.6,"rule":"rate"}],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; trim cooling in overcooled occupied rooms, and hold cooling where rooms are at or above setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads, and trim cooling in overcooled rooms; no grid charging or DHW.","status":"ok"},{"clamps":[{"applied":0.4754,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.63","requested":0.475,"rule":"deviation"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut 0.15; all buildings discharge batteries to usable floor in this top-price hour; Building_3 cooling held since it is near band edge.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get reduced cooling; batteries idle since price is not at top and load is below 0.9 of forecast; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; Building 2 is warm, so it keeps baseline. Top price is not active now, so batteries hold for later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; Building 2 is warm so it keeps baseline. Batteries and tanks held: not a top-price hour and no charge yet.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get trimmed cooling; batteries hold since top-price hours are later and grid charging waits for the cheapest early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Ease cooling slightly in overcooled Building_1 and Building_3, hold other cooling, and keep batteries idle until the cheap, low-carbon early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool less in the two overcooled occupied rooms, leave Building 2 alone, and start modest off-peak battery charging ahead of the 16-18h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top now; buildings 1 and 2 are overcooled slightly, so trim cooling modestly; hold batteries until grid charging is cheap; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour with cheap grid power: charging all three batteries modestly ahead of the 14-16h top-price window; cooling and tanks left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, top price 13-15h ahead; charge batteries modestly, no tank charging, mild cooling hold near baseline since rooms are below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; all batteries charge 0.15 in this cheap, clean hour to prepare for the 12-14h top-price period.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour at lowest carbon: charge each battery 0.15 ahead of the 11-13h top-price window; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries at the cheap, low-carbon hour before the price rises; trim Building 1 cooling slightly as it is overcooled; leave the tanks idle.","status":"ok"},{"clamps":[{"applied":0.0826,"point":"Building_1.battery","reason":"charge would take charge from 0.87 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour: no top price now, so charge batteries modestly toward 0.95 before the 16-18h top-price window; no cooling change as no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 cooling near baseline, Building_2 warm so no cut; top price not now, battery idle; grid charging ok but price low at 0.029 and limiter on, so hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.74C, so cooling is trimmed slightly; batteries and tanks hold since no top price is now and charging is not needed.","status":"ok"},{"clamps":[{"applied":0.0186,"point":"Building_1.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is left to baseline-safe null; batteries store cheap solar and top up before the 6-8h top-price window; tanks stay at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling and battery held near baseline: rooms are within band, Building_3 gets a small low-carbon top-up ahead of the 16-18h price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, so cooling stays at baseline; B3 stores spare solar slightly, B1 and B2 are near full, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.4C so cooling is cut slightly; price is not top now, so batteries hold and tank stays idle, with no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled (0.9 C below setpoint) so cooling is trimmed slightly; batteries near full, held for top-price hours 2-4; tanks kept at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hours are 1-3 ahead, not now, so batteries hold; Building_1 is slightly overcooled so cooling is trimmed to 0.19; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its load; trim Building_3 cooling slightly since it is overcooled; dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; B3 cooling trimmed slightly as it is overcooled; no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load within usable energy; cooling stays at baseline since rooms are not overcooled enough to cut.","status":"ok"},{"clamps":[{"applied":0.2597,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.41","requested":0.1,"rule":"deviation"}],"fallback":null,"reason":"Building 1 and 3 are overcooled-free (within band, B3 1.5C below setpoint, cut cooling); top price not now so no discharge; B2 unoccupied, keep baseline; hold storage.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint, so keep baseline cooling; no top price now and district load is at peak target, so batteries and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on: discharge B1 and B3 batteries to cut district load; trim cooling in overcooled B1 and B3; B2 near setpoint, no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied Buildings 1 and 3; hold batteries and tank until the cheap early-morning window before the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging ok: charge batteries 0.15 toward the 17-19h peak; trim overcooled Buildings 1 and 3, leave Building 2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price: charge all three batteries at 0.15 for the top-price hours; cut cooling in overcooled Building_3 and Building_1, hold tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: charge each battery 0.15 toward the 15-17h top-price window; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the 14-16h top price: charge batteries modestly, keep cooling at baseline since rooms are near setpoint, and leave the DHW tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 at low price, not top; grid charging allowed, so charge batteries modestly, trim overcooled Building_1, hold tanks at zero.","status":"ok"},{"clamps":[{"applied":0.1292,"point":"Building_1.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 slightly cut cooling; cheap clean hour, so charge batteries toward 0.95 before the top-price hours 12-14.","status":"clamped"},{"clamps":[{"applied":0.0582,"point":"Building_2.battery","reason":"charge would take charge from 0.89 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour with low carbon: lightly charge batteries toward 0.95 ahead of the top-price hours; cooling kept at baseline since rooms are within band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets less cooling; batteries top up in the low-price hour, no discharge since top price is not now, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"No room is overcooled and none is over its setpoint, so cooling stays at baseline; batteries hold near full for the upcoming top-price hours and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint so cooling stays at baseline; batteries hold except a small top-up for Building_3 at low price; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak headroom is zero and load is above 0.9x forecast, so batteries discharge to cover own load; B1 cooling trimmed slightly as it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled so cooling cut; B2 warm so baseline cooling kept; all batteries charge modestly ahead of top-price hours 6-8; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling is trimmed slightly; spare solar is stored in Buildings 1 and 3; no discharge, since peak headroom is ample and top prices come later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Midday low price with solar surplus: store spare solar in batteries ahead of the 4-6h top-price hours; cooling near setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 3-5 hours ahead; charge batteries modestly now if grid_charging_ok, hold tanks at zero, and cool at baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling for overcooled occupied Building_1 and slightly for Building_3; trickle-charge batteries at near-cheapest price before top-price hours 2-4; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 1-3 hours ahead, so hold batteries; cool buildings near setpoint at baseline; no tank charging; Building_2 unoccupied and near band, leave baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge to cover building load; overcooled occupied Building_1 gets reduced cooling; others keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover load, trim cooling where rooms are overcooled, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its load within usable energy; cooling held at baseline where comfort band edges are near.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are occupied and overcooled, so cooling is trimmed; batteries discharge at top price within usable energy; Building_2 is above setpoint, so cooling is left alone.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied rooms 1 and 3 and discharge Building 3's small usable battery charge at the top price; Building 2 is unoccupied and above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied rooms 1 and 3, hold Building 2 where it is above setpoint, and discharge the small usable battery charge at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: cut overcooled Building_1 and Building_3 slightly, hold Building_2 (warm) at baseline, discharge Building_3's small usable battery charge; batteries otherwise idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; cut Building_3 cooling slightly as it is overcooled, keep others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: battery idle, no grid charging; buildings 1 and 2 are near setpoint so baseline cooling kept, building 1 slightly cold so no change needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; no room is safely overcooled past 0.5 C under the clamp rules, so cooling stays at baseline and DHW is 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle and tanks hold at 0. Building_3 is overcooled 1.2 C, so its cooling is trimmed; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings are near setpoint or slightly under, so cooling follows baseline and tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idles; Building_1 and Building_3 slightly overcooled is minimal, keep cooling near baseline; no DHW; hold storage.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 1.25 C below setpoint so cooling is trimmed; others held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings near setpoint or cooler, use baseline cooling; no DHW; Building_2 is warm so slightly more cooling is not needed beyond baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building 1 and 3 slightly under setpoint, Building 2 warm so cooling kept at baseline; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay at 0; Building_1 is slightly overcooled so its cooling is trimmed a little, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by 1.74 C so its cooling is cut to 0.1, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings 1-3 are overcooled or near setpoint, Building_1 is 1.74C below setpoint so cut cooling slightly; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery stays idle; Building 1 is 0.88C below setpoint so modest cooling cut; others near setpoint, hold baseline cooling and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. No room is more than 0.5 C overcooled, so cooling keeps baseline and the tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top hours, and no usable battery energy, so storage stays idle; Building_1 is slightly overcooled so its cooling is trimmed; others held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries and tanks idle. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is warm, so its baseline is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay empty; cut cooling only in Building_1 and Building_3, which are overcooled, and keep Building_2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries idle; overcooled occupied rooms in B1 and B3 get reduced cooling, B2 is above setpoint so baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; occupied rooms are overcooled, so cooling is trimmed gradually below baseline to ease load and comfort.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and DHW stays at 0; cut cooling only in overcooled rooms, Building_3 left null near its band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms near comfort band edges or at setpoint keep baseline cooling; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours: batteries idle, tanks untouched, cooling kept at baseline since rooms are near comfort band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery stays idle; buildings near band edges keep baseline cooling, and tanks are held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery and tank idle. Buildings 1 and 3 are near comfort band edges, so cooling stays at baseline; Building 2 is above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, so batteries stay idle. Overcooled occupied rooms in Buildings 1 and 3 get reduced cooling; Building 2 is above setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle; Building_1 is overcooled 1.55 C so its cooling is cut to zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_3 is 0.73 C below setpoint so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is overcooled by about 1 C, so its cooling is cut to zero; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_2 is overcooled by 0.78 C so its cooling is cut to 0; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; overcooling is absent, so cooling stays at baseline and dhw null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 0.63 C so its cooling is trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours and batteries at floor SoC, so hold batteries idle; rooms are within band, so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so batteries stay idle; rooms are at or above setpoint, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint, Building 2 is warm, so keep baseline cooling; price is flat, so battery and tank stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; carbon is near its daily max and price is flat, so the battery and tank hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; carbon is near its peak now, so I defer battery charging to the low-carbon early hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not now and battery is at floor with no usable energy; hold storage, no grid charge, use baseline cooling since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm or near setpoint so cooling stays at baseline; batteries are at floor and carbon is near its peak, so hold storage until low-carbon hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Headroom is zero and batteries sit at floor with no usable energy, so no charging or discharging; rooms are at or above setpoint, so baseline cooling is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are near-flat and carbon is high now, so storage stays idle, cooling holds baseline, and no tank charging; no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint, so baseline cooling holds; batteries sit at floor with low price and high carbon now, so I hold storage and skip tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are at or above setpoint so cooling stays at baseline; batteries are at floor and price is not top, so hold storage idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are at or above setpoint so cooling stays at baseline; batteries sit at floor with prices and carbon not favourable, so no charging or discharging this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are above setpoint so cooling stays at baseline; batteries start charging at the low price, about 0.15 per hour, ahead of the top-price hours 22-24.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm so cooling stays at baseline; price is low now and top-price hours are ahead, so spare charging to the batteries at 0.15 per hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are above setpoint so cooling stays at baseline; prices are low now, so batteries charge gradually ahead of the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are well above setpoint so cooling stays at baseline; price is low now, so charge batteries 0.15 ahead of the evening top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are not overcooled, so cooling stays at baseline. Carbon is near its peak now, so batteries hold until low-carbon early hours, then charge before the 18-20h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and carbon is near its peak, so hold batteries for the 17-19h top-price window; cooling stays at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries modestly at the low price ahead of 16-18h top-price hours; Building_3 is overcooled so cooling is trimmed, others held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are all above setpoint so cooling stays at baseline; prices are low and grid charging is allowed, so batteries charge 0.15 toward the 15-17h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap off-peak hour with grid charging allowed, so all three batteries charge 0.15 toward the top-price hours; rooms are at or above setpoint, so cooling stays at baseline and DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour with grid charging allowed, so batteries charge about 0.15 toward the 13-15h top-price window; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak price with grid charging allowed: charge each battery about 0.15 per hour toward 0.95 before top-price hours 12-14; cooling stays at baseline.","status":"ok"},{"clamps":[{"applied":0.0496,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"},{"applied":0.0496,"point":"Building_2.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Low price and carbon now: top up batteries toward 0.95 before the afternoon top-price hours, with no cooling change and tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour is now, so batteries top up near 0.95 for the 10-12h peak and Building_3 charges from cheap solar/grid; rooms need no change.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 1.2C below setpoint, so cut cooling; price is not top now, so hold batteries and tanks idle while district load nears target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not top now, so batteries hold except a small cheap grid top-up for Building_3; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[{"applied":0.0126,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.16","requested":0.0,"rule":"deviation"},{"applied":0.0036,"point":"Building_1.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.15,"rule":"soc"},{"applied":0.0036,"point":"Building_2.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Building 1 and 2 are overcooled slightly? No: B1 is 1.26C below setpoint so cut cooling; B2 warm, hold; B3 unoccupied, hold; price not top, no discharge, charge batteries modestly while grid charging is ok.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 0.84 C so its cooling is trimmed slightly; batteries hold for the top-price hours ahead and no tank charging is done.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_2 gets less cooling; batteries hold near-full charge for top-price hours 5-7; tanks stay idle; no grid charging at current price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now; B1 is overcooled so cooling is trimmed slightly, B3 stores spare solar, and the remaining batteries and tanks hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 slightly overcooled, trimmed cooling; batteries held near full for top-price hours 3-5; district load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is already below its band, so cooling is held at baseline; batteries and tanks idle ahead of top-price hours 2-4 since district load is under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low now and top prices come in 1-3 hours, so batteries hold. Building_3 trims overcooling and tops up slightly; district load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover own load, cool gently, no grid charging, DHW idle; limit district load near target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover each building's load, trim overcooled occupied Building_2 slightly, no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover load within usable charge; cooling kept at baseline near comfort edges; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool overcooled occupied rooms less, hold batteries for evening top prices, and charge them modestly now at the cheap hour while keeping district load under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; top-price hours are 16-18, so batteries are held and not charged now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is trimmed; all batteries charge modestly at low price ahead of the 19-21h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 (-2.2C, occupied) so trim cooling; top price not now, grid charging ok in cheap hours but district load near target, so hold batteries and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling, and batteries charge at the low price now since grid charging is allowed and top-price hours come later.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour: charge batteries 0.15 toward top-price hours 16-18; trim overcooled rooms in Buildings 1 and 3, hold Building 2 at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour with grid charging allowed, so each battery charges 0.15 ahead of the top-price hours 15-17; cooling and tanks stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2, cheap price, top prices at 14-16h. Charge batteries gently from grid; no overcooling (rooms below setpoint by under 0.5C); no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries hold for top-price hours 13-15 and charge only in cheap hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is small, so cooling stays near baseline; battery idle except charge since grid charging ok and price low, but top hours ahead; keep moderate charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.49C below setpoint, so trim cooling; top price not now, so hold batteries and charge only if cheap; keep dhw at 0.","status":"ok"},{"clamps":[{"applied":0.0285,"point":"Building_1.battery","reason":"charge would take charge from 0.92 above 0.95","requested":0.03,"rule":"soc"}],"fallback":null,"reason":"Low-price hour: Building_1 is overcooled so cooling is trimmed; batteries top up gradually toward 0.95 before the 10-12h price peak; tanks stay idle.","status":"clamped"},{"clamps":[{"applied":0.128,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.13,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 gets slightly less cooling; batteries top up toward 0.95 ahead of the 9-11h top-price hours; no discharge or tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price not active and district load exceeds 0.9x forecast, so batteries discharge to cut load; no grid charging; Building_1 cooling trimmed as overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries charge modestly at low price ahead of the 16-18h top-price hours; no discharge since district load is well below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its cooling is cut to 0; batteries charge modestly at low price while no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 overcooled slightly so cooling is trimmed; batteries hold for top-price hours 5-7 and charge gently toward 0.95 at low price; tanks stay at 0.","status":"ok"},{"clamps":[{"applied":0.0269,"point":"Building_1.battery","reason":"charge would take charge from 0.92 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Storing spare solar in Buildings 1 and 3 ahead of the 4-6h top-price window; no grid charging at mid-price hours, cooling left at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cooling near setpoint so keep baseline; battery idle as price not top now, Building_1 near full; Building_2 warm so no cut; no grid charging at mid price.","status":"ok"},{"clamps":[{"applied":0.045,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.045,"rule":"soc"}],"fallback":null,"reason":"Cut overcooled occupied Building_1 cooling, top up cheap-hour battery charging in Buildings 2 and 3, no discharge as load is below target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 discharges slightly to trim district peak near target; other batteries held for the top-price hours 16-18; cooling and DHW kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; trim cooling only for overcooled Building_1; no grid charging or DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load; cooling stays at baseline since no room is overcooled by more than 0.5 C; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building load; trim occupied Building_1 cooling slightly as it is overcooled; keep others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now and district load is below 0.9x forecast, so batteries hold; only overcooled occupied Building_3 is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price not active and load is under target, so batteries hold; slight overcooling trimmed in occupied rooms 1 and 3; Building 2 unoccupied and warm, kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is not active now; overcooled Buildings 1 and 3 get slightly less cooling, and batteries start modest grid charging ahead of cheap overnight hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are slightly overcooled, so cooling is trimmed; batteries wait for cheaper early-morning hours before the 18-20h top-price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price 17-19h: charge batteries toward 0.95, trim cooling slightly in overcooled rooms, leave the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: charge batteries about 0.15 toward the 16-18h top-price window; trim cooling in overcooled Building_1 only.","status":"ok"},{"clamps":[{"applied":0.1295,"point":"Building_2.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour: charge all three batteries about 0.15 per hour ahead of the 15-17h top-price window, within peak headroom; cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 14-16: top up batteries toward 0.95 within limits; cooling and tanks held at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; batteries top up gently in this cheap, low-carbon hour to be near full before the 13-15h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 4, no top price now; B1 slightly cool so trim cooling, batteries near full so hold, top price at hours 12-14 ahead.","status":"ok"},{"clamps":[{"applied":0.009,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.009,"rule":"soc"},{"applied":0.0057,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.006,"rule":"soc"},{"applied":0.0493,"point":"Building_3.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Price is low and no top hour is now, so batteries top up gently toward 0.95 before the 11-13h peak; cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is small, so cooling stays at baseline; battery near full, price not top now, so hold; grid charging is ok but batteries are at 0.95 already, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.7C overcooled so cooling is trimmed slightly; batteries hold near full for the 9-11h top-price window; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now and batteries are near full, so hold storage idle; rooms are within band, so keep baseline cooling and no hot water charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 1.07 C, so cooling is trimmed to 0.108; the other rooms are at or above setpoint, and batteries are near full with no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are not overcooled; Building_2 is warm so cooling kept. Price not top now, battery idle, grid charging deferred to cheap hours; no DHW.","status":"ok"},{"clamps":[{"applied":0.0354,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.05,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled 1.1 C below setpoint so cooling is cut to 0; batteries hold near 0.95 for the top-price hours ahead; Building_3 stores spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled by 0.7 C so its cooling is trimmed slightly; batteries hold for the 4-6h top-price window and tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is slightly overcooled so cooling is trimmed; batteries hold near 0.95 SoC for the top-price hours ahead, and the tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are near full and top-price hours are 2-4h ahead, so hold storage; no room is overcooled, so keep baseline cooling and idle the tanks.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at the top and batteries are near full, so hold storage idle; no room is overcooled, so keep baseline cooling and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its own load; Building_3 cooling trimmed slightly as it is overcooled; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, trim overcooled occupied rooms 1 and 3, and keep Building_2 cooling since its room is above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, trim cooling for overcooled occupied rooms, keep tanks idle, no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 19 is not top price; top-price hours are 21-23 ahead, so hold battery and avoid grid charging; Building_2 is warm so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get slightly less cooling; price is not top and carbon is high, so batteries and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak and grid charging allowed, so modest battery charging ahead of evening price peak; cooling at baseline, no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold storage and baseline cooling: district load is at peak target with no headroom, carbon is high, and no room is over 0.5 C cold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price now, so charge batteries ~0.15 within headroom ahead of top-price hours 17-19; trim overcooled Building_3 and hold others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before the top-price hours 16-18: charge batteries modestly, trim overcooled Building_3, keep tanks idle and stay within peak headroom.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low price and carbon now: charge batteries toward 0.95 before top-price hours 15-17, keep tanks empty, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap off-peak hour with grid charging allowed: charge batteries toward 0.95 before the top-price hours 14-16, trim cooling slightly in overcooled Building_2, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 (-0.77C) so trim cooling; top price not now, so no discharge; charge batteries at cheap hour 3 since grid charging ok and room to 0.95.","status":"ok"},{"clamps":[{"applied":0.0533,"point":"Building_1.battery","reason":"charge would take charge from 0.90 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Overcooling is not present; B1 is 0.26C below setpoint so no cut. Price not top now; charge batteries cheaply at low carbon while grid_charging_ok; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooling is small (B1 -0.63C, B3 -0.51C), so trim cooling slightly; price not top now, battery charging limited by price-hour plan, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with no overcooling; top-price hours are ahead, so only topping up Building_3's battery slightly and holding everything else at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now, not top; hold batteries, no grid charging since top price is 3 hours ahead and charging is cheap, so keep idle; B1 cooling slightly above baseline not needed, use null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at the top and load is below 0.9 x forecast, so batteries hold; rooms are not overcooled, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is only 0.47 C under setpoint so cooling stays at baseline; batteries near 0.95 hold, with a small top-up in Building 3; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled, so cooling is cut to 0. Spare solar tops up batteries before the price peak; no top-price discharge now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small only; battery idle since top price is 5 hours away and batteries near full; no grid charging needed; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now, top hours 4-6 ahead; hold batteries, charge only if cheap, avoid overcooling; buildings 1 and 3 slightly below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now; batteries are near full and held for the 3-5h peak, cooling stays at baseline, and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by about 1 C, so cooling is trimmed; batteries hold since price is not at top and load is far below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by about 0.9 C, so cooling is trimmed slightly. Battery holds charge for the top-price hours ahead; no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; trim Building_1 cooling slightly as it is overcooled; no grid charging or tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, sized to usable energy. Cooling and tanks stay at baseline or null; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover building load within usable energy; cooling kept at baseline since rooms are cool or near setpoint; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get less cooling, district load is at target so B3 battery trims a little peak discharge, and no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled, so cooling is trimmed a little; others hold baseline. Batteries and tanks idle since top price is not now and charging is not cheapest.","status":"ok"},{"clamps":[{"applied":0.0855,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.24","requested":0.085,"rule":"deviation"}],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is cut; Building_1 is cool so baseline holds; batteries wait for cheap early hours before the 19-21 top-price peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is over 1.5 C below setpoint so its cooling is cut to 0.1; all batteries take a modest off-peak grid charge toward the 16-18h top-price window.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets reduced cooling; all batteries trickle-charge at the low price ahead of the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheapest, cleanest hour: charge batteries 0.15 ahead of top-price hours 16-18; trim overcooled Building_1 slightly; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: charge each battery about 0.15 toward 0.95 before the 15-17h top-price window; cooling and tank left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hours: charge batteries about 0.15 per hour toward 0.95 before the 14-16h top-price window; no cooling or DHW change since rooms are within band.","status":"ok"},{"clamps":[{"applied":0.1447,"point":"Building_2.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Overcooled Building_1 and 2 trimmed cooling; all batteries charge at cheap hour 3 toward 0.95 before top-price hours 13-15; district load stays under target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour before the 12-14h top price: top up batteries toward 0.95, trim Building_1 cooling slightly for overcooling, keep tanks idle.","status":"ok"},{"clamps":[{"applied":0.01,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.0088,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.1371,"point":"Building_3.battery","reason":"charge would take charge from 0.81 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Cheap hour before top-price 11-13: top up batteries toward 0.95, trim overcooled Building_1 cooling, and leave tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; batteries are near full, so only Building_3 tops up slightly before the price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"District load is at target with zero headroom, so batteries discharge to cover own load; Building_1 is overcooled and its cooling is trimmed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are low and not at the top, so I charge batteries 1 and 3 modestly with grid charging allowed, keep cooling at baseline, and leave the tanks idle.","status":"ok"},{"clamps":[{"applied":0.082,"point":"Building_2.battery","reason":"charge would take charge from 0.87 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Cheap hour before top-price block at 7-9: charge batteries toward 0.95 and ease Building_1 cooling since it is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 10: top price hours ahead at 6-8, so hold batteries; cool-side B1 is 1.6C under setpoint so trim cooling; charge modestly from solar only.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling small in B1 and B2 is minor; top price not now, grid charging ok in cheap hours, so modest charging of batteries and cooling near baseline.","status":"ok"},{"clamps":[{"applied":0.0688,"point":"Building_1.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"},{"applied":0.0184,"point":"Building_2.battery","reason":"charge would take charge from 0.93 above 0.95","requested":0.02,"rule":"soc"}],"fallback":null,"reason":"Off-peak hour, so charge batteries modestly ahead of top-price hours 4-6; no overcooling correction needed, tank held at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 gets cooling cut to 0.33; B3 is topped up with spare solar; batteries hold for top-price hours 3-5; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.13 C below setpoint, so its cooling is trimmed slightly; batteries hold for the top-price hours 2-4 ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Lightly trim cooling where rooms are overcooled, keep Building_2 unchanged, store spare solar ahead of the top-price hours, and leave the tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward building load within per-hour limits; trim Building_3 cooling since it is overcooled; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads. Trim overcooled occupied and unoccupied rooms slightly; Building_1 is cool, so no cooling cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to usable limits; trim overcooled Building_1 within 0.15 of baseline; Building_3 near band edge keeps baseline cooling.","status":"ok"},{"clamps":[{"applied":-0.1037,"point":"Building_1.battery","reason":"discharge would take charge from 0.20 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.21,"point":"Building_3.battery","reason":"discharge would take charge from 0.31 below 0.1","requested":-0.3,"rule":"soc"}],"fallback":null,"reason":"Top price now, so discharge batteries to cover building loads; Building_2 unoccupied and battery usable tiny; overcooled Building_1 and Building_3 get small cooling cuts.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Batteries sit at their floor so discharge is impossible and grid charging is off; rooms are near or outside bands, so keep baseline cooling and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled slightly; battery soc at floor so no discharge; grid charging off; no tank charging; keep baseline cooling where not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries sit at the 0.2 floor with no usable energy and grid charging is off, so they stay idle. Overcooled Building_1 is cut to 0.1; the others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; buildings 1 and 3 are near setpoint band so keep baseline cooling; building 2 is warm so no cooling cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms near comfort band edges keep baseline cooling, Building_2 is warm so no cooling cut, and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and tanks off; cut cooling only in overcooled Buildings 2 and 3, keep Building 1 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled 2.46C so cooling is cut slightly; others near setpoint keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery idle and tank off. Building_3 is 0.59 C below setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled 1.3C below setpoint so cooling is cut to 0; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so battery stays idle; no top-price hours. Buildings 1 and 3 slightly below setpoint, keep baseline cooling; Building 2 is warm, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, so battery idle; Building 1 and 3 slightly below setpoint, Building 2 above setpoint so cooling kept at baseline; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; cooling follows baseline since rooms are near setpoint and not overcooled; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery and tank stay idle; rooms are at or above setpoint, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; rooms are at or above setpoint so cooling follows baseline; tanks held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no battery use; B1 is overcooled but envelope blocks cutting cooling when cool, so baseline kept; all other actions baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled but the band-edge rule would clamp a cut, so baseline cooling is kept; DHW stays at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; trim Building_3 cooling slightly as it is overcooled, leave others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; B1 is overcooled 1.38C below setpoint so its cooling is trimmed slightly, others keep baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours, so batteries stay idle. Occupied rooms are overcooled, so cooling is trimmed slightly below baseline; tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle and no DHW. Buildings 1 and 3 are overcooled about 1.3-1.4 C below setpoint, so cooling is trimmed slightly; Building 2 is above setpoint, so baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim cooling in overcooled occupied rooms B1 and B3, leave B2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day: batteries and tanks idle. Rooms are cool or at setpoint and near comfort edges, so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle and tanks stay at 0; cut cooling for the two rooms more than 0.5 C overcooled and keep Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.3994,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.55","requested":0.399,"rule":"deviation"}],"fallback":null,"reason":"Flat price day so batteries stay idle and tanks stay at 0; cut cooling in the two overcooled occupied rooms (Buildings 1 and 3) and keep baseline in Building 2.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; buildings 1 and 3 are overcooled slightly, so cooling is trimmed modestly, and tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.2738,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.274,"rule":"comfort"}],"fallback":null,"reason":"Flat price day, battery idle; buildings 1 and 3 are overcooled by more than 0.5C so cooling is trimmed slightly; no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Rooms are at or near setpoint or near the band edge, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; cooling kept near baseline as rooms are within setpoint band; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries idle, tank off. Overcooled occupied rooms in B1 and B3 get cooling cut 0.1; B2 is above setpoint so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; buildings 1 and 3 are overcooled slightly, but within band so baseline cooling kept; no DHW or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery stays idle; buildings are overcooled by about 1.15, 1.5 and 0.99 C, so cooling is cut modestly, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle and tanks stay at 0. Building_3 is mildly overcooled, so cooling is trimmed slightly. Building_1 is cool near its band edge, so it keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; buildings 1 and 3 are overcooled slightly, but within 0.5C band rules, so keep baseline cooling and no dhw.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so the battery stays idle; no arbitrage gain from charging. Building_3 is overcooled by 0.6 C, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 0.79 C so its cooling is trimmed slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery stays idle; buildings 1 and 3 are slightly cool, no overcooling cut needed; tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are slightly cool and Building 2 is warm, so cooling follows baseline; prices are flat, so the battery stays idle and tank at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is cut; batteries start gentle grid charging at the flat low price ahead of the top-price hours 23-24. DHW held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day, top_price_now false, battery idle to avoid cycling; Building_2 overcooled 1.2C below setpoint so reduce cooling slightly; others track baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 overcooled slightly; trim cooling. Price flat-ish, not top now; grid charging ok but cheapest hours are later; hold batteries, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get slightly less cooling; batteries start modest charging at low price and carbon ahead of the 20-24h top-price window; DHW stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are flat-ish and top_price_now is false; Building 1 and 3 are overcooled slightly, so cooling trimmed; batteries idle or lightly stored, tanks at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries in the cheap early-afternoon hours ahead of the 18-23h top price; trim overcooled B3 and hold cooling elsewhere; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed. Batteries charge modestly at the low price ahead of the top-price hours 17-22. Tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and no top-price hour until hour 24, so the batteries charge gradually toward 0.95; cooling stays at baseline and the tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Load is near peak target, so each battery discharges to cover its building load; B1 is overcooled and trims cooling, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get cooling cut by 0.1; batteries and tanks hold this hour since price is not top and charging waits for cheaper early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut modestly, Building_3 is at its band edge so it stays on baseline, and batteries start charging in this cheap hour ahead of the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings are at or near comfort band edges, so cooling stays at baseline; prices are not top, so batteries hold and tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get reduced cooling toward the 0.1 floor; B2 holds baseline. Batteries top up modestly at low price before the top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled rooms, hold batteries idle at the top price, and charge modestly at the low price while the district stays under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; batteries charge at the cheap 0.029 price to be near full before the 17-19h top-price hours; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now with top hours at 16-18, so charge batteries toward 0.95 for the peak; cooling stays at baseline since rooms are near band edges or warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top now; buildings 1 and 2 are near setpoint, building 3 is overcooled by about 1C so trim its cooling slightly; batteries idle to hold for top-price hours 15-17.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get slightly less cooling; Building_2 stays off. Cheap hour: small battery top-ups, Building_3 charges most toward the 14-16h peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is slightly overcooled so cooling is trimmed; it charges its battery in the cheap early hours, and the other buildings hold.","status":"ok"},{"clamps":[{"applied":0.1329,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"B3 is overcooled by 0.94 C so cooling is trimmed; B3 stores cheap solar-free grid charge; B1 and B2 batteries stay near full for top-price hours 12-14.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim B1 cooling for overcooling, top up batteries slightly at the low price, keep tanks idle, and hold peak below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6, no top price now; B1 overcooled slightly above 0.5C band? Hold baseline, charge batteries modestly as price low and grid charging ok, avoid tank charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but near its band edge, so cooling stays at baseline; batteries hold charge for the 9-11h top-price hours; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cool, 0.2 C above its band edge, so the envelope would block a cut; all devices hold baseline. Battery is near full, price is not top, and load is below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price not at top and district load is far below target, so batteries hold; B1 is overcooled but near band edge, so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 3.5 C below setpoint, so its cooling is cut to 0; the others hold baseline. Batteries and tanks stay idle while prices are low and the top-price hours are still ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are not overcooled enough to cut; battery held for top-price hours 5-7, no grid charging at this price, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled while occupied, so cooling is cut to 0.1; batteries and tanks stay idle as the batteries are near full and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and 1.03 C below setpoint, so cooling is trimmed; batteries hold for top-price hours and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled while occupied, so cooling is trimmed; batteries hold for top-price hours, with spare solar stored in Building 3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is occupied and overcooled by 1.2 C, so its cooling is trimmed slightly; batteries hold near full for the top-price hours ahead and tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building load, sized to load_now; trim overcooled unoccupied Building_3 slightly; hold comfort-edge buildings at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads; trim overcooled occupied rooms 1 and 3; hold dhw at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover its load within usable energy; keep cooling at baseline where comfort band edges are close; no grid charging or DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled while occupied, so cooling is trimmed; batteries hold near floor with no top-price hour now and no charge in this price tier.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is overcooled by 0.76 C, so its cooling is trimmed slightly; batteries and tanks hold since prices are low and not at top.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool-room cuts apply only to Building_3; Buildings 1 and 2 are cool or on setpoint, so cooling stays at baseline. Batteries and tanks hold until cheap early-morning hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled occupied rooms B1 and B3 slightly; B2 at setpoint keeps baseline. Batteries and tanks idle, as no top-price hour is now and load is below target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get reduced cooling; battery held for top-price hours 16-19, no grid charge at 0.0289 low price since battery near floor; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak low price and district load far below target: charge batteries modestly, ease overcooled rooms B1 and B3, hold B2 cooling, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overnight low price and carbon: charge all three batteries at 0.15 to reach near full before the 15-17h top-price hours; keep cooling at baseline and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak: charge batteries gradually toward 0.95 before top-price hours 14-16; trim Building_1 cooling slightly since it is overcooled.","status":"ok"},{"clamps":[{"applied":0.2329,"point":"Building_1.cooling","reason":"indoor 20.6 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.233,"rule":"comfort"}],"fallback":null,"reason":"Hour 3 is cheap and low-carbon, batteries charge toward 0.95 before top-price hours 13-15; buildings slightly overcooled trimmed, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 is held at baseline by the comfort clamp; all batteries charge at the low price ahead of the top-price hours 12-14, with no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 slightly reduced cooling; price not at top now, so batteries charge only from cheap hours ahead, no tank charging, and charging held for pre-peak.","status":"ok"},{"clamps":[{"applied":0.0377,"point":"Building_1.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"Cheap, low-carbon hour before top-price hours: top up batteries toward 0.95, no tank charging, cooling left at baseline since rooms are not overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but the cooling cut would be clamped, so it keeps baseline; batteries hold or charge modestly ahead of the price peak; no tank charging.","status":"ok"},{"clamps":[{"applied":0.0381,"point":"Building_2.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"B1 is 1.58 C overcooled so cooling is cut to 0.1; no top-price now so no discharge; small top-up charging on B2 and B3 at low price while headroom is ample.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings near setpoint, no top price now; hold batteries and tank, use baseline cooling since no room is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[{"applied":0.0087,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled but already below its comfort band, so cooling stays at baseline. Storing small spare solar in Building_1 battery before top-price hours 6-8.","status":"clamped"},{"clamps":[{"applied":0.0015,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.15","requested":0.0,"rule":"deviation"}],"fallback":null,"reason":"Building_1 overcooled by 1.66C so cut cooling; batteries held, price not at top and Building_1 near full, so no battery or tank charging this hour.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are at setpoint, not overcooled, so cooling stays at baseline; batteries are near full and top-price hours are ahead, so storage holds with no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hours are ahead, so batteries hold charge; overcooled occupied rooms get trimmed cooling; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.009,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Overcooled rooms trimmed slightly; batteries topped up in cheap hours ahead of top-price hours 2-4; tanks held at zero.","status":"clamped"},{"clamps":[{"applied":0.2903,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.44","requested":0.1,"rule":"deviation"},{"applied":0.3985,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.55","requested":0.35,"rule":"deviation"}],"fallback":null,"reason":"Overcooling check: B1 is 1.75C below setpoint so cut cooling to 0.1; B2 unoccupied and not cold; B3 0.99C below so modest cut; no top price now, no discharge, charge only where cheap.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge each battery to cover its building load; trim Building_3 cooling slightly as it is overcooled; hold tanks at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; Building_1 is cool-side so cooling is held at baseline; others null.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward load, cooling left at baseline since rooms are cool or warm, no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are cool and near band edges, so cooling stays at baseline; batteries hold for top-price hours 21-23 and dhw stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut overcooled Building_3 toward its setpoint band; Building_1 is cool so baseline cooling; batteries and tanks idle as no top price is now and peak headroom is ample.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort or above setpoint, so cooling stays at baseline; batteries hold charge for the 19-21h top-price hours and grid charging waits for cheap early hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_3 cooling for overcooling; hold others at baseline; pre-charge batteries at low price ahead of the 18-20h top-price hours; no tank charging.","status":"ok"},{"clamps":[{"applied":0.1897,"point":"Building_1.cooling","reason":"indoor 22.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"Peak at target with no headroom, so no grid charging; discharge to cover load, trim overcooled B3, and raise B1 cooling since it is below band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Low price now, so charge batteries ahead of the 16-18h top-price hours; trim overcooled rooms; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled slightly; top price is not now, so battery idles except light charging within grid_charging_ok and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get small cooling cuts; battery held (not top price now, grid charging ok but cheap hours ahead to charge); no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour: charge batteries about 0.15 toward the 13-15h top price, trim overcooled rooms, keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before top-price hours 12-14: charge batteries 0.15 gradually; cooling kept at baseline since rooms are near or below the comfort-band edge; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the 16-18h top-price window: charge batteries 0.15, trim overcooled Building 1, hold others at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6, cheap price, no top-price now; charge batteries modestly, cool buildings near baseline, hold DHW at zero, keep district load under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not top now, so no discharge; store cheap solar and grid energy ahead of the 9-11h peak and trim overcooled Building_1 and Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling slightly in overcooled Building_1 and 3, top up Building_3 battery ahead of 16-18h top prices, hold others.","status":"ok"},{"clamps":[{"applied":0.0708,"point":"Building_1.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"},{"applied":0.0668,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Price is near low and not top; hold batteries, trim-charge at low price ahead of 16-18h top price, keep baseline cooling since no room is overcooled, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 by 2.78C: cut cooling to 0.1; price not at top now, so no discharge; charge batteries modestly from solar and cheap grid, staying under peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled, so cooling trimmed; spare solar stored in B1 and B3 batteries ahead of the 5-7h top-price hours; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices are not at the top now and batteries are near full, so hold batteries and tanks idle and keep baseline cooling for the next top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled (2.85 C below setpoint) so cooling is cut to 0.1; batteries hold for top-price hours 3-5 and no charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so cooling is trimmed; batteries store only spare solar since no top-price hour is now, and dhw stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not top now and batteries are near full, so hold storage for the 16-18h peak; no cooling change as rooms are at or above setpoint or unoccupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; room temps are at or above setpoint, so cooling stays at baseline and DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover load, and trim overcooled occupied Building_1 by 0.1 to protect the peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to offset load, and trim cooling in the two occupied rooms that are overcooled; Building_2 is unoccupied and near setpoint so it keeps baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is on with no headroom, so B3 discharges to cover its load; B1 and B2 batteries are near floor. Cooling kept at baseline except null where unsafe.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 overcooled slightly so cooling trimmed; Building_3 already below band so cooling held; small battery discharge in B3 to ease peak; no top-price charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms kept at baseline due to comfort band clamps; batteries start a modest grid charge at low price ahead of the evening top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 22: no top price now, so hold batteries for 18-20h and wait for cheaper hours to charge. Rooms are cool or at setpoint, so keep cooling baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 get cooling cut to 0.1; building 2 is at setpoint so baseline holds. Battery idle, since grid charging is not cheap enough now and solar is zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled so its cooling is trimmed; others hold baseline. Batteries charge 0.15 at the low price before the 16-18h top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 slightly cut cooling; Building_1 is cool and outside its band so cooling held; all batteries charge modestly in cheap low-carbon hour before evening top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut cooling in overcooled occupied Buildings 1 and 3, leave Building 2 cooling at baseline, and charge all batteries from cheap grid power ahead of the 14-16h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and slightly overcooled Building_3 get less cooling; all batteries charge at the cheap, clean hour ahead of the 13-15h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: top up batteries toward 0.95 before the 12-14h price peak; trim overcooled Building_1 slightly, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour: lightly charge batteries toward 0.95 before top-price hours 11-13; trim slightly overcooled Building_1; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: trim overcooled Building_1 slightly and top up batteries toward 0.95 before the 10-12h top-price window; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low now with no top hour; trim overcooled Building_1, keep storage idle, and charge Building_3's battery toward 0.95 before the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 1.5C so its cooling is cut; Building_3 battery tops up in the cheap hour before the top-price window; others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within band and not overcooled, prices are not at top, load is under target, so I keep baseline cooling with idle storage and tank.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 slightly reduced cooling; Building_1 is cool so baseline kept; batteries near full and headroom tight, so no charge or discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 (1.5C below setpoint) gets cooling cut to 0.1; hold batteries for top-price hours 5-7, charge only when cheap; no grid charge at 11h.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_3 gets less cooling within the band limits; Building_3 charges its battery slightly at low price; others hold storage for the 4-6 hour top-price window.","status":"ok"},{"clamps":[{"applied":0.2815,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.43","requested":0.281,"rule":"deviation"}],"fallback":null,"reason":"B1 is overcooled 4.3C below setpoint, so cooling is cut to 0.281; batteries hold for the top-price hours ahead and tanks stay empty.","status":"clamped"},{"clamps":[{"applied":0.0701,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.1,"rule":"soc"}],"fallback":null,"reason":"Overcooled occupied B1 is near its comfort edge so baseline is kept; B3 gets a small solar/cheap-hour top-up ahead of the 16-18h peak price; tanks stay idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is 2.3C below setpoint, so cooling is cut to 0.1 below baseline; price is not at top now, so batteries hold and storage stays idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; B1 cooling held near baseline since its room is cool; no tank charging.","status":"ok"},{"clamps":[{"applied":0.5843,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.73","requested":0.584,"rule":"deviation"}],"fallback":null,"reason":"Top-price hour: discharge batteries to cover building loads; cut overcooled occupied rooms toward the envelope limit; Building_2 is above setpoint so cooling stays at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to its usable kWh, cut overcooled Building_1 toward baseline, leave cooling otherwise at baseline, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Not a top-price hour and district load is under target, so I charge batteries modestly in this cheap hour within headroom, hold for top-price hours, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled B1 and B3 get slightly less cooling; district load near the daily target, so small battery discharges cover building load; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied B1 gets lower cooling; B3 kept at baseline near band edge; B1 and B2 store cheap solar/grid; tanks idle; top prices ahead.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are cool or near setpoint so cooling stays at baseline; batteries discharge to trim district load near the peak target; no grid charging or tank charging.","status":"ok"},{"clamps":[{"applied":0.1295,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.28","requested":0.1,"rule":"deviation"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is cut; batteries start cheap-hour charging ahead of the 17-19h top-price window; tanks stay idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get cooling trimmed; Building 2 is near setpoint. Batteries charge at the low price ahead of the 16-18h top-price hours; tanks stay empty.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Low-price hour with grid charging allowed: charge batteries 0.15 toward the evening top-price hours; trim cooling only in overcooled Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms get slightly less cooling; batteries charge 0.15 in cheap, low-carbon hours to be near full before the 14-16h top-price window.","status":"ok"},{"clamps":[{"applied":0.1801,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.33","requested":0.18,"rule":"deviation"}],"fallback":null,"reason":"Overcooled occupied rooms get cooling cut; batteries charge 0.15 at the cheap, low-carbon hour to be near full before the 13-15h top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cool Building_1 slightly less while overcooled; charge batteries in this cheap, clean hour ahead of the 12-14h top-price window; keep tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour: top up batteries toward 0.95 before the midday top-price window, and trim cooling in overcooled Building 1 only.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 10-12: top up batteries toward 0.95, trim overcooled Building_1, leave tanks idle.","status":"ok"},{"clamps":[{"applied":0.1282,"point":"Building_3.battery","reason":"charge would take charge from 0.82 above 0.95","requested":0.15,"rule":"soc"}],"fallback":null,"reason":"Building_1 is overcooled by 0.73 C so its cooling is trimmed slightly; Building_3 charges at the low price ahead of the top-price hours; others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_2 are overcooled, so cooling is trimmed slightly; Building_3 is at setpoint and tops its battery up to about 0.95 in this cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are not overcooled; keep baseline cooling. Price not at top now, battery idle; grid charging waits for low-price hours. Building 2 unoccupied, hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2.7 C below setpoint so cooling is cut to 0.1; batteries hold charge for the 16-18h top-price hours, tanks stay at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.71C above setpoint so no extra cooling cut; top price not now, so battery holds; grid charging is cheap now but battery already near 0.95, so idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled slightly less than 0.5C so no cut; price low now, top hours ahead, battery held; charge modestly only if cheap hours allow; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is unoccupied and near setpoint so baseline holds; top price is 3-5h ahead, so batteries stay idle now, with no charging at current low price due to solar and cooling needs.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is already below its comfort band, so no cooling cut; batteries held for top-price hours 16-18; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries for the top-price hours ahead; cooling and tanks stay at baseline due to comfort-band edges and occupancy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries to cover each building's load; cooling kept at baseline since B1 is cool and occupied; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge each battery to cover load, keeping cooling at baseline and dhw idle; the rooms are not in an overcooled state that needs a cut.","status":"ok"},{"clamps":[{"applied":-0.1495,"point":"Building_1.battery","reason":"discharge would take charge from 0.25 below 0.1","requested":-0.2,"rule":"soc"},{"applied":-0.1439,"point":"Building_2.battery","reason":"discharge would take charge from 0.24 below 0.1","requested":-0.18,"rule":"soc"},{"applied":-0.3589,"point":"Building_3.battery","reason":"discharge would take charge from 0.46 below 0.1","requested":-0.4,"rule":"soc"}],"fallback":null,"reason":"Top price now: discharge batteries to cover building loads, cool less where overcooled, no grid charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get reduced cooling; batteries have almost no usable energy, so only Building_3 discharges slightly at the top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge only within usable energy; Building_3 is already below its comfort band so no cooling cut; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now but batteries nearly empty; B1/B3 cooling kept near baseline since rooms are below band, B2 trimmed slightly; no grid charging, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 cooling trimmed slightly as it is overcooled; batteries have no usable charge so they stay near idle; Building_3 cooling left at baseline near band edge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; overcooled Building_1 and Building_3 get reduced cooling, Building_2 near setpoint keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so battery idle; cut cooling for overcooled occupied rooms in Buildings 1 and 3, Building 2 near setpoint; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h prices so batteries stay idle and tanks stay at 0. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is above setpoint, so it keeps baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; buildings 1 and 3 are overcooled slightly, but within limits, so keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; overcooled occupied rooms get reduced cooling, with Building_3 trimmed modestly and DHW left at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price with no top-price hours, so battery stays idle; cool buildings 1 and 3 slightly below setpoint, keep baseline cooling; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery stays idle; buildings 1 and 3 are overcooled slightly, but within 0.5C tolerance so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled by 1.45 C so cooling is cut to 0, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours: battery idle, no grid charging; mild overcooling not present in any building so baseline cooling kept, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is overcooled about 1.07 C below setpoint, so its cooling is trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, battery idle; building 1 and 3 slightly cool-biased so keep baseline cooling; no grid charging or discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour: batteries idle, no tank charging; Building_1 overcooled 1.34 C below setpoint so cooling trimmed slightly, others kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_3 is overcooled so its cooling is trimmed slightly, Building_1 and 2 keep baseline, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so storage stays idle and tanks stay at 0. Building_1 and Building_3 are overcooled, so cooling is trimmed; Building_2 is within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so battery idle; buildings slightly overcooled but within 0.5C of setpoint, so keep baseline cooling and no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries stay idle; overcooled occupied rooms 1 and 3 get reduced cooling within the 0.15 clamp, Building 2 is near setpoint.","status":"ok"},{"clamps":[{"applied":0.8244,"point":"Building_3.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.97","requested":0.824,"rule":"deviation"}],"fallback":null,"reason":"Flat-price day so batteries stay idle. Overcooled occupied rooms 1 and 3 get cooling cut 0.15 below baseline; building 2 is within band, so baseline kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; trim Building_2 cooling slightly, keep others at baseline because their rooms sit near comfort band edges.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day so batteries stay idle; occupied rooms are already below band, so keep cooling at baseline; trim only the unoccupied Building_2 slightly.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, so batteries and tanks stay idle; cut cooling in overcooled occupied rooms 1 and 3 by 0.1 and room 2 slightly.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: battery and tank idle. Rooms are below their comfort bands, so no cooling cut; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle. Overcooled occupied rooms get reduced cooling; Building_2 is only slightly below setpoint and gets a small cut.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top-price hours, so battery idle; buildings 1 and 3 overcooled ~1.9-2.4C below setpoint so trim cooling slightly; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; cut cooling in overcooled occupied rooms 1 and 3 toward the 0.15 limit; room 2 is within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day: batteries and tanks idle. Cooling trimmed only in overcooled occupied rooms (B1 and B3); B2 is within 0.5 C of setpoint.","status":"ok"}],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,5.0,6.0,6.0,6.0,6.0,6.0,7.0,8.0,8.0,8.0,8.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,9.0,10.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,11.0,12.0,13.0,15.0,16.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,17.0,18.0,19.0,20.0,21.0,21.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,25.0,26.0,27.0,27.0,29.0,31.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,32.0,33.0,33.0,33.0,33.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,34.0,35.0,35.0,35.0,35.0,35.0,36.0,37.0,37.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,38.0,39.0,40.0,41.0,42.0,44.0,46.0,48.0,51.0,54.0,56.0,58.0,59.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,60.0,61.0,61.0,62.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,63.0,64.0,65.0,66.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,68.0,70.0,71.0,73.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,74.0,75.0,77.0,79.0,81.0,81.0,82.0,83.0,84.0,84.0,84.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,85.0,86.0,87.0,87.0,89.0,91.0,93.0,95.0,97.0,97.0,97.0,97.0,98.0,98.0,98.0,98.0,98.0,98.0,98.0,99.0,99.0,99.0,99.0,100.0,100.0,100.0,100.0,100.0,101.0,102.0,103.0,104.0,105.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,106.0,107.0,108.0,109.0,110.0,111.0,112.0,113.0,114.0,114.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,116.0,117.0,119.0,121.0,123.0,123.0,124.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,125.0,126.0,126.0,127.0,128.0,129.0,130.0,132.0,134.0,135.0,136.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,138.0,139.0,139.0,140.0,141.0,142.0,143.0,145.0,147.0,149.0,150.0,151.0,152.0,153.0,154.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,155.0,156.0,156.0,157.0,157.0,159.0,161.0,163.0,165.0,167.0,168.0,169.0,169.0,170.0],"district_grid_kwh":[1.428,1.505,1.455,1.42,1.411,1.731,2.889,2.593,9.774,3.287,1.561,3.455,2.299,3.072,3.033,5.266,6.273,5.288,4.364,5.116,6.502,5.611,4.935,5.313,2.907,2.149,1.782,2.11,2.318,2.591,2.559,1.447,2.821,1.366,2.63,3.47,8.481,6.352,5.582,6.892,7.362,6.242,6.633,5.2,5.796,5.231,5.194,3.203,2.715,2.047,1.983,1.721,1.856,1.89,1.616,2.147,3.503,1.389,2.686,1.854,1.597,7.777,2.781,4.907,7.009,4.515,4.938,3.797,2.939,5.281,3.004,2.535,2.071,1.56,1.544,1.401,1.32,2.314,2.862,1.604,2.93,1.364,1.75,1.057,1.479,0.499,0.393,-0.18,0.408,1.16,3.311,4.158,3.275,4.019,4.067,3.271,2.278,2.24,1.742,1.409,2.453,1.362,2.199,4.036,1.269,0.715,0.163,1.164,1.716,1.858,2.26,0.877,0.906,4.858,6.265,6.372,4.247,2.401,4.231,3.34,3.183,2.766,3.075,3.031,2.152,2.542,12.505,2.169,2.331,7.607,1.098,0.744,1.582,1.062,2.005,0.132,1.153,2.23,4.422,4.867,12.544,4.061,3.671,3.776,3.739,3.653,3.045,2.762,1.824,2.03,4.709,2.409,4.008,1.79,0.877,6.18,3.316,2.702,2.767,0.748,0.691,2.591,5.426,5.116,4.478,3.314,3.149,1.976,3.141,2.941,2.346,1.953,1.485,4.186,2.05,1.919,2.43,0.518,0.437,0.583,0.603,1.626,2.276,-1.216,1.0,3.233,4.512,5.217,4.786,3.838,3.098,2.023,2.0,1.615,1.546,1.299,1.264,1.281,2.314,1.681,3.513,1.474,1.431,2.602,2.919,9.291,6.191,5.265,4.481,5.449,6.437,5.413,3.805,3.509,3.901,2.651,1.725,2.125,1.775,1.742,1.26,3.061,1.433,1.627,2.364,1.847,2.231,2.115,3.307,8.73,4.033,4.567,9.662,5.22,7.183,7.614,4.611,3.643,4.469,3.358,3.845,3.683,3.226,2.435,1.695,1.985,6.174,3.042,5.181,2.463,1.398,1.589,1.971,2.573,8.183,1.783,3.131,5.079,4.717,4.896,4.21,10.022,3.569,4.671,3.759,3.469,3.012,3.11,2.166,2.19,1.931,1.817,1.292,2.187,1.816,2.378,1.442,3.062,2.975,2.885,7.163,6.652,6.264,8.314,7.648,8.16,11.478,4.791,3.421,2.883,3.119,2.854,2.654,1.791,3.673,1.673,1.568,0.587,0.971,0.961,1.026,1.235,2.899,1.359,2.486,3.376,5.106,6.237,5.297,4.566,5.493,3.64,2.497,4.001,3.239,2.705,2.817,2.788,2.996,4.736,2.791,1.016,0.939,0.872,2.814,2.952,1.177,0.736,1.004,2.654,4.772,7.144,4.973,3.703,4.636,3.962,3.792,3.821,2.848,2.871,3.398,1.829,2.06,4.069,5.455,5.223,2.941,2.934,1.592,1.912,4.263,0.762,1.824,6.154,5.441,4.73,4.559,6.123,3.136,4.822,2.437,2.441,2.145,1.938,1.461,1.797,2.001,4.128,1.865,2.669,2.101,2.143,7.545,2.567,3.981,3.408,6.805,5.777,5.327,5.366,5.845,4.448,2.306,1.562,1.821,1.626,1.309,1.258,1.453,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,5.313,4.363,3.689,3.244,4.278,4.003,3.362,3.151,2.369,5.146,4.487,2.666,1.672,3.473,2.983,1.952,3.7,6.142,3.23,1.148,1.066,3.153,4.937,5.612,4.443,5.463,3.05,3.193,3.487,3.229,1.5,3.126,1.504,2.161,3.519,5.443,3.956,4.066,1.696,1.149,2.608,3.456,7.616,0.576,0.598,0.506,2.751,3.276,4.595,2.925,3.196,3.142,3.878,3.843,1.698,1.543,2.558,3.966,1.755,3.115,2.572,1.562,1.134,3.13,2.38,0.864,1.07,0.412,0.629,2.203,3.051,3.051,5.12,6.143,5.053,5.114,3.288,2.708,2.097,3.24,1.884,1.688,1.854,3.85,1.613,0.485,0.765,2.988,1.987,1.847,3.054,0.961,2.089,4.047,7.868,4.463,3.415,5.292,3.967,3.249,3.619,3.916,2.977,2.25,1.657,3.663,7.83,4.87,5.276,2.355,1.418,4.455,2.714,1.94,3.814,2.446,3.113,4.425,5.094,6.577,5.484,4.223,3.497,2.856,2.027,1.222,1.501,1.407,1.423,1.471,2.036,4.291,5.184,12.523,9.224,3.347,4.957,3.45,7.198,11.634,7.027,5.654,6.654,5.563,5.089,4.379,3.635,2.786,2.697,2.08,1.547,1.499,1.768,1.923,2.114,3.519,2.921,1.561,4.076,2.705,9.459,7.801,3.704,5.635,5.934,6.684,8.352,5.223,4.707,5.28,5.5,3.937,2.573,2.758,2.077,1.824,2.044,5.176,4.247,3.693,2.421,1.089,2.265,1.549,2.12,1.832,3.947,0.716,1.074,2.202,2.938,6.501,4.149,4.244,3.558,2.832,3.324,3.531,3.394,3.619,3.592,3.497,2.916,2.446,1.949,2.533,0.654,1.24,2.089,2.92,2.028,1.007,1.254,4.394,4.673,4.261,5.527,4.901,7.341,4.394,3.494,2.593,3.169,3.063,2.967,5.241,3.042,2.774,4.63,2.09,1.009,1.787,0.851,0.9,2.87,1.391,2.809,4.236,7.495,14.087,7.137,8.485,2.759,4.633,4.036,3.352,3.227,2.212,2.592,3.339,5.452,4.183,7.581,8.321,2.729,4.142,3.196,4.124,5.628,1.594,2.84,5.62,7.493,7.207,6.048,18.749,5.184,4.289,3.789,4.697,4.651,3.019,2.333,2.229,4.434,2.707,2.671,2.697,2.784,5.975,4.17,3.347,4.601,1.711,3.403,5.816,13.263,6.577,4.664,5.009,4.854,3.377,2.13,2.05,1.192,1.483,1.507,1.361,1.704,3.02,3.394,6.279,5.305,2.694,4.853,5.004,5.978,7.553,7.979,7.371,7.465,5.06,5.298,4.35,5.006],"emission_kg":[0.575,1.151,1.688,2.209,2.737,3.404,4.546,5.613,9.843,11.252,12.129,13.813,14.944,16.442,17.896,20.379,23.265,25.642,27.557,29.788,32.652,35.16,37.38,39.734,40.987,41.843,42.525,43.312,44.172,45.122,46.076,46.628,47.922,48.532,49.747,51.419,55.526,58.593,61.273,64.538,67.959,70.824,73.815,76.126,78.715,81.111,83.493,84.95,86.221,87.134,87.97,88.66,89.381,90.114,90.752,91.624,93.084,93.67,94.822,95.882,96.901,101.271,102.724,105.278,108.902,111.222,113.739,115.634,117.086,119.717,121.188,122.441,123.44,124.156,124.793,125.333,125.882,126.92,128.192,128.964,130.473,131.186,132.14,132.714,133.506,133.827,134.126,134.231,134.441,135.034,136.725,138.871,140.578,142.646,144.687,146.231,147.231,148.15,148.824,149.381,150.382,150.976,152.0,153.943,154.585,154.948,155.395,156.203,157.201,158.2,159.404,159.865,160.338,162.852,166.055,169.258,171.361,172.505,174.461,176.003,177.387,178.513,179.719,180.842,181.637,182.583,187.539,188.445,189.484,192.958,193.665,194.129,194.951,195.701,196.732,197.048,197.666,198.825,200.964,203.251,209.02,210.856,212.482,214.076,215.613,217.024,218.162,219.195,219.898,220.702,222.658,223.661,225.453,226.257,226.767,229.668,231.256,232.58,233.931,234.296,234.735,235.952,238.43,240.677,242.65,244.115,245.475,246.316,247.642,248.754,249.605,250.298,250.846,252.438,253.275,254.166,255.371,255.764,256.169,256.633,257.054,257.811,258.887,259.071,259.544,261.057,263.166,265.599,267.844,269.652,271.081,271.998,272.877,273.564,274.191,274.709,275.223,275.765,276.791,277.536,279.153,279.82,280.479,281.7,283.097,287.562,290.481,292.935,295.017,297.531,300.47,302.94,304.707,306.329,308.053,309.14,309.831,310.632,311.246,311.837,312.264,313.297,313.79,314.362,315.206,315.921,316.774,317.652,319.128,323.2,325.098,327.253,331.81,334.269,337.563,340.995,343.079,344.711,346.648,348.085,349.677,351.138,352.373,353.291,353.915,354.655,356.993,358.164,360.219,361.168,361.784,362.468,363.364,364.579,368.511,369.372,370.895,373.372,375.675,378.064,380.125,384.961,386.614,388.649,390.269,391.677,392.856,394.068,394.926,395.817,396.639,397.454,398.088,399.187,400.016,401.156,402.009,403.487,404.904,406.265,409.737,412.78,415.608,419.4,422.96,426.826,432.203,434.4,435.973,437.275,438.594,439.767,440.886,441.673,443.396,444.236,445.03,445.665,446.365,447.047,447.645,448.286,449.783,450.474,451.719,453.382,455.871,458.93,461.55,463.818,466.506,468.264,469.398,471.162,472.487,473.562,474.649,475.79,477.112,479.354,480.735,481.339,481.957,482.472,483.829,485.241,485.913,486.26,486.73,487.971,490.178,493.47,495.779,497.492,499.542,501.228,502.749,504.211,505.252,506.272,507.5,508.207,509.049,510.771,513.094,515.227,516.473,517.77,518.479,519.331,521.205,521.573,522.364,525.014,527.371,529.425,531.436,534.164,535.527,537.528,538.521,539.442,540.244,540.961,541.505,542.186,542.953,544.547,545.262,546.264,547.086,547.975,551.166,552.263,553.95,555.461,558.337,560.78,563.036,565.331,567.888,569.899,570.949,571.65,572.506,573.26,573.873,574.45,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,575.137,577.825,580.049,581.917,583.563,585.7,587.748,589.431,590.982,592.129,594.679,596.952,598.327,599.225,601.095,602.69,603.75,605.753,609.055,610.747,611.336,611.876,613.443,615.858,618.652,620.91,623.692,625.207,626.745,628.294,629.711,630.366,631.745,632.425,633.454,635.22,638.007,640.063,642.159,643.104,643.713,645.099,646.936,650.933,651.233,651.543,651.803,653.197,654.813,657.017,658.396,659.86,661.237,662.981,664.594,665.295,665.97,667.169,669.138,670.035,671.634,672.947,673.765,674.534,676.192,677.555,678.055,678.636,678.86,679.2,680.392,682.044,683.697,686.468,689.771,692.473,695.201,696.89,698.316,699.41,701.126,702.146,703.078,704.104,706.245,707.129,707.726,708.308,709.918,710.992,711.988,713.624,714.137,715.252,717.415,721.63,724.045,725.906,728.748,730.825,732.45,734.068,735.733,736.922,737.802,738.443,739.886,743.31,745.444,747.884,749.088,749.772,751.966,753.309,754.258,756.092,757.261,758.775,760.859,763.224,766.222,768.712,770.618,772.146,773.355,774.192,774.688,775.254,775.766,776.27,776.845,777.689,779.415,781.421,786.104,789.746,791.166,793.347,794.915,798.287,803.799,807.136,809.818,812.967,815.563,817.894,819.884,821.488,822.67,823.749,824.527,825.093,825.62,826.229,826.881,827.611,828.865,829.92,830.536,832.094,833.187,837.249,840.698,842.363,844.937,847.663,850.666,854.328,856.592,858.65,860.957,863.317,864.983,866.087,867.19,867.981,868.695,869.532,871.847,873.863,875.719,876.93,877.708,878.82,879.786,880.895,881.812,883.799,884.159,884.7,885.806,887.274,890.499,892.549,894.653,896.387,897.732,899.173,900.632,901.968,903.383,904.794,906.216,907.444,908.508,909.376,910.458,910.966,911.536,912.627,914.011,914.981,915.462,916.062,918.156,920.383,922.416,925.082,927.442,930.854,932.794,934.243,935.264,936.482,937.651,938.773,940.803,942.034,943.203,945.16,946.129,946.776,947.673,948.482,949.335,950.745,951.43,952.857,954.964,958.683,965.657,969.198,973.377,974.676,976.739,978.404,979.746,980.979,981.8,982.778,984.094,986.383,988.258,991.795,995.598,997.113,999.083,1000.627,1002.637,1005.361,1006.122,1007.459,1010.075,1013.528,1016.838,1019.627,1028.298,1030.608,1032.421,1033.96,1035.682,1037.34,1038.401,1039.229,1040.043,1041.728,1042.786,1043.812,1044.837,1045.963,1048.508,1050.346,1051.855,1053.966,1054.755,1056.316,1058.978,1065.032,1067.971,1070.045,1072.279,1074.428,1075.94,1076.9,1077.844,1078.395,1079.084,1079.776,1080.407,1081.186,1082.537,1083.999,1086.479,1088.585,1089.71,1091.807,1094.05,1096.825,1100.367,1104.116,1107.574,1111.047,1113.404,1115.895,1117.907,1120.153],"kpi":{"all_time_peak_average":0.948282,"annual_normalized_unserved_energy_total":0.019191,"carbon_emissions_total":0.966545,"cost_total":0.9219,"daily_one_minus_load_factor_average":0.977288,"daily_peak_average":0.935419,"discomfort_cold_delta_average":0.522275,"discomfort_cold_delta_maximum":2.996774,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.067959,"discomfort_hot_delta_average":0.250612,"discomfort_hot_delta_maximum":5.124955,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.018095,"discomfort_proportion":0.086054,"electricity_consumption_total":0.974043,"monthly_one_minus_load_factor_average":0.996188,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684409,"ramping_average":1.017412,"zero_net_energy":0.971325},"run":"citylearn_challenge_2023_phase_2_local_evaluation_agent_citylearn_20261022T153213Z","steps":719},"agent_run":{"budget_stopped":false,"budget_usd":2.0,"calls":719,"clamped_hours":73,"cost_usd":0.574,"envelope":{"battery_rate_per_step":0.5,"comfort_band_k":2.0,"comfort_margin_k":0.5,"cooling_max":1.0,"cooling_max_deviation":0.15,"cooling_min":0.0,"cooling_rate_per_step":0.35,"dhw_rate_per_step":0.5,"overcool_guard_unoccupied":true,"peak_forecast_days":2,"peak_limit":true,"peak_target_fraction":1.0,"soc_max":0.95,"soc_min":0.1,"spread_check":true,"storage_max":1.0,"storage_min":-1.0},"fallback_hours":0,"model_id":"claude-haiku-5-5","model_key":"haiku","supervisor":"live"},"agent_sample":false,"baseline":{"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.725,0.633,0.607,1.001,1.608,0.534,4.653,0.483,-0.357,1.817,0.266,0.219,0.945,2.824,3.039,2.14,1.419,2.336,3.167,1.823,1.303,2.042,1.886,1.125,0.744,0.671,1.713,1.752,1.766,0.572,-0.245,-0.069,0.819,1.462,6.669,4.144,2.167,2.167,3.119,2.733,3.531,2.36,3.981,2.93,3.446,2.771,1.996,1.597,1.345,1.167,1.085,1.056,0.979,1.281,1.827,-0.118,-0.286,-0.743,-0.767,-0.321,-0.061,2.823,3.203,2.159,1.652,1.282,0.964,1.54,0.677,1.02,0.69,0.649,0.566,0.452,0.405,1.394,0.36,0.824,0.441,0.178,0.139,0.075,0.006,0.084,-0.175,-0.312,0.37,2.084,1.383,1.363,1.519,1.005,1.032,1.204,0.834,0.908,0.841,0.74,1.702,0.649,1.501,2.044,0.892,0.065,-0.434,-0.302,-0.145,0.399,0.651,1.341,1.712,3.301,2.332,2.04,1.413,1.158,1.266,1.144,0.775,0.658,1.104,1.109,0.93,1.45,5.714,0.799,0.646,5.824,0.119,-0.412,-0.309,-0.341,0.568,-0.373,0.001,3.061,1.979,2.83,8.927,2.165,1.511,1.13,1.289,1.736,1.238,0.991,0.848,0.767,1.873,0.998,2.518,0.266,0.062,5.66,1.286,1.119,1.178,0.97,0.791,2.262,1.689,1.153,2.04,0.959,0.651,0.561,0.49,0.432,0.383,0.35,0.349,3.199,0.452,0.203,1.584,-0.29,-0.446,-0.411,-0.314,0.182,0.323,0.609,0.97,1.585,1.969,1.98,1.566,1.143,0.818,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.385,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.659,1.535,1.25,1.57,1.246,1.262,1.367,0.988,0.878,2.232,0.811,0.668,0.35,-0.269,-0.223,-0.154,0.455,0.885,1.278,1.827,5.826,2.385,3.597,2.451,2.338,1.022,1.687,1.019,1.279,1.568,1.391,1.191,1.042,0.981,0.954,1.91,1.899,0.785,0.426,0.228,0.271,0.751,8.035,2.459,2.762,2.716,2.511,1.773,1.42,1.134,0.999,1.867,1.17,1.283,1.227,1.083,0.976,0.919,0.912,0.799,-0.092,-0.027,0.777,1.121,0.266,0.716,1.03,3.647,8.064,3.658,3.461,2.842,2.439,1.622,1.303,1.625,1.095,1.156,1.108,0.973,0.882,0.84,0.823,0.656,0.496,-0.416,-0.483,-0.313,-0.121,0.188,0.744,2.478,3.105,2.534,2.482,3.192,2.715,1.592,1.289,1.509,1.228,1.478,1.224,0.987,0.851,0.773,1.287,3.362,0.391,-0.307,-0.371,-0.205,1.991,1.839,-0.232,0.265,0.758,1.208,2.194,2.594,2.069,1.662,1.447,1.026,1.21,1.481,1.253,1.038,2.151,0.886,0.84,0.753,1.616,-0.171,-0.16,-0.111,0.282,0.224,2.107,1.77,1.998,3.705,2.641,2.159,1.815,3.686,1.274,0.984,1.183,1.504,1.333,1.125,0.968,0.901,0.91,2.903,0.721,0.62,0.328,0.068,4.92,0.98,1.011,0.264,3.799,3.082,1.976,1.843,2.38,1.544,0.885,0.661,0.591,0.537,0.496,0.46,0.429,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.341,1.27,1.438,1.167,1.319,1.597,1.361,1.153,1.011,3.963,1.66,0.809,0.571,0.041,0.632,0.17,0.622,4.299,0.693,1.403,1.806,2.239,2.031,4.027,1.332,4.166,1.122,0.797,0.979,1.289,1.158,1.903,0.884,0.82,0.787,0.652,0.721,1.083,0.014,-0.078,0.686,0.25,0.981,0.693,0.785,0.992,1.271,2.112,1.4,1.165,0.914,0.824,0.827,2.287,1.079,0.924,1.733,2.043,0.857,2.248,1.565,-0.023,-0.235,0.481,-0.126,-0.062,0.121,0.666,1.976,1.994,0.888,1.214,1.11,1.902,1.166,2.755,1.131,1.116,1.039,0.9,1.23,0.752,0.722,0.544,0.213,-0.372,-0.313,1.116,0.465,0.497,1.233,1.444,2.514,2.845,5.034,2.238,1.363,2.117,1.214,0.877,1.089,1.408,1.226,1.032,0.88,2.685,1.355,0.84,0.944,-0.187,0.317,2.427,1.013,0.481,0.986,2.991,3.158,2.811,2.549,2.184,2.534,1.661,1.244,1.04,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.75,1.634,4.402,8.38,2.747,2.775,2.818,2.972,2.443,1.928,1.857,1.732,1.079,1.169,0.69,0.608,0.884,1.063,1.069,0.909,0.01,-0.139,0.892,0.124,7.091,3.778,0.137,1.484,3.241,3.902,2.334,2.013,1.9,1.763,3.035,0.973,1.13,1.417,0.981,0.892,1.095,4.255,2.278,2.019,0.635,-0.163,0.882,-0.051,0.116,0.547,1.941,1.163,1.806,1.093,0.844,3.574,1.744,2.639,2.274,0.928,1.121,1.464,1.309,1.549,2.185,1.682,1.743,1.495,0.39,-0.05,0.108,0.011,0.15,0.716,0.798,1.338,1.966,2.61,1.711,1.991,2.574,1.412,1.201,1.514,1.213,1.31,1.214,1.003,0.926,0.874,0.908,1.117,0.402,-0.219,-0.236,-0.115,-0.644,-0.548,0.954,2.208,3.8,2.127,1.98,2.977,2.506,5.466,1.424,1.916,1.306,1.381,1.271,1.092,0.961,1.979,3.683,2.124,0.769,-0.199,-0.153,2.156,0.873,0.736,3.454,2.032,3.027,2.922,2.843,4.405,2.218,8.411,1.397,1.116,1.28,1.62,3.058,1.286,1.085,1.004,1.852,1.138,0.765,1.284,0.69,1.379,1.5,0.84,1.08,1.649,3.27,3.253,2.696,2.846,2.022,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.571,3.406,1.136,1.332,1.962,2.818,2.816,3.383,3.406,2.488,2.608,2.603,2.726,1.306],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.14,21.16,21.58,21.71,21.76,21.9,22.21,23.79,24.19,24.27,24.25,23.54,23.35,23.15,22.93,22.99,22.29,22.35,22.63,22.06,20.25,18.2,17.59,17.46,17.51,17.65,17.79,18.04,18.13,18.44,18.59,18.56,20.71,21.5,22.96,23.44,23.74,23.72,22.23,20.12,20.13,21.89,22.52,23.0,20.89,22.58,23.02,22.51,22.65,22.93,23.37,23.75,23.96,24.27,23.2,23.56,23.64,24.86,24.07,24.29,25.23,24.97,25.47,24.52,23.58,23.53,23.56,23.55,23.65,23.76,21.56,22.35,21.61,21.68,21.78,21.47,21.93,21.67,21.38,21.87,22.57,23.24,23.89,24.12,23.98,23.68,23.14,22.78,22.29,22.44,22.58,22.79,22.94,23.07,23.18,23.32,23.54,21.49,21.32,21.46,21.65,21.21,21.59,21.82,20.68,22.27,23.42,23.79,24.49,24.34,26.05,26.65,25.5,25.71,24.52,24.03,23.16,23.15,23.37,22.4,21.27,21.29,21.49,21.77,22.04,21.72,22.17,21.75,22.53,23.09,23.28,23.51,23.4,23.21,24.0,25.66,25.96,26.23,26.3,25.78,26.12,26.43,26.71,26.93,27.22,27.53,27.84,28.04,26.6,27.52,28.11,27.36,27.9,27.97,27.88,27.73,27.35,27.01,26.64,26.32,26.01,26.06,26.05,26.08,26.18,26.32,26.5,26.37,26.54,26.63,26.71,26.79,27.0,26.91,27.05,25.78,26.02,25.81,25.44,25.07,24.61,24.11,23.32,23.17,22.65,22.64,22.64,22.69,22.67,22.67,20.95,21.2,20.46,20.43,20.53,20.71,20.78,21.05,21.32,21.67,23.0,23.06,23.21,22.98,22.72,22.5,22.27,23.27,21.93,21.6,21.78,21.99,23.38,22.63,22.48,21.35,20.19,20.17,20.3,20.52,20.57,20.73,20.62,20.23,21.08,21.71,22.3,22.33,22.16,20.54,19.95,20.43,20.7,21.17,21.46,21.73,21.96,22.18,20.54,20.92,20.14,20.16,20.35,20.6,20.78,20.94,21.13,22.84,22.95,23.03,22.59,22.53,22.27,22.06,21.58,20.99,20.92,21.06,21.25,21.23,21.7,21.93,19.91,20.84,20.15,20.23,20.44,20.71,20.95,21.15,21.29,21.26,23.1,23.51,23.71,23.6,23.38,22.99,22.53,22.16,21.82,21.93,21.9,21.75,22.01,22.22,22.41,21.49,20.35,20.42,20.67,20.96,21.26,21.52,21.51,22.1,23.5,23.81,23.87,24.66,25.34,25.84,25.85,25.65,25.32,24.02,22.96,22.82,22.88,23.05,23.24,22.31,21.05,21.04,21.2,20.93,21.43,21.61,21.84,21.73,23.32,23.55,23.77,23.65,24.25,23.01,22.64,22.34,21.84,21.92,22.09,22.3,21.57,22.18,22.51,21.69,20.44,20.42,20.55,20.78,20.98,21.26,20.6,21.47,22.9,23.09,23.38,21.29,22.35,22.9,24.51,24.56,24.06,24.45,24.67,24.37,24.79,25.08,25.32,25.47,25.62,25.78,25.95,26.13,26.52,26.62,26.86,26.91,26.86,26.73,25.93,25.96,26.25,26.8,27.36,28.05,28.68,29.45,29.91,28.54,26.84,25.3,24.9,23.62,22.06,21.89,21.86,21.93,20.97,21.31,21.49,21.96,23.28,23.38,23.48,23.31,23.83,23.23,22.39,22.11,21.68,20.93,20.24,21.54,20.58,21.51,21.87,21.04,19.88,19.96,20.08,20.29,20.46,20.69,20.82,21.34,22.5,22.89,23.1,23.02,23.48,23.27,23.23,23.28,23.32,23.4,23.36,23.38,23.38,23.44,23.51,22.53,21.06,21.06,21.2,21.01,21.22,21.56,20.93,21.01,22.81,23.42,23.57,23.71,23.68,23.4,22.35,22.23,22.87,23.33,23.54,23.62,23.59,23.65,22.62,22.34,21.22,21.16,21.33,21.52,21.68,21.85,22.08,22.59,23.98,24.09,23.9,23.67,23.56,23.42,22.93,21.13,20.92,21.34,21.85,22.18,22.3,22.49,22.66,21.73,20.46,20.48,20.65,20.93,20.41,20.93,21.3,21.79,23.17,23.46,22.63,22.98,23.52,23.36,21.23,20.93,21.06,21.32,21.5,21.67,21.87,22.09,22.28,21.49,22.33,22.67,22.92,23.11,23.33,23.5,22.38,21.82,22.29,22.49,22.82,22.24,22.28,21.8,21.08,20.93,20.61,20.34,20.53,21.16,21.49,19.42,19.21,20.14,19.59,20.9,21.43,20.59,20.14,20.26,20.34,22.17,22.36,22.42,22.47,21.65,22.26,23.68,21.91,20.06,20.12,20.63,20.81,20.65,20.89,20.55,21.24,20.48,19.56,20.43,20.62,20.03,19.59,19.38,19.7,20.32,21.85,21.94,22.11,21.98,21.8,21.44,21.26,21.13,22.02,23.34,21.27,21.49,21.09,21.51,21.8,20.98,19.78,19.85,19.96,19.75,19.96,20.19,20.39,20.96,22.35,22.4,22.57,22.22,22.05,21.89,21.32,20.81,21.03,21.97,21.68,21.63,21.77,21.91,20.46,20.85,20.03,20.04,20.24,20.49,20.72,20.89,20.99,21.37,22.79,23.07,23.27,24.88,25.59,24.33,22.6,21.87,23.34,23.75,20.79,21.59,21.56,21.9,19.95,20.79,20.01,20.09,20.27,20.55,20.65,20.07,20.54,20.62,22.52,22.92,20.17,21.77,22.12,21.39,21.3,21.0,20.78,20.88,20.3,20.8,20.61,21.01,21.3,20.5,19.36,18.87,19.35,19.71,20.04,20.06,20.34,20.75,21.66,20.86,21.64,19.93,21.48,21.53,21.34,20.87,21.92,22.87,21.36,21.34,19.3,18.14,18.36,19.84,20.77,21.73,22.08,22.33,22.51,22.73,22.15,22.49,21.45,21.22,21.47,21.4,21.16,20.79,20.34,19.9,19.57,20.24,20.04,20.14,20.23,20.52]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.345,2.934,0.672,0.633,0.669,0.97,0.787,1.197,2.665,1.802,1.708,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.471,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.455,1.85,0.977,0.827,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.85,0.532,0.268,0.202,0.232,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.428,0.723,1.826,0.673,0.718,0.518,0.511,0.503,0.58,0.518,0.23,0.185,0.187,0.202,0.231,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,1.16,1.171,1.317,1.129,0.737,0.781,0.715,0.584,0.374,0.514,0.278,0.185,0.187,0.202,0.231,0.298,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.822,0.925,1.038,1.108,0.679,0.552,0.488,0.412,0.7,0.563,0.186,0.185,0.187,0.202,0.231,1.118,0.35,0.594,1.127,0.674,0.467,0.628,0.712,0.926,1.0,1.022,1.022,0.857,0.653,0.745,0.511,0.528,0.67,0.764,0.686,0.185,0.187,0.202,0.231,0.24,0.971,0.4,0.494,0.514,0.822,0.672,0.699,0.885,0.926,0.955,1.009,0.942,0.855,0.746,0.725,0.619,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.738,0.704,0.896,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.257,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.886,0.916,1.168,9.8,1.415,1.521,1.533,1.541,1.605,1.062,0.854,0.539,0.654,0.746,0.36,0.205,0.227,0.235,0.25,0.275,0.345,0.705,2.349,0.969,1.006,0.935,0.907,1.331,1.137,1.166,1.158,1.182,1.092,0.82,0.642,0.518,0.525,0.6,0.753,0.396,0.185,0.187,0.214,0.249,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,1.215,1.205,1.706,1.345,0.994,0.857,0.933,0.999,0.492,0.207,0.225,0.471,0.223,0.232,0.254,0.353,0.554,0.544,0.592,0.517,0.843,0.679,0.668,1.592,1.638,0.706,0.994,1.2,0.983,1.252,0.897,1.846,0.524,0.596,0.664,0.198,0.187,0.202,0.231,0.414,0.589,2.082,0.685,1.01,0.714,0.885,0.797,0.929,1.012,1.021,2.391,1.077,1.195,0.806,0.751,0.616,0.448,0.681,0.483,0.185,0.187,0.206,0.24,0.452,0.622,6.144,3.19,1.807,1.768,0.757,0.853,1.282,1.227,1.225,1.287,1.232,0.937,0.991,1.101,0.608,0.452,0.497,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.163,2.019,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.459,0.385,0.638,0.576,0.185,0.192,0.22,0.253,2.199,0.708,0.975,2.712,0.878,0.926,2.237,1.089,1.578,1.481,1.102,0.808,0.802,0.705,0.748,0.601,0.35,0.435,0.696,0.387,0.185,0.187,0.202,0.231,0.278,6.647,1.482,1.563,0.569,0.533,0.915,2.424,6.174,0.663,0.577,0.416,0.357,0.305,0.443,0.45,0.233,0.306,0.613,0.287,0.185,0.187,0.202,0.231,0.252,0.309,0.462,0.816,0.836,2.079,2.033,0.354,0.376,0.551,0.778,0.395,0.796,0.526,0.613,0.496,0.507,0.597,0.66,0.291,0.185,0.187,0.202,0.231,0.266,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,1.565,1.265,0.827,2.076,0.823,0.744,0.702,0.569,0.479,0.63,0.658,0.185,0.187,0.202,0.231,0.359,2.37,0.984,1.299,0.681,0.976,1.447,1.103,1.875,1.984,0.872,1.098,1.164,0.918,0.71,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.481,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.068,0.766,2.297,0.715,1.178,1.8,1.831,1.158,2.944,1.33,2.405,1.014,1.124,0.708,0.401,0.798,0.713,0.186,0.188,0.216,0.248,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,1.583,1.483,0.616,0.58,0.718,0.739,0.65,0.492,0.441,0.33,0.245,0.249,0.247,0.257,0.279,0.369,0.475,0.589,0.698,0.664,0.687,0.862,0.821,0.952,1.007,1.017,1.095,1.025,0.991,0.888,0.851,5.033,0.691,0.413,0.351,0.226,0.232,0.241,0.267,0.467,0.748,1.804,0.926,0.907,1.525,0.928,1.054,1.164,1.302,1.39,1.489,3.266,1.215,1.019,0.949,0.94,0.648,0.664,0.402,0.288,0.242,0.258,0.281,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,1.592,1.718,1.883,1.726,1.224,1.008,1.208,1.098,1.366,0.579,1.241,0.361,0.264,0.277,0.302,1.734,0.617,1.13,1.053,1.231,1.078,1.197,1.483,2.018,1.833,1.453,1.494,1.359,1.588,0.999,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.14,1.29,1.624,1.632,1.964,2.077,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.25,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.57,25.4,25.83,25.92,24.47,24.48,25.61,25.72,26.05,26.33,26.51,26.83,27.01,27.22,27.36,27.41,27.3,27.31,26.84,26.65,26.79,26.72,26.69,26.59,25.99,24.94,23.92,24.89,25.54,25.71,25.71,25.57,26.16,25.39,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.46,25.54,25.63,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.44,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.08,26.14,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.57,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.71,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.33,23.86,24.38,24.96,25.06,25.03,25.26,25.36,25.41,25.43,25.4,25.48,25.55,25.19,24.45,23.3,24.08,25.32,25.86,26.18,26.35,26.5,26.43,26.17,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.39,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,27.48,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,24.97,25.35,24.23,24.91,23.86,24.08,24.85,24.82,24.89,25.04,25.09,25.12,25.19,24.55,22.96,23.6,24.76,25.19,25.48,25.64,25.73,25.55,25.62,25.76,25.74,25.8,25.9,25.69,25.37,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.43,25.78,25.88,25.74,25.7,25.77,25.73,25.53,25.69,25.67,25.64,25.02,23.62,22.53,23.67,24.99,25.38,25.46,25.37,25.7,25.81,25.77,25.77,25.79,25.7,25.72,25.83,25.65,24.6,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.75,23.54,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.98,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.5,23.79,24.89,23.51,24.47,24.69,23.37,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.81,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,23.76,24.17,24.28,24.83,24.98,25.16,25.31,25.52,25.09,24.27,24.91,25.24,24.87,25.3,25.21,25.37,25.53,25.53,25.51,24.1,24.94,24.9,24.78,24.61,24.48,24.3,24.57,25.04,25.46,25.62,25.67,25.81,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.48,24.12,23.36,23.62,24.28,24.29,24.36,24.22,24.52,24.61,24.75,24.86,24.02,23.7,24.8,25.3,25.52,25.54,25.59,25.48,25.15,24.95,24.87,24.78,24.71,24.68,24.4,24.34,24.24,24.25,24.09,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,0.829,0.891,1.994,1.803,1.649,1.968,1.807,1.774,2.584,2.719,2.948,0.809,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.639,0.589,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.915,1.691,0.415,0.565,8.096,1.113,1.721,2.25,1.528,2.802,1.989,1.722,1.679,0.726,0.479,0.478,0.484,0.476,0.472,0.47,0.56,2.248,0.742,2.124,0.749,1.171,0.453,1.069,0.202,0.114,0.249,0.422,0.807,1.332,1.114,1.238,1.352,1.374,0.742,0.579,0.514,0.494,0.481,0.47,0.528,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.952,1.225,2.137,2.804,4.356,2.4,0.973,1.143,0.754,0.656,0.592,0.549,0.497,0.492,0.553,8.204,0.944,1.117,1.147,0.941,0.355,0.469,0.49,0.703,1.24,1.54,1.379,1.715,1.358,3.324,1.408,0.834,0.723,0.65,0.917,0.898,0.844,0.592,0.578,1.476,1.06,0.654,0.397,0.281,0.361,1.26,0.871,0.725,0.775,1.628,2.323,3.137,2.229,1.836,1.845,0.891,0.745,0.649,0.586,0.541,0.511,0.48,0.548,1.358,0.745,0.446,0.313,0.188,0.172,0.237,0.744,0.988,1.193,1.485,2.414,2.149,2.623,2.755,2.023,1.66,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.658,0.987,0.845,6.452,2.388,1.682,1.651,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.319,0.859,0.703,1.045,1.614,4.011,2.641,2.393,2.863,1.419,2.082,0.97,0.84,0.97,0.92,0.844,0.561,0.48,0.601,4.874,0.917,0.805,1.241,0.534,0.411,0.792,0.886,0.994,1.375,1.684,1.595,2.146,2.303,2.388,9.131,1.259,1.141,0.599,0.637,0.684,0.661,0.657,0.714,0.617,0.536,0.625,0.764,0.382,0.507,0.561,1.241,0.84,1.134,1.53,2.179,2.146,4.945,4.652,5.853,9.45,1.516,0.881,0.593,0.569,0.552,0.551,0.606,1.792,0.574,0.528,0.44,0.794,0.37,0.42,0.379,0.663,1.167,1.71,1.728,1.96,2.549,1.729,2.494,2.664,1.286,0.673,0.622,0.58,0.552,0.526,0.591,0.613,0.785,0.418,0.334,0.219,0.282,0.305,0.403,0.493,1.076,1.46,1.527,1.917,3.356,3.53,1.587,1.556,1.479,0.664,0.62,0.585,0.563,0.54,0.598,0.768,2.533,1.353,0.967,0.685,0.618,0.552,0.556,0.874,1.251,1.729,2.102,2.715,2.296,2.326,1.591,1.314,3.385,0.757,0.647,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.6,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.631,1.084,0.593,0.579,0.568,0.567,0.622,0.91,0.988,0.719,0.858,1.673,0.796,0.874,0.753,0.931,1.151,1.215,1.42,1.489,1.38,1.647,1.299,0.812,0.841,0.575,0.563,0.551,0.543,0.542,0.602,2.226,0.732,1.068,0.706,0.581,0.492,1.007,0.706,0.793,0.803,0.736,0.665,1.249,0.949,1.561,1.361,0.834,0.804,1.27,0.776,0.521,0.512,0.495,1.692,0.73,0.558,0.78,0.769,0.578,0.617,0.514,0.572,0.573,0.484,0.834,1.975,1.368,1.391,2.159,3.745,2.419,0.82,0.525,0.513,0.509,1.815,0.524,0.609,0.866,2.932,0.886,0.497,0.475,1.125,0.698,0.725,0.948,1.168,1.311,1.565,1.591,1.445,1.725,1.611,1.096,0.889,0.661,0.613,0.586,0.565,0.548,0.634,8.641,0.92,2.622,1.322,0.42,0.601,0.535,0.613,1.087,1.637,1.918,2.038,2.217,3.475,2.241,2.363,1.288,0.808,0.73,0.677,0.633,0.6,0.586,0.637,0.651,2.323,0.863,0.977,0.917,1.189,2.025,1.51,2.116,2.496,2.828,2.111,3.038,1.88,1.644,1.545,1.298,0.852,0.8,0.748,0.706,0.676,0.671,0.709,0.656,0.81,0.955,1.02,1.012,0.971,1.19,1.186,1.281,1.755,4.027,2.367,2.992,2.196,1.889,2.179,1.534,0.929,0.814,0.737,0.699,0.581,0.597,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.72,0.808,0.95,1.266,1.62,1.983,2.28,1.924,1.448,1.216,0.673,0.636,0.615,0.598,0.585,0.589,0.671,0.643,0.594,0.97,1.857,0.499,0.541,1.542,1.496,1.311,1.227,1.175,2.316,1.937,1.67,2.065,1.637,2.575,1.149,1.905,0.655,0.598,0.591,0.562,3.354,0.9,0.883,1.806,1.471,0.414,0.377,0.737,0.53,0.752,1.076,1.373,2.043,2.442,10.08,2.374,2.07,1.379,1.041,0.858,0.744,0.683,0.64,0.618,0.668,1.154,1.676,5.556,7.639,2.401,0.942,1.24,2.053,1.408,1.747,2.14,2.081,2.099,2.959,2.074,10.153,2.433,1.072,0.834,0.753,0.701,0.667,0.656,0.695,0.737,1.006,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.906,1.666,2.159,10.01,2.211,1.709,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.695],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.34,22.04,22.87,23.26,23.79,24.0,24.11,23.58,22.63,23.22,23.65,23.94,24.63,24.94,24.62,25.03,25.49,25.27,24.87,24.59,24.34,24.15,23.93,23.58,22.75,22.0,22.52,23.01,22.36,22.28,22.31,23.47,24.18,24.53,24.77,24.94,25.04,25.13,25.24,25.45,25.24,24.82,24.88,24.05,24.03,23.92,23.18,22.87,22.56,22.75,22.98,22.65,22.64,22.65,22.64,23.08,24.05,24.34,24.52,24.7,24.84,24.99,25.13,24.6,24.98,24.54,24.86,24.95,24.8,24.61,24.45,24.35,24.38,24.33,24.2,24.37,24.41,23.81,23.21,23.21,23.62,23.96,24.02,24.11,24.21,24.38,24.93,25.4,25.63,25.63,25.46,25.2,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.49,23.03,23.43,23.67,23.92,24.22,24.28,24.39,24.57,24.8,24.89,24.81,24.94,24.06,23.63,23.38,22.96,22.71,22.44,22.19,22.1,21.86,22.84,23.45,23.61,22.9,23.46,23.8,24.09,24.36,24.2,24.13,24.15,24.45,24.74,25.09,25.16,25.23,25.15,24.88,24.63,24.25,24.03,23.79,23.51,23.23,22.87,22.9,22.99,23.3,23.47,23.85,24.14,24.28,24.45,24.54,24.66,24.88,25.01,24.93,25.17,25.12,24.94,24.81,24.5,24.21,23.54,23.19,22.98,22.59,21.6,21.76,21.98,22.09,22.51,23.09,23.36,23.57,23.75,23.91,23.98,24.05,24.18,24.41,24.61,24.67,24.68,24.53,24.32,24.17,23.39,23.31,23.13,23.1,22.88,22.39,22.88,23.1,23.31,23.48,23.74,23.92,24.1,24.23,24.31,24.43,24.52,24.78,24.99,25.08,25.0,24.79,24.46,24.06,23.7,23.44,22.64,21.61,21.35,21.26,21.09,21.58,21.83,22.25,22.52,22.04,21.96,22.03,23.0,23.85,24.12,22.85,23.36,23.67,23.64,23.53,23.34,22.73,22.44,22.34,22.39,22.06,22.66,22.55,21.92,21.9,21.47,22.29,23.24,23.65,23.6,23.47,23.58,23.7,23.87,24.39,24.8,24.3,24.0,23.62,23.4,23.28,22.99,22.69,22.48,22.48,22.73,23.13,22.62,22.0,20.79,20.81,22.4,23.01,23.27,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.33,23.18,22.99,22.77,22.55,22.55,22.45,22.5,22.49,22.54,22.77,22.38,22.24,23.26,23.66,23.82,23.95,24.12,24.37,24.58,24.99,25.27,25.22,24.89,24.52,24.24,23.94,23.66,23.48,23.1,22.52,22.84,23.21,22.57,22.44,22.7,22.76,23.62,23.86,24.1,24.23,24.37,24.56,24.61,24.79,24.14,24.32,24.27,24.18,23.96,23.59,23.36,23.11,22.54,22.16,22.3,21.86,22.04,22.21,22.48,22.73,22.2,22.95,23.36,23.66,23.88,24.05,24.22,24.48,24.65,24.66,23.99,23.59,23.3,23.0,22.71,22.48,22.11,21.84,22.16,22.42,22.63,22.81,22.99,23.25,23.51,23.73,23.92,24.07,24.16,24.24,24.7,24.99,24.89,24.28,24.03,23.62,23.51,23.45,23.53,23.95,24.38,25.15,25.91,26.8,27.4,23.48,23.41,23.29,24.34,24.51,24.61,24.68,24.72,24.78,24.86,25.04,25.07,24.55,24.02,23.58,23.38,23.13,22.89,22.68,22.49,22.37,22.6,22.58,22.7,22.77,22.85,23.01,23.65,23.91,24.0,24.12,24.27,24.44,24.62,24.17,24.03,23.95,24.39,24.41,24.22,23.9,23.68,23.52,23.4,22.95,23.47,23.45,23.65,23.72,23.75,23.92,24.04,24.26,24.31,24.42,24.59,24.82,24.51,24.75,24.84,24.28,24.1,23.99,23.73,23.49,23.38,23.31,23.16,23.22,22.94,23.25,23.32,23.35,22.2,22.72,23.58,23.97,24.14,24.28,23.73,24.2,24.49,24.86,24.2,23.88,23.6,23.44,23.24,23.05,22.81,22.61,22.48,22.44,22.99,23.38,23.61,23.79,23.92,24.14,23.74,24.3,24.44,24.53,24.63,24.78,24.9,24.69,24.93,23.99,24.08,23.94,23.65,23.43,23.27,23.14,22.9,22.06,22.04,21.9,21.59,21.82,21.98,22.68,23.22,23.43,23.7,23.86,23.98,24.11,24.24,24.48,23.87,24.07,23.97,23.78,23.5,22.78,22.17,21.43,21.1,20.83,21.18,21.18,21.49,21.79,22.06,22.23,22.57,22.66,22.81,22.94,23.03,23.11,23.23,23.74,24.2,24.2,23.7,23.17,22.88,22.6,22.38,22.13,21.71,20.99,20.85,20.7,21.06,21.65,21.86,22.12,22.46,22.65,22.82,22.99,23.56,23.82,24.04,24.26,24.25,23.72,23.59,23.37,23.14,22.86,22.62,22.47,22.37,22.42,22.66,22.34,22.16,22.31,22.5,22.66,23.41,23.7,23.83,23.97,24.12,24.28,24.46,24.73,24.84,24.6,24.42,23.71,23.12,22.9,22.68,22.48,22.32,22.09,22.41,22.72,22.72,22.43,22.5,22.0,22.97,23.31,23.47,23.62,23.8,24.04,23.17,23.71,24.02,23.58,23.67,23.5,23.35,23.11,22.96,22.73,22.48,22.25,22.06,22.25,21.79,22.17,22.37,22.67,22.95,23.25,23.37,23.48,23.66,23.89,24.13,24.22,24.25,23.67,23.03,22.59,22.9,22.52,22.19,21.66,21.31,21.22,21.58,21.94,22.14,22.49,22.06,22.46,22.78,23.0,23.26,23.45,23.65,23.84,24.05,24.32,24.43,24.41,24.2,23.88,22.49,22.62,22.37,22.24,22.04,21.83,21.77,21.48,21.99,22.38,22.64,22.92,23.15,23.29,23.52,23.68,23.8,23.91,24.05,24.26,24.3,24.19,23.29,23.29,23.03,22.34,21.47,21.02,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1241,0.1603,0.1964,0.2464,0.33,0.3814,0.6663,0.7621,0.8181,0.9188,0.9761,1.0296,1.118,1.557,1.9468,2.2693,2.4031,2.5534,2.7429,2.9065,3.0492,3.203,3.287,3.3492,3.4008,3.4618,3.5306,3.6055,3.6796,3.7214,3.8135,3.855,3.9311,4.0315,4.2769,4.4651,4.6306,4.8384,5.0633,5.2464,5.4582,5.6087,5.7897,5.9416,6.0919,6.2045,6.2902,6.3616,6.424,6.48,6.5337,6.5884,6.6396,6.7017,6.8043,6.8452,6.9073,6.9728,7.0174,7.2756,7.3291,7.4711,7.6424,7.7686,7.9165,8.0279,8.1231,8.2409,8.2968,8.348,8.3876,8.4271,8.4693,8.5062,8.5374,8.6007,8.6835,8.7396,8.825,8.8648,8.9158,8.9443,8.9874,9.0055,9.0221,9.0618,9.1507,9.4274,9.5262,9.6193,9.7148,9.7984,9.8825,9.9556,10.0115,10.0593,10.1032,10.144,10.2127,10.2534,10.317,10.4347,10.4799,10.5011,10.5264,10.5712,10.6254,10.6796,10.7454,10.9481,11.1891,11.5854,11.768,11.9759,12.1099,12.1928,12.2794,12.3452,12.4015,12.4457,12.4988,12.5507,12.5977,12.6623,13.0736,13.1369,13.2048,13.4231,13.471,13.4988,13.5459,13.5884,13.6468,13.7678,13.9125,14.2339,14.3739,14.5157,14.8889,15.0073,15.0871,15.1609,15.2333,15.3154,15.3825,15.4411,15.4886,15.5341,15.6634,15.7336,15.8434,15.8955,15.9252,16.1143,16.2068,16.2856,16.368,16.5291,16.7309,17.0599,17.2256,17.3432,17.4779,17.5745,17.6344,17.6916,17.7466,17.7959,17.828,17.8583,17.8881,18.0032,18.0625,18.1184,18.1893,18.2128,18.2333,18.2622,18.2887,18.3361,18.4001,18.5601,18.7602,19.054,19.2015,19.3606,19.5083,19.6217,19.7113,19.7717,19.8296,19.8763,19.916,19.9536,19.9901,20.0272,20.0941,20.1428,20.2444,20.287,20.3284,20.4037,20.4881,20.7569,20.936,21.1005,21.2454,21.4151,21.6062,21.7628,21.8808,21.9942,22.1103,22.187,22.2508,22.3122,22.3748,22.4251,22.4722,22.5607,22.6101,22.6572,22.6977,22.7349,22.7773,22.813,22.8848,23.2143,23.3224,23.4659,23.7949,23.9849,24.2046,24.3891,24.5224,24.6278,24.7236,24.799,24.8744,24.9523,25.0236,25.0811,25.1324,25.1861,25.3647,25.4676,25.6149,25.7022,25.7595,25.8054,25.8628,25.9494,26.2457,26.539,26.8678,27.1901,27.3577,27.5004,27.6301,27.9445,28.025,28.1294,28.2024,28.2693,28.33,28.3858,28.4393,28.4937,28.5483,28.6013,28.6416,28.7137,28.7666,28.8367,28.8924,28.9803,29.067,29.4188,30.0524,30.495,30.6976,30.9535,31.1852,31.4303,31.7703,31.8754,31.9386,31.9957,32.0578,32.1083,32.1565,32.2057,32.2915,32.3435,32.3892,32.4193,32.4575,32.4929,32.5249,32.5609,32.6483,32.9582,33.2821,33.5904,33.7549,33.9509,34.117,34.2623,34.43,34.5261,34.5983,34.6782,34.7361,34.7861,34.8318,34.8779,34.9448,35.0829,35.1671,35.1968,35.2327,35.2617,35.3544,35.443,35.4845,35.6225,35.8126,36.1134,36.2647,36.473,36.6597,36.7763,36.881,36.9664,37.0404,37.1151,37.1736,37.2253,37.3092,37.359,37.4186,37.5325,37.7981,37.9193,37.9919,38.0615,38.1079,38.1555,38.2798,38.529,38.8195,39.2357,39.4278,39.5849,39.7345,39.9204,40.0129,40.1524,40.2229,40.2992,40.3612,40.4173,40.4685,40.5205,40.5783,40.6985,40.7653,40.8443,40.9094,40.9714,41.1912,41.2858,41.4166,41.5321,41.7492,41.926,42.0801,42.2353,42.4044,42.5331,42.6077,42.6617,42.7162,42.7685,42.8077,42.8441,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,43.0044,43.1306,43.2373,43.3005,43.3884,43.4684,43.5299,43.5852,43.6372,43.7772,43.9152,43.9882,44.0542,44.1595,44.2523,44.3074,44.4163,44.5953,44.6886,44.9254,45.1672,45.4293,45.5553,45.7335,45.8421,46.0189,46.085,46.145,46.21,46.2748,46.3296,46.4058,46.4529,46.5007,46.5959,46.83,46.9253,47.023,47.057,47.0868,47.1629,47.2614,47.4931,47.6198,47.7429,47.8645,47.9483,48.0465,48.1457,48.2324,48.2897,48.3457,48.424,48.521,48.5726,48.6196,48.6899,48.8046,48.8578,48.9486,49.0304,49.0766,49.1178,49.2104,49.2847,49.3117,49.3429,49.4426,49.6531,49.9092,49.9981,50.0894,50.2026,50.3816,50.5,50.6207,50.6877,50.7432,50.7934,50.8773,50.9339,50.9799,51.0336,51.1458,51.1914,51.2226,51.254,51.3411,51.399,51.4588,51.5528,51.7978,52.0965,52.4037,52.6573,52.7887,52.9004,53.0295,53.1128,53.1777,53.2466,53.3241,53.3819,53.4335,53.4806,53.5834,53.8829,54.0033,54.1359,54.2123,54.2537,54.3704,54.4577,54.5218,54.6369,55.0248,55.3738,55.7227,55.8955,56.0873,56.2471,56.3881,56.4893,56.5719,56.6389,56.6867,56.7308,56.7797,56.8209,56.8634,56.9223,57.0465,57.1965,57.5587,57.8256,57.9232,58.0771,58.1956,58.421,58.7775,58.9807,59.1643,59.3867,59.5583,59.7056,59.8323,59.9374,60.0379,60.116,60.1842,60.2304,60.2738,60.3257,60.3848,60.4459,60.5477,60.6066,60.6582,60.7798,60.8321,61.1058,61.3015,61.3955,61.5227,61.8181,62.038,62.2616,62.4127,62.5548,62.6894,62.8332,62.9113,62.9882,63.0559,63.1099,63.1588,63.2149,63.3646,63.4875,63.5951,63.6657,63.712,63.778,63.8348,63.903,63.966,64.0893,64.3062,64.5734,64.7687,64.868,65.0596,65.1881,65.3262,65.4414,65.5005,65.5608,65.6281,65.6904,65.7593,65.847,65.9232,66.0029,66.0776,66.1344,66.2089,66.2459,66.2821,66.3565,66.445,66.5342,66.7438,66.9877,67.341,67.4772,67.6128,67.7739,67.8876,68.1424,68.2395,68.3416,68.4086,68.4676,68.5204,68.5704,68.7005,68.7663,68.8464,68.9633,69.0332,69.0717,69.1272,69.1757,69.2219,69.3056,69.5746,69.9597,70.2917,70.5158,70.9318,71.1038,71.3511,71.4594,71.5637,71.6455,71.7186,71.7835,71.8407,71.8938,71.9785,72.1314,72.2602,72.4812,72.7304,72.8263,72.9447,73.0559,73.1728,73.357,73.6721,74.076,74.48,74.6744,74.9247,75.0792,75.6556,75.7981,75.9009,75.9789,76.0834,76.2026,76.2668,76.3252,76.3831,76.5081,76.5886,76.6664,76.7588,76.84,77.0141,77.1357,77.2333,77.3674,77.6835,78.0583,78.4635,78.8735,79.0672,79.2051,79.3524,79.5051,79.6215,79.6904,79.7497,79.7937,79.8366,79.8802,79.9264,79.9757,80.0699,80.1681,80.3597,80.5179,80.6165,80.7569,80.9273,81.1301,81.3492,81.5808,81.8152,82.0312,82.2098,82.3716,82.5272,82.6864],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,4.0,5.0,5.0,5.0,6.0,7.0,8.0,9.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,17.0,17.0,18.0,19.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,21.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,30.0,30.0,30.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,32.0,33.0,35.0,37.0,39.0,40.0,41.0,41.0,41.0,41.0,42.0,43.0,43.0,43.0,43.0,43.0,43.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,70.0,72.0,74.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,88.0,89.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,98.0,99.0,100.0,102.0,104.0,106.0,107.0,108.0,109.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,111.0,112.0,113.0,114.0,116.0,118.0,120.0,123.0,126.0,127.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0,141.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,143.0,144.0,145.0,146.0,147.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,149.0,150.0,152.0,154.0,156.0,158.0,159.0,160.0,161.0,161.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,163.0,164.0,166.0,168.0,170.0,172.0,174.0,176.0,178.0,179.0,180.0,181.0,182.0,183.0,184.0,185.0,185.0,186.0,186.0,186.0,187.0,188.0,189.0,189.0,190.0,191.0,192.0,194.0,196.0,198.0,200.0,202.0,204.0,206.0,207.0,208.0,209.0,210.0,211.0,212.0,213.0,214.0,215.0,216.0,217.0,218.0,219.0,220.0,221.0,222.0,223.0,224.0,225.0,226.0,227.0,228.0,229.0,230.0,231.0,232.0,233.0,234.0,235.0,236.0,237.0,238.0,239.0,239.0,239.0,240.0,241.0,241.0,242.0,243.0,244.0,245.0,246.0,248.0,249.0,250.0,251.0,252.0,253.0,254.0,255.0,256.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,258.0,260.0,262.0,264.0,266.0,268.0,269.0,270.0,271.0,272.0,273.0,273.0,273.0,273.0,274.0,274.0,274.0,274.0,274.0,275.0,276.0,277.0,278.0,279.0,281.0,283.0,285.0,287.0,288.0,290.0,291.0,292.0,293.0,294.0,295.0,296.0,297.0,298.0,299.0,299.0,300.0,301.0,301.0,302.0,303.0,304.0,305.0,306.0,307.0,309.0,311.0,313.0,315.0,316.0,317.0,318.0,319.0,320.0,321.0,322.0,323.0,323.0,323.0,324.0,324.0,325.0,326.0,327.0,328.0,330.0,332.0,334.0,336.0,338.0,340.0,342.0,344.0,346.0,348.0],"district_grid_kwh":[1.428,1.505,1.355,1.254,1.245,1.731,2.889,1.763,9.774,3.287,1.561,3.455,1.967,1.835,3.033,7.483,6.644,5.496,4.59,5.157,6.502,5.611,4.935,5.313,2.906,2.15,1.782,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.72,7.182,7.773,6.33,7.322,5.2,6.256,5.252,5.194,3.894,2.96,2.47,2.155,1.937,1.856,1.89,1.77,2.147,3.545,1.297,1.861,1.522,0.774,8.602,1.79,4.906,5.922,4.363,5.111,3.852,3.293,4.069,1.935,1.768,1.37,1.366,1.458,1.277,1.078,2.185,2.862,1.927,2.93,1.364,1.75,0.977,1.479,0.623,0.393,0.365,1.515,4.717,3.387,3.195,3.275,2.867,2.91,2.527,1.93,1.652,1.52,1.409,2.374,1.408,2.199,4.036,1.553,0.726,0.4,1.158,1.716,1.858,2.26,3.453,4.108,6.755,6.265,7.132,4.595,2.846,2.993,2.272,1.946,1.528,1.837,1.793,1.624,2.234,14.217,2.169,2.332,7.487,1.643,0.541,1.309,1.115,2.005,1.689,2.467,5.478,4.803,4.867,12.803,4.062,2.756,2.552,2.501,2.839,2.32,2.023,1.642,1.576,4.467,2.408,3.766,1.79,1.017,6.488,3.173,2.703,2.828,2.745,3.44,5.607,5.683,4.035,4.621,3.315,2.07,1.976,1.903,1.704,1.108,1.048,1.031,3.978,2.049,1.919,2.43,0.517,0.256,0.583,0.595,1.626,2.196,2.728,3.41,5.008,5.06,5.457,5.067,3.89,3.098,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.473,1.431,2.602,2.919,9.291,6.191,5.687,5.009,5.866,6.606,5.413,4.078,3.919,4.015,2.651,2.203,2.124,2.162,1.742,1.625,3.061,1.708,1.627,1.398,1.02,1.239,1.081,2.482,11.388,3.738,4.962,11.371,6.567,7.595,6.376,4.61,3.643,3.311,2.605,2.608,2.693,2.462,1.988,1.772,1.857,6.174,3.531,5.053,2.995,1.965,1.574,1.971,2.968,10.165,5.0,5.604,5.494,5.75,4.896,4.45,10.784,2.784,3.608,2.522,2.315,2.095,1.931,1.847,1.882,1.887,1.817,1.292,2.446,1.816,2.405,1.911,3.014,2.975,5.996,10.799,7.544,6.951,8.78,7.948,8.408,11.751,3.634,2.183,1.974,2.148,1.747,1.665,1.699,2.967,1.783,1.568,0.617,0.828,0.9,0.978,1.234,2.998,5.282,5.52,5.256,5.642,6.724,5.696,4.984,5.799,3.32,2.497,2.764,2.001,1.726,1.579,1.594,2.314,4.736,2.89,0.713,0.858,0.792,3.181,3.039,1.191,2.353,3.24,5.127,5.189,7.144,6.405,4.0,3.62,2.954,2.555,2.584,2.023,1.788,2.897,1.723,2.06,3.908,9.112,3.986,2.331,2.275,1.591,1.633,4.263,4.248,4.951,7.094,6.588,5.392,5.131,6.378,3.196,4.822,2.437,2.636,2.145,1.938,1.77,1.797,2.001,4.154,2.309,2.732,2.249,2.143,7.597,3.27,4.523,3.99,7.504,6.113,5.327,5.365,5.845,4.447,2.577,1.867,1.884,1.81,1.354,1.258,1.464,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.689,2.183,3.04,2.766,2.125,1.913,1.798,4.838,4.768,2.505,2.265,3.612,3.182,1.893,3.733,6.142,3.201,4.036,4.123,4.467,4.322,6.112,3.727,6.066,2.283,2.073,2.249,2.238,1.894,2.633,1.628,1.653,3.291,8.031,3.27,3.352,1.164,0.947,2.608,3.38,7.948,2.159,2.099,2.072,2.876,3.367,3.404,2.977,1.98,1.933,2.709,3.35,1.785,1.624,2.43,3.966,1.838,3.115,2.807,1.562,1.179,3.177,2.421,0.864,1.071,1.7,3.588,4.364,3.052,3.13,3.882,6.143,4.092,4.172,2.316,1.919,1.733,2.902,1.956,1.592,1.854,3.85,1.565,0.697,0.765,2.988,1.987,2.052,3.223,4.177,5.09,5.236,8.701,4.507,3.832,4.43,2.879,2.245,2.381,2.679,1.996,1.784,1.63,3.55,10.355,4.131,4.549,2.434,1.418,4.005,2.995,2.197,3.948,6.611,5.949,5.947,5.929,6.577,5.484,4.838,3.497,2.856,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.522,9.224,3.376,5.317,4.097,7.792,12.321,7.027,6.345,7.686,5.935,5.089,4.38,3.635,3.474,2.697,2.359,1.597,1.499,1.796,2.04,2.114,3.519,2.034,1.647,4.201,1.81,9.459,6.764,3.249,4.398,10.212,7.598,7.731,5.222,4.913,4.651,4.97,2.7,2.657,2.34,1.869,1.689,1.94,5.176,4.247,3.693,2.421,1.425,2.265,1.896,2.339,2.163,4.23,3.696,4.555,3.329,3.406,6.572,4.407,4.737,3.983,2.042,2.087,2.324,2.156,2.381,3.031,2.633,2.755,2.564,1.949,2.504,1.271,1.24,2.554,3.033,3.06,3.573,4.158,6.021,4.673,4.652,5.527,3.9,8.808,3.354,3.531,2.316,2.037,1.826,1.73,4.495,2.274,2.749,4.012,2.179,1.085,1.787,1.022,1.036,2.87,4.586,6.564,5.659,7.689,14.271,5.899,8.485,3.742,3.605,2.828,2.528,2.242,1.975,1.837,2.928,5.284,4.422,7.582,8.349,3.137,4.062,3.813,4.011,6.318,5.371,6.885,6.885,6.669,8.588,5.3,19.771,4.928,3.554,2.693,3.614,4.12,2.218,2.019,2.001,4.323,2.76,2.671,3.168,2.784,5.975,4.17,3.347,4.601,5.388,6.389,6.906,14.065,6.646,4.731,5.053,5.277,4.022,2.381,2.05,1.522,1.483,1.507,1.598,1.704,3.256,3.394,6.625,5.467,3.408,4.853,5.891,7.011,7.572,8.004,8.103,7.465,6.174,5.593,5.381,5.503],"emission_kg":[0.575,1.151,1.652,2.112,2.577,3.244,4.386,5.112,9.342,10.75,11.628,13.312,14.279,15.174,16.629,20.157,23.213,25.683,27.698,29.946,32.81,35.319,37.538,39.892,41.145,42.001,42.683,43.47,44.351,45.302,46.256,46.808,48.102,48.711,49.927,51.599,55.706,58.848,61.594,64.997,68.609,71.514,74.816,77.127,79.922,82.327,84.709,86.481,87.866,88.967,89.876,90.652,91.374,92.107,92.805,93.678,95.155,95.734,96.655,97.715,98.487,103.113,104.08,106.634,109.696,111.938,114.543,116.465,118.093,120.12,121.067,121.941,122.602,123.228,123.83,124.322,124.771,125.751,127.023,127.951,129.46,130.173,131.127,131.658,132.45,132.78,133.08,133.431,134.213,136.623,138.353,140.002,141.709,143.185,144.645,145.837,146.685,147.363,147.951,148.508,149.476,150.091,151.115,153.058,153.843,154.212,154.658,155.467,156.465,157.464,158.667,160.484,162.627,166.123,169.327,172.911,175.186,176.542,177.926,178.976,179.821,180.444,181.164,181.828,182.429,183.261,188.894,189.8,190.839,194.258,195.021,195.485,196.307,197.057,198.087,199.144,200.391,203.106,205.429,207.717,213.605,215.441,216.662,217.74,218.768,219.864,220.731,221.488,222.121,222.745,224.6,225.603,227.287,228.091,228.556,231.601,233.121,234.445,235.826,237.166,238.824,241.459,244.055,245.827,247.863,249.328,250.222,251.063,251.866,252.511,252.913,253.284,253.665,255.178,256.015,256.906,258.111,258.504,258.837,259.301,259.722,260.479,261.517,262.816,264.428,266.771,269.136,271.682,274.059,275.891,277.32,278.266,279.145,279.833,280.388,280.907,281.42,281.963,282.989,283.734,285.351,286.018,286.677,287.897,289.294,293.759,296.678,299.329,301.656,304.362,307.378,309.848,311.742,313.553,315.328,316.414,317.297,318.098,318.846,319.437,319.987,321.02,321.608,322.18,322.679,323.134,323.693,324.206,325.313,330.562,332.321,334.662,340.025,343.119,346.601,349.475,351.559,353.191,354.626,355.741,356.821,357.889,358.832,359.581,360.234,360.926,363.264,364.624,366.628,367.781,368.569,369.246,370.142,371.543,376.427,378.842,381.568,384.247,387.054,389.443,391.622,396.825,398.114,399.686,400.773,401.712,402.533,403.285,404.017,404.782,405.586,406.4,407.034,408.133,408.963,410.116,411.043,412.498,413.916,416.744,421.774,425.226,428.364,432.368,436.068,440.051,445.557,447.223,448.227,449.118,450.027,450.745,451.446,452.193,453.585,454.481,455.275,455.789,456.449,457.08,457.653,458.294,459.843,462.529,465.293,467.883,470.634,473.931,476.749,479.224,482.061,483.664,484.799,486.017,486.836,487.522,488.132,488.784,489.805,492.047,493.478,493.965,494.546,495.023,496.556,498.009,498.682,499.79,501.306,503.703,506.103,509.396,512.37,514.22,515.82,517.078,518.102,519.091,519.83,520.465,521.512,522.178,523.021,524.674,528.556,530.253,531.308,532.363,533.073,533.8,535.674,537.541,539.687,542.743,545.596,547.938,550.201,553.042,554.432,556.433,557.426,558.42,559.222,559.939,560.597,561.278,562.045,563.649,564.534,565.559,566.44,567.329,570.542,571.939,573.856,575.551,578.722,581.308,583.563,585.858,588.415,590.426,591.6,592.439,593.324,594.163,594.797,595.374,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,598.129,600.352,602.221,603.328,604.847,606.262,607.326,608.268,609.139,611.536,613.951,615.243,616.436,618.326,620.028,621.056,623.077,626.379,628.055,630.125,632.214,634.434,636.549,639.591,641.486,644.575,645.709,646.707,647.707,648.689,649.517,650.678,651.415,652.202,653.853,657.966,659.665,661.393,662.001,662.545,663.93,665.72,669.891,671.018,672.108,673.174,674.632,676.292,677.924,679.328,680.236,681.083,682.301,683.707,684.444,685.155,686.294,688.262,689.202,690.8,692.234,693.052,693.791,695.474,696.837,697.337,697.918,698.84,700.782,703.143,704.796,706.492,708.593,711.896,714.084,716.309,717.5,718.51,719.414,720.951,722.01,722.888,723.915,726.055,726.913,727.493,728.074,729.685,730.759,731.865,733.592,735.821,738.539,741.337,745.998,748.438,750.526,752.904,754.412,755.535,756.599,757.738,758.535,759.233,759.863,761.263,765.69,767.499,769.604,770.807,771.492,773.464,774.946,776.021,777.919,781.078,783.902,786.702,789.455,792.453,794.942,797.126,798.654,799.863,800.818,801.49,802.065,802.68,803.184,803.759,804.602,806.329,808.335,813.018,816.66,818.093,820.433,822.294,825.944,831.782,835.119,838.129,841.766,844.535,846.867,848.857,850.46,851.935,853.013,853.896,854.481,855.007,855.626,856.318,857.048,858.302,859.036,859.684,861.289,862.02,866.082,869.073,870.534,872.542,877.233,880.648,884.037,886.302,888.45,890.482,892.614,893.756,894.896,895.832,896.543,897.205,897.999,900.314,902.33,904.187,905.397,906.175,907.287,908.253,909.42,910.503,912.632,914.492,916.787,918.458,920.161,923.421,925.599,927.947,929.888,930.858,931.763,932.723,933.572,934.503,935.694,936.764,937.924,939.039,939.908,940.989,941.545,942.115,943.3,944.738,946.202,947.911,949.899,952.768,954.995,957.214,959.88,961.759,965.852,967.333,968.797,969.709,970.493,971.189,971.843,973.584,974.504,975.662,977.358,978.327,978.904,979.801,980.61,981.384,982.794,985.055,988.307,991.121,994.937,1002.001,1004.928,1009.108,1010.869,1012.474,1013.641,1014.653,1015.51,1016.243,1016.936,1018.09,1020.308,1022.291,1025.828,1029.643,1031.158,1033.089,1034.932,1036.887,1039.945,1042.509,1045.751,1048.955,1052.028,1055.973,1058.417,1067.561,1069.756,1071.259,1072.353,1073.677,1075.146,1075.926,1076.642,1077.373,1079.017,1080.095,1081.121,1082.325,1083.451,1085.996,1087.833,1089.343,1091.453,1093.937,1096.87,1100.03,1106.45,1109.419,1111.524,1113.777,1116.114,1117.914,1118.987,1119.932,1120.635,1121.324,1122.016,1122.757,1123.536,1124.993,1126.454,1129.071,1131.242,1132.665,1134.762,1137.402,1140.657,1144.208,1147.968,1151.77,1155.242,1158.118,1160.749,1163.237,1165.706],"kpi":{"all_time_peak_average":1.0,"annual_normalized_unserved_energy_total":0.018316,"carbon_emissions_total":1.0,"cost_total":1.0,"daily_one_minus_load_factor_average":1.0,"daily_peak_average":1.0,"discomfort_cold_delta_average":0.790764,"discomfort_cold_delta_maximum":3.437551,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.15377,"discomfort_hot_delta_average":0.237991,"discomfort_hot_delta_maximum":5.059987,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.017627,"discomfort_proportion":0.171398,"electricity_consumption_total":1.0,"monthly_one_minus_load_factor_average":1.0,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684408,"ramping_average":1.0,"zero_net_energy":1.0},"run":"baseline","steps":719},"baseline_sample":false,"carbon":[0.4025,0.3826,0.3695,0.367,0.374,0.3852,0.3954,0.4112,0.4328,0.4285,0.4576,0.4875,0.4915,0.4876,0.4797,0.4715,0.46,0.4494,0.4389,0.4361,0.4404,0.4471,0.4497,0.4431,0.431,0.3983,0.3831,0.3726,0.371,0.3669,0.3727,0.3815,0.4067,0.4241,0.4621,0.4818,0.4843,0.4828,0.48,0.4738,0.4647,0.459,0.4509,0.4446,0.4466,0.458,0.4586,0.455,0.4681,0.4455,0.4221,0.4006,0.3888,0.3875,0.3949,0.4061,0.4168,0.4094,0.429,0.468,0.5007,0.5185,0.5224,0.5205,0.517,0.5139,0.5097,0.4989,0.4943,0.4983,0.4894,0.4943,0.4825,0.4589,0.413,0.3851,0.4159,0.4486,0.4443,0.4817,0.5151,0.5229,0.5451,0.5432,0.5356,0.5314,0.5271,0.5193,0.5156,0.511,0.5107,0.5161,0.5213,0.5146,0.502,0.4717,0.4391,0.4105,0.3868,0.3956,0.4078,0.4366,0.4654,0.4814,0.5058,0.5082,0.5142,0.5267,0.5363,0.5374,0.5328,0.526,0.5216,0.5175,0.5113,0.5026,0.4951,0.4765,0.4624,0.4618,0.4347,0.4071,0.3921,0.3705,0.3695,0.3723,0.3963,0.4178,0.4454,0.4567,0.4645,0.4861,0.508,0.5154,0.5138,0.5126,0.5056,0.4957,0.4837,0.47,0.4599,0.452,0.4427,0.4223,0.411,0.3863,0.3738,0.3741,0.3852,0.3962,0.4154,0.4162,0.4471,0.4496,0.457,0.4693,0.479,0.4898,0.4885,0.4881,0.482,0.4699,0.4568,0.4392,0.4405,0.4419,0.432,0.4257,0.422,0.3781,0.3629,0.3546,0.3694,0.3803,0.4083,0.4647,0.4958,0.4864,0.4747,0.4667,0.463,0.4656,0.4728,0.4764,0.4727,0.468,0.4674,0.4664,0.4691,0.4709,0.4614,0.4531,0.4395,0.4258,0.405,0.3994,0.4061,0.4235,0.4433,0.4432,0.4603,0.4527,0.4604,0.4691,0.4786,0.4806,0.4715,0.4662,0.4646,0.4612,0.4566,0.4564,0.4643,0.4623,0.4421,0.4098,0.4005,0.3769,0.3463,0.3391,0.3386,0.3375,0.3438,0.3518,0.3569,0.3526,0.3825,0.4152,0.4462,0.4609,0.4704,0.4719,0.4717,0.4711,0.4585,0.4507,0.4521,0.448,0.4334,0.4279,0.4141,0.3964,0.383,0.3768,0.3684,0.3729,0.3787,0.3851,0.3966,0.3851,0.4006,0.4304,0.4545,0.4721,0.4805,0.4829,0.4865,0.4877,0.4882,0.4879,0.4896,0.4825,0.4631,0.4357,0.4309,0.4058,0.3914,0.3897,0.3963,0.4066,0.4258,0.4484,0.4584,0.4444,0.4566,0.4795,0.4853,0.4825,0.4767,0.4716,0.4659,0.4575,0.4515,0.4561,0.4655,0.4737,0.4685,0.4584,0.4601,0.4513,0.423,0.4112,0.4213,0.4395,0.4692,0.5021,0.5067,0.4979,0.5033,0.5202,0.5214,0.5194,0.5164,0.5085,0.5007,0.4927,0.4876,0.4904,0.4946,0.4965,0.4894,0.4829,0.4542,0.4409,0.4092,0.3975,0.3858,0.409,0.4413,0.4734,0.495,0.4785,0.4719,0.4788,0.4821,0.4782,0.4728,0.4713,0.4679,0.4675,0.4625,0.4609,0.4643,0.4625,0.4421,0.4257,0.401,0.3826,0.3652,0.3553,0.3614,0.3867,0.4089,0.4231,0.426,0.4083,0.4236,0.4421,0.4459,0.4454,0.4396,0.4394,0.4335,0.4307,0.4331,0.4344,0.441,0.4455,0.4348,0.415,0.4075,0.3772,0.3739,0.3702,0.3717,0.3788,0.3836,0.386,0.3835,0.3753,0.3914,0.415,0.423,0.4272,0.4238,0.4247,0.4226,0.423,0.4234,0.4277,0.4375,0.4522,0.4554,0.4494,0.4699,0.4636,0.4684,0.4589,0.4732,0.4855,0.4789,0.4768,0.498,0.497,0.498,0.504,0.4996,0.4978,0.494,0.4969,0.4925,0.49,0.4953,0.49,0.5059,0.5096,0.5066,0.5072,0.4997,0.5116,0.5008,0.4922,0.4842,0.4955,0.5066,0.5156,0.5266,0.5235,0.5347,0.5428,0.5414,0.5377,0.5237,0.5128,0.5068,0.497,0.4892,0.4979,0.5083,0.5091,0.4967,0.4817,0.4443,0.4388,0.4372,0.4411,0.4525,0.4759,0.5019,0.512,0.5197,0.5154,0.5226,0.5302,0.5315,0.5295,0.5248,0.5216,0.5196,0.5143,0.5069,0.4931,0.4796,0.4716,0.4583,0.4382,0.4497,0.4196,0.4129,0.4379,0.4687,0.4964,0.5112,0.5131,0.5107,0.5163,0.5228,0.5295,0.5354,0.5401,0.5424,0.5426,0.5412,0.541,0.5415,0.5417,0.5413,0.5378,0.5346,0.5334,0.514,0.5264,0.5217,0.5296,0.5413,0.5521,0.5536,0.5561,0.5483,0.542,0.5397,0.5388,0.5407,0.539,0.5357,0.5338,0.534,0.5344,0.5357,0.5413,0.5449,0.5369,0.5236,0.5002,0.447,0.4253,0.3993,0.3911,0.3865,0.3941,0.4275,0.438,0.4626,0.4592,0.4826,0.4924,0.4948,0.4893,0.4809,0.4778,0.4747,0.4708,0.4643,0.4558,0.454,0.4513,0.4369,0.4235,0.4127,0.4064,0.3774,0.3634,0.3545,0.391,0.4141,0.4023,0.387,0.374,0.3948,0.4243,0.44,0.4543,0.4684,0.4738,0.4748,0.4745,0.4732,0.4667,0.4581,0.4544,0.4411,0.4244,0.4,0.3742,0.3659,0.351,0.3448,0.3389,0.3452,0.3564,0.3613,0.3623,0.3822,0.4039,0.4294,0.4422,0.4495,0.4567,0.4594,0.4494,0.4384,0.4336,0.4372,0.4369,0.4289,0.4231,0.4292,0.4,0.3806,0.3916,0.4096,0.4473,0.4746,0.5027,0.5002,0.4897,0.4909,0.4962,0.4989,0.5006,0.5034,0.5033,0.5037,0.5021,0.4998,0.496,0.4942,0.4957,0.4874,0.4749,0.4333,0.4133,0.3936,0.3909,0.393,0.4066,0.4211,0.4348,0.4457,0.4234,0.4368,0.4599,0.4642,0.4741,0.4782,0.4784,0.4781,0.4765,0.4766,0.4771,0.4823,0.4817,0.4647,0.4416,0.4147,0.3936,0.3846,0.3815,0.3782,0.3873,0.4045,0.4211,0.4227,0.4043,0.4363,0.4719,0.4859,0.4885,0.4911,0.4931,0.4954,0.4974,0.4963,0.495,0.4962,0.4926,0.4706,0.4453,0.4126,0.4005,0.3821,0.3709,0.3773,0.3942,0.4197,0.4484,0.4666,0.4463,0.4606,0.4754,0.4833,0.4874,0.484,0.4774,0.4709,0.4654,0.4609,0.4593,0.4611,0.4625,0.4455,0.4228,0.4063,0.3665,0.3565,0.3518,0.3547,0.365,0.3802,0.3906,0.3844,0.3798,0.4046,0.4259,0.4406,0.4509,0.4588,0.461,0.459,0.4576,0.4565,0.4468,0.4448,0.446,0.4428,0.4476,0.4507,0.4607,0.462,0.4648,0.4593,0.4635,0.4575,0.4475,0.4305,0.395,0.397,0.4176,0.432,0.4482,0.4642,0.4689,0.4698,0.4692,0.4652,0.4658,0.4703,0.4624,0.4486],"day":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],"episode_hours":719,"headline":{"cost_pct":-7.8,"discomfort_points":-8.5,"emissions_pct":-3.3,"text":"Cost down 7.8% and emissions down 3.3% at equal or better comfort","tone":"win"},"hour_of_day":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"hours":719,"id":"citylearn_challenge_2023_phase_2_local_evaluation","name":"CityLearn 2023 challenge, local evaluation","occupied":{"Building_1":[1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Building_2":[1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],"Building_3":[1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1]},"outdoor_c":[24.7,24.1,23.9,23.9,23.8,23.9,25.0,26.9,29.3,31.7,33.9,35.9,37.5,38.7,39.3,39.5,39.2,38.1,36.1,32.6,31.2,29.6,28.0,26.8,25.9,25.2,24.9,24.8,24.8,24.7,25.4,27.0,29.4,32.1,34.5,36.6,38.3,39.5,40.2,40.3,39.8,38.7,36.5,32.4,31.3,30.8,29.3,27.8,26.7,26.0,25.5,25.2,25.0,24.9,25.3,26.4,28.4,30.5,32.6,32.2,31.2,31.7,31.8,31.6,31.1,30.1,28.7,26.9,26.3,25.9,25.4,24.9,24.8,24.6,24.5,24.2,23.7,23.4,23.8,24.9,26.7,28.3,29.2,29.6,29.7,29.8,29.6,29.5,29.6,29.8,29.1,27.6,26.0,25.2,24.8,24.4,23.9,23.2,22.8,22.4,22.2,22.2,23.5,25.5,27.8,30.0,32.3,34.1,35.5,36.5,36.9,37.0,36.6,35.7,33.9,29.9,28.6,27.9,27.4,26.6,25.3,24.5,23.8,23.4,23.1,23.2,24.6,26.8,28.8,30.8,32.7,34.2,35.3,36.2,36.8,36.9,36.4,35.4,33.2,29.9,28.9,28.4,27.5,26.7,25.9,25.1,24.5,23.7,22.9,22.9,24.6,26.6,28.8,30.9,32.8,34.4,35.6,36.4,36.8,37.0,36.5,35.0,32.2,29.7,28.9,28.3,27.3,26.0,24.7,23.5,22.6,22.0,21.6,21.4,23.5,26.0,28.5,30.8,32.7,34.3,35.6,36.5,36.7,36.5,36.0,35.1,33.2,30.3,29.0,28.5,27.9,26.5,25.5,24.8,24.2,23.9,23.5,23.3,24.6,26.5,28.8,30.9,32.8,34.4,35.5,36.3,36.5,36.2,35.3,34.0,32.2,29.1,27.8,27.0,26.4,25.8,25.2,24.5,23.9,23.5,23.4,23.4,24.6,26.6,29.4,31.5,33.5,35.1,36.5,37.4,37.8,37.7,37.1,35.9,33.8,31.3,29.4,28.1,27.1,26.5,25.9,25.6,25.4,25.4,25.3,25.2,25.7,27.3,29.3,31.0,33.0,35.2,36.6,37.3,37.4,37.0,36.3,35.2,33.4,31.0,29.2,28.0,27.0,26.2,25.7,25.4,25.3,25.3,25.2,25.0,25.7,27.5,29.4,31.1,32.8,34.2,35.4,36.2,36.8,37.0,36.8,35.9,34.1,31.0,29.6,28.4,27.4,26.3,25.3,24.6,24.4,24.1,24.1,24.1,25.3,27.2,28.8,30.3,31.8,33.1,34.3,35.4,36.3,36.8,36.7,36.0,34.2,31.5,30.9,29.7,28.1,26.9,26.0,24.9,23.9,23.1,22.6,22.4,24.4,26.8,29.3,31.6,33.3,34.5,35.2,35.6,35.6,35.4,35.0,34.2,32.9,30.2,28.8,28.1,27.4,26.6,25.7,24.9,24.2,23.8,23.6,23.6,24.9,27.1,29.4,31.6,33.5,35.0,36.0,36.6,36.8,36.6,36.2,35.3,33.8,31.8,29.9,28.5,27.5,26.7,26.0,25.5,25.2,24.9,24.5,24.2,24.9,26.8,29.0,31.0,32.8,34.3,35.6,36.4,36.8,36.7,36.0,34.9,33.3,31.3,29.7,28.6,27.7,26.8,26.1,25.4,25.1,24.7,24.3,23.9,24.7,26.8,29.3,31.5,33.4,35.0,36.2,36.8,36.8,36.2,34.8,33.4,32.0,30.6,29.4,28.3,27.3,26.4,25.7,25.2,24.8,24.5,24.2,24.0,24.7,26.2,28.7,31.0,32.9,34.3,35.3,35.4,35.2,34.9,33.3,30.9,28.5,26.8,26.1,25.7,25.4,25.0,24.6,24.3,24.2,24.0,23.8,23.7,24.0,24.7,25.7,26.7,27.3,27.7,28.2,28.6,28.7,28.3,27.7,26.8,25.7,24.5,23.8,23.7,23.8,24.0,24.2,24.3,24.1,23.9,23.8,23.7,23.9,24.5,25.4,26.3,27.3,28.0,28.4,28.4,28.0,27.7,27.4,26.8,26.0,25.0,24.5,24.4,24.2,24.1,23.9,23.8,23.6,23.5,23.4,23.3,24.5,25.9,28.1,30.7,32.5,33.9,35.0,35.7,35.9,35.8,35.2,34.2,32.5,29.4,28.2,27.3,26.4,25.6,25.0,24.6,24.2,23.8,23.3,22.9,24.7,27.0,29.6,32.1,34.3,36.2,37.5,38.4,38.7,38.6,37.7,36.3,34.1,31.8,30.1,29.0,27.9,26.9,26.0,25.3,24.7,24.2,23.9,23.8,25.1,27.2,29.6,32.0,34.2,35.9,37.1,37.8,37.9,37.3,36.2,34.5,32.7,30.6,29.0,27.9,26.8,26.0,25.5,25.2,25.0,24.9,24.7,24.6,25.5,27.4,29.3,31.2,32.8,34.1,35.8,36.8,37.0,36.6,35.3,33.8,32.0,30.0,28.7,27.7,26.8,26.0,25.6,25.5,25.4,25.3,25.2,25.1,25.6,26.6,27.8,29.2,30.8,32.1,33.4,34.0,34.0,33.6,32.9,32.1,31.0,29.2,28.0,27.2,26.5,25.9,25.5,25.2,25.0,24.8,24.5,24.4,25.2,26.3,28.0,29.9,31.9,33.6,34.7,35.3,35.5,35.4,34.9,34.1,32.6,30.5,29.5,28.4,27.4,26.5,25.8,25.1,24.5,23.9,23.8,23.8,25.0,27.1,29.4,31.9,34.1,35.8,37.0,37.8,38.3,38.3,38.0,37.0,35.2,32.1,30.4,29.0,28.0,27.1,26.4,25.6,25.0,24.4,23.9,23.9,25.5,27.6,30.0,32.5,34.7,36.4,37.7,38.6,39.0,38.9,38.1,36.8,34.8,32.2,30.4,29.1,28.0,27.0,26.2,25.7,25.4,25.2,24.9,24.7,25.9,28.1,30.4,32.6,34.6,36.3,37.6,38.4,38.7,38.5,37.6,36.0,33.8,31.5,29.8,28.6,27.5,26.7,26.1,25.7,25.6,25.4,25.2,25.1,26.1,28.0,30.2,32.6,34.8,36.7,38.1,39.0,39.4,39.1,38.1,36.6,34.5,32.0,29.9,28.5,27.3],"price":[0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289],"setpoint_c":{"Building_1":[23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.56,25.56,26.5,24.44,21.67,24.44,22.83,20.72,20.56,21.67,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.61,25.0,24.5,24.44,24.44,24.44,22.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,22.44,22.78,24.44,24.44,24.44,24.39,23.56,22.22,22.56,24.44,24.44,24.44,22.22,24.44,24.44,23.22,23.56,23.83,24.11,24.44,24.78,25.06,23.33,23.89,23.89,25.67,24.44,24.44,25.83,25.0,25.83,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,24.44,24.39,24.39,24.39,24.39,24.39,24.33,24.33,24.33,24.33,24.44,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,23.89,24.44,24.44,25.22,25.0,27.22,27.22,27.22,26.67,25.67,25.78,24.44,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.11,27.0,26.89,26.78,26.67,26.56,26.39,26.28,26.17,26.06,25.94,25.83,25.72,25.61,25.5,25.39,25.28,25.11,25.0,24.89,24.78,24.67,24.56,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.56,26.28,24.17,24.28,24.44,24.44,25.78,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.22,23.33,23.89,24.44,24.44,24.44,23.61,23.33,24.17,24.44,24.44,24.44,24.44,24.44,24.44,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,25.67,26.67,26.67,26.67,26.67,26.67,25.33,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.0,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,25.56,25.0,26.67,25.56,23.5,23.33,24.28,24.44,25.33,26.67,24.78,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.5,25.67,24.44,24.44,24.44,24.22,23.33,23.56,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.61,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.78,25.0,24.78,23.33,23.78,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.11,24.94,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.39,24.44,24.44,24.44,24.44,24.44,24.44,23.06,22.78,24.17,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.33,23.89,24.0,24.44,24.44,22.22,22.22,23.28,22.22,23.67,23.89,22.44,22.22,22.22,22.28,24.44,24.44,24.44,24.44,24.44,25.44,26.67,24.22,23.33,24.06,24.44,24.28,23.89,24.06,24.44,24.44,23.28,22.39,23.33,23.17,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.44,26.39,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,24.44,25.17,24.44,24.44,24.44,24.44,22.78,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,26.39,26.67,25.0,24.44,24.44,26.67,26.0,23.33,24.44,24.44,24.44,22.22,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.22,24.44,24.44,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,22.78,24.44,22.22,24.44,24.44,24.44,24.44,25.94,26.44,24.44,24.44,22.22,21.11,21.67,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44],"Building_2":[24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,23.94,24.44,23.44,22.78,23.78,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.61,23.33,23.72,25.0,25.0,25.0,25.0,25.0,24.67,23.61,23.33,24.0,24.44,24.28,22.78,22.94,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,23.61,22.78,23.61,24.44,24.44,24.44,24.44,24.94,25.0,25.0,25.0,23.33,23.33,23.44,23.5,23.61,23.67,23.78,23.89,23.94,24.06,24.11,24.22,24.33,24.39,23.33,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.11,23.89,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.22,24.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.56,23.39,22.22,21.67,23.28,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.33,24.17,25.0,25.0,25.0,25.0,25.0,25.0,24.0,23.89,24.39,23.89,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.61,23.89,22.78,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,23.44,24.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,24.39,24.44,23.67,23.33,24.5,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,23.33,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.61,23.33,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.72,23.89,24.17,24.33,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.67,23.33,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.89,23.33,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.5,23.33,24.83,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,24.72,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.33,22.78,23.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.33,23.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.56,23.33,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.17,22.22,23.11,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.78,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,25.0,23.83,23.33,24.5,24.28,23.33,24.06,22.94,22.78,24.78,25.0,25.0,25.0,25.0,25.0,23.83,22.78,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.5,23.33,23.83,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,24.39,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,24.06,24.17,24.78,22.78,22.78,24.94,25.0,25.0,25.0,25.0,24.17,24.11,24.44,24.83,25.0,24.22,23.89,24.67,23.44,23.22,22.78,24.44,25.0,25.0,25.0,25.0,24.56,24.44,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.44,24.22,24.44,24.5,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.61,24.44,24.22,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,24.44,24.67,25.0,25.0,24.0,23.89,24.28,23.89,24.56,25.0,25.0,25.0,25.0,25.0,25.0,24.06,24.61,25.0,25.0,25.0,24.56,23.89,24.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.67,25.0,25.0,25.0,25.11],"Building_3":[24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,24.39,24.44,23.94,24.17,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.39,23.33,24.44,24.44,23.33,23.17,23.11,24.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.33,23.33,23.61,23.89,23.33,23.33,23.33,23.33,23.56,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.78,23.33,23.39,23.72,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.89,23.89,23.89,23.72,23.33,23.33,23.33,23.33,23.56,23.89,23.89,23.94,23.94,24.0,24.0,24.0,24.06,24.06,24.11,24.11,24.17,24.17,24.17,24.22,24.22,24.28,24.28,24.33,24.33,24.33,24.39,24.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.39,23.78,23.33,23.33,23.33,23.33,23.5,23.56,22.78,22.78,22.78,23.67,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.67,24.44,23.89,23.33,23.33,23.33,23.78,24.44,24.44,24.17,23.89,23.89,23.89,23.89,24.17,24.44,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,23.61,23.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,24.44,24.44,24.44,24.44,24.11,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.22,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.11,23.67,23.33,23.33,23.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.11,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,24.33,24.44,24.44,24.44,24.44,24.44,24.39,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.17,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,23.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,24.44,24.06,23.89,23.89,23.89,24.28,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,23.89,23.89,23.89,24.33,23.89,23.89,23.89,23.89,23.89,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.17,24.44,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.72,23.33,23.56,23.89,23.89,23.89,24.0,23.89,23.89,23.89,24.33,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.0,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.22,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44]}}],"schema":2} +{"buildings":[{"id":"Building_1","name":"Building 1"},{"id":"Building_2","name":"Building 2"},{"id":"Building_3","name":"Building 3"}],"comfort_band_k":2.0,"dataset":"citylearn_challenge_2023_phase_2_local_evaluation","kpis":[{"id":"cost_total","name":"Electricity cost","unit":"ratio to no control"},{"id":"carbon_emissions_total","name":"Carbon emissions","unit":"ratio to no control"},{"id":"electricity_consumption_total","name":"Grid import","unit":"ratio to no control"},{"id":"discomfort_proportion","name":"Discomfort","unit":"share of occupied hours"},{"id":"discomfort_hot_proportion","name":"Too warm","unit":"share of occupied hours"},{"id":"discomfort_cold_proportion","name":"Too cool","unit":"share of occupied hours"},{"id":"ramping_average","name":"Ramping","unit":"ratio to no control"},{"id":"daily_peak_average","name":"Daily peak","unit":"ratio to no control"},{"id":"all_time_peak_average","name":"All-time peak","unit":"ratio to no control"},{"id":"daily_one_minus_load_factor_average","name":"1 - daily load factor","unit":"ratio to no control"},{"id":"one_minus_thermal_resilience_proportion","name":"1 - thermal resilience","unit":"share of outage hours"},{"id":"power_outage_normalized_unserved_energy_total","name":"Unserved energy in outages","unit":"share"}],"sample":false,"scenarios":[{"agent":{"actions":{"Building_1":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.089,0.15,0.15,0.15,0.095,-0.242,-0.255,-0.286,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.029,0.071,0.185,0.191,0.0,0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.132,0.0,0.0,0.028,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.2,-0.092,-0.481,0.0,0.0,0.0,0.0,0.05,0.1,0.15,0.15,0.15,0.15,0.1,0.023,0.0,0.0,0.007,0.0,0.0,0.0,0.0,0.0,0.0,-0.249,-0.262,-0.295,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.471,0.03,0.15,0.0,0.15,0.103,0.0,0.085,0.15,0.093,0.0,-0.5,-0.218,0.0,-0.025,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.121,0.026,0.0,0.008,0.0,-0.5,0.0,0.15,0.15,-0.191,-0.197,-0.231,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.072,0.041,0.01,0.0,0.0,0.0,-0.152,-0.242,-0.396,-0.012,-0.012,-0.013,-0.016,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.055,0.038,0.0,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.0,0.15,0.15,0.077,0.017,0.0,0.0,-0.5,-0.108,-0.114,-0.128,0.0,0.0,0.0,-0.013,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.023,0.05,0.0,0.0,0.0,0.0,0.104,-0.241,-0.254,-0.285,0.0,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.104,0.079,0.017,0.0,0.0,0.0,-0.247,-0.261,-0.293,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.091,0.0,0.02,0.0,0.0,0.0,0.0,0.0,0.0,-0.066,-0.189,-0.302,0.0,-0.249,-0.027,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.294,0.0,-0.011,-0.011,-0.013,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.1,0.1,0.0,0.0,0.0,0.05,0.0,-0.233,-0.247,-0.275,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.131,0.0,0.028,0.009,-0.163,0.144,0.0,0.032,0.0,0.0,0.0,-0.245,-0.173,-0.184,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.074,0.016,0.0,0.0,0.0,0.006,0.0,0.0,0.0,0.0,0.0,0.0,-0.166,-0.3,-0.334,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.093,0.051,0.0,0.0,0.012,0.0,-0.247,-0.262,-0.294,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.042,-0.338,0.15,0.15,0.046,0.0,0.039,0.01,0.0,0.0,-0.248,-0.262,-0.295,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.013,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.034,0.0,0.0,-0.144,0.0,0.0,0.0,-0.016,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.04,0.0,0.012,0.15,0.15,0.121,-0.24,-0.254,-0.1,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.085,0.019,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.261,-0.292,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.131,0.028,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.246,-0.261,-0.292,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.0,0.049,0.038,0.0,0.092,0.021,0.0,-0.247,-0.261,-0.293,0.0,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.011,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.294,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.068,0.081,0.079,0.072,0.063,0.072,0.072,0.085,0.293,0.15,0.08,0.26,0.281,0.368,0.461,0.647,0.781,0.377,0.133,0.306,0.642,0.116,0.214,0.41,0.35,0.1,0.008,0.078,0.087,0.094,0.106,0.12,0.028,0.088,0.184,0.277,0.456,0.582,0.6,0.634,0.598,0.598,0.487,0.287,0.329,0.558,0.706,0.527,0.344,0.247,0.186,0.146,0.143,0.156,0.148,0.17,0.251,0.003,0.036,0.0,0.078,0.108,0.151,0.307,0.56,0.49,0.062,0.009,0.006,0.22,0.047,0.1,0.081,0.05,0.03,0.006,0.012,0.004,0.0,0.079,0.072,0.092,0.009,0.103,0.12,0.0,0.097,0.078,0.178,0.274,0.214,0.161,0.136,0.106,0.085,0.206,0.117,0.135,0.119,0.095,0.109,0.05,0.103,0.12,0.117,0.102,0.107,0.117,0.2,0.285,0.376,0.469,0.479,0.53,0.421,0.24,0.163,0.141,0.13,0.121,0.102,0.074,0.183,0.185,0.142,0.121,0.169,0.15,0.21,0.402,0.233,0.182,0.2,0.195,0.295,0.127,0.093,0.31,0.258,0.29,0.3,0.337,0.265,0.188,0.227,0.28,0.17,0.131,0.113,0.103,0.15,0.149,0.25,0.1,0.119,0.211,0.277,0.368,0.465,0.377,0.084,0.095,0.149,0.11,0.148,0.101,0.071,0.05,0.033,0.019,0.008,0.0,0.0,0.069,0.017,0.012,0.101,0.081,0.112,0.153,0.202,0.261,0.317,0.352,0.371,0.354,0.28,0.19,0.142,0.131,0.097,0.079,0.081,0.059,0.048,0.041,0.035,0.024,0.049,0.07,0.203,0.202,0.242,0.307,0.379,0.461,0.535,0.627,0.593,0.568,0.445,0.315,0.2,0.164,0.132,0.286,0.216,0.223,0.194,0.155,0.1,0.09,0.092,0.116,0.148,0.084,0.148,0.217,0.32,0.4,0.499,0.53,0.417,0.561,0.554,0.388,0.285,0.101,0.14,0.12,0.225,0.296,0.153,0.105,0.092,0.094,0.1,0.158,0.257,0.22,0.13,0.153,0.246,0.339,0.689,0.698,0.525,0.42,0.407,0.305,0.137,0.088,0.076,0.256,0.199,0.226,0.213,0.178,0.153,0.139,0.14,0.133,0.017,0.077,0.15,0.236,0.307,0.36,0.43,0.52,0.615,0.669,0.525,0.3,0.247,0.161,0.106,0.309,0.18,0.196,0.184,0.1,0.078,0.088,0.113,0.147,0.194,0.0,0.067,0.162,0.233,0.328,0.432,0.49,0.557,0.525,0.398,0.284,0.263,0.177,0.111,0.085,0.213,0.274,0.212,0.1,0.087,0.104,0.125,0.19,0.177,0.1,0.153,0.211,0.104,0.102,0.128,0.248,0.3,0.32,0.43,0.45,0.284,0.2,0.138,0.111,0.208,0.275,0.219,0.167,0.18,0.1,0.115,0.156,0.2,0.091,0.161,0.236,0.331,0.23,0.519,0.52,0.519,0.532,0.4,0.282,0.193,0.249,0.128,0.093,0.202,0.28,0.239,0.189,0.154,0.135,0.1,0.251,0.208,0.075,0.146,0.196,0.559,0.441,0.383,0.204,0.276,0.364,0.262,0.185,0.189,0.114,0.078,0.054,0.038,0.025,0.015,0.007,0.0,0.008,0.018,0.033,0.066,0.103,0.159,0.406,0.706,0.459,0.53,0.909,0.972,0.66,0.444,0.243,0.089,0.176,0.25,0.193,0.234,0.305,0.249,0.195,0.161,0.227,0.168,0.162,0.085,0.008,0.084,0.167,0.26,0.23,0.352,0.482,0.471,0.433,0.32,0.301,0.084,0.155,0.049,0.011,0.152,0.228,0.196,0.1,0.068,0.072,0.085,0.103,0.084,0.024,0.042,0.02,0.071,0.002,0.115,0.122,0.132,0.126,0.118,0.101,0.068,0.075,0.066,0.06,0.115,0.203,0.177,0.14,0.12,0.102,0.102,0.13,0.13,0.0,0.0,0.044,0.08,0.106,0.143,0.236,0.19,0.051,0.03,0.097,0.088,0.084,0.074,0.134,0.135,0.186,0.167,0.134,0.115,0.099,0.101,0.116,0.124,0.068,0.124,0.209,0.296,0.3,0.345,0.43,0.708,0.687,0.478,0.295,0.223,0.1,0.063,0.055,0.179,0.257,0.213,0.166,0.0,0.177,0.048,0.086,0.129,0.059,0.156,0.389,0.41,0.384,0.47,0.831,0.895,0.603,0.419,0.287,0.208,0.15,0.1,0.082,0.205,0.105,0.079,0.069,0.063,0.056,0.074,0.209,0.334,0.325,0.365,0.3,0.437,0.496,0.591,0.695,0.61,0.54,0.455,0.32,0.174,0.11,0.349,0.25,0.091,0.199,0.085,0.063,0.13,0.174,0.179,0.12,0.0,0.076,0.173,0.234,0.419,0.348,0.19,0.54,0.82,0.693,0.435,0.316,0.283,0.213,0.213,0.115,0.157,0.228,0.122,0.101,0.171,0.216,0.219,0.193,0.163,0.0,0.055,0.102,0.171,0.249,0.331,0.333,0.327,0.184,0.031,0.306,0.276,0.268,0.188,0.139,0.154,0.258,0.22,0.18,0.104,0.081,0.086,0.119,0.11,0.033,0.112,0.171,0.254,0.32,0.386,0.479,0.52,0.442,0.227,0.207,0.19,0.133,0.1,0.282,0.15,0.233,0.21,0.166,0.141,0.08,0.11,0.172,0.189,0.122,0.186,0.22,0.04,0.088,0.401,0.707,0.825,0.34,0.25,0.598,0.304,0.225,0.144,0.38,0.09,0.25,0.1,0.057,0.149,0.149,0.238,0.137,0.196,0.134,0.199,0.584,0.36,0.352,0.561,0.608,0.634,0.629,0.492,0.453,0.268,0.236,0.137,0.08,0.225,0.31,0.18,0.078,0.179,0.1,0.164,0.205,0.214,0.215,0.386,0.387,0.654,0.491,0.525,0.527,0.591,0.363,0.204,0.426,0.383,0.522,0.593,0.393,0.155,0.093,0.048,0.049,0.053,0.058,0.073,0.179,0.215,0.35,0.4,0.406,0.475,0.574,0.677,0.723,0.832,0.778,0.45,0.357,0.273,0.215,0.147],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_2":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.15,0.15,0.15,0.15,0.048,-0.245,-0.259,-0.291,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,0.0,0.0,-0.206,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.0,0.0,-0.107,-0.18,-0.381,0.0,0.0,0.0,0.0,0.05,0.1,0.15,0.15,0.15,0.15,0.117,0.025,0.0,0.0,0.008,0.0,0.0,0.0,0.0,0.0,0.0,-0.249,-0.262,-0.294,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.074,0.15,0.15,0.0,0.107,0.024,0.0,0.0,0.0,-0.2,-0.231,-0.259,-0.13,0.0,-0.014,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.123,0.026,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.255,-0.255,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.093,0.021,0.0,0.0,-0.231,-0.238,-0.252,-0.025,-0.027,-0.028,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.0,0.15,0.15,0.123,0.026,0.0,0.0,0.0,-0.247,-0.26,-0.292,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.122,-0.24,-0.254,-0.284,0.0,0.0,0.0,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.0,0.1,0.0,0.083,-0.243,-0.176,-0.248,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.103,0.0,0.023,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.255,-0.297,0.0,-0.033,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.042,0.01,0.0,-0.5,0.0,0.15,0.0,0.15,0.15,0.074,-0.243,-0.257,-0.288,0.0,-0.011,-0.011,-0.012,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.0,0.0,0.127,0.0,-0.201,-0.214,-0.202,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.104,0.0,0.023,0.007,-0.49,0.15,0.0,0.15,0.15,0.069,0.0,-0.5,-0.099,-0.105,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.045,0.011,0.0,0.0,0.003,0.0,0.0,0.0,0.0,0.0,0.0,-0.137,-0.194,-0.098,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.146,0.0,0.0,0.0,0.0,0.0,0.0,0.033,0.0,-0.246,-0.26,-0.206,-0.108,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.033,-0.089,0.086,0.02,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.218,-0.274,-0.021,-0.023,-0.024,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.027,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,-0.237,0.0,0.0,0.0,-0.026,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,-0.234,-0.248,-0.093,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.085,0.019,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.254,-0.273,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.107,0.024,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.247,-0.261,-0.292,-0.033,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.0,-0.227,0.15,0.0,0.15,0.128,0.028,-0.247,-0.261,-0.292,0.0,-0.033,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.043,0.01,0.0,0.0,0.0,0.0,0.0,0.0,-0.248,-0.262,-0.293,0.0,-0.011,-0.011,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.497,0.159,0.233,0.3,0.401,0.474,0.604,0.696,0.671,0.622,0.462,0.276,0.346,0.45,0.32,0.06,0.011,0.089,0.129,0.006,0.0,0.0,0.0,0.023,0.453,0.189,0.278,0.428,0.47,0.728,0.838,0.984,0.64,0.601,0.479,0.256,0.203,0.192,0.199,0.131,0.083,0.057,0.04,0.028,0.02,0.014,0.007,0.026,0.074,0.121,0.181,0.255,0.271,0.448,0.403,0.167,0.204,0.203,0.152,0.099,0.107,0.178,0.2,0.035,0.007,0.02,0.103,0.073,0.0,0.0,0.0,0.0,0.0,0.027,0.059,0.069,0.091,0.111,0.164,0.176,0.235,0.236,0.27,0.104,0.068,0.055,0.077,0.118,0.147,0.02,0.0,0.0,0.0,0.0,0.0,0.215,0.099,0.144,0.392,0.456,0.451,0.487,0.575,0.586,0.585,0.547,0.433,0.23,0.185,0.145,0.113,0.082,0.145,0.041,0.0,0.0,0.0,0.0,0.0,0.065,0.137,0.171,0.21,0.261,0.458,0.543,0.448,0.452,0.486,0.469,0.366,0.204,0.156,0.13,0.097,0.227,0.167,0.0,0.0,0.0,0.0,0.0,0.134,0.064,0.19,0.416,0.169,0.255,0.342,0.425,0.541,0.535,0.527,0.457,0.31,0.193,0.169,0.14,0.148,0.214,0.256,0.222,0.0,0.0,0.0,0.0,0.0,0.104,0.085,0.137,0.211,0.28,0.346,0.408,0.495,0.485,0.493,0.452,0.35,0.22,0.169,0.15,0.129,0.082,0.053,0.036,0.022,0.013,0.007,0.002,0.04,0.104,0.181,0.224,0.267,0.328,0.384,0.448,0.541,0.521,0.498,0.442,0.343,0.201,0.154,0.123,0.188,0.067,0.048,0.032,0.02,0.012,0.008,0.004,0.035,0.093,0.203,0.276,0.346,0.419,0.502,0.719,0.698,0.695,0.685,0.622,0.476,0.313,0.217,0.152,0.205,0.247,0.076,0.009,0.019,0.021,0.021,0.02,0.046,0.219,0.567,0.25,0.452,0.446,0.441,0.525,0.611,0.588,0.569,0.522,0.415,0.267,0.195,0.143,0.147,0.182,0.251,0.093,0.0,0.0,0.005,0.008,0.051,0.121,0.208,0.423,0.295,0.362,0.421,0.491,0.596,0.604,0.605,0.639,0.474,0.282,0.218,0.189,0.297,0.135,0.009,0.017,0.021,0.016,0.013,0.01,0.049,0.111,0.168,0.194,0.221,0.277,0.335,0.402,0.81,0.805,0.384,0.452,0.41,0.277,0.259,0.226,0.248,0.149,0.181,0.16,0.006,0.0,0.0,0.0,0.047,0.119,0.452,0.243,0.293,0.347,0.399,0.446,0.525,0.527,0.529,0.758,0.415,0.293,0.196,0.161,0.127,0.115,0.219,0.132,0.0,0.0,0.002,0.004,0.062,0.139,0.288,0.509,0.578,0.316,0.379,0.479,0.593,0.602,0.608,0.574,0.48,0.319,0.278,0.317,0.184,0.117,0.138,0.08,0.006,0.015,0.013,0.012,0.059,0.129,0.191,0.247,0.3,0.379,0.459,0.536,0.879,0.917,0.567,0.511,0.447,0.308,0.218,0.165,0.121,0.091,0.169,0.187,0.02,0.005,0.037,0.012,0.045,0.156,0.173,0.213,0.287,0.364,0.444,0.62,0.587,0.564,0.515,0.495,0.363,0.268,0.2,0.164,0.2,0.087,0.2,0.173,0.0,0.002,0.008,0.01,0.333,0.17,0.269,0.529,0.216,0.311,0.635,0.476,0.692,0.62,0.403,0.328,0.227,0.154,0.118,0.095,0.069,0.109,0.226,0.089,0.0,0.0,0.0,0.0,0.008,0.064,0.046,0.07,0.082,0.1,0.127,0.174,0.225,0.153,0.134,0.095,0.064,0.039,0.035,0.028,0.018,0.052,0.137,0.045,0.0,0.0,0.0,0.0,0.001,0.04,0.031,0.158,0.227,0.059,0.084,0.116,0.146,0.149,0.148,0.118,0.136,0.074,0.059,0.048,0.079,0.25,0.21,0.047,0.0,0.0,0.0,0.0,0.011,0.072,0.121,0.177,0.231,0.303,0.367,0.426,0.521,0.729,0.595,0.349,0.526,0.207,0.168,0.14,0.106,0.077,0.197,0.158,0.0,0.0,0.0,0.0,0.045,0.428,0.357,0.505,0.299,0.433,0.7,0.6,0.948,0.972,0.472,0.507,0.455,0.31,0.226,0.189,0.282,0.343,0.083,0.003,0.013,0.018,0.013,0.011,0.057,0.206,0.29,0.445,0.507,0.768,0.71,0.515,0.667,0.706,0.693,0.605,0.482,0.321,0.232,0.179,0.128,0.26,0.28,0.012,0.007,0.013,0.017,0.017,0.066,0.44,0.364,0.167,0.621,0.38,0.499,0.859,0.904,0.565,0.896,0.551,0.623,0.292,0.337,0.227,0.092,0.27,0.233,0.0,0.001,0.013,0.02,0.022,0.182,0.175,0.17,0.166,0.204,0.373,0.505,0.377,0.654,0.685,0.688,0.262,0.187,0.161,0.145,0.116,0.133,0.112,0.063,0.026,0.029,0.027,0.024,0.021,0.053,0.115,0.189,0.233,0.285,0.335,0.412,0.443,0.522,0.525,0.529,0.498,0.388,0.281,0.232,0.206,0.453,0.1,0.048,0.073,0.018,0.02,0.017,0.016,0.07,0.194,0.429,0.288,0.363,0.551,0.478,0.592,0.65,0.68,0.71,0.688,0.947,0.38,0.291,0.249,0.221,0.183,0.162,0.096,0.046,0.024,0.025,0.022,0.089,0.179,0.336,0.339,0.392,0.469,0.562,0.639,0.77,0.789,0.839,0.855,0.649,0.385,0.286,0.364,0.291,0.295,0.169,0.218,0.029,0.034,0.033,0.032,0.298,0.168,0.404,0.355,0.377,0.492,0.589,0.768,1.0,0.907,0.721,0.671,0.54,0.426,0.268,0.217,0.159,0.121,0.179,0.172,0.039,0.032,0.031,0.034,0.067,0.15,0.278,0.375,0.464,0.572,0.692,0.797,0.933,0.933,0.867,0.748,0.663,0.38,0.264,0.207,0.137],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]},"Building_3":{"battery":[0.0,0.0,0.011,0.02,0.021,0.0,0.0,0.098,0.0,0.15,0.15,0.15,0.15,0.15,0.15,-0.158,-0.196,-0.291,-0.035,-0.04,-0.049,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,0.0,0.0,-0.157,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.1,0.05,0.0,0.0,0.0,0.0,0.15,0.0,-0.075,-0.127,-0.244,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.15,0.104,0.057,0.0,0.034,0.02,0.012,0.0,0.0,0.0,0.0,-0.244,-0.303,-0.448,-0.217,-0.104,-0.05,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.0,0.15,-0.296,0.15,0.15,0.0,0.15,0.15,0.0,0.15,0.15,-0.14,-0.238,-0.352,-0.169,0.0,-0.081,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.14,0.077,-0.109,0.101,0.056,0.031,-0.234,-0.303,-0.448,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.0,0.0,0.0,0.15,0.13,0.07,0.0,0.041,-0.241,-0.298,-0.442,-0.053,-0.062,-0.077,-0.113,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.047,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.015,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.05,0.15,0.0,0.15,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.15,-0.3,-0.168,-0.208,-0.308,0.0,0.0,0.0,-0.146,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.0,0.0,0.0,0.15,0.15,-0.203,-0.251,-0.371,0.0,0.0,0.0,0.0,-0.179,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,-0.208,-0.257,-0.381,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.0,0.15,0.15,0.15,0.15,0.15,0.0,0.0,0.15,0.137,0.0,0.077,0.043,0.025,-0.244,-0.302,-0.447,0.0,-0.217,-0.104,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,-0.409,0.0,0.15,0.0,0.15,0.15,0.093,-0.232,-0.287,-0.425,-0.051,-0.06,-0.073,-0.109,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.037,0.0,0.0,-0.017,0.0,0.0,0.05,0.0,0.0,0.0,0.0,0.0,0.0,0.05,0.15,0.15,0.15,0.0,0.15,0.0,0.1,0.0,0.0,0.0,0.15,0.127,0.0,-0.156,-0.192,-0.286,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.0,0.15,0.136,-0.221,0.15,0.0,0.125,0.07,0.039,0.0,-0.24,-0.199,-0.223,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.1,0.15,0.15,0.126,0.068,0.038,0.022,0.014,0.01,0.0,0.0,0.0,0.0,0.0,0.013,-0.146,-0.252,-0.49,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.0,0.0,0.0,0.15,0.0,0.14,0.077,-0.234,-0.291,-0.43,-0.209,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.0,0.15,0.15,0.15,-0.35,0.15,0.15,0.15,0.148,0.081,0.046,0.026,0.015,-0.245,-0.304,-0.45,-0.054,-0.063,-0.078,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,-0.11,0.0,0.0,0.0,0.0,0.0,-0.051,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.0,0.0,-0.154,0.0,0.0,0.0,-0.074,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.0,0.15,0.0,0.15,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,-0.168,-0.209,-0.103,0.0,0.0,0.0,0.0,0.0,0.05,0.1,0.0,0.15,0.15,0.15,0.15,0.15,0.089,0.049,0.028,0.017,0.011,0.0,0.0,0.011,-0.247,-0.306,-0.452,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.123,0.067,0.038,0.0,0.0,0.0,0.0,0.027,-0.243,-0.301,-0.446,-0.217,0.0,0.0,-0.103,0.0,0.0,0.0,0.15,0.15,0.0,0.15,0.15,0.15,0.0,0.107,-0.39,0.15,0.0,0.15,0.15,0.15,-0.169,-0.21,-0.311,0.0,-0.148,0.0,-0.071,0.0,0.0,0.0,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.15,0.1,0.0,0.057,0.032,0.019,-0.245,-0.303,-0.449,-0.054,-0.063,-0.078,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"cooling":[0.053,0.019,0.01,0.005,0.0,0.0,0.053,0.103,0.269,0.351,0.319,0.36,0.435,0.526,0.599,0.657,0.695,0.44,0.333,0.218,0.253,0.224,0.27,0.328,0.085,0.047,0.058,0.018,0.009,0.039,0.033,0.05,0.13,0.225,0.296,0.373,0.448,0.537,0.644,0.819,0.911,0.679,0.485,0.475,0.419,0.358,0.149,0.032,0.06,0.051,0.043,0.036,0.032,0.026,0.031,0.071,0.173,0.176,0.322,0.266,0.246,0.394,0.422,0.431,0.32,0.254,0.301,0.24,0.19,0.165,0.093,0.008,0.02,0.024,0.021,0.019,0.013,0.012,0.121,0.041,0.144,0.078,0.084,0.076,0.092,0.097,0.114,0.147,0.171,0.2,0.181,0.14,0.172,0.193,0.148,0.078,0.045,0.035,0.028,0.022,0.013,0.0,0.001,0.03,0.054,0.088,0.13,0.178,0.266,0.342,0.404,0.468,0.504,0.527,0.449,0.494,0.2,0.094,0.079,0.118,0.084,0.062,0.048,0.036,0.02,0.019,0.098,0.114,0.234,0.27,0.301,0.333,0.386,0.449,0.52,0.54,0.577,0.344,0.229,0.148,0.357,0.213,0.143,0.106,0.082,0.1,0.094,0.082,0.041,0.028,0.055,0.116,0.125,0.152,0.199,0.267,0.349,0.414,0.48,0.5,0.542,0.573,0.41,0.291,0.197,0.177,0.125,0.115,0.082,0.06,0.045,0.033,0.016,0.018,0.081,0.083,0.089,0.124,0.17,0.224,0.285,0.451,0.53,0.548,0.592,0.729,0.553,0.32,0.245,0.163,0.1,0.129,0.097,0.078,0.061,0.052,0.043,0.036,0.054,0.09,0.134,0.172,0.233,0.306,0.364,0.534,0.549,0.55,0.527,0.52,0.537,0.308,0.229,0.191,0.158,0.113,0.086,0.067,0.053,0.043,0.033,0.032,0.047,0.079,0.136,0.192,0.266,0.326,0.41,0.472,0.564,0.694,0.84,0.799,0.648,0.552,0.348,0.279,0.192,0.11,0.197,0.18,0.154,0.051,0.0,0.026,0.362,0.139,0.15,0.192,0.244,0.322,0.47,0.561,0.599,0.521,0.553,0.403,0.382,0.476,0.325,0.327,0.137,0.019,0.022,0.078,0.096,0.087,0.08,0.067,0.058,0.074,0.169,0.235,0.274,0.333,0.4,0.48,0.542,0.587,0.622,0.55,0.441,0.438,0.512,0.627,0.451,0.129,0.078,0.063,0.055,0.048,0.042,0.038,0.137,0.091,0.151,0.193,0.229,0.272,0.328,0.394,0.476,0.474,0.538,0.487,0.416,0.308,0.262,0.296,0.258,0.049,0.09,0.073,0.059,0.048,0.033,0.033,0.055,0.097,0.124,0.166,0.216,0.274,0.329,0.381,0.429,0.51,0.591,0.4,0.31,0.367,0.331,0.197,0.169,0.058,0.087,0.072,0.061,0.052,0.038,0.035,0.061,0.248,0.187,0.213,0.269,0.336,0.391,0.45,0.508,0.616,0.61,0.522,0.524,0.374,0.265,0.179,0.137,0.261,0.06,0.042,0.071,0.062,0.054,0.047,0.066,0.1,0.146,0.264,0.339,0.41,0.491,0.548,0.629,0.683,0.702,0.568,0.457,0.366,0.295,0.243,0.186,0.139,0.109,0.089,0.076,0.065,0.055,0.049,0.072,0.205,0.269,0.326,0.412,0.43,0.691,0.594,0.592,0.587,0.563,0.454,0.415,0.417,0.39,0.318,0.23,0.01,0.068,0.063,0.058,0.053,0.048,0.044,0.066,0.101,0.146,0.208,0.264,0.316,0.373,0.412,0.456,0.497,0.479,0.394,0.24,0.163,0.134,0.12,0.102,0.03,0.042,0.052,0.049,0.045,0.038,0.037,0.157,0.089,0.097,0.058,0.063,0.079,0.098,0.114,0.127,0.134,0.175,0.101,0.077,0.038,0.057,0.075,0.058,0.051,0.051,0.044,0.037,0.034,0.028,0.107,0.045,0.037,0.078,0.091,0.106,0.12,0.137,0.164,0.18,0.176,0.158,0.214,0.153,0.139,0.138,0.294,0.05,0.0,0.0,0.034,0.033,0.128,0.038,0.029,0.051,0.242,0.175,0.199,0.243,0.314,0.376,0.441,0.506,0.55,0.549,0.468,0.36,0.206,0.201,0.187,0.153,0.166,0.086,0.07,0.061,0.053,0.041,0.038,0.131,0.125,0.334,0.254,0.277,0.339,0.41,0.487,0.52,0.616,0.719,0.599,0.501,0.467,0.321,0.238,0.108,0.057,0.111,0.093,0.078,0.065,0.054,0.049,0.071,0.252,0.213,0.267,0.341,0.434,0.596,0.724,0.861,0.853,0.811,0.626,0.449,0.315,0.218,0.162,0.111,0.053,0.136,0.118,0.104,0.092,0.085,0.075,0.072,0.106,0.177,0.283,0.383,0.448,0.538,0.544,0.61,0.66,0.709,0.623,0.532,0.339,0.194,0.148,0.097,0.065,0.07,0.114,0.102,0.058,0.058,0.051,0.073,0.107,0.178,0.212,0.234,0.288,0.347,0.394,0.437,0.456,0.37,0.328,0.332,0.299,0.205,0.135,0.11,0.016,0.077,0.071,0.065,0.06,0.055,0.052,0.062,0.09,0.173,0.208,0.296,0.367,0.46,0.476,0.511,0.515,0.572,0.459,0.308,0.24,0.278,0.215,0.27,0.07,0.059,0.054,0.06,0.062,0.052,0.253,0.072,0.111,0.272,0.261,0.285,0.342,0.412,0.479,0.557,0.626,0.668,0.712,0.606,0.581,0.305,0.217,0.141,0.085,0.066,0.057,0.096,0.08,0.066,0.061,0.126,0.164,0.315,0.46,0.543,0.468,0.553,0.655,0.776,0.837,0.752,0.613,0.461,0.372,0.254,0.305,0.18,0.096,0.068,0.12,0.102,0.089,0.08,0.07,0.096,0.152,0.2,0.262,0.344,0.683,0.632,0.634,0.697,0.748,0.747,0.724,0.704,0.463,0.342,0.273,0.215,0.173,0.136,0.116,0.102,0.091,0.071,0.074,0.086,0.129,0.202,0.404,0.398,0.48,0.704,0.918,0.974,1.0,0.958,0.839,0.626,0.456,0.346,0.273,0.371],"dhw":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0]}},"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.209,0.224,0.24,0.24,0.24,0.317,0.317,0.433,0.503,0.619,0.736,0.853,0.927,0.713,0.487,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.436,0.459,0.514,0.658,0.807,0.807,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.818,0.817,0.817,0.92,0.92,0.92,0.942,0.941,0.941,0.941,0.941,0.941,0.941,0.941,0.941,0.764,0.682,0.264,0.264,0.264,0.264,0.264,0.303,0.381,0.497,0.614,0.731,0.848,0.925,0.943,0.943,0.943,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.727,0.496,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.439,0.555,0.555,0.672,0.262,0.285,0.402,0.402,0.519,0.599,0.599,0.665,0.782,0.854,0.854,0.42,0.227,0.227,0.205,0.205,0.205,0.205,0.244,0.361,0.477,0.594,0.711,0.828,0.922,0.942,0.942,0.948,0.948,0.543,0.543,0.66,0.777,0.608,0.433,0.229,0.229,0.229,0.229,0.229,0.229,0.268,0.268,0.384,0.501,0.618,0.735,0.735,0.851,0.851,0.851,0.907,0.939,0.947,0.947,0.946,0.946,0.812,0.598,0.25,0.24,0.229,0.218,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.246,0.275,0.275,0.21,0.21,0.21,0.209,0.209,0.209,0.209,0.209,0.209,0.209,0.248,0.248,0.287,0.404,0.404,0.521,0.521,0.637,0.637,0.754,0.871,0.931,0.944,0.944,0.944,0.525,0.43,0.329,0.215,0.215,0.215,0.215,0.204,0.204,0.204,0.204,0.204,0.321,0.437,0.554,0.671,0.787,0.787,0.805,0.844,0.844,0.844,0.844,0.844,0.925,0.711,0.486,0.234,0.234,0.234,0.234,0.234,0.205,0.205,0.205,0.205,0.322,0.438,0.555,0.672,0.789,0.789,0.788,0.869,0.931,0.944,0.944,0.944,0.944,0.725,0.494,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.274,0.39,0.507,0.624,0.74,0.857,0.928,0.928,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.884,0.717,0.45,0.45,0.229,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.906,0.938,0.947,0.947,0.947,0.947,0.947,0.946,0.946,0.946,0.946,0.727,0.495,0.235,0.235,0.225,0.215,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.241,0.358,0.475,0.592,0.592,0.708,0.708,0.786,0.864,0.864,0.864,0.864,0.902,0.902,0.696,0.477,0.234,0.234,0.234,0.234,0.234,0.351,0.468,0.584,0.701,0.818,0.92,0.92,0.941,0.948,0.804,0.916,0.916,0.94,0.94,0.94,0.94,0.723,0.57,0.407,0.407,0.407,0.407,0.407,0.407,0.407,0.524,0.641,0.757,0.874,0.932,0.944,0.944,0.944,0.944,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.801,0.535,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.241,0.357,0.474,0.591,0.708,0.824,0.824,0.824,0.897,0.936,0.936,0.936,0.945,0.945,0.726,0.495,0.234,0.205,0.205,0.205,0.205,0.322,0.439,0.555,0.672,0.672,0.789,0.906,0.938,0.64,0.757,0.874,0.909,0.909,0.939,0.947,0.947,0.947,0.727,0.496,0.234,0.234,0.225,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.346,0.346,0.346,0.218,0.218,0.218,0.218,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.321,0.321,0.438,0.437,0.554,0.554,0.554,0.585,0.585,0.594,0.711,0.828,0.922,0.71,0.485,0.396,0.396,0.396,0.396,0.396,0.396,0.435,0.513,0.513,0.629,0.746,0.863,0.929,0.944,0.944,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.493,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.235,0.351,0.468,0.585,0.702,0.818,0.92,0.942,0.942,0.942,0.942,0.942,0.942,0.941,0.941,0.724,0.493,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.438,0.555,0.672,0.789,0.789,0.788,0.827,0.856,0.856,0.927,0.944,0.944,0.725,0.494,0.235,0.235,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.906,0.938,0.947,0.947,0.947,0.947,0.947,0.946,0.946,0.727,0.495,0.235,0.235,0.225,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.762,0.699,0.677,1.001,1.608,0.86,4.653,0.981,-0.061,2.315,0.764,0.716,1.26,2.02,2.193,0.78,1.009,2.3,3.13,1.373,1.303,2.042,1.793,0.764,0.383,0.671,1.713,1.752,1.766,0.572,-0.246,-0.069,0.819,1.462,6.669,4.144,1.951,1.951,2.903,2.312,3.11,1.939,3.643,2.93,3.446,2.541,1.766,1.367,1.115,0.937,0.936,0.99,0.913,1.716,2.325,-0.432,-0.46,-0.43,-0.133,-0.321,-0.011,2.823,3.203,2.159,1.242,0.87,0.635,1.54,0.677,1.282,0.69,0.558,0.475,0.799,0.396,1.385,0.453,0.824,0.441,0.178,0.139,0.075,0.006,-0.103,-0.175,-0.975,0.065,0.487,1.278,1.258,1.496,0.982,1.176,1.536,1.332,1.406,1.338,1.238,2.034,0.629,1.501,1.9,0.771,-0.079,-0.578,-0.446,-0.144,0.399,0.651,0.514,0.614,2.093,1.994,1.741,1.115,0.941,1.132,1.091,1.271,1.156,1.104,1.607,0.931,1.948,4.15,0.818,1.144,5.824,0.617,-0.072,-0.369,-0.118,1.067,-0.064,-0.205,1.401,1.256,2.83,8.844,2.165,1.511,1.13,1.455,2.234,1.535,1.371,1.31,1.265,2.275,1.085,2.518,-0.133,-0.282,3.856,1.107,1.52,1.661,0.321,-0.274,1.084,1.689,1.153,2.04,0.959,0.651,0.727,0.49,0.93,0.881,0.848,0.847,3.198,0.95,0.203,1.584,-0.051,-0.31,-0.38,-0.314,0.182,0.323,0.104,0.167,0.132,1.791,1.799,1.383,1.031,0.76,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.384,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.433,1.308,1.024,1.57,1.246,1.262,1.367,0.987,0.76,2.101,0.68,0.534,0.216,-0.402,-0.174,-0.161,0.321,0.394,1.033,1.535,5.826,2.385,3.597,2.451,2.338,1.022,1.604,1.015,1.278,1.734,1.478,0.78,1.212,0.734,1.245,1.785,2.354,1.24,0.238,-0.159,-0.091,0.389,6.437,1.688,1.972,1.879,2.511,1.773,1.01,0.682,0.672,1.867,1.17,1.283,1.725,1.58,1.474,1.417,1.41,0.657,-0.158,-0.003,0.634,0.978,0.123,0.456,1.074,2.522,6.896,2.711,3.461,2.565,2.162,1.345,0.916,1.625,1.095,1.156,1.606,1.259,1.168,1.208,1.273,0.656,0.496,-0.342,-0.409,-0.256,-0.121,0.188,0.744,1.405,1.986,1.149,2.071,2.781,2.303,1.18,0.876,1.179,1.394,1.976,1.722,1.259,1.205,1.271,1.589,3.362,0.457,-0.307,-0.371,-0.205,1.641,1.489,-0.5,0.045,0.131,0.206,2.194,1.767,1.688,1.367,1.152,1.311,1.708,1.979,1.751,1.536,2.649,0.895,0.829,0.753,1.491,-0.296,-0.203,-0.111,0.283,-0.145,2.107,0.604,0.785,2.383,2.232,1.713,1.369,3.315,0.946,0.739,1.183,1.504,1.334,1.125,0.968,0.901,0.755,2.903,0.721,0.455,0.163,-0.097,4.838,0.897,0.929,0.181,3.716,3.0,1.893,1.76,2.298,1.461,0.803,0.579,0.509,0.454,0.413,0.377,0.349,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.34,1.27,1.51,1.167,1.318,1.763,1.859,1.651,1.509,3.963,2.156,0.809,0.584,0.054,0.395,0.016,0.55,4.337,0.693,0.63,0.986,1.326,1.653,3.649,0.955,3.789,1.242,0.918,1.477,1.787,1.656,2.08,0.627,0.738,0.723,0.101,1.188,1.072,0.109,-0.238,0.608,-0.045,0.168,0.059,0.114,0.932,1.271,2.112,1.333,1.166,0.913,1.322,1.324,2.785,1.577,1.17,1.668,1.926,0.822,2.119,1.441,-0.078,-0.337,0.419,-0.126,-0.062,0.121,0.115,0.775,0.474,0.559,1.214,1.11,1.902,1.166,2.755,1.131,1.115,1.536,1.398,1.728,1.25,1.22,0.544,0.213,-0.063,-0.143,1.116,0.465,0.331,1.028,0.419,1.644,1.869,4.924,2.238,1.363,1.742,1.337,1.082,1.587,1.906,1.226,1.529,0.834,2.825,-0.18,1.008,1.194,-0.282,0.151,2.473,0.963,0.397,0.89,2.167,2.289,1.42,2.139,1.737,2.086,1.25,0.832,0.711,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.894,6.549,0.088,1.35,1.233,4.001,7.98,2.346,2.374,2.409,2.563,2.033,1.518,1.857,1.383,0.73,1.169,0.69,0.608,0.884,1.063,1.069,0.546,0.158,-0.307,0.693,-0.075,6.414,3.367,-0.274,1.484,3.062,3.775,2.207,1.887,1.773,1.637,2.913,0.846,1.003,1.29,1.353,0.766,1.549,4.211,2.731,1.974,0.59,-0.367,0.545,-0.351,0.275,0.706,2.003,-0.043,0.551,0.35,0.433,3.574,1.744,2.639,2.273,1.094,1.319,1.412,1.755,1.995,2.273,1.554,1.477,1.249,0.144,-0.297,-0.056,-0.152,-0.014,0.492,0.573,0.294,0.732,1.231,1.301,1.58,2.17,1.002,0.832,1.514,0.971,1.808,1.712,1.501,1.424,1.176,1.229,1.178,0.403,-0.219,-0.236,-0.261,-1.061,-0.883,0.954,1.391,2.934,0.747,1.463,2.977,2.097,5.057,1.013,1.916,0.724,1.879,1.26,0.584,1.459,2.477,4.181,1.712,0.438,-0.036,-0.029,2.156,0.884,0.396,3.044,0.802,1.75,1.539,2.432,3.883,1.806,7.999,0.985,0.704,1.28,2.118,2.939,1.168,1.583,1.258,2.188,1.197,0.722,1.284,0.69,1.379,1.5,0.84,1.08,0.416,1.99,1.865,2.285,2.81,1.986,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.344,2.865,0.595,0.791,1.42,2.277,2.274,3.384,3.406,2.21,2.33,2.325,2.448,1.028],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,24.19,26.3,24.15,20.89,23.08,22.21,19.81,19.57,21.34,23.0,22.16,22.28,22.21,22.3,22.57,24.12,24.5,24.55,24.5,23.75,23.54,23.63,23.43,23.57,23.27,23.49,24.1,23.43,20.91,18.94,18.54,18.62,18.88,19.21,19.5,19.56,19.4,19.65,19.71,19.44,22.25,23.28,24.73,24.33,24.55,24.41,22.86,20.67,20.63,23.12,24.42,25.01,21.3,23.0,22.37,22.78,23.2,23.6,24.12,24.22,24.38,24.61,23.49,23.81,23.87,25.07,24.26,24.46,25.89,25.1,25.64,24.65,23.7,23.89,24.0,23.82,23.93,24.03,21.71,22.49,21.74,21.79,21.89,21.57,22.36,21.76,21.94,22.44,23.21,23.89,24.54,24.41,24.25,23.89,23.34,23.34,22.86,23.14,23.6,24.01,24.12,24.11,24.0,23.96,24.12,21.99,21.75,21.85,22.0,21.52,22.08,22.09,20.95,22.5,23.64,24.12,24.82,24.52,26.22,27.29,25.61,25.86,24.64,24.14,23.25,23.24,23.45,22.47,21.33,21.86,22.0,22.12,22.27,21.92,22.34,21.9,23.52,24.11,24.18,24.26,23.97,23.59,24.35,26.67,27.33,26.75,26.77,26.17,26.49,26.8,27.06,27.27,27.55,27.85,28.15,28.33,26.83,27.76,28.36,27.57,28.11,28.16,28.05,27.87,27.47,27.1,26.72,26.38,26.35,26.48,26.59,26.73,26.7,26.86,26.87,26.69,26.83,26.9,26.97,27.04,27.24,27.13,27.25,25.93,26.15,25.93,25.54,25.15,24.68,24.17,23.36,23.21,22.69,22.68,22.67,23.24,23.43,23.63,21.13,21.43,20.65,20.61,20.7,21.24,21.41,21.74,22.01,22.36,23.71,23.76,23.88,23.61,23.53,23.29,23.17,23.83,22.45,22.04,22.18,22.35,23.72,23.25,23.4,21.67,20.57,21.48,21.94,22.19,22.12,22.19,21.77,21.1,21.88,23.37,24.03,23.92,23.72,21.24,21.27,21.86,22.37,22.2,22.44,23.61,24.2,24.46,21.48,21.87,20.98,20.93,21.06,21.24,21.37,21.48,22.01,23.8,23.91,23.94,23.43,23.33,23.26,23.1,22.67,22.09,21.62,21.74,22.38,22.49,23.15,23.61,20.51,21.48,20.75,20.78,21.58,21.97,22.03,21.97,21.92,21.81,24.18,24.49,24.23,24.08,23.78,23.33,23.24,22.85,22.83,23.12,23.33,23.31,23.84,24.36,24.61,22.5,21.35,21.26,22.12,22.27,22.14,22.3,22.17,22.7,24.06,24.31,24.32,25.78,26.62,27.05,26.4,26.12,25.71,24.34,23.23,23.6,23.91,24.37,24.55,22.89,21.59,21.49,21.61,21.3,22.12,22.12,22.22,22.38,24.02,24.02,24.11,23.94,25.16,23.06,23.36,23.1,22.76,23.13,23.54,24.03,23.18,24.06,24.41,22.72,21.43,21.26,21.33,21.5,21.63,22.3,21.11,21.97,23.7,23.92,24.23,21.79,22.87,23.43,25.05,25.1,24.57,24.97,25.22,24.93,25.39,25.74,26.04,26.24,26.44,26.64,26.86,27.07,27.19,27.19,27.37,27.36,27.26,27.08,26.21,26.21,26.47,27.0,27.56,28.23,28.85,29.62,30.08,28.69,26.96,25.15,24.91,23.63,22.08,21.91,21.88,21.94,20.98,21.33,21.5,22.81,24.35,24.28,24.16,23.77,24.38,23.48,22.65,22.33,21.89,21.93,21.37,23.14,22.31,23.62,24.38,21.84,20.8,20.7,21.54,21.9,21.92,21.88,21.69,22.12,23.21,23.55,24.19,23.83,24.91,23.8,23.94,23.94,23.98,23.86,23.79,24.0,23.77,23.8,23.83,22.82,21.31,21.27,21.4,21.56,21.81,21.96,21.59,21.7,23.41,24.16,24.16,24.1,24.02,23.69,22.6,22.95,24.38,25.05,24.21,24.22,24.09,24.11,23.01,22.69,21.53,21.43,21.57,21.74,21.88,22.04,22.26,22.75,24.13,24.22,24.01,23.77,24.05,23.93,23.48,21.3,21.14,21.51,22.02,22.33,23.45,24.04,24.28,22.23,20.98,20.89,21.02,22.96,20.39,22.01,22.43,22.9,24.34,24.37,23.26,23.58,24.09,23.92,21.55,21.25,21.87,22.38,22.86,23.28,23.76,24.27,24.5,22.56,23.31,23.59,23.78,23.91,24.07,24.18,22.97,22.31,22.73,22.89,23.87,23.27,23.41,22.95,22.25,22.25,22.07,21.99,22.39,23.31,23.96,20.4,21.01,22.29,20.68,21.91,22.4,21.51,20.97,21.01,21.97,24.03,24.05,23.81,23.78,22.81,23.72,25.32,22.51,21.02,20.94,21.53,21.76,21.61,21.9,21.56,22.35,21.6,20.6,21.51,21.75,20.85,20.37,20.1,20.39,21.0,23.22,23.43,23.66,23.5,23.28,22.88,22.88,22.85,23.98,25.66,22.07,22.39,21.9,22.26,22.52,22.1,20.5,20.59,20.67,21.45,21.83,22.02,22.02,22.6,24.03,23.77,23.87,23.43,23.31,23.11,22.52,22.22,22.56,23.78,23.67,23.7,24.06,24.32,21.53,22.5,20.91,20.97,21.06,21.26,22.01,21.94,21.8,22.05,23.39,23.62,24.08,26.24,26.94,24.73,23.06,22.21,24.15,24.93,20.91,22.36,22.76,23.48,20.26,22.29,20.03,21.6,22.33,21.24,21.36,20.61,21.94,21.91,23.35,23.62,20.7,22.6,23.3,22.53,22.53,22.3,22.14,22.4,21.9,22.65,22.65,23.37,24.01,21.81,20.7,21.39,22.46,21.21,22.1,21.76,21.84,22.15,22.8,21.91,22.57,20.79,22.23,22.22,22.61,22.13,23.41,24.63,22.07,22.12,19.97,18.75,18.92,20.35,21.27,22.2,22.53,22.74,22.9,23.08,22.46,22.77,22.17,22.37,22.76,22.79,22.59,22.25,21.89,20.86,20.55,21.5,21.49,21.77,22.03,22.53]},"Building_2":{"battery_soc":[0.2,0.2,0.209,0.224,0.24,0.24,0.24,0.317,0.317,0.433,0.55,0.667,0.784,0.9,0.938,0.721,0.492,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.32,0.437,0.437,0.437,0.437,0.436,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.254,0.371,0.487,0.604,0.721,0.799,0.838,0.837,0.837,0.837,0.837,0.837,0.837,0.742,0.583,0.248,0.248,0.248,0.248,0.248,0.287,0.365,0.482,0.599,0.715,0.832,0.923,0.942,0.942,0.942,0.948,0.948,0.948,0.948,0.948,0.948,0.948,0.727,0.495,0.235,0.206,0.206,0.206,0.206,0.206,0.206,0.323,0.439,0.439,0.556,0.556,0.673,0.607,0.724,0.841,0.841,0.924,0.942,0.942,0.942,0.942,0.765,0.561,0.331,0.216,0.216,0.204,0.204,0.204,0.204,0.243,0.36,0.476,0.593,0.71,0.826,0.922,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.942,0.723,0.497,0.272,0.272,0.272,0.272,0.272,0.272,0.271,0.271,0.388,0.505,0.622,0.738,0.738,0.855,0.855,0.855,0.855,0.855,0.927,0.943,0.943,0.943,0.739,0.528,0.305,0.283,0.259,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.243,0.36,0.359,0.476,0.476,0.593,0.593,0.71,0.826,0.922,0.942,0.942,0.942,0.942,0.723,0.493,0.235,0.235,0.235,0.235,0.205,0.205,0.205,0.205,0.205,0.322,0.439,0.556,0.672,0.789,0.789,0.789,0.828,0.828,0.828,0.828,0.827,0.922,0.71,0.485,0.234,0.234,0.234,0.234,0.234,0.204,0.204,0.204,0.204,0.321,0.438,0.555,0.671,0.788,0.788,0.788,0.788,0.788,0.788,0.866,0.865,0.93,0.715,0.559,0.34,0.34,0.34,0.34,0.34,0.339,0.339,0.378,0.378,0.495,0.612,0.729,0.845,0.925,0.925,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.498,0.235,0.235,0.206,0.206,0.206,0.206,0.323,0.44,0.556,0.673,0.79,0.906,0.939,0.947,0.947,0.524,0.524,0.64,0.64,0.757,0.874,0.931,0.716,0.489,0.234,0.234,0.224,0.214,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.204,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.203,0.242,0.358,0.475,0.592,0.592,0.709,0.709,0.708,0.708,0.708,0.708,0.708,0.807,0.807,0.629,0.44,0.261,0.261,0.261,0.261,0.261,0.378,0.494,0.611,0.728,0.844,0.925,0.925,0.943,0.948,0.531,0.647,0.647,0.764,0.881,0.935,0.935,0.501,0.413,0.32,0.32,0.32,0.32,0.32,0.32,0.32,0.437,0.553,0.67,0.787,0.903,0.938,0.947,0.947,0.947,0.949,0.949,0.949,0.949,0.949,0.949,0.949,0.827,0.656,0.569,0.569,0.569,0.569,0.569,0.569,0.568,0.568,0.568,0.568,0.568,0.685,0.802,0.915,0.915,0.915,0.915,0.915,0.915,0.915,0.94,0.94,0.723,0.492,0.31,0.214,0.214,0.214,0.214,0.331,0.448,0.565,0.681,0.681,0.798,0.915,0.94,0.862,0.928,0.944,0.944,0.944,0.944,0.944,0.943,0.943,0.725,0.532,0.289,0.271,0.25,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.229,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.204,0.204,0.204,0.204,0.204,0.204,0.321,0.438,0.438,0.438,0.228,0.228,0.228,0.228,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.322,0.438,0.438,0.555,0.555,0.555,0.555,0.555,0.555,0.671,0.788,0.905,0.698,0.478,0.396,0.396,0.396,0.396,0.396,0.396,0.435,0.512,0.512,0.629,0.746,0.863,0.929,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.943,0.724,0.499,0.258,0.258,0.258,0.258,0.258,0.257,0.257,0.257,0.374,0.491,0.608,0.724,0.841,0.924,0.943,0.943,0.943,0.943,0.943,0.942,0.942,0.942,0.724,0.493,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.438,0.555,0.672,0.789,0.789,0.788,0.588,0.704,0.704,0.821,0.92,0.942,0.724,0.493,0.234,0.234,0.205,0.205,0.205,0.205,0.205,0.205,0.322,0.438,0.555,0.672,0.789,0.905,0.939,0.946,0.946,0.946,0.946,0.946,0.946,0.946,0.726,0.494,0.235,0.235,0.225,0.216,0.216,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215,0.215],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.221,0.254,0.272,0.231,0.248,0.671,2.934,1.17,1.131,1.167,1.468,1.285,1.356,1.851,0.942,0.742,1.202,0.976,1.524,1.361,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.47,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.856,0.869,0.5,0.455,1.85,0.976,0.143,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.849,0.644,0.268,0.202,0.232,0.416,0.85,0.7,0.729,0.752,0.693,0.531,0.437,0.441,0.449,0.404,0.336,0.454,0.073,0.125,0.561,0.904,0.719,0.518,0.511,0.669,0.912,1.016,0.728,0.683,0.685,0.591,0.314,0.241,1.601,0.487,0.555,0.868,1.536,1.003,0.964,1.034,0.334,0.302,0.341,1.02,0.737,0.781,0.715,0.584,0.374,1.012,0.776,0.185,0.685,0.202,0.729,0.053,0.924,1.067,0.516,0.937,0.678,1.149,0.966,0.734,0.158,0.158,0.178,0.676,0.679,0.506,0.488,0.412,0.7,0.729,0.684,0.683,0.685,0.7,0.729,1.526,0.436,0.594,1.126,0.673,0.467,0.628,0.712,0.925,0.18,0.175,0.175,0.857,0.653,0.745,0.511,0.528,0.67,0.764,1.184,0.683,0.685,0.7,0.231,0.738,0.971,0.4,0.494,0.514,1.132,0.742,0.7,0.885,0.159,0.165,0.173,0.859,0.765,0.653,0.615,0.62,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.739,0.704,0.895,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.258,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.885,0.916,1.168,9.801,1.415,1.521,1.533,1.541,1.605,1.062,0.853,0.539,0.654,0.746,0.36,0.371,0.725,0.235,0.748,0.275,0.844,0.705,2.847,1.347,1.414,1.021,0.907,1.331,1.137,0.346,0.295,0.213,1.092,0.82,0.642,0.409,0.525,0.599,0.753,0.396,0.683,0.685,0.712,0.747,0.856,0.482,0.759,1.875,0.658,0.777,1.085,1.057,1.51,0.418,0.362,0.763,1.345,0.994,0.857,0.934,0.89,0.492,0.207,0.225,0.968,0.72,0.73,0.752,0.851,0.554,0.544,0.592,0.517,0.843,1.011,0.667,1.867,0.831,0.121,0.171,1.199,0.983,1.252,0.897,1.846,0.525,0.762,0.664,0.696,0.685,0.7,0.729,0.756,0.589,2.158,0.686,1.01,0.714,0.885,0.797,0.929,0.192,0.175,1.405,1.077,1.085,0.806,0.751,0.616,0.947,1.179,0.981,0.683,0.685,0.704,0.379,0.484,0.622,4.528,3.19,2.305,1.767,1.255,1.351,1.528,0.42,0.372,0.331,1.231,0.901,0.954,1.062,0.608,0.452,0.498,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.942,1.124,1.164,2.018,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.644,0.385,0.638,0.742,0.683,0.691,0.718,0.253,2.697,0.708,0.975,2.712,0.878,0.926,2.236,1.511,1.578,0.814,0.392,0.137,0.802,0.705,0.748,0.601,0.847,0.933,1.194,0.885,0.683,0.533,0.202,0.307,0.301,5.053,1.98,1.563,1.068,1.031,1.145,2.424,4.514,0.334,0.229,0.416,0.357,0.305,0.443,0.45,0.233,0.804,1.111,0.785,0.683,0.685,0.352,0.267,0.252,0.36,0.473,0.816,0.836,2.079,2.033,0.354,0.376,0.096,0.134,0.07,0.796,0.526,0.613,0.496,0.508,0.799,0.66,0.291,0.185,0.187,0.7,0.729,0.75,0.373,0.466,0.573,0.602,0.747,0.823,0.94,1.042,0.748,0.402,0.143,1.717,0.823,0.744,0.702,1.067,0.977,1.128,1.156,0.185,0.685,0.7,0.34,0.063,2.656,1.05,1.299,0.681,0.976,1.446,1.103,1.875,1.164,0.148,0.189,1.094,0.842,0.63,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.519,1.758,1.698,1.543,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.905,0.48,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.566,1.104,2.297,0.715,0.391,1.8,1.831,1.158,2.857,1.33,2.405,1.014,1.124,0.708,0.4,0.798,0.712,0.186,0.686,0.216,0.746,0.28,1.511,0.752,0.762,0.72,0.811,0.904,1.865,1.394,1.978,0.807,0.66,0.308,0.58,0.718,0.739,0.65,0.493,0.607,0.662,0.245,0.747,0.745,0.755,0.561,0.433,0.474,0.588,0.699,0.664,0.687,0.862,0.821,0.952,0.187,0.174,0.188,1.025,0.991,0.888,0.852,5.033,0.528,0.294,0.848,0.724,0.73,0.739,0.765,0.822,0.828,1.804,0.886,0.907,1.525,0.928,1.054,1.164,0.482,0.524,0.52,3.156,1.215,1.019,0.949,0.94,0.648,0.664,0.9,0.786,0.242,0.756,0.779,0.945,0.621,1.257,0.156,1.388,0.963,2.198,1.647,1.549,0.772,0.851,0.913,1.726,1.115,1.008,1.208,1.098,1.366,0.58,1.739,0.859,0.762,0.775,0.8,2.232,0.76,1.164,1.053,1.231,1.079,1.197,1.483,2.018,1.01,0.583,0.521,1.359,1.52,0.931,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.139,1.29,1.623,1.632,1.965,2.076,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.16,23.82,25.31,25.84,24.85,24.0,25.3,25.96,25.98,26.41,26.79,24.43,25.51,25.75,25.59,25.96,25.27,25.19,24.86,25.91,25.96,26.25,26.48,26.48,26.37,25.84,25.9,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.1,25.18,25.65,25.76,24.35,24.39,25.54,25.66,25.99,26.27,26.45,26.75,26.94,27.16,27.3,27.36,27.25,27.27,26.81,26.63,25.92,26.41,26.4,26.36,25.81,24.82,23.84,24.81,25.46,25.64,25.65,25.51,26.11,25.36,25.82,26.16,24.29,24.22,24.52,24.79,24.76,24.94,25.3,25.52,25.41,25.37,25.45,25.54,25.62,25.69,24.65,25.31,26.01,26.24,26.31,26.26,26.56,26.58,26.48,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.45,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.09,26.15,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.56,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.43,25.55,24.72,23.83,24.74,25.7,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.54,23.92,24.42,24.99,25.08,25.04,25.28,25.37,25.41,25.44,25.4,25.48,25.56,25.19,24.46,23.3,24.08,25.33,25.86,26.19,26.36,26.5,26.43,26.18,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.01,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.4,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.1,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.3,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,26.32,26.64,24.32,24.07,25.66,26.29,26.54,26.64,24.27,24.45,24.17,23.59,24.93,25.31,24.2,24.89,23.84,24.06,24.83,24.8,24.88,25.03,25.08,25.12,25.19,24.55,22.96,23.59,24.75,25.18,25.48,25.64,25.72,25.55,25.62,25.75,25.73,25.8,25.9,25.69,25.36,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.85,24.42,25.2,25.48,25.62,25.64,25.78,25.67,25.75,24.45,24.03,25.4,25.75,25.86,25.72,25.68,25.75,25.71,25.52,25.68,25.66,25.64,25.02,22.77,22.3,23.48,24.8,25.24,25.36,25.28,25.63,25.74,25.71,25.72,25.74,25.66,25.69,25.8,25.63,24.59,24.85,25.82,24.55,25.37,25.41,25.43,25.48,25.52,23.75,23.54,25.13,25.7,25.83,25.73,25.84,24.02,23.69,23.05,24.5,24.52,23.62,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.97,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.49,23.79,25.21,23.51,24.5,24.7,23.38,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.8,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,24.23,24.85,24.56,25.12,25.24,25.38,25.47,25.64,25.18,24.32,25.04,25.31,24.92,25.34,25.25,25.4,25.55,25.55,25.52,24.11,24.95,24.9,24.79,24.62,24.48,24.31,24.58,25.05,25.47,25.62,25.68,25.82,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.47,24.12,23.36,23.62,24.28,24.29,24.36,24.29,24.63,24.64,24.79,24.88,24.03,23.71,24.81,25.31,25.53,25.54,25.59,25.48,25.16,24.96,24.87,24.78,24.71,24.68,24.4,24.35,24.24,24.26,24.1,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.205,0.214,0.223,0.223,0.223,0.267,0.267,0.335,0.404,0.472,0.541,0.609,0.677,0.594,0.492,0.341,0.322,0.301,0.275,0.236,0.236,0.235,0.235,0.235,0.234,0.234,0.234,0.233,0.233,0.232,0.232,0.232,0.231,0.231,0.231,0.23,0.23,0.229,0.229,0.229,0.228,0.228,0.228,0.227,0.227,0.227,0.226,0.226,0.225,0.225,0.225,0.224,0.224,0.293,0.361,0.361,0.36,0.36,0.359,0.277,0.277,0.276,0.276,0.275,0.275,0.275,0.274,0.274,0.273,0.273,0.272,0.272,0.341,0.409,0.477,0.546,0.614,0.659,0.681,0.68,0.679,0.678,0.677,0.744,0.743,0.703,0.637,0.509,0.508,0.508,0.507,0.506,0.528,0.573,0.573,0.641,0.709,0.777,0.844,0.891,0.916,0.914,0.928,0.936,0.94,0.939,0.937,0.936,0.934,0.807,0.649,0.419,0.306,0.252,0.226,0.225,0.225,0.225,0.293,0.362,0.361,0.43,0.429,0.497,0.344,0.412,0.48,0.48,0.548,0.616,0.615,0.683,0.751,0.678,0.553,0.371,0.283,0.283,0.241,0.24,0.24,0.239,0.262,0.331,0.399,0.468,0.536,0.604,0.672,0.74,0.808,0.871,0.905,0.847,0.892,0.917,0.93,0.807,0.649,0.42,0.419,0.418,0.418,0.417,0.416,0.416,0.415,0.483,0.552,0.62,0.688,0.687,0.755,0.754,0.752,0.751,0.819,0.878,0.908,0.907,0.924,0.798,0.643,0.416,0.388,0.356,0.315,0.256,0.256,0.255,0.255,0.255,0.254,0.254,0.253,0.253,0.253,0.252,0.252,0.251,0.251,0.251,0.25,0.25,0.249,0.249,0.224,0.224,0.224,0.223,0.223,0.222,0.222,0.222,0.221,0.221,0.221,0.22,0.22,0.22,0.219,0.219,0.219,0.218,0.218,0.218,0.217,0.209,0.209,0.208,0.208,0.208,0.207,0.207,0.207,0.206,0.206,0.229,0.228,0.251,0.32,0.319,0.388,0.387,0.456,0.524,0.592,0.66,0.728,0.796,0.795,0.863,0.706,0.618,0.509,0.349,0.349,0.348,0.348,0.272,0.271,0.271,0.27,0.27,0.339,0.407,0.475,0.544,0.612,0.611,0.61,0.678,0.677,0.676,0.675,0.743,0.811,0.704,0.573,0.382,0.381,0.381,0.38,0.38,0.286,0.286,0.285,0.285,0.354,0.422,0.49,0.559,0.627,0.626,0.625,0.624,0.623,0.622,0.69,0.758,0.826,0.717,0.583,0.386,0.386,0.385,0.384,0.384,0.383,0.383,0.405,0.404,0.473,0.541,0.609,0.677,0.745,0.744,0.743,0.811,0.872,0.871,0.905,0.923,0.933,0.806,0.648,0.419,0.419,0.306,0.252,0.251,0.251,0.319,0.388,0.456,0.525,0.593,0.661,0.729,0.797,0.865,0.654,0.653,0.721,0.72,0.788,0.855,0.897,0.775,0.626,0.408,0.381,0.349,0.311,0.254,0.253,0.253,0.253,0.252,0.252,0.251,0.251,0.251,0.25,0.25,0.249,0.249,0.249,0.248,0.248,0.247,0.247,0.247,0.246,0.246,0.245,0.245,0.245,0.244,0.244,0.243,0.243,0.243,0.242,0.242,0.242,0.241,0.241,0.24,0.24,0.24,0.239,0.239,0.219,0.219,0.219,0.209,0.209,0.209,0.208,0.208,0.208,0.207,0.207,0.207,0.206,0.229,0.298,0.366,0.435,0.434,0.502,0.502,0.547,0.546,0.545,0.544,0.612,0.67,0.669,0.587,0.487,0.338,0.338,0.337,0.337,0.336,0.405,0.473,0.541,0.609,0.677,0.745,0.744,0.812,0.873,0.758,0.826,0.824,0.88,0.911,0.928,0.926,0.8,0.696,0.58,0.579,0.578,0.577,0.576,0.575,0.574,0.642,0.687,0.755,0.823,0.88,0.91,0.926,0.934,0.939,0.942,0.941,0.939,0.938,0.936,0.935,0.939,0.862,0.731,0.481,0.48,0.479,0.478,0.478,0.477,0.476,0.475,0.475,0.474,0.542,0.61,0.678,0.746,0.745,0.744,0.743,0.742,0.809,0.808,0.871,0.905,0.783,0.631,0.411,0.302,0.301,0.301,0.3,0.369,0.437,0.506,0.574,0.573,0.641,0.709,0.777,0.596,0.664,0.732,0.8,0.867,0.902,0.922,0.933,0.938,0.81,0.651,0.421,0.392,0.359,0.318,0.318,0.317,0.317,0.316,0.316,0.315,0.315,0.314,0.314,0.313,0.313,0.312,0.255,0.254,0.254,0.254,0.253,0.253,0.226,0.226,0.225,0.225,0.225,0.224,0.224,0.224,0.223,0.223,0.222,0.222,0.222,0.221,0.221,0.221,0.22,0.289,0.358,0.357,0.356,0.276,0.276,0.275,0.275,0.236,0.236,0.235,0.235,0.235,0.234,0.234,0.234,0.233,0.233,0.301,0.301,0.37,0.369,0.437,0.437,0.436,0.435,0.435,0.503,0.571,0.639,0.707,0.619,0.51,0.456,0.455,0.455,0.454,0.453,0.453,0.475,0.52,0.519,0.588,0.656,0.724,0.791,0.859,0.899,0.92,0.931,0.938,0.941,0.94,0.938,0.942,0.813,0.653,0.422,0.421,0.42,0.42,0.419,0.418,0.418,0.417,0.485,0.554,0.622,0.69,0.758,0.826,0.881,0.91,0.926,0.925,0.923,0.922,0.921,0.931,0.804,0.647,0.419,0.306,0.306,0.305,0.251,0.251,0.251,0.25,0.319,0.387,0.387,0.455,0.523,0.592,0.591,0.639,0.438,0.506,0.506,0.574,0.642,0.71,0.621,0.512,0.35,0.35,0.273,0.272,0.235,0.235,0.234,0.234,0.303,0.371,0.44,0.508,0.576,0.644,0.712,0.78,0.848,0.893,0.891,0.916,0.929,0.937,0.808,0.65,0.421,0.392,0.359,0.318,0.317,0.317,0.316,0.316,0.315,0.315,0.314,0.314,0.313,0.313,0.312,0.312,0.311,0.311,0.31,0.31,0.309,0.309,0.308,0.308,0.307,0.307,0.306,0.306,0.305,0.305],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.463,0.466,0.469,0.5,1.033,1.042,2.187,2.373,1.526,1.211,0.972,1.07,1.133,1.637,1.384,0.904,1.635,1.522,1.695,2.464,2.719,2.948,0.658,0.55,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.516,0.59,0.559,0.535,0.519,0.525,0.572,0.535,0.749,1.588,0.915,1.691,0.416,0.565,7.843,1.113,1.721,2.111,1.389,2.802,1.989,1.691,1.649,0.694,0.448,0.478,0.484,0.718,0.714,0.712,0.802,2.49,0.903,2.205,0.749,1.171,0.453,1.069,0.444,0.114,0.129,0.218,0.414,1.332,1.115,1.238,1.352,1.455,0.903,0.578,0.756,0.736,0.722,0.712,0.695,0.549,0.391,0.255,0.137,-0.014,-0.076,0.858,0.495,0.575,0.559,0.737,1.416,2.455,4.128,2.05,0.703,0.929,0.754,0.897,0.834,0.549,0.739,0.492,0.795,7.728,1.186,1.358,1.147,1.183,0.596,0.469,0.731,0.945,0.853,0.996,0.535,1.167,1.137,3.193,1.408,0.833,0.723,0.73,1.159,1.139,1.086,0.834,0.819,1.718,1.302,0.895,0.623,0.404,0.185,1.422,0.96,0.775,0.399,1.025,1.463,2.917,2.009,1.617,1.681,0.782,0.745,0.649,0.828,0.782,0.752,0.721,0.548,1.599,0.745,0.446,0.313,0.429,0.381,0.35,0.744,1.054,0.771,0.971,1.669,2.029,2.266,2.374,1.584,1.459,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.659,0.987,0.845,6.451,2.387,1.683,1.576,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.318,0.859,0.679,1.045,1.614,3.951,2.641,2.393,2.863,1.417,2.082,0.97,0.813,0.97,1.0,1.085,0.561,0.677,0.601,5.116,1.158,1.046,1.482,0.775,0.652,0.792,1.128,0.51,0.828,1.07,0.821,1.868,2.303,2.218,8.726,1.09,0.971,0.484,0.637,0.925,0.903,0.898,0.955,0.859,0.536,0.626,1.005,0.382,0.507,0.561,1.482,1.081,0.807,1.126,1.582,2.145,4.945,4.652,5.853,9.161,1.516,0.881,0.593,0.81,0.793,0.793,0.848,2.033,0.574,0.528,0.44,0.794,0.37,0.662,0.62,0.904,0.598,1.062,0.877,1.72,2.309,1.49,2.256,2.425,1.048,0.753,0.622,0.821,0.793,0.767,0.832,0.855,0.785,0.418,0.575,0.44,0.282,0.429,0.472,0.534,0.642,0.933,0.529,1.64,2.783,3.139,1.363,1.389,1.553,0.905,0.862,0.827,0.804,0.781,0.839,1.011,2.775,0.694,0.966,0.925,0.619,0.793,0.797,1.024,0.878,1.061,1.139,2.354,1.921,1.93,1.138,1.091,3.218,0.589,0.535,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.135,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.599,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.455,1.085,0.673,0.82,0.809,0.809,0.622,1.152,0.988,0.88,0.858,1.673,0.796,1.117,0.958,0.931,0.9,0.906,0.959,1.285,1.175,1.443,1.15,0.961,0.989,0.779,0.804,0.793,0.784,0.542,0.843,2.445,0.376,1.309,0.706,0.783,0.604,1.069,0.706,0.407,0.483,0.377,0.665,1.129,0.829,1.497,1.352,0.834,1.046,1.431,1.018,0.762,0.715,0.605,1.753,0.765,0.579,0.796,0.769,0.578,0.617,0.514,0.572,0.594,0.249,0.369,1.105,1.287,1.366,2.159,3.745,2.145,0.69,0.422,0.513,0.508,2.056,0.766,0.85,1.108,2.932,0.886,0.496,0.475,1.366,0.698,0.951,1.072,0.791,0.842,0.872,1.253,1.292,1.628,1.569,1.338,1.13,0.903,0.855,0.586,0.806,0.791,0.876,8.077,1.162,2.863,1.564,0.659,0.732,0.61,0.655,0.922,1.053,1.24,1.035,1.851,3.095,1.837,2.084,1.009,0.584,0.73,0.677,0.633,0.6,0.586,0.637,0.65,2.323,0.863,0.8,0.917,1.189,2.024,1.51,2.116,2.413,2.828,2.111,2.759,1.601,1.366,1.267,1.019,0.573,0.8,0.748,0.705,0.676,0.671,0.709,0.656,0.81,1.197,1.262,1.012,0.971,0.942,0.985,1.08,1.555,3.629,2.088,2.714,1.917,1.611,1.901,1.255,0.706,0.647,0.736,0.941,0.581,0.838,0.64,1.198,0.922,1.024,0.869,0.572,1.284,1.098,0.961,1.05,0.679,0.674,1.199,1.728,2.026,1.67,1.192,1.015,0.553,0.797,0.615,0.839,0.827,0.83,0.913,0.885,0.736,1.049,1.902,0.526,0.559,1.542,1.392,1.225,0.653,0.682,1.312,1.658,1.391,1.843,1.413,2.374,0.951,1.76,0.807,0.805,0.832,0.804,3.596,1.039,1.035,1.914,1.532,0.414,0.377,0.737,0.53,0.796,0.684,0.889,1.325,2.093,10.08,2.098,1.628,1.101,0.763,0.636,0.819,0.925,0.64,0.859,0.91,1.395,1.676,5.728,7.011,2.642,0.943,1.481,2.295,1.648,1.475,1.524,1.302,1.82,2.442,1.795,9.759,2.157,0.793,0.61,0.995,0.941,0.908,0.898,0.937,0.979,1.247,1.017,1.073,1.025,3.518,1.565,1.076,1.533,1.511,1.178,1.436,9.924,2.11,1.584,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.632,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.696],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.52,22.24,23.42,23.98,24.63,24.42,24.49,23.86,22.85,23.81,24.24,24.28,24.94,25.22,24.87,25.25,25.69,25.45,25.03,24.73,24.45,24.25,24.01,23.64,22.8,22.04,22.55,23.04,22.38,22.29,22.32,23.49,24.54,24.62,24.87,25.03,25.11,25.19,25.3,25.5,25.29,24.86,24.91,24.08,24.05,23.94,23.2,22.88,22.57,23.05,23.37,22.76,22.74,22.81,22.81,23.27,24.27,24.47,24.63,24.8,24.93,25.07,25.2,24.66,25.03,24.59,24.9,24.99,24.84,24.64,24.48,24.37,24.39,24.35,24.21,24.38,24.42,23.81,23.22,23.21,23.63,23.97,24.03,24.12,24.22,24.38,24.94,25.41,25.64,25.63,25.46,25.21,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.61,23.58,24.27,24.61,24.43,24.66,24.65,24.7,24.85,25.05,25.13,25.01,25.14,24.24,23.8,23.52,23.07,22.8,22.51,22.24,22.44,22.21,23.49,24.3,24.5,23.25,23.77,24.06,24.32,24.56,24.37,24.29,24.29,24.57,24.86,25.2,25.26,25.32,25.23,24.95,24.69,24.3,24.08,23.83,23.53,23.46,23.18,23.45,23.68,24.16,24.33,24.7,24.72,24.79,24.88,24.92,24.99,25.19,25.29,25.18,25.41,25.33,25.14,24.98,24.65,24.33,23.64,23.27,23.11,22.71,21.72,21.89,22.57,22.87,23.52,24.17,23.96,24.08,24.17,24.26,24.28,24.32,24.41,24.62,24.81,24.84,24.83,24.66,24.43,24.25,23.46,23.36,23.17,23.14,22.9,22.42,22.9,23.12,23.33,23.49,23.75,23.93,24.11,24.24,24.32,24.43,24.52,24.78,24.99,25.09,25.01,24.79,24.46,24.06,23.71,23.44,22.65,21.7,21.38,21.28,21.11,21.6,21.84,22.26,22.83,22.05,22.0,22.06,23.03,23.98,24.18,22.91,23.41,23.7,23.67,23.56,23.36,22.74,22.45,22.34,22.89,22.61,23.38,23.4,22.22,22.51,22.07,23.03,24.14,24.5,24.15,23.94,23.97,24.04,24.17,24.67,25.05,24.53,24.2,23.79,23.52,23.38,23.07,22.75,22.52,22.51,22.76,23.16,22.64,22.01,20.8,20.82,22.41,23.02,23.28,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.34,23.18,22.99,22.77,22.55,22.97,22.91,23.09,23.18,23.32,23.67,23.31,23.26,24.5,24.39,24.47,24.51,24.6,24.8,24.98,25.36,25.62,25.55,25.19,24.78,24.45,24.11,23.79,23.59,23.26,22.67,23.42,23.98,23.32,23.27,23.69,23.74,24.75,24.57,24.74,24.78,24.84,24.98,24.98,25.12,24.42,24.58,24.49,24.36,24.11,23.72,23.46,23.19,22.6,22.54,22.9,22.59,22.92,23.27,23.72,24.02,23.27,24.16,24.5,24.44,24.55,24.63,24.71,24.92,25.05,25.0,24.29,23.84,23.49,23.15,22.83,22.57,22.19,21.9,22.2,22.45,22.66,22.84,23.01,23.27,23.53,23.74,23.93,24.08,24.17,24.25,24.71,25.0,24.9,24.29,24.04,23.63,23.51,23.35,23.52,23.93,24.3,25.13,25.89,26.78,27.38,23.47,23.4,23.29,24.81,24.59,24.71,24.77,24.79,24.84,24.91,25.08,25.11,24.59,24.05,23.61,23.4,23.14,22.9,22.69,22.5,22.37,22.6,23.04,23.29,23.52,23.58,23.67,24.36,24.47,24.42,24.49,24.58,24.72,24.87,24.38,24.22,24.12,24.54,24.54,24.34,24.01,23.78,23.59,23.47,23.01,23.52,23.79,24.07,24.09,24.0,24.11,24.2,24.39,24.42,24.53,24.69,24.9,24.58,24.82,24.91,24.34,24.16,24.04,23.77,23.53,23.42,23.34,23.18,23.37,23.14,23.52,23.49,23.47,22.28,23.39,24.2,24.65,24.6,24.68,24.05,24.49,24.74,25.1,24.4,24.06,23.76,23.57,23.35,23.13,22.88,22.66,22.52,22.47,23.01,23.4,23.95,24.11,24.2,24.33,23.9,24.43,24.55,24.63,24.72,24.86,24.98,24.75,24.99,24.04,24.12,23.97,23.68,23.45,23.29,23.48,23.29,22.51,22.69,22.66,22.45,22.83,23.14,24.08,24.7,24.3,24.46,24.49,24.51,24.57,24.64,24.83,24.16,24.32,24.18,23.96,23.64,22.89,22.26,21.49,21.15,20.87,21.21,21.66,22.13,22.62,23.11,23.47,24.03,23.33,23.39,23.4,23.4,23.42,23.5,23.97,24.4,24.37,23.84,23.28,22.97,22.67,22.78,22.56,22.21,21.6,21.54,21.5,21.99,22.74,23.09,23.52,23.86,23.95,23.62,23.65,24.12,24.29,24.45,24.63,24.58,24.0,23.82,23.56,23.28,22.97,22.7,22.52,22.42,22.95,23.26,23.04,22.97,23.27,23.64,23.78,24.69,24.46,24.47,24.51,24.59,24.69,24.83,25.08,25.16,24.88,24.66,23.91,23.28,23.02,22.95,22.75,22.75,22.21,23.01,23.44,23.59,23.26,23.44,22.88,23.98,24.28,24.37,24.38,24.42,24.58,23.58,24.23,24.5,23.95,23.98,23.74,23.54,23.26,23.07,22.81,22.55,22.3,22.1,22.28,21.82,22.65,23.05,23.6,24.1,24.44,24.58,24.3,24.38,24.5,24.66,24.69,24.67,24.02,23.32,22.82,23.07,22.66,22.3,21.74,21.37,21.65,22.11,22.62,22.95,23.47,23.09,23.67,24.22,24.5,24.2,24.29,24.35,24.43,24.57,24.79,24.85,24.78,24.52,24.15,22.69,22.77,22.5,22.33,22.11,21.88,21.81,21.51,22.02,22.4,22.66,22.94,23.16,23.3,23.53,23.69,23.81,24.01,24.09,24.3,24.33,24.21,23.31,23.3,23.04,22.35,21.47,21.03,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1267,0.1677,0.2088,0.2588,0.3424,0.4174,0.7023,0.8342,0.9117,1.0485,1.1419,1.2314,1.3407,1.6638,1.9289,2.0712,2.1833,2.3232,2.5083,2.6598,2.8026,2.9563,3.0334,3.0823,3.1234,3.1845,3.2532,3.3282,3.4022,3.4441,3.5361,3.5777,3.6538,3.7542,3.9995,4.1878,4.3471,4.5486,4.7672,4.9382,5.1378,5.2761,5.4473,5.5992,5.7495,5.8519,5.9309,5.9956,6.0513,6.1007,6.1501,6.2029,6.2522,6.3483,6.4866,6.5275,6.5897,6.6552,6.6998,6.9308,6.9844,7.1263,7.2936,7.4158,7.5518,7.6513,7.7362,7.853,7.9113,7.9691,8.0088,8.0456,8.0921,8.1605,8.2128,8.2972,8.4041,8.4746,8.5672,8.607,8.658,8.6864,8.7295,8.7523,8.7688,8.7807,8.8046,8.8904,8.9929,9.083,9.1778,9.2607,9.3562,9.4531,9.5378,9.6214,9.7012,9.7777,9.8742,9.9216,9.9879,10.1013,10.1454,10.1656,10.1909,10.2357,10.2899,10.3441,10.4099,10.4925,10.5895,10.8154,10.9748,11.1673,11.2823,11.3511,11.4276,11.4918,11.5839,11.6639,11.717,11.8047,11.8517,11.9521,12.2973,12.3827,12.4867,12.7049,12.7847,12.8219,12.8691,12.9185,12.9986,13.0579,13.1256,13.2496,13.34,13.4754,13.841,13.9594,14.0391,14.113,14.1973,14.3152,14.4123,14.5032,14.5855,14.6669,14.8266,14.9088,15.0257,15.0766,15.108,15.2395,15.3315,15.4245,15.5225,15.5753,15.6457,15.8054,15.9647,16.0759,16.2042,16.296,16.3528,16.4147,16.4698,16.5549,16.6227,16.6889,16.7545,16.8695,16.9646,17.0206,17.0914,17.1149,17.1425,17.1866,17.2184,17.2658,17.3317,17.3923,17.4687,17.5845,17.7209,17.8617,17.9902,18.0844,18.1665,18.2269,18.2848,18.3315,18.3712,18.4087,18.4453,18.4824,18.5493,18.598,18.6996,18.7422,18.7836,18.8589,18.9433,19.2121,19.3912,19.5557,19.6985,19.8681,20.0593,20.2159,20.3273,20.4341,20.5437,20.6204,20.6841,20.7456,20.8081,20.8585,20.9021,20.9869,21.0325,21.0757,21.1123,21.1496,21.1919,21.2276,21.2956,21.6101,21.7112,21.8463,22.1735,22.3634,22.5832,22.7676,22.901,23.0063,23.0997,23.1742,23.2496,23.3395,23.4346,23.4802,23.5565,23.6031,23.8115,23.9179,24.1,24.2186,24.2894,24.3381,24.3877,24.4707,24.7064,24.8742,25.0701,25.241,25.4005,25.5432,25.656,25.9421,26.0083,26.1077,26.1774,26.2443,26.3407,26.4324,26.5216,26.6119,26.7023,26.7511,26.7915,26.8754,26.9242,26.9901,27.0417,27.129,27.2358,27.4557,27.9476,28.2442,28.4469,28.6947,28.9183,29.1554,29.4726,29.5778,29.6409,29.698,29.796,29.8762,29.954,30.0352,30.1555,30.2074,30.2531,30.2833,30.3215,30.3568,30.4056,30.4486,30.5511,30.7174,30.9033,31.0322,31.1776,31.3547,31.5017,31.628,31.7769,31.8565,31.9407,32.035,32.1287,32.2079,32.2853,32.3672,32.4598,32.5978,32.6862,32.723,32.7653,32.7943,32.8804,32.9608,33.0035,33.0551,33.1278,33.2534,33.3965,33.5608,33.725,33.8265,33.9178,34.0281,34.1378,34.2484,34.3427,34.4302,34.5498,34.611,34.6782,34.7991,34.9948,35.116,35.2101,35.2797,35.3476,35.4103,35.5461,35.6576,35.7878,36.0138,36.1834,36.3156,36.4396,36.6003,36.6769,36.8044,36.8701,36.9431,37.0052,37.0612,37.1124,37.1644,37.2178,37.338,37.4048,37.479,37.5393,37.5994,37.8168,37.909,38.0375,38.1505,38.3652,38.5397,38.6914,38.8442,39.0109,39.1372,39.2094,39.261,39.3131,39.3631,39.3999,39.4339,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.4739,39.5918,39.718,39.8321,39.8902,39.9782,40.0701,40.1674,40.2585,40.3463,40.4863,40.66,40.733,40.8041,40.9098,40.9957,41.0464,41.1601,41.3585,41.4518,41.5893,41.7233,41.8654,41.9745,42.1357,42.2274,42.3889,42.4771,42.5592,42.659,42.7596,42.8502,42.9485,42.9881,43.0428,43.1431,43.3043,43.4348,43.5322,43.5893,43.637,43.7193,43.8105,43.9589,44.0102,44.0524,44.1705,44.2508,44.3455,44.4409,44.5274,44.5847,44.6764,44.7882,44.921,45.0084,45.0828,45.1587,45.2729,45.326,45.4152,45.4942,45.5404,45.5816,45.6724,45.7467,45.7736,45.8055,45.8324,45.9074,46.0041,46.0811,46.1717,46.2848,46.4639,46.5744,46.6972,46.7612,46.8167,46.8812,46.9865,47.0789,47.1608,47.2498,47.362,47.4077,47.4388,47.4702,47.5644,47.6223,47.6871,47.7786,47.8935,48.063,48.2321,48.4623,48.5892,48.6981,48.8151,48.9233,49.0156,49.1203,49.2336,49.2913,49.3787,49.446,49.5629,49.7984,49.9391,50.0879,50.1714,50.2149,50.3367,50.4247,50.4876,50.5951,50.8523,51.068,51.2231,51.3713,51.5367,51.6694,51.7903,51.8715,51.9382,52.0051,52.0529,52.097,52.1459,52.1871,52.2297,52.2886,52.4127,52.5627,52.916,53.1828,53.2689,53.4112,53.5181,53.7319,54.0744,54.2661,54.4381,54.6405,54.7922,54.9196,55.0263,55.1234,55.2057,55.2737,55.3419,55.3881,55.4315,55.4834,55.5425,55.6036,55.6949,55.7795,55.8479,55.9637,56.0124,56.2366,56.4145,56.4988,56.6202,56.8964,57.1045,57.3164,57.4558,57.5862,57.709,57.8412,57.9092,57.9776,58.0415,58.1277,58.1729,58.2636,58.412,58.5694,58.6758,58.745,58.7913,58.8476,58.9114,59.0057,59.095,59.2416,59.3288,59.4394,59.5484,59.6283,59.8125,59.9335,60.0641,60.1735,60.2387,60.3191,60.3848,60.4815,60.5847,60.6963,60.7839,60.8647,60.9364,60.9883,61.0641,61.0988,61.1351,61.2052,61.284,61.3642,61.4307,61.5239,61.6842,61.8003,61.9158,62.0587,62.1539,62.3923,62.4788,62.5664,62.6666,62.7603,62.8489,62.9348,63.0949,63.1843,63.273,63.3931,63.4635,63.5021,63.5575,63.6061,63.6522,63.7372,63.8872,64.1422,64.2943,64.4899,64.906,65.0579,65.2805,65.3688,65.4651,65.5236,65.6278,65.7137,65.7561,65.8451,65.9656,66.1543,66.2711,66.4875,66.6964,66.8139,66.9323,67.0653,67.1918,67.3737,67.5525,67.7946,68.0149,68.1891,68.406,68.5404,69.0932,69.2159,69.2987,69.3701,69.5105,69.6476,69.7297,69.8239,69.9106,70.0667,70.1601,70.2448,70.3442,70.43,70.6042,70.7285,70.8275,70.9625,71.1348,71.3549,71.5792,71.9747,72.1625,72.2937,72.441,72.5936,72.71,72.7789,72.8382,72.8822,72.9251,72.9677,73.0139,73.0632,73.1574,73.2556,73.4406,73.5831,73.6661,73.7908,73.9456,74.1328,74.3361,74.5677,74.8021,75.0101,75.1806,75.3344,75.482,75.6332],"decisions":[{"clamps":[],"fallback":null,"reason":"Batteries are empty with no price spike now, so hold them; baseline cooling is kept since rooms are within band and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries at floor (no usable charge, price not top, grid charge not needed); cooling at baseline since Building_1 is only 0.88C above setpoint; no trims, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour with no top price: small battery charge per strategy, cooling and tank at baseline, no overcooling, peak headroom respected.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overnight low-price hour with grid charging allowed; small battery charge per strategy, rooms within band, no trim, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.0 from setpoint so cooling stays at baseline; batteries follow strategy, price is not top now and grid charging is ok, so use the suggested small charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour but peak headroom is zero and the batteries hold little usable charge, so hold batteries and keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter is at target with zero headroom, so no grid charging; batteries and tanks held, cooling kept at baseline, Building_2 already at zero cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging all batteries gently at 0.098 in this cheap hour ahead of top-price hours; cooling kept at baseline since no room is overcooled enough to trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so no trim; batteries hold per strategy since price is not at top and grid charging at low price is marginal; keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.56C below setpoint, so trim cooling; keep battery strategy since top price is ahead; avoid tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled, so cooling is trimmed deeper; batteries charge gently in the cheap hour before the top-price period.","status":"ok"},{"clamps":[{"applied":0.2604,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.066 by at most 0.02 per hour","requested":0.3065,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 slightly overcooled, trim held; batteries follow strategy, charging at low price; top price not active now, no tank charging.","status":"clamped"},{"clamps":[{"applied":0.2812,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.046 by at most 0.02 per hour","requested":0.307,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 3-5: charge batteries gently per strategy; hold cooling near baseline, no DHW, trims held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Follow the strategy battery charge in cheap, clean hours before the top-price window; keep cooling at baseline with no overcooling and dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings unoccupied and not overcooled; hold baseline cooling, follow strategy battery charging in cheap hours, no DHW, no trims.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim Building_3 cooling for overcooling; hold tanks at zero.","status":"ok"},{"clamps":[{"applied":0.6953,"point":"Building_3.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.037","requested":0.7326,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; Building_3 is overcooled so the held trim stays; other cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price final hour: discharge all usable battery charge; trim overcooled occupied rooms 1 and 3 by 0.1 below baseline.","status":"ok"},{"clamps":[{"applied":0.1329,"point":"Building_1.cooling","reason":"indoor 24.2 C is more than 0.5 C below the setpoint 26.5 C, trim held at 0.100","requested":0.2328,"rule":"trim_hold"},{"applied":0.3325,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4321,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hours are near-flat; keep strategy battery actions, hold cooling trims, and leave tanks idle.","status":"clamped"},{"clamps":[{"applied":0.2179,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2975,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top-price hours per strategy; keep baseline cooling since rooms are within band.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Keep strategy battery discharge for the top-price hour, hold cooling at baseline since rooms are warm or near setpoint, and leave the hot water tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours, so batteries discharge their small usable charge now; B1 is overcooled and cooling is eased, B2 is warm and gets more cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 0.25C above setpoint so baseline cooling kept; Building_2 overcooled? No, unoccupied and warm, baseline kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries hold, no overcooling, and cooling stays at baseline; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour so batteries stay idle; trim cooling in occupied overcooled rooms 1 and 3, leave unoccupied Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.0471,"point":"Building_3.cooling","reason":"indoor 23.8 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.054 by at most 0.02 per hour","requested":0.0813,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy. Building_1 is 2.1C below setpoint so cooling trimmed; others held at baseline.","status":"clamped"},{"clamps":[{"applied":0.0076,"point":"Building_1.cooling","reason":"indoor 21.3 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.088","requested":0.0956,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries near floor with no top-price hours; hold batteries, keep baseline cooling, and let trims follow envelope rules.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling near baseline, Building_1 trim held at 0 since it is not below setpoint by 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since no zone is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 0.06 C above setpoint so cooling stays at baseline and no trim is needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with tiny usable charge; hold batteries and keep baseline cooling, Building_1 at setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with little usable charge; hold batteries and tank, keep baseline cooling; Building_1 is slightly cool but within band, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery stays idle; cooling near baseline; Building_1 is 1.87C below setpoint but occupied with a trim held at zero, so I keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idles except spare-solar storage; cooling stays at baseline since rooms are near setpoint; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling trims are zero since no room is more than 0.5 C below setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is overcooled by over 0.5 C, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with load below peak target and no overcooling, so cooling, storage and tanks hold baseline with batteries idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.69C below setpoint is not occupied-cold enough for trim, keep baseline cooling; Building_2 warm, keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle per strategy; Building_1 is 0.91 C below setpoint so cooling trimmed slightly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.6341,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.6 C, trim held at 0.052","requested":0.6866,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.98 C below setpoint so trim held at -0.052 with cooling baseline kept; peak headroom limits charging.","status":"clamped"},{"clamps":[{"applied":0.5975,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.052","requested":0.6,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is overcooled so trim held, cooling kept at baseline; dhw idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is overcooled so trim held; Building_3 is 2.4C below setpoint, so cooling kept at baseline; DHW idle.","status":"ok"},{"clamps":[{"applied":0.487,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.102","requested":0.5894,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 1.18C below setpoint so cooling trim is held at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.2873,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.102","requested":0.39,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.96C below setpoint so trim held; others use baseline cooling with no tank or battery action.","status":"clamped"},{"clamps":[{"applied":0.329,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.102 by at most 0.02 per hour","requested":0.4114,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 0.35C below setpoint so cooling trim held; other buildings use baseline cooling and no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 1.43C so trim held, cooling kept at baseline; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as strategy says, cooling at baseline since no room is overcooled, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top-price hours, so batteries stay idle; trim cooling in overcooled occupied rooms B1 and B3, B2 is warm so baseline.","status":"ok"},{"clamps":[{"applied":0.3435,"point":"Building_1.cooling","reason":"indoor 18.5 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.35,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 1.46C below setpoint, so trim cooling deeper; flat price means batteries idle and dhw stays at zero.","status":"clamped"},{"clamps":[{"applied":0.2467,"point":"Building_1.cooling","reason":"indoor 18.6 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.38C below setpoint, so trim cooling modestly deeper; batteries idle on flat prices with negligible usable charge.","status":"clamped"},{"clamps":[{"applied":0.1858,"point":"Building_1.cooling","reason":"indoor 18.9 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.2419,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled so trim held at baseline cooling, others hold baseline.","status":"clamped"},{"clamps":[{"applied":0.1465,"point":"Building_1.cooling","reason":"indoor 19.2 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.056","requested":0.19,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 0.79C below setpoint so trim deepened slightly within limits; others baseline.","status":"clamped"},{"clamps":[{"applied":0.143,"point":"Building_1.cooling","reason":"indoor 19.5 C is within 0.5 C of the setpoint 20.0 C, trim eases off from 0.056 by at most 0.02 per hour","requested":0.1791,"rule":"trim_hold"}],"fallback":null,"reason":"Flat prices and no top-price hours; hold batteries and tanks idle, keep baseline cooling, and do not end trims since rooms are near setpoint.","status":"clamped"},{"clamps":[{"applied":0.156,"point":"Building_1.cooling","reason":"indoor 19.6 C is within 0.5 C of the setpoint 20.0 C, trim eases off from 0.036 by at most 0.02 per hour","requested":0.1721,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.44 C below setpoint so trim held, cooling at baseline; no DHW.","status":"clamped"},{"clamps":[{"applied":0.1485,"point":"Building_1.cooling","reason":"indoor 19.4 C is more than 0.5 C below the setpoint 20.0 C, trim held at 0.016","requested":0.1646,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top-price hours, batteries near floor so hold; Building_1 is 0.6C below setpoint so trim held and cooling kept near baseline; others hold.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is flat with no top-price hour now; hold batteries per strategy, cool at baseline, and trim Building_1 slightly as it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.29C below setpoint so no extra trim; price is flat-ish, not top, so keep strategy battery charge at 0.15 for all buildings; cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled 3 C, so its cooling trim is deepened; B1 stores a little solar; other buildings keep baseline.","status":"ok"},{"clamps":[{"applied":0.0361,"point":"Building_1.cooling","reason":"indoor 22.2 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.100","requested":0.136,"rule":"trim_hold"}],"fallback":null,"reason":"Prices flat with no top-price hour now; overcooled Building_1 trim held, store spare solar in batteries, no tank charging, cooling at baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.073,"rule":"trim_hold"},{"applied":0.2553,"point":"Building_2.cooling","reason":"indoor 27.4 C is near the top of the comfort band, cooling held at the baseline","requested":0.255,"rule":"comfort"}],"fallback":null,"reason":"Trim building 1 for overcooling, hold batteries near strategy, no grid charging at flat price; keep tanks idle and cooling near baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Price is flat-low now with no top-price hour, so store spare solar only; Building_1 and 2 cooling trims per envelope; no grid charging, no tank use.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_1.battery","reason":"district load 8.92 kWh would pass the peak target 8.60 kWh, charging trimmed","requested":0.08,"rule":"peak"}],"fallback":null,"reason":"Holding baseline cooling since rooms are near setpoint; following battery strategy to shave the peak at the target with no headroom and no top-price hour now.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling kept at baseline with no trim needed; only Building_1 stores spare solar, since no top-price hour is now and load is well under peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold all batteries and cooling at baseline: no overcooling, price and carbon are not at a top-hour window, and peak headroom is limited.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by about 1 C, so I trim its cooling slightly; batteries and tanks hold since prices are not at the top yet.","status":"ok"},{"clamps":[{"applied":0.2542,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.050","requested":0.3043,"rule":"trim_hold"}],"fallback":null,"reason":"Holding batteries and tanks at baseline: price is not top, carbon is high now, and the room temperatures are already within safe limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 3.8 C below setpoint, so cooling is trimmed 0.1 below baseline; other devices hold baseline since peak headroom and price timing give no reason to act.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.33 C so its held trim applies; others hold baseline, batteries idle as no top-price discharge or cheap-hour charge is due now.","status":"ok"},{"clamps":[{"applied":0.0058,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.086,"rule":"trim_hold"}],"fallback":null,"reason":"Building_3 is slightly overcooled so its cooling is trimmed; other actions follow baseline and battery strategy, with charging deferred to cheaper early-morning hours.","status":"clamped"},{"clamps":[{"applied":0.1653,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.011","requested":0.1761,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings are warm or near setpoint, so cooling stays at baseline; batteries hold since no top-price hour is now and grid charging waits for cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 and B3 overcooled, so cooling is trimmed or held; B2 is warm near its band edge so cooling rises; batteries held per strategy.","status":"ok"},{"clamps":[{"applied":0.0076,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.011","requested":0.0189,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling not present except Building_1 at -1.44C; trim ~0.1 needed. Batteries idle: price not top, charging limited, hold strategy.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries near baseline since price is low and no top-price hours now; cooling kept at baseline as rooms are within band and Building_3 trim is small.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.78C below setpoint so cooling is trimmed slightly; batteries held as prices are low and no top-price hour is now; DHW idle.","status":"ok"},{"clamps":[{"applied":0.03,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.8 C, trim held at 0.022","requested":0.0522,"rule":"trim_hold"}],"fallback":null,"reason":"Building 2 is 2.98C above setpoint so cooling stays at baseline; batteries follow strategy charging in cheap hours; no top price now, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0064,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.022","requested":0.0286,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 12-14h top price: charge batteries per strategy, keep cooling at baseline, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0116,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.022 by at most 0.02 per hour","requested":0.0138,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 16-18h top price: charge Building_2 and Building_3 batteries per strategy; hold Building_1 (soc 0.92) and keep cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.0042,"point":"Building_1.cooling","reason":"indoor 24.2 C is more than 0.5 C below the setpoint 24.8 C, trim held at 0.002","requested":0.0064,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 6 is cheap, so I follow the strategy battery charge in Buildings 2 and 3, hold Building 1 battery idle, and keep cooling at baseline with the trim held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 7 is not top-price; B1 is 0.68C under setpoint so keep cooling at 0 with trim held; charge batteries gently per strategy while grid charging is allowed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries near baseline; charging Buildings 2 and 3 modestly at the cheap 0.029 price ahead of the 16-18h top-price hours, with cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries per strategy; small cheap-hour top-up for Buildings 2 and 3 ahead of top-price hours; cooling unchanged, no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries: price low, not top hour, next top hours 6-8 ahead; B1 and B3 cooling at baseline, B2 unoccupied and warm so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 1.79C below setpoint but baseline cooling is tiny, so trim is held at 0; batteries idle since top price is not active and charging is not needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries and baseline cooling; Building_1 is only 0.62C above setpoint, price is not top now, and strategy says hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries idle: price not at top, next top hours 3-5 ahead; batteries near charge but no cheap charge needed; cooling at baseline, B1 trim within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so cooling is cut to 0; Building 3 stores cheap solar-hour charge per strategy; other actions keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is 2.36C above setpoint so cooling stays at baseline; batteries follow strategy, charging in cheap hours with grid charging allowed; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now: discharge batteries toward top-price hours; trim overcooled Building_1 by 0.1 cooling; Building_2 is warm so no trim; no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: follow strategy battery discharge; cool buildings 1 and 3 near setpoint at baseline, Building 2 is warm so keep baseline cooling, no tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, capped by load; no grid charging, tanks idle, cooling at baseline as rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the 21-23h top-price window; trim B1 slightly for overcooling and boost B2 cooling since it is 1.6C above setpoint.","status":"ok"},{"clamps":[{"applied":0.1614,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.025","requested":0.187,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; prices not at top now, grid charging cheap hours later; trims held, cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.1362,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.025 by at most 0.02 per hour","requested":0.1417,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; price not top now, charging only cheap hours; trim Building_1 held; cool Building_2 at baseline since it is warm.","status":"clamped"},{"clamps":[{"applied":0.1065,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.005","requested":0.112,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baselines: buildings 1 and 3 near setpoint, B2 overheated so cooling stays baseline; no top price now, batteries idle, grid charging not needed at 0.03 price.","status":"clamped"},{"clamps":[{"applied":0.0854,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.005","requested":0.0909,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour 23 with no top-price now; start small battery top-ups ahead of the 17-19h peak-price hours, cooling baselines kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings are warm or near setpoint so cooling stays at baseline; prices are low now, so small battery charging builds charge for the 16-18h top-price hours.","status":"ok"},{"clamps":[{"applied":0.1167,"point":"Building_1.cooling","reason":"indoor 21.7 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.117,"rule":"comfort"}],"fallback":null,"reason":"Overcooled Building_1 trims cooling 0.5C below setpoint; batteries follow strategy charge in cheap hour; no top price now, tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 2 is cheap and clean; charge batteries gently per strategy, keep cooling at baseline, tanks idle, no trims needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price window; charge batteries gently per strategy, cooling near baseline, no DHW, Building_1 slightly under setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed (B1 0.43 below setpoint); keep baseline cooling, charge batteries gently in cheap hour, no tank use, no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and not top-price; charge batteries gently per strategy, no DHW, cooling near baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 0.65C below setpoint, so trim cooling slightly; batteries follow strategy, no top price now so no discharge, grid charging ok in cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; B1 and B2 stay at baseline cooling, B3 uses its gentle strategy charge, no DHW, all within limits.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.58C below setpoint, so trim cooling; hold batteries idle as strategy suggests since prices are not top-priced and district load is near target.","status":"ok"},{"clamps":[{"applied":0.1171,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.035","requested":0.1521,"rule":"trim_hold"},{"applied":0.0069,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.034,"rule":"soc"},{"applied":0.0078,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.034,"rule":"soc"}],"fallback":null,"reason":"Building_1 overcooled slightly but within 0.5C of setpoint; keep baseline; hold battery idle until top-price hours; charge modestly per strategy.","status":"clamped"},{"clamps":[{"applied":0.1015,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.035","requested":0.12,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 10 is not top-price; cooling near baseline with trim held, batteries near full so no grid charge, DHW idle, B3 battery small spare-solar store.","status":"clamped"},{"clamps":[{"applied":0.1067,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.035","requested":0.142,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so trim is held; batteries follow strategy, charging modestly in cheap hour before top-price hours ahead; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.117,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.14,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries idle for upcoming 16-18h top prices; Building_1 cooling eased slightly as room is overcooled; others keep baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint and batteries are already near 0.95 SoC, so baseline cooling and idle storage are kept this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Batteries are near full and no top-price hour is now, so hold; cooling stays at baseline since no room is overcooled and load is well under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; B2 unoccupied and warm so no trim; battery strategy follows, pre-charge for top price at hours 1-3 with grid charging ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharging batteries evenly over the remaining top-price hours per strategy; room temps are within comfort so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, trim overcooled Building_1 by 0.055, keep others at baseline, tank idle.","status":"ok"},{"clamps":[{"applied":0.5299,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.056","requested":0.5854,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top hours per strategy; B1 overcooled trim held; no DHW or grid charging.","status":"clamped"},{"clamps":[{"applied":0.4215,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.056","requested":0.477,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 19 with price not top; district load near peak target so limiter on; hold baseline cooling, mild battery discharge per strategy, no grid charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak limiter is binding at target, so I deepened the overcooled occupied rooms' trims to cut cooling load and kept the code's battery discharge for Building_3.","status":"ok"},{"clamps":[{"applied":0.1625,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.073","requested":0.2352,"rule":"trim_hold"}],"fallback":null,"reason":"Building 3 is overcooled by 1.84 C, so I deepened its cooling trim; the other buildings and batteries follow the baseline or strategy.","status":"clamped"},{"clamps":[{"applied":0.1406,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.163,"rule":"trim_hold"},{"applied":0.0937,"point":"Building_3.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.097","requested":0.191,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled; trim cooling by envelope-held amounts, hold batteries (price not top, grid charging gains little with near-empty usable charge), tanks idle.","status":"clamped"},{"clamps":[{"applied":0.1302,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.053 by at most 0.02 per hour","requested":0.1629,"rule":"trim_hold"},{"applied":0.079,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.097 by at most 0.02 per hour","requested":0.1561,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low price with no top-price hours now; hold batteries per strategy, trim cooling per envelope, Building_2 is warm so cooling stays at baseline.","status":"clamped"},{"clamps":[{"applied":0.1214,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.3 C, trim eases off from 0.033 by at most 0.02 per hour","requested":0.1341,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are slightly overcooled within 0.5 C so trims stay held; price is not top now, batteries hold, no grid charging at low headroom need.","status":"clamped"},{"clamps":[{"applied":0.1452,"point":"Building_2.cooling","reason":"indoor 25.7 C is near the top of the comfort band, cooling held at the baseline","requested":0.145,"rule":"comfort"}],"fallback":null,"reason":"Cheap low-carbon hour before top-price window; charge batteries gently at strategy level, hold cooling near baseline, no DHW charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before top-price block; charge batteries gently per strategy, keep cooling at baseline since rooms are near band, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 overcooled 1.9C above setpoint so cooling kept at baseline; batteries follow strategy charging in cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.24C below setpoint, so no extra trim; batteries follow strategy charging in cheap hour, tanks idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.47C under setpoint, so no extra trim; keep baseline cooling and battery charge, cheap hour, no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the top-price window: charge batteries at the strategy rate, keep cooling at baseline, and leave the tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Peak limiter on with zero headroom; no grid charging, hold cooling at baseline, battery discharge per strategy to cut district peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charging batteries gently in a cheap, clean hour; trimming overcooled Building_1 slightly; others keep baseline cooling with tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 overcooled? No, it is 1.58C warm; keep baseline cooling, follow strategy battery charging in cheap hours, no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 0.69C below setpoint, not yet 0.5C-plus trim band edge; hold baseline cooling, charge batteries lightly at low price, avoid tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 11 is not top-price; B1 and B3 cooling trims held at 0 since comfort fine; B2 unoccupied and above setpoint, keep baseline; mild charge per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim cooling in overcooled occupied Building_1 per envelope; hold batteries near strategy values, charging only where grid charging is ok and no top price now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.81C below setpoint, so trim cooling slightly; hold batteries per strategy, no grid charge at this price beyond small top-up.","status":"ok"},{"clamps":[{"applied":0.1948,"point":"Building_1.cooling","reason":"indoor 24.1 C is more than 0.5 C below the setpoint 25.2 C, trim held at 0.015","requested":0.2093,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price block: follow strategy battery charge for B1 and B3, keep cooling at baseline, tank idle, and B2 near full holds.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Charge batteries in this cheap, clean hour ahead of the top-price hours; keep cooling at baseline since no room is overcooled.","status":"ok"},{"clamps":[{"applied":0.1272,"point":"Building_1.cooling","reason":"indoor 24.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"B1 cooling raised (indoor below band), B3 trims cooling 0.06, B2 and B3 discharge into top-price hours, B1 stores spare solar.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Light cooling trims on overcooled occupied B1 and B3; batteries discharge in the top-price hour per strategy; no grid charging since grid_charging_ok is false.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharge batteries on top-price hour per plan; trim Building_3 cooling deeper since it is 2.2C below setpoint; others keep baseline.","status":"ok"},{"clamps":[{"applied":0.229,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3286,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 19: top price not yet active, so hold battery per strategy; B1 and B3 slightly overcooled, keep baseline cooling; charge none; no DHW.","status":"clamped"},{"clamps":[{"applied":0.1479,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2275,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price; keep baseline cooling, follow strategy battery, and let Building_3 trim hold since it is overcooled, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Use strategy battery discharges to cover load near the peak limit; no cooling trims since rooms are not overcooled; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; Building_1 is 0.31 C under setpoint so no trim, batteries idle as strategy says, top price not active now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.19 C but the envelope holds trim at 0; cooling kept near baseline, batteries idle as price is not top and grid charging is marginal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are near setpoint so cooling stays at baseline; Building 2 is warm, so no trim. Batteries idle; price is not top, grid charging small.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint so cooling stays at baseline; batteries take a small grid charge at the low price ahead of the 15-17h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; charge batteries gently at strategy level, keep cooling near baseline, Building_1 slightly overcooled is within band so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.89 C below setpoint so cooling trims slightly; other buildings follow baseline with strategy battery charging in cheap hour.","status":"ok"},{"clamps":[{"applied":0.131,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.049 by at most 0.02 per hour","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 4 is cheap and clean with no top price now; charge batteries gently as strategy says, keep cooling near baseline, tank idle.","status":"clamped"},{"clamps":[{"applied":0.1128,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.121,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held near setpoint so cooling stays near baseline; Building 1 eases trim; batteries charge gently in cheap hour per strategy, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Charging batteries gently in this cheap, clean hour ahead of the top-price period; cooling and tanks stay at baseline with no comfort issues.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.05C above setpoint so no trim; price is not top now, so follow strategy battery charging and idle cooling/DHW at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling not triggered; holding baseline cooling and strategy battery charging in cheap, clean hours ahead of the top-price period.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling and battery follow baselines and strategy: Building_3 charges gently in this cheap hour before the top-price hours; no trims needed.","status":"ok"},{"clamps":[{"applied":0.0081,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.14,"rule":"soc"}],"fallback":null,"reason":"Building_1 overcooled 1.44C below setpoint, so trim cooling; top price is 6-8 hours away, so hold battery and charge gently per strategy.","status":"clamped"},{"clamps":[{"applied":0.1195,"point":"Building_1.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.104 by at most 0.02 per hour","requested":0.203,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling where overcooled, hold batteries until top-price hours, and charge only where grid charging is allowed and prices are low.","status":"clamped"},{"clamps":[{"applied":0.2112,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.084 by at most 0.02 per hour","requested":0.2748,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 12: prices not at top, district load near peak target, so hold batteries mostly per strategy; trim B1 cooling as indoor is near setpoint.","status":"clamped"},{"clamps":[{"applied":0.2772,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.064 by at most 0.02 per hour","requested":0.3208,"rule":"trim_hold"}],"fallback":null,"reason":"Cooling kept at baseline with trims held; batteries charge gently in this cheap hour ahead of top-price hours 3-5.","status":"clamped"},{"clamps":[{"applied":0.3683,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.044 by at most 0.02 per hour","requested":0.392,"rule":"trim_hold"}],"fallback":null,"reason":"Trim-hold cooling at baseline with envelope; hold batteries per strategy since top price is 2-4h ahead and grid charging is allowed; no DHW.","status":"clamped"},{"clamps":[{"applied":0.4654,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.024 by at most 0.02 per hour","requested":0.469,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-price hour: charge B1 and B3 batteries per strategy, keep B2 idle near full, no cooling trims needed, tank stays empty.","status":"clamped"},{"clamps":[{"applied":0.3765,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 25.6 C, trim held at 0.004","requested":0.3801,"rule":"trim_hold"}],"fallback":null,"reason":"Hold the battery discharge on top-price hours per strategy; keep cooling at baseline, dhw idle, and no grid charging since grid_charging_ok is false.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Discharge batteries on top-price hour per strategy; deepen overcooled occupied Building_1 and Building_3 trims, hold Building_2 at baseline.","status":"ok"},{"clamps":[{"applied":0.0949,"point":"Building_1.cooling","reason":"indoor 26.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.100","requested":0.195,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, keep cooling trims held, no tank charging or grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries for the 21-23h top-price hours; deepen Building_3 cooling trim since it is overcooled by 1.27 C while occupied.","status":"ok"},{"clamps":[{"applied":0.2913,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.3704,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries held at idle since no top-price hour is now and the peak is under target; cooling and DHW follow baseline, with Building_3's held trim kept.","status":"clamped"},{"clamps":[{"applied":0.1966,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.2757,"rule":"trim_hold"}],"fallback":null,"reason":"Hold all batteries and tanks at baseline; no top-price hour now, and indoor temps are within band, so Building_3's held trim stays.","status":"clamped"},{"clamps":[{"applied":0.1766,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.079 by at most 0.02 per hour","requested":0.2357,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 22 at a non-top price; comfort trims held, batteries held per strategy, no tank charging, cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.1247,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.059 by at most 0.02 per hour","requested":0.1638,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low flat-ish price with no top hours now; B1 and B2 indoor near or above setpoint, B3 trim held; keep baseline cooling and idle batteries.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Prices are low and not at the top, so I hold most batteries and add a small grid charge to Building_1, which is near its floor, ahead of the 16-18h price peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 is 2.2C above setpoint so cooling stays at baseline; batteries hold at zero since top price is not active and grid charging is not needed at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled? No, it is 1.41C warm so no trim; batteries charge gently in cheap hour per strategy, DHW idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the 13-15h top price: charge all three batteries at 0.15 per the strategy; room cooling and hot water stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed; battery charging at strategy level in cheap hour, tanks idle, cooling baseline kept since Building_1 is only 0.62 above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed; follow strategy battery charge of 0.15, no cooling trim since rooms are warm, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6 is cheap and low-carbon, top price starts at hour 10; keep the strategy charge, cooling near baseline, and no tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; charge batteries gently per strategy, keep cooling near baseline, no DHW, and avoid overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 8 is not top-price and tariff is low, so hold batteries per strategy; trims are zero as rooms are near setpoint, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries and cooling at baseline: no overcooling, price not at top, and district load is well below the peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling not triggered; kept baseline cooling, followed battery strategy (store spare solar), no tank charging, no grid charging at the current low price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling at baseline, no overcooling; batteries follow strategy, charging modestly in cheap hours before top-price hours 5-7; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 12 is not top price; trim cooling in overcooled occupied Building_1 and follow strategy battery charging within grid_charging_ok limits.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 13 is cheap and not top price; keep baselines, mild trim for overcooled occupied Building_1, store spare solar via strategy battery actions.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled slightly; hold baseline cooling, battery follows strategy, price is low so store modestly, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour before top-price hours 1-3: B3 tops up gently to about 0.95, others hold; cooling stays at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; Building_3 is overcooled by 0.62 C so cooling trimmed slightly; others keep baseline.","status":"ok"},{"clamps":[{"applied":0.5916,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.7 C, trim held at 0.012","requested":0.6039,"rule":"trim_hold"}],"fallback":null,"reason":"Holding the battery for the top-price hours at the strategy discharge rates; cooling and tank stay at baseline or held trim, no grid charging.","status":"clamped"},{"clamps":[{"applied":0.729,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.012","requested":0.7413,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour with no later top hours, so discharge batteries per strategy; ease Building_1 cooling for overcooling; hold Building_3 trim.","status":"clamped"},{"clamps":[{"applied":0.2797,"point":"Building_1.cooling","reason":"indoor 26.3 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.034","requested":0.3133,"rule":"trim_hold"},{"applied":0.553,"point":"Building_3.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.012","requested":0.5653,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries follow strategy discharge over top-price hours; cooling and DHW hold baseline or held trims to stay within comfort and envelope limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge battery per strategy; deepen overcooled rooms' trim in Buildings 1 and 3; hold Building 2 at baseline.","status":"ok"},{"clamps":[{"applied":0.1418,"point":"Building_1.cooling","reason":"indoor 26.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.034","requested":0.1759,"rule":"trim_hold"},{"applied":0.2454,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.093","requested":0.338,"rule":"trim_hold"}],"fallback":null,"reason":"Holding held cooling trims and discharging batteries evenly over the two remaining top-price hours, keeping district load under the peak target.","status":"clamped"},{"clamps":[{"applied":0.1313,"point":"Building_1.cooling","reason":"indoor 26.7 C is within 0.5 C of the setpoint 27.2 C, trim eases off from 0.034 by at most 0.02 per hour","requested":0.1454,"rule":"trim_hold"},{"applied":0.1628,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.093","requested":0.2554,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour with little usable charge: discharge the remaining battery as the strategy says, keep cooling trims held, and leave the tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0972,"point":"Building_1.cooling","reason":"indoor 26.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.014","requested":0.1113,"rule":"trim_hold"},{"applied":0.0997,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.093 by at most 0.02 per hour","requested":0.1723,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle per strategy; trims held, Building_1 eases toward setpoint, Building_3 trim held; no tank or battery action.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 cooling near baseline with trims held; no DHW, no top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; no room is overcooled, so cooling and tank stay at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 0.31 C below setpoint but not past 0.5 C, so baseline cooling holds.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling kept at baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as suggested, cooling at baseline since no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 0.48C above setpoint so cooling stays at baseline; dhw held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries stay idle; cooling near baseline since rooms are within band and no trim is warranted.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling near baseline, tanks idle, Building_1 is 0.85C above setpoint so no overcooling trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price with no top-price hours, so batteries stay idle; all rooms are warm, so cooling and tanks keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price day with no top-price hours and rooms within band; holding baseline cooling, idle batteries and tanks, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline, no overcooling, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; cooling at baseline since no building is overcooled beyond 0.5 C; dhw stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 and Building_3 cooling at baseline; Building_2 is warm so baseline cooling kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; battery idle, Building_1 slightly cold so keep baseline cooling, peak headroom is zero so no grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top hours; overcooling none, Building_2 warm so baseline cooling; battery idle per flat_24h, DHW idle, follow baseline and strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery idles; cooling follows baseline since no building is overcooled beyond 0.5 C; DHW stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building_1 and 2 at baseline cooling; Building_3 uses its small strategy discharge to shave the district peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price, no top-price hours, so battery idle; cooling near baseline since rooms within band; Building 1 is 1.9C below setpoint but cooling is baseline-limited, no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so battery idle; Building_1 and 2 overcooled? No, Building_1 is 2.3C below setpoint so cooling trimmed; peak limiter active, district load near target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; Building_1 and 2 are cold/warm within band, keep baseline cooling; Building_3 slightly cool so keep baseline; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 2.1C below setpoint so trim cooling slightly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.1638,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.7 C, trim held at 0.055","requested":0.2,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 1.42C below setpoint so cooling trimmed slightly deeper, others at baseline.","status":"clamped"},{"clamps":[{"applied":0.1317,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.6 C, trim held at 0.055","requested":0.1868,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling baselines kept, Building_1 trim held as overcooled room eases toward setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; cooling follows baseline, Building_1 trim held as room is only 0.85 C above setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is 2.09 C below setpoint and occupied, so hold its trim and keep cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.8 C below setpoint but occupied within band, so cooling held at baseline with no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling holds baseline since Building_1 is only 1.57C below setpoint with trim held at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 1.6C below setpoint and occupied, so hold its cooling trim at baseline without extra depth.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 1.53C below setpoint so trim cooling slightly, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 is 0.98 C below setpoint so cooling trimmed modestly, others held at baseline.","status":"ok"},{"clamps":[{"applied":0.0922,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.032","requested":0.124,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline since Building_1 is only 0.82 C under and Building_2 is above setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.6C below setpoint so trim held at -0.032; batteries idle as price is flat-ish and no top-price hour now; tanks idle.","status":"ok"},{"clamps":[{"applied":0.1478,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.033","requested":0.1803,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; B1 is 0.76C below setpoint, trim held at -0.033 is fine; batteries idle as price is not at top and charging is marginal.","status":"clamped"},{"clamps":[{"applied":0.0844,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.1169,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled by 2.08C so trim held; flat-ish prices, store spare solar only, no grid charging, no tank use.","status":"clamped"},{"clamps":[{"applied":0.1477,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.18,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held for Building_1 overcooling; battery idle-ish, store spare solar, price flat-ish so no grid charging; tanks stay at 0.","status":"clamped"},{"clamps":[{"applied":0.2171,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 trim held; price flat-ish now, not top; store spare solar only; no grid charging, tanks idle, cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.32,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.033","requested":0.33,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 0.57C below setpoint, so trim cooling slightly; batteries held per strategy since no top-price hour now and grid charging is cheap-hour only.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 0.83C below setpoint, so trim cooling; hold batteries near strategy since peak headroom is zero and prices nearly flat.","status":"ok"},{"clamps":[{"applied":0.4986,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.5583,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries and use baseline cooling; Building 1 is overcooled so a small trim is held, no top-price hour now, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed deeper; the other buildings and batteries hold baseline since prices are not at the top and charging is not worthwhile now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cold and below its comfort band, so its trim ends; Building_3 gets a small overcool trim; batteries and tanks hold because peak headroom is near zero.","status":"ok","trim_ends":[{"building":"Building_1","reason":"room below comfort band, end held trim"}]},{"clamps":[],"fallback":null,"reason":"Holding baselines: no top-price hour now and batteries hold only tiny usable charge. Building_3 is cold and below its comfort band, so its cooling trim is ended.","status":"ok","trim_ends":[{"building":"Building_3","reason":"indoor below comfort band, ending cooling trim"}]},{"clamps":[],"fallback":null,"reason":"Cool at baseline since rooms are near setpoint; no trim. Battery idle: grid charging is not useful now, top price hours ahead and usable charge is tiny; tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and top-price hours are ahead; battery soc is near floor so charge is tiny, and baseline cooling is kept since all rooms are within band.","status":"ok"},{"clamps":[{"applied":0.2848,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.285,"rule":"comfort"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled-free (indoor below setpoint by ~2C); trim is held at 0 since no trim exists yet; prices are not top, batteries hold, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but its comfort band edge rule holds cooling at baseline; batteries idle as price is not top and charging is marginal; hold baselines.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 23 is low-price with no top-price hours now; hold batteries, trim overcooled Building_1 slightly, keep the others at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed; small battery charging in the cheap hour builds toward the 16-18h top price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are slightly warm so baseline cooling holds; batteries idle per strategy since price is low and not top, and no grid charging needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 2 is a low-price hour with grid charging allowed, so I store a small amount in each battery; cooling stays at baseline since rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.66C, so trim cooling; hold batteries at strategy charge since grid charging is ok and price is low-cost hour.","status":"ok"},{"clamps":[{"applied":0.1047,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.100","requested":0.2047,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled 0.74C below setpoint so trim held at -0.1; follow strategy battery charging in cheap hour, no top price now.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the top-price window: charge batteries at 0.15, trim overcooled Building_3 to zero cooling, and ease Building_1 cooling to its held trim.","status":"ok"},{"clamps":[{"applied":0.0943,"point":"Building_1.cooling","reason":"indoor 22.2 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1543,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price hours 10-12; keep strategy charging, trim cooling only where overcooled, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is slightly overcooled, so trim cooling a little; battery charges gently in this cheap hour per strategy, and no tank charging.","status":"ok"},{"clamps":[{"applied":0.1581,"point":"Building_1.cooling","reason":"indoor 22.2 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.050 by at most 0.02 per hour","requested":0.1885,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling slightly, Building_2 cooling held at baseline, and follow strategy battery charging in cheap clean hours; no tank use.","status":"clamped"},{"clamps":[{"applied":0.2571,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.030 by at most 0.02 per hour","requested":0.2675,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 slightly overcooled so trim held; batteries follow strategy, price not top now, charging modestly; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.22,"point":"Building_1.cooling","reason":"indoor 21.1 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.010","requested":0.2304,"rule":"trim_hold"}],"fallback":null,"reason":"Follow strategy battery charge at low price; trim Building_2 cooling for overcooling; keep Building_1 at baseline since it is cool; Building_3 unoccupied.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2 C below setpoint so trim cooling deeper within limits; batteries charge gently in cheap hours per strategy; no top price now, tanks idle.","status":"ok"},{"clamps":[{"applied":0.1534,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.108","requested":0.262,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling modestly in overcooled occupied Building_1, hold battery charge near strategy values, no tank charging, keep load under peak target.","status":"clamped"},{"clamps":[{"applied":0.2457,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.108 by at most 0.02 per hour","requested":0.3338,"rule":"trim_hold"}],"fallback":null,"reason":"Top price not active now; hold battery per strategy, let baseline cooling run, trim held for Building_1 overcooled, no DHW.","status":"clamped"},{"clamps":[{"applied":0.3391,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.088","requested":0.4272,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and near-full batteries; Building_3 gently charges its battery in this cheap, clean hour ahead of the top-price hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak headroom is zero and price is not top now; Building_1 overcooled slightly, trim held. Battery follows strategy shaving peak; no grid charging at this load.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim overcooled occupied rooms 1 and 3 toward setpoint, hold batteries to discharge into the top-price hours as the strategy indicates, and leave Building 2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, hold cooling trims as held, leave tanks idle and no grid charging.","status":"ok"},{"clamps":[{"applied":0.4204,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5207,"rule":"trim_hold"},{"applied":0.4028,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5031,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries at strategy levels, keep held cooling trims, leave tanks idle; grid charging is not allowed.","status":"clamped"},{"clamps":[{"applied":0.4075,"point":"Building_1.cooling","reason":"indoor 22.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.45,"rule":"comfort"},{"applied":0.3819,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4822,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool and below band so cooling eases above baseline; others hold; batteries idle until top-price hours, dhw stays at 0.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, ease trim"}]},{"clamps":[],"fallback":null,"reason":"Building_1 and 3 are overcooled slightly, but envelope holds trim; price not top now, batteries idle per strategy; cooling trims kept at baseline, no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed; batteries and tanks hold per strategy with no top-price hour now.","status":"ok"},{"clamps":[{"applied":0.0879,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.1876,"rule":"trim_hold"},{"applied":0.3267,"point":"Building_3.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.061","requested":0.3879,"rule":"trim_hold"}],"fallback":null,"reason":"Peak limiter is on with no headroom, so no charging; small battery discharges shave load and cooling holds the envelope trims.","status":"clamped"},{"clamps":[{"applied":0.0757,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1554,"rule":"trim_hold"},{"applied":0.1368,"point":"Building_3.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 23.8 C, trim held at 0.061","requested":0.198,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 23 at low price with no top-price hours now; keep batteries at baseline, trim cooling as envelope allows, and avoid DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2561,"point":"Building_1.cooling","reason":"indoor 24.5 C is near the top of the comfort band, cooling held at the baseline","requested":0.256,"rule":"comfort"},{"applied":0.0194,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.061","requested":0.081,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near floor, no top price now; cooling near baseline, trims held; no grid charging at mid price; DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0224,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.061 by at most 0.02 per hour","requested":0.0636,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled slightly; hold trims, batteries idle as strategy suggests since price is cheap now and top hours ahead, small SOC so no charge needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy says; price is low and not top, so no discharge, and charging is not needed yet. Cooling near baseline, room within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.24C but trim held at 0 and cooling is near baseline; battery follows strategy charge while grid charging is ok in a cheap hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now; follow strategy battery charge of 0.15 in all buildings, keep cooling at baseline and tanks idle, Building_1 not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and clean; charge batteries gently toward top-price hours 11-13 and keep cooling near baseline, no trim as no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 10-12h ahead; charge batteries gently now at low price, keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 7 is cheap, not top price; grid charging is allowed, so follow strategy charging, hold cooling near baseline, and skip DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.85 C overcooled, so its cooling is trimmed slightly; other buildings and batteries hold baseline, since no top-price hour is active.","status":"ok"},{"clamps":[{"applied":0.0517,"point":"Building_1.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.052,"rule":"comfort"},{"applied":0.017,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0517,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets trim held; batteries follow strategy (store solar, price not top); no grid charging, no tank use.","status":"clamped"},{"clamps":[{"applied":0.0773,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.112,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 and 2 top up batteries gently in this cheap, clean hour before top prices at hours 6-8; Building 3 follows its strategy; cooling kept at baseline or held trim.","status":"clamped"},{"clamps":[{"applied":0.15,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.1847,"rule":"trim_hold"}],"fallback":null,"reason":"Holding all batteries and tanks at baseline; Building_1 trim is held at its envelope limit while the room is 0.53 C below setpoint, and no price or peak trigger applies.","status":"clamped"},{"clamps":[{"applied":0.2361,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.2708,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so its held trim is kept; batteries and tanks hold since no top-price hour is now and the peak headroom is ample.","status":"clamped"},{"clamps":[{"applied":0.3069,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.31,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries: price not at top, next top hours ahead; trim B1 cooling slightly for overcooling, others follow baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.1 C so its cooling is trimmed deeper; Building 3 charges per strategy before the top-price hours; the rest keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied Building_1 trimmed cooling; all batteries charge gently ahead of the top-price hours 1-3 using strategy values; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining top-price hours per strategy; B1 cooling trimmed slightly for overcooling; no grid charging.","status":"ok"},{"clamps":[{"applied":0.6148,"point":"Building_1.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.079","requested":0.6938,"rule":"trim_hold"}],"fallback":null,"reason":"Battery discharges on top-price hours per strategy; B1 cooling held at trim, others at baseline to stay within comfort and peak limits.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is below its comfort band so its trim ends and cooling returns to baseline; batteries discharge on the top-price hours per strategy.","status":"ok","trim_ends":[{"building":"Building_1","reason":"indoor below comfort band, end trim"}]},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are cool-side near or beyond band edges, so cooling stays at baseline; batteries and tanks hold per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 2.7C below setpoint; trim cooling modestly and hold batteries idle as prices are not top now.","status":"ok"},{"clamps":[{"applied":0.2472,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; B1 overcooled 2.07C below setpoint so trim cooling slightly deeper; no top price now, district load below target.","status":"clamped"},{"clamps":[{"applied":0.2287,"point":"Building_1.cooling","reason":"indoor 22.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.229,"rule":"comfort"},{"applied":0.1612,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2287,"rule":"trim_hold"},{"applied":0.6266,"point":"Building_3.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.627,"rule":"comfort"}],"fallback":null,"reason":"Hold batteries as strategy suggests; trim cooling in overcooled occupied Building_1 by holding trim; no tank charging; price not top now.","status":"clamped"},{"clamps":[{"applied":0.1062,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero, so I follow the peak-shaving battery discharge, keep cooling at baseline and hold DHW at zero.","status":"clamped"},{"clamps":[{"applied":0.129,"point":"Building_3.cooling","reason":"indoor 20.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.27,"rule":"comfort"}],"fallback":null,"reason":"Building_3 is overcooled and below its comfort band, so cooling is raised; batteries hold per strategy until the top-price hours 16-18.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are overcooled-free (within band), batteries near floor and price not top; hold baseline cooling and idle batteries and tanks this hour.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are near setpoint so baseline cooling holds; batteries idle as strategy says, price is low and not top-price, no clear reason to differ.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean; charge batteries gently toward the top-price window, keep cooling at baseline since rooms are not overcooled, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.44C below setpoint so trim cooling; hold battery charge at strategy level in cheap hour, no tank charging, no top-price discharge now.","status":"ok"},{"clamps":[{"applied":0.0782,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.052","requested":0.1,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling for overcooled Building_1 per envelope; keep strategy battery charging in cheap hour; no tank charging; grid charging allowed.","status":"clamped"},{"clamps":[{"applied":0.0878,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.052 by at most 0.02 per hour","requested":0.1194,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 6 is cheap and not top-price; charge batteries gently per strategy, keep cooling near baseline, and trim B1 cooling as held.","status":"clamped"},{"clamps":[{"applied":0.1134,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.125,"rule":"trim_hold"}],"fallback":null,"reason":"Price is low and top-price hours are 9-11 ahead; charge batteries gently per strategy, cooling near baseline with Building_1 trim held, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries: price is low now and not top; B1 mildly cooled, B2 is warm so cooling kept at baseline, DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort bands and no top-price hour is active, so I keep baseline cooling and hold the batteries as strategy suggests.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 2.63C below setpoint and occupied, so it gets a cooling trim; batteries follow strategy, charging cheap-hour spare solar, no tank charging.","status":"ok"},{"clamps":[{"applied":0.0672,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.066 by at most 0.02 per hour","requested":0.1131,"rule":"trim_hold"}],"fallback":null,"reason":"Store spare solar in batteries, no grid charging at this non-top price; hold tanks idle; keep cooling near baseline with small trim in Building_1.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline, store spare solar, no grid charging at this low price; Building_1 trim eases per envelope; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding baseline cooling since no room is overcooled; charging B2 and B3 batteries gently in this cheap, clean hour before the top-price hours at 3-5.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding baseline cooling since no room is overcooled; battery follows the strategy, with Building_3 gently charging in the cheap hour ahead of the top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours: follow strategy battery charging, keep baseline cooling since trims are negligible, and leave DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms 1 and 3 trimmed cooling; battery discharges over the top-price hours per strategy; building 2 unoccupied, cooling kept at baseline.","status":"ok"},{"clamps":[{"applied":0.5568,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.061","requested":0.6182,"rule":"trim_hold"},{"applied":0.5384,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.084","requested":0.6226,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, hold cooling at baseline with held trims, no grid charging or tank use.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get deeper cooling trims, batteries follow the strategy discharge in the top-price hours, and tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cooling trimmed for overcooled Building_1 and Building_3 (occupied, below setpoint); Building_2 is warm and in band, so baseline; batteries and tanks held idle.","status":"ok"},{"clamps":[{"applied":0.3078,"point":"Building_3.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.394,"rule":"trim_hold"}],"fallback":null,"reason":"No top-price hour now and batteries are near floor, so they stay idle; trim cooling only where overcooled and hold baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.2625,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3629,"rule":"trim_hold"},{"applied":0.2624,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.3486,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baseline cooling with held trims, batteries idle as strategy says, no top price now and no cheap charge window yet; tanks stay at zero.","status":"clamped"},{"clamps":[{"applied":0.1766,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.263,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; trim cooling for overcooled Buildings 1 and 3 per held trims; no DHW; price not top now.","status":"clamped"},{"clamps":[{"applied":0.1106,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.211,"rule":"trim_hold"},{"applied":0.2576,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.086","requested":0.3435,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; top price hours ahead at 17-19, cooling trims held, B1 and B3 slightly overcooled so ease cooling a bit.","status":"clamped"},{"clamps":[{"applied":0.085,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.12,"rule":"trim_hold"},{"applied":0.0489,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.086","requested":0.105,"rule":"trim_hold"}],"fallback":null,"reason":"Trim cooling in overcooled occupied rooms per envelope; hold batteries (no top price now, grid charging at low price is marginal); tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Off-peak hour: small grid charge on all three batteries ahead of top-price hours 15-17, differing from the hold strategy; cooling and tanks kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling, cut none since rooms are near setpoint; charge batteries gently in cheap hour per strategy, no tank use, no end trims.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before top-price block at 13-15h; charge batteries gently, keep cooling near baseline, no DHW, trims held.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.96C below setpoint and occupied, so trim cooling modestly; keep batteries at strategy charge in cheap hour before the 12-14h top price.","status":"ok"},{"clamps":[{"applied":0.0873,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.055 by at most 0.02 per hour","requested":0.1222,"rule":"trim_hold"}],"fallback":null,"reason":"Charge batteries gently in cheap, clean early hour before top-price window; cooling near baseline with building 1 trim held; no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour before the top-price window: keep the strategy battery charge of 0.15 in each building, hold tanks at 0, and leave cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baselines on cooling; Building_1 is near setpoint, so no trim; battery follows strategy charging in cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.02 C from setpoint, so no trim; batteries follow strategy, cooling at baseline, tank idle, load is under target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline; B1 slightly cold so no trim; top price ahead at hours 7-9, so store small charge now per strategy and hold batteries.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled but the envelope blocks deeper cooling near its band edge, so baseline holds; Building_3 charges per strategy before top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cool baselines kept; rooms are within band. Charge Building_3 gently per strategy in this cheap hour before top-price hours; others near full.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trims are unneeded (rooms near setpoint), battery follows strategy with cheap-hour charging held; tank idle, cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its cooling is trimmed; batteries hold charge for the 3-5h top-price window, with Building 3 charging gently at low price.","status":"ok"},{"clamps":[{"applied":0.1016,"point":"Building_1.cooling","reason":"indoor 25.8 C is more than 0.5 C below the setpoint 26.7 C, trim held at 0.085","requested":0.1867,"rule":"trim_hold"}],"fallback":null,"reason":"Holding B1 cooling trim, batteries near 0.95 for top-price hours 2-4, B3 gentle charge per strategy, no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.1282,"point":"Building_1.cooling","reason":"indoor 26.6 C is within 0.5 C of the setpoint 26.7 C, trim eases off from 0.085 by at most 0.02 per hour","requested":0.1933,"rule":"trim_hold"}],"fallback":null,"reason":"Trims held in comfort band; B1 and B2 batteries near 0.95, B3 takes small solar-backed charge; holding storage for top-price hours 1-3 ahead.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy_battery, trim overcooled occupied Building_3 slightly, keep tanks idle, no grid charging.","status":"ok"},{"clamps":[{"applied":0.5914,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.015","requested":0.6061,"rule":"trim_hold"}],"fallback":null,"reason":"Top price now: discharge batteries evenly over remaining top hours; hold cooling near baseline, keep trims, no grid charging or DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Discharging batteries across top-price hours per strategy; deepening Building_3 cooling trim since it is overcooled and occupied.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Holding batteries since no top-price hour is now and the district is near peak; Building 3 is overcooled so its cooling trim is held at -0.1.","status":"ok"},{"clamps":[{"applied":0.3667,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.4471,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero and top price is not now; battery discharge per strategy shaves peak, cooling near baseline, no dhw.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get trimmed cooling per the envelope; batteries follow strategy_battery to shave the peak, with Building_2 left at baseline.","status":"ok"},{"clamps":[{"applied":0.1968,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.080","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries (price not top, low usable charge); trim cooling mildly where overcooled, hold tanks at 0 and keep baseline cooling elsewhere.","status":"clamped"},{"clamps":[{"applied":0.1376,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.072","requested":0.2094,"rule":"trim_hold"},{"applied":0.1691,"point":"Building_3.cooling","reason":"indoor 23.7 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.2295,"rule":"trim_hold"}],"fallback":null,"reason":"Trims are held in code and rooms are near setpoint, so baseline cooling stands; batteries hold per strategy since no top-price hour is now.","status":"clamped"},{"clamps":[{"applied":0.1113,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.072 by at most 0.02 per hour","requested":0.1631,"rule":"trim_hold"},{"applied":0.0578,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1182,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, low-carbon hour before the 16-18h top price: charge all three batteries at 0.15, keep cooling trims and tanks at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 and Building_3 trims held; battery charging in cheap hour per strategy, cooling kept near baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent (all rooms within 0.7C of setpoint); follow strategy battery charging in cheap hour, cooling at baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour, no top price now; keep strategy battery charge, cooling at baseline since B1 is 0.63C below setpoint only mildly, hold DHW at 0.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling trim not needed (B1 0.73 below setpoint, trim held 0); battery charging is cheap and clean, so keep strategy charge; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling none; B1 slightly under setpoint so keep baseline cooling; batteries follow strategy charge in cheap hour, tanks idle, B2/B3 as strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled 0.92C below setpoint, so trim cooling; top price is 10-12h ahead, so keep the battery plan and follow strategy_battery.","status":"ok"},{"clamps":[{"applied":0.1154,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.127,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling trim held; top price is 9 hours ahead, so charge modestly now on cheap clean hours and keep dhw idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim held at zero, Building_1 and 2 near setpoint; top price hours ahead, so hold batteries; Building_3 follows strategy, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.56C under setpoint, so light trim; batteries follow strategy; headroom zero so no charging; top price not now.","status":"ok"},{"clamps":[{"applied":0.0907,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.030","requested":0.1211,"rule":"trim_hold"}],"fallback":null,"reason":"Building_2 is overcooled? No: it is 1.87C warm, so keep baseline cooling; hold batteries near strategy, no DHW, no trims since rooms are not overcooled.","status":"clamped"},{"clamps":[{"applied":0.1612,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.030 by at most 0.02 per hour","requested":0.172,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling for overcooling, hold batteries per strategy, keep tanks idle; top-price hours are ahead so charge gently and avoid grid peaks.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Indoor temperatures are within band and prices are not at the top, so baseline cooling holds and the cheap-hour battery charge from the strategy is kept.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 3 hours ahead; hold batteries, cool at baseline, charge gently now in cheap hour per strategy, no DHW, no trim since no overcooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 cooling for overcooling; gently charge Buildings 2 and 3 batteries in this cheap, clean hour before top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price run: keep strategy charging, hold Building 1 near 0.95 SOC, leave cooling at baseline and tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Discharging batteries over the remaining top-price hours per strategy; B1 overcooled 1.4C below setpoint so cooling trimmed slightly; tanks idle.","status":"ok"},{"clamps":[{"applied":0.5194,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.084","requested":0.6029,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries over the two top hours per strategy; trim overcooled Building_3 slightly; no grid charging or tank use.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours, so batteries discharge their usable charge; room trims deepened for overcooled occupied rooms.","status":"ok"},{"clamps":[{"applied":0.5236,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.6239,"rule":"trim_hold"}],"fallback":null,"reason":"Cool Building_1 deeper for overcooling, discharge Building_3 battery over the top-price hours per strategy, hold others at baseline.","status":"clamped"},{"clamps":[{"applied":0.2816,"point":"Building_1.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3812,"rule":"trim_hold"},{"applied":0.3738,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4741,"rule":"trim_hold"}],"fallback":null,"reason":"Holding overcooled trims and battery discharge at strategy levels for top-price hours; no grid charging or tank use.","status":"clamped"},{"clamps":[{"applied":0.1934,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.293,"rule":"trim_hold"},{"applied":0.265,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.3653,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge stored battery energy as per strategy, keep held cooling trims, leave tanks idle and avoid grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Final top-price hour: discharge all usable battery charge; keep held cooling trims; tank idle; no grid charging.","status":"ok"},{"clamps":[{"applied":0.1277,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.080","requested":0.2074,"rule":"trim_hold"},{"applied":0.1372,"point":"Building_3.cooling","reason":"indoor 23.7 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2175,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; buildings near setpoint, hold baseline cooling and no DHW, trims held.","status":"clamped"},{"clamps":[{"applied":0.0932,"point":"Building_1.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1529,"rule":"trim_hold"},{"applied":0.2607,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.321,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; cooling follows baseline with held trims, Building_1 and Building_3 are overcooled slightly so keep trim held.","status":"clamped"},{"clamps":[{"applied":0.0601,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1204,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle per strategy; Building_1 and Building_3 are overcooled slightly, so trims held at baseline with null for cooling.","status":"clamped"},{"clamps":[{"applied":0.0419,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.0822,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling and tanks keep baseline with held trims.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat 24h price, no top hours, so batteries idle; buildings near setpoint so cooling stays at baseline and dhw stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor and no top-price hours; hold batteries, keep baseline cooling since no building is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries near floor with tiny usable charge; hold batteries and tank, keep baseline cooling since no band edge is breached.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; hold batteries idle, keep cooling at baseline, no DHW, no trims since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 0.59 C below setpoint so trim cooling slightly, others keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is 0.02C above setpoint so no extra trim; Building_2 is hot, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.47C below setpoint so trim cooling modestly; others hold baseline.","status":"ok"},{"clamps":[{"applied":0.1459,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.186,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries near floor with little usable charge; hold batteries, keep cooling at baseline, trims held, no DHW.","status":"clamped"},{"clamps":[{"applied":0.1958,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.236,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; trim Building_1 held and cooling near baseline; no DHW; charge only spare solar at low carbon.","status":"clamped"},{"clamps":[{"applied":0.5587,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.040 by at most 0.02 per hour","requested":0.5788,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, battery idle; Building_1 overcooled 0.22C so trim held; district load at peak target so no added cooling or charging.","status":"clamped"},{"clamps":[{"applied":0.4407,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.020","requested":0.4608,"rule":"trim_hold"}],"fallback":null,"reason":"Flat-price day so batteries stay idle; Building_1 is cool and below its band, so baseline cooling is kept for the held trim, and other devices hold baseline.","status":"clamped"},{"clamps":[{"applied":0.3829,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 25.6 C, trim held at 0.020","requested":0.403,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is overcooled 2.7C below setpoint, so hold the trim and keep cooling near baseline with no extra trim.","status":"clamped"},{"clamps":[{"applied":0.2042,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2243,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 3.8C below setpoint, trim held at -0.02 so keep baseline cooling; no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2761,"point":"Building_1.cooling","reason":"indoor 25.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2962,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, peak headroom tiny (0.09 kWh); keep cooling near baseline, trim held, battery idle, tanks idle to avoid raising district peak.","status":"clamped"},{"clamps":[{"applied":0.3637,"point":"Building_1.cooling","reason":"indoor 25.1 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.37,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.1C so trim held deeper at -0.02 eased, cooling near baseline; no DHW charging.","status":"clamped"},{"clamps":[{"applied":0.2617,"point":"Building_1.cooling","reason":"indoor 24.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2818,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 2.65 C so trim held at -0.02, keep baseline cooling; peak headroom ok, dhw idle.","status":"clamped"},{"clamps":[{"applied":0.1853,"point":"Building_1.cooling","reason":"indoor 25.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2054,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price and no top-price hours, so batteries stay idle; indoor temperatures are near band edges, so cooling stays at baseline.","status":"clamped"},{"clamps":[{"applied":0.1885,"point":"Building_1.cooling","reason":"indoor 25.2 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.2086,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 and Building_3 are near comfort band edges, so baseline cooling is kept.","status":"clamped"},{"clamps":[{"applied":0.1139,"point":"Building_1.cooling","reason":"indoor 24.9 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.134,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; cooling baselines kept, Building_1 trim held at -0.02 since it is near setpoint, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0779,"point":"Building_1.cooling","reason":"indoor 25.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.098,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling follows baseline with Building_1 trim held as envelope allows.","status":"clamped"},{"clamps":[{"applied":0.0542,"point":"Building_1.cooling","reason":"indoor 25.7 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0743,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as strategy suggests, cooling at baseline with trims held, tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0376,"point":"Building_1.cooling","reason":"indoor 26.0 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.054,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is overcooled so trim held at -0.02 with cooling near baseline; others follow baseline.","status":"clamped"},{"clamps":[{"applied":0.0247,"point":"Building_1.cooling","reason":"indoor 26.2 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0448,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries hold, Building_1 overcooled 0.98 C so trim held at -0.02, others at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0151,"point":"Building_1.cooling","reason":"indoor 26.4 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0352,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling trims held near baseline since rooms are within 0.5C of setpoint.","status":"clamped"},{"clamps":[{"applied":0.0066,"point":"Building_1.cooling","reason":"indoor 26.6 C is more than 0.5 C below the setpoint 27.2 C, trim held at 0.020","requested":0.0267,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries stay idle; Building_1 is 0.58 C below setpoint so cooling is trimmed per envelope, others hold baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries idle; Building_1 is overcooled so trim cooling 0.02 below baseline, others hold baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; Building_1 overcooling is slight, so keep baseline cooling and no trim; tanks stay at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline, Building_2 overcooled trim not needed since unoccupied and warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries per strategy (flat price, no top hours); cool buildings near baseline, Building_1 slightly below setpoint so trim stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries near floor, no top price now, keep baseline cooling; Building_2 is 1.5C over setpoint so no trim needed beyond baseline, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are near setpoint and not overcooled, prices are flat-low, and no top-price hours are now, so all devices keep baseline and batteries hold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is flat-ish and not top now; hold batteries per strategy, cooling at baseline, Building_1 trim held at zero since not overcooled.","status":"ok"},{"clamps":[{"applied":0.3641,"point":"Building_2.cooling","reason":"indoor 26.7 C is near the top of the comfort band, cooling held at the baseline","requested":0.364,"rule":"comfort"}],"fallback":null,"reason":"Buildings are warm or near setpoint, so cooling stays at baseline; batteries hold since grid charging is cheap now but carbon is high and no top-price discharge is due.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Peak is at target with no headroom, so no charging; Building_3 shaves its small battery discharge and cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_2 is over its band so cooling is raised slightly; other buildings hold baseline, batteries idle as strategy suggests with no top-price hour now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries near floor, follow baseline cooling; Building_1 is 0.91 above setpoint so no overcool trim; price not top now, so no discharge or charge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are overcooled by 3.5 C and 3.5 C, but envelope trims are off; keep baseline cooling, idle batteries, tanks at 0; price not top now, grid charging minimal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 2 are far above setpoint so keep baseline cooling; batteries have ~0 usable charge and price is not top, so hold batteries idle and no tank action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All three rooms are warm, so cooling stays at baseline; batteries hold near floor with low price now and no grid charging yet, to build charge for the 22-24h top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: small battery charge ahead of the 21-23h top-price window; cooling kept at baseline since all rooms are warm.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are warm, not overcooled, so cooling stays at baseline; batteries and tanks hold since no top-price window is now and usable charge is minimal.","status":"ok"},{"clamps":[],"fallback":null,"reason":"All rooms are too warm, so cooling stays at baseline with no trim; batteries hold since prices are low and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Indoor temps are above setpoint so no overcooling trim; batteries near floor with tiny usable charge and price not top, so hold batteries and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 2 are warm and occupied, so cooling is raised toward comfort; batteries held per strategy since usable charge is minimal and no top-price window is active.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled about 1.2 C, so cooling is trimmed to 0.01; other buildings and batteries hold baseline since prices are low and carbon is high now.","status":"ok"},{"clamps":[{"applied":0.234,"point":"Building_1.cooling","reason":"indoor 24.9 C is near the top of the comfort band, cooling held at the baseline","requested":0.2,"rule":"comfort"},{"applied":0.1999,"point":"Building_2.cooling","reason":"indoor 26.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.18,"rule":"comfort"}],"fallback":null,"reason":"Buildings 1 and 2 are overcooled, so trim cooling modestly; batteries idle as price is not top; no grid charging, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging allowed: small battery top-up toward 0.95 before the 14-16h top-price window; cooling kept at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is a cheap, low-carbon hour; keep the strategy battery charge small, cooling near baseline, and tank idle, with no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price block at 12-14h; follow strategy charge, keep cooling near baseline, no overcooling since rooms are within band and not too cold.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 5 is cheap and clean, so charge batteries gently per strategy; Building_1 is slightly cool, so keep baseline cooling and no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent; Building_1 cooling is at baseline, batteries follow strategy charge in cheap hour, no DHW, price not top now.","status":"ok"},{"clamps":[{"applied":0.3332,"point":"Building_2.cooling","reason":"indoor 26.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.333,"rule":"comfort"}],"fallback":null,"reason":"Overcooling trim cuts B1 cooling; batteries charge gently in cheap hour, no DHW; B2 warm so baseline cooling kept.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy suggests; price not at top now, no cheap-hour charge needed; keep cooling at baseline and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed; batteries 1 and 3 start a small grid charge ahead of the top-price hours 7-9.","status":"ok"},{"clamps":[{"applied":0.0082,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.078","requested":0.0858,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool near its band edge so cooling stays at baseline; batteries hold except B1 storing spare solar; no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.084,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.078 by at most 0.02 per hour","requested":0.1416,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests since price is not top now; cool B1 and B2 near baseline, B3 unoccupied at baseline, keep DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1674,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.058 by at most 0.02 per hour","requested":0.205,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says: price not at top now, and top hours ahead; keep cooling near baseline with held trims, no DHW.","status":"clamped"},{"clamps":[{"applied":0.2603,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.5 C, trim eases off from 0.038 by at most 0.02 per hour","requested":0.278,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held for overcooled B1; batteries follow strategy; top price is 3h ahead so B1 and B3 charge gently, B2 idle, tanks at 0.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled so cooling is trimmed deeper; batteries charge gently in this cheap hour ahead of the top-price hours; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is unoccupied and near setpoint; hold baseline. Battery charging at strategy levels in cheap hour before top prices; no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the remaining top-price hours; cooling and DHW stay at baseline, no comfort trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries per strategy, hold cooling at baseline since rooms are not occupied or only mildly cool; no DHW or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over remaining top-price hours; cooling kept at baseline near comfort edges; tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trimmed cooling in occupied overcooled rooms 1 and 3 per the trim rule; batteries and tanks held as strategy advises, since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.301,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.092","requested":0.3928,"rule":"trim_hold"},{"applied":0.1628,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.073","requested":0.2363,"rule":"trim_hold"}],"fallback":null,"reason":"Holding batteries and tanks at baseline; Building_1 is overcooled by 1.6 C so its held cooling trim stays in place, and the district is under its peak target.","status":"clamped"},{"clamps":[{"applied":0.0838,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.12,"rule":"trim_hold"},{"applied":0.134,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.073","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Buildings 1 and 3 get trimmed cooling; batteries held at strategy (price not top, grid charging not cheap enough); DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1202,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 cooling trims held as overcooled rooms ease off; batteries held per strategy, load below peak target.","status":"clamped"},{"clamps":[{"applied":0.1407,"point":"Building_1.cooling","reason":"indoor 22.3 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.141,"rule":"comfort"},{"applied":0.0489,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.1407,"rule":"trim_hold"},{"applied":0.1019,"point":"Building_3.cooling","reason":"indoor 23.6 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.053 by at most 0.02 per hour","requested":0.135,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets deeper trim per envelope; batteries follow strategy, charging modestly in cheap hour before top-price 17-19; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0109,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.103,"rule":"trim_hold"},{"applied":0.0302,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.034","requested":0.064,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled rooms in B1 and B3 get trims held; B2 is warm so baseline cooling; batteries charge gently in cheap hour per strategy, grid charging ok.","status":"clamped"},{"clamps":[{"applied":0.0415,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.034 by at most 0.02 per hour","requested":0.055,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price hours 15-17: charge batteries at 0.15 per hour, keep cooling at baseline since rooms are warm or near setpoint.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour before the 14-16h top price: gently charge batteries per strategy and keep cooling at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean with top-price hours at 13-15 ahead; charge batteries gently and keep cooling near baseline, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.5C below setpoint: trim cooling deeper; batteries follow strategy, charging in cheap hour before top price at 12-14.","status":"ok"},{"clamps":[{"applied":0.0678,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.063","requested":0.1304,"rule":"trim_hold"}],"fallback":null,"reason":"Trim-free cooling near baseline, hold batteries at strategy values since top price is 11+ hours away; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.0721,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.063 by at most 0.02 per hour","requested":0.1147,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling by held trim, keep batteries near strategy values; top price hours ahead at 10-12 so hold charge; no tank use.","status":"clamped"},{"clamps":[{"applied":0.0851,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.043 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"},{"applied":0.0087,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.03,"rule":"soc"},{"applied":0.0069,"point":"Building_2.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.03,"rule":"soc"}],"fallback":null,"reason":"Hold cooling near baseline with a small trim in Building_1, store spare solar in batteries, no tank use, and follow strategy_battery in Building_3 at a cheap clean hour.","status":"clamped"},{"clamps":[{"applied":0.1035,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.023 by at most 0.02 per hour","requested":0.1061,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero, so I discharge batteries per strategy to shave load; cooling and DHW stay at baseline since no room is overcooled.","status":"clamped"},{"clamps":[{"applied":0.0842,"point":"Building_1.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.003","requested":0.0868,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 9 is not top price; hold strategy battery charge, cool baseline, trim easing per envelope, no tank use, charge batteries modestly in cheap hour.","status":"clamped"},{"clamps":[{"applied":0.0243,"point":"Building_1.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.003","requested":0.0269,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and the strategy battery charge; the cool occupied room in Building_1 is outside its band, so no trim applies.","status":"clamped"},{"clamps":[{"applied":0.0421,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.003","requested":0.045,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled so trim held; batteries follow strategy, top price hours ahead, charging in cheap hours; tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0696,"point":"Building_3.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"}],"fallback":null,"reason":"Building 1 is overcooled, so cooling is trimmed; Buildings 2 and 3 charge batteries in the cheap hours before the price peak.","status":"clamped"},{"clamps":[{"applied":0.0706,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.039 by at most 0.02 per hour","requested":0.0895,"rule":"trim_hold"},{"applied":0.0692,"point":"Building_2.battery","reason":"charge would take charge from 0.88 above 0.95","requested":0.07,"rule":"soc"},{"applied":0.0389,"point":"Building_3.battery","reason":"charge would take charge from 0.91 above 0.95","requested":0.04,"rule":"soc"}],"fallback":null,"reason":"Holding most batteries near baseline; small grid top-up for Building_2 and Building_3 ahead of the 3-5h top-price hours, no tank charging, cooling at baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 1.2 C below setpoint, so its cooling is trimmed deeper; batteries hold near 0.95 SOC and no top-price hour is now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"District load is at the peak target, so I follow the strategy battery discharges to shave the peak; comfort is within band and cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries evenly over remaining peak hours, trim overcooled occupied Building_1 slightly, keep tanks idle and no grid charging.","status":"ok"},{"clamps":[{"applied":0.1322,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.015","requested":0.1469,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: follow strategy battery discharges across top hours; keep cooling near baseline, no tank action, no grid charging since grid_charging_ok is false.","status":"clamped"},{"clamps":[{"applied":0.1259,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.015","requested":0.1406,"rule":"trim_hold"}],"fallback":null,"reason":"Following strategy battery discharge for top-price hours; cooling at baseline since no room is overcooled beyond 0.5 C, and load is under the peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_3 is overcooled by 0.93 C, so its cooling is trimmed to 0.077; batteries hold for the 21-23h top-price window and other devices stay at baseline.","status":"ok"},{"clamps":[{"applied":0.0382,"point":"Building_3.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.043","requested":0.0814,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price and no trim needed; B1 and B3 slightly cool, holding baseline; batteries idle as strategy says, top hours 20-22 ahead.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"B1 is overcooled by 0.66 C so cooling is trimmed to 0.068; B3 follows its held trim; batteries and tanks hold since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.0752,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.023 by at most 0.02 per hour","requested":0.0784,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings near setpoint, no top price now; hold batteries per strategy, cooling at baseline, no tank charging, no trim changes needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold batteries as strategy says; no top price now, cheap hours ahead. Cooling near baseline, rooms within band, trims held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is low and not top; charge batteries gently in this cheap hour as strategy suggests, cooling kept at baseline since Building_2 is warm and others near band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak and low carbon: charge batteries gently ahead of the 15-17h top-price hours, keep cooling at baseline, and leave the hot water tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price block at 14-16h; charge batteries gently, keep cooling at baseline, tanks idle, no trim needed as rooms are near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 3 is cheap and clean with no top price ahead until 13h; keep baseline cooling, charge batteries gently at strategy level, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled 0.95C but not beyond 0.5C band edge trigger; hold baseline cooling, follow strategy battery charging in cheap hours before top price at hour 12.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.82 C under setpoint so trim cooling slightly; batteries follow strategy charging in cheap hour, no top price now, peak headroom ample.","status":"ok"},{"clamps":[{"applied":0.1022,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.029","requested":0.1308,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled within the held trim, so cooling stays with the envelope; batteries follow strategy charge in this cheap hour, with the tanks left at zero.","status":"clamped"},{"clamps":[{"applied":0.1017,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.1103,"rule":"trim_hold"}],"fallback":null,"reason":"Batteries already near 0.95 and grid charging is allowed at low price; keep strategy charging, no trims needed as rooms are within band, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline with trim easing; charge batteries gently in cheap hour as strategy suggests since top price is 2-3 hours ahead; no tank use.","status":"ok"},{"clamps":[{"applied":0.0064,"point":"Building_1.battery","reason":"charge would take charge from 0.94 above 0.95","requested":0.01,"rule":"soc"},{"applied":0.0033,"point":"Building_2.battery","reason":"charge would take charge from 0.95 above 0.95","requested":0.01,"rule":"soc"}],"fallback":null,"reason":"Battery charging in cheap hour before top-price hours 7-9; Building_1 overcooled slightly, trim held; no dhw; cooling near baseline elsewhere.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 2.75C overcooled while occupied, so cooling is cut to 0; batteries stay near 0.95 and are held for the top-price hours at 6-8.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.035","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled so cooling is cut to zero; other buildings keep baseline, batteries are near full and idle until the top-price hours.","status":"clamped"},{"clamps":[{"applied":0.0444,"point":"Building_1.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.035 by at most 0.02 per hour","requested":0.0596,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries idle at non-top price, keep baseline cooling, trims held; Building_1 overcooled slightly so trim held at -0.015 with no change.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding baseline everywhere: no overcooling, battery near full and storing only spare solar, no top-price hour now, district load well below peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Prices low, not top; store spare solar only, keep baselines, no trim since buildings near setpoint, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Rooms are within 0.5 C of setpoint, so baseline cooling holds; batteries are near full and held for the top-price hours ahead, with a tiny charge in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy_battery, capped at load; no overcooling, so cooling and DHW keep baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 and Building_3 are overcooled, so cooling is trimmed slightly; batteries follow the top-price discharge plan; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, trim overcooled occupied rooms, keep the tanks idle, and hold the district peak target.","status":"ok"},{"clamps":[{"applied":0.0303,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1104,"rule":"trim_hold"},{"applied":0.1526,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.029","requested":0.1816,"rule":"trim_hold"}],"fallback":null,"reason":"Holding all batteries per strategy: price is near low and top-price hours are ahead; cooling and tanks stay at baseline with held trims.","status":"clamped"},{"clamps":[{"applied":0.1389,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.029 by at most 0.02 per hour","requested":0.1479,"rule":"trim_hold"}],"fallback":null,"reason":"Not a top-price hour and no overcooling, so I keep baseline cooling and hold batteries idle; the district load stays below the peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Rooms are within comfort bands and no top-price hour is now, so I keep baseline cooling and hold the batteries for the evening peak.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 22 at non-top price with headroom 0; cooling held at baseline, battery follows strategy hold, charge none since price not lowest, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 3 is 1.6 C overcooled so its cooling is trimmed to 0.05; batteries hold until cheaper early-morning hours before the 17-19h top-price window.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.099","requested":0.0466,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near strategy; price not top now, grid charging cheap hours later. Building 2 overcooled-warm so cool more; B1/B3 keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.099 by at most 0.02 per hour","requested":0.037,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says; price is low and not top, so no discharge; charge battery 1 and 2 lightly from cheap hours is not needed yet; keep cooling at baseline with no trim.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Hour 2 is off-peak with no top-price hours now; hold batteries per strategy, keep cooling at baseline, and let Building_3's trim ease off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is 0.7C below setpoint so cooling is trimmed lightly; batteries follow strategy, Building_1 charges gently in a cheap hour; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly but within 0.5C so no trim; battery charge kept per strategy in cheap hour; peak headroom ample; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap hour before top-price window: charge batteries gently per strategy, keep cooling at baseline, DHW idle, no trim needed as rooms are within band.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap, clean hour with grid charging allowed; charge batteries toward 0.95 before top-price hours, no comfort trims needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 9-11: charge batteries at the strategy rate, keep cooling at baseline, tank idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries at baseline per strategy; no top price now, cooling near baseline, B1 slightly under setpoint so no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold batteries and baseline cooling; Building_1 is 0.52C below setpoint so a small trim is allowed, price not at top and grid charging is cheap-ish but no clear need.","status":"ok"},{"clamps":[{"applied":0.0675,"point":"Building_1.cooling","reason":"indoor 22.7 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.068,"rule":"comfort"}],"fallback":null,"reason":"Hour 10 is not top-price; store spare solar only, keep cooling near baseline, no tank charging, no grid charging of batteries.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Comfort is within band and prices are not at top; keep baseline cooling, store spare solar in Building_1 battery per strategy, others idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; room near setpoint so no trim. Batteries: B3 strategy charge 0.15 in cheap hour; B1/B2 idle since battery near full and price not top.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Temperatures are within band, prices are low and not at top, and batteries are near 0.95 before the top-price hours, so I keep all baseline actions.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 overcooled 1.0C below setpoint, trim cooling modestly; top price 2-4h ahead, so hold batteries and follow strategy charging only lightly.","status":"ok"},{"clamps":[{"applied":0.3452,"point":"Building_1.cooling","reason":"indoor 24.0 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.050","requested":0.3952,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour with no top price now; trim B1 cooling as held, charge B3 gently toward 0.95 before the top-price hours 1-3, and keep the others at baseline.","status":"clamped"},{"clamps":[{"applied":0.4296,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.8 C, trim held at 0.050","requested":0.4796,"rule":"trim_hold"}],"fallback":null,"reason":"Follow strategy battery discharge over top-price hours; keep cooling at baseline with held trim in Building_1; no grid charging or tank action.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top price now with 3 top hours ahead: discharge batteries evenly per strategy; B1 trim held; B3 overcooled but unoccupied, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; room temps near band edges so cooling kept at baseline; district load below 0.9 x forecast.","status":"ok"},{"clamps":[{"applied":0.4777,"point":"Building_1.cooling","reason":"indoor 21.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.478,"rule":"comfort"}],"fallback":null,"reason":"Overcooled rooms and peak headroom 0; battery discharge held near strategy values, no grid charging at 0.029 price with top hours ahead, tank idle.","status":"clamped"},{"clamps":[{"applied":0.2948,"point":"Building_1.cooling","reason":"indoor 21.5 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.44,"rule":"comfort"}],"fallback":null,"reason":"Building_1 is cool and below its comfort band, so cooling is raised; Building_3 is overcooled so a small trim applies; batteries and tanks hold.","status":"clamped"},{"clamps":[{"applied":0.2006,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.055 by at most 0.02 per hour","requested":0.2355,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling and idle batteries and tanks; no top-price hour now, load is below the peak target, and Building_1 is cold so no trim.","status":"clamped"},{"clamps":[{"applied":0.1866,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.035 by at most 0.02 per hour","requested":0.2015,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 2.1C but trim is held at 0; deepen cooling cut modestly. Hold batteries, price not top, no discharge; hold tanks at 0.","status":"clamped"},{"clamps":[{"applied":0.0631,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.091","requested":0.1544,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap clean hour before the 17-19h top price: charge batteries at the strategy rate, keep cooling trims held, leave tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0554,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.091 by at most 0.02 per hour","requested":0.1267,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-carbon hour before the 16-18h top price: charge batteries per strategy, cooling at baseline since no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap, low-carbon hour with grid charging allowed: store 0.15 per battery as strategy says; cooling and tank left at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Charge batteries gently in cheap hour before top-price hours 14-16; no overcooling, cooling at baseline, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Off-peak hour, not top price; charge batteries gently with grid charging ok, keep cooling at baseline, tanks idle, Building_1 slightly overcooled? No, it is 1.24 below setpoint so trim applies.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly (-1.33C) but within trim rules; price is low, charge batteries gently per strategy, no tank charging, keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 1.2C below setpoint; trim cooling deeper. Price is low now, so charge batteries gently ahead of top-price hours 11-13.","status":"ok"},{"clamps":[{"applied":0.0273,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.18","requested":0.0,"rule":"deviation"},{"applied":0.1773,"point":"Building_1.cooling","reason":"trim ended, indoor 23.0 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.0273,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 0.74C so trim cooling; hold batteries per strategy, charging modestly in cheap hour before top-price window at hours 10-12.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled so cooling trimmed; batteries discharge to shave the district peak at the 10.35 kWh target, Building_3 move limited to 0.5.","status":"ok"},{"clamps":[{"applied":0.0856,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.3 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.13,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling slightly for overcooling, hold batteries per strategy, no grid charge at top-price-ahead hours, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1292,"point":"Building_1.cooling","reason":"indoor 22.4 C is within 0.5 C of the setpoint 22.8 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1895,"rule":"trim_hold"}],"fallback":null,"reason":"Charging batteries gently in a cheap, clean hour before the top-price hours; cooling kept at baseline since no room is overcooled.","status":"clamped"},{"clamps":[{"applied":0.059,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.1193,"rule":"trim_hold"}],"fallback":null,"reason":"Cooling kept at baseline where rooms are near band edges or unoccupied; batteries follow the strategy charge in the cheap, clean hour before the top-price hours.","status":"clamped"},{"clamps":[{"applied":0.1557,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.196,"rule":"trim_hold"}],"fallback":null,"reason":"Trim Building_1 cooling held, idle Building_2 and Building_3 batteries as strategy suggests, cool baseline elsewhere; top price is 5 hours away, so store gently.","status":"clamped"},{"clamps":[{"applied":0.3889,"point":"Building_1.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.040 by at most 0.02 per hour","requested":0.409,"rule":"trim_hold"}],"fallback":null,"reason":"Hold cooling near baseline with small trim in B1; idle DHW; battery per strategy since price is not top now and charging is cheap and clean.","status":"clamped"},{"clamps":[{"applied":0.4096,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.020","requested":0.43,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled slightly, so ease trim per envelope; batteries follow strategy, charging in cheap hour before top price hours 3-5 within headroom.","status":"clamped"},{"clamps":[{"applied":0.3842,"point":"Building_1.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 25.1 C, trim held at 0.020","requested":0.4045,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baselines; B1 cooling trim blocked by comfort-edge rule, batteries near full with cheap-hour trickle charge only, tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim Building_1 and Building_3 cooling for overcooling, keep Building_2 at baseline, and hold batteries near the strategy values ahead of the top-price hours.","status":"ok"},{"clamps":[{"applied":0.6164,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.6845,"rule":"trim_hold"}],"fallback":null,"reason":"Discharging stored battery energy across the top-price hours as the strategy suggests; cooling held at baseline since rooms are within comfort limits.","status":"clamped"},{"clamps":[{"applied":0.7186,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.068","requested":0.7867,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the two remaining top-price hours; B1 room is cold so cooling kept at baseline; others held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with no later top hours: discharge all usable battery energy, cool overcooled occupied rooms deeper, leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get a 0.1 deeper cooling trim; batteries follow strategy discharge over top-price hours; no grid charging or tank use.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms get held trims of -0.1; batteries follow strategy discharge during top-price hours; tanks stay idle.","status":"ok"},{"clamps":[{"applied":0.2084,"point":"Building_1.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.218,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held at -0.1 for overcooled occupied rooms; battery follows strategy, top-price discharge; no grid charging; tank idle.","status":"clamped"},{"clamps":[{"applied":0.1496,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2496,"rule":"trim_hold"},{"applied":0.2379,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.3383,"rule":"trim_hold"}],"fallback":null,"reason":"Hold battery per strategy; cooling trims held at setpoint-edge rules; no grid charging, no tank charging, top price now so discharge stays small.","status":"clamped"},{"clamps":[{"applied":0.1,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2,"rule":"trim_hold"},{"applied":0.1078,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.100","requested":0.2082,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries idle; overcooled rooms get trim held at -0.1, which is already at the envelope limit; no tank action needed.","status":"clamped"},{"clamps":[{"applied":0.0818,"point":"Building_1.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"},{"applied":0.0567,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled, so trim cooling deeper but within held trim limits; keep dhw at 0.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, keep baseline cooling, trims held near setpoint, no DHW action.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline since rooms are not overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; buildings 1 and 3 keep baseline cooling, building 2 is near setpoint so baseline too.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling follows baseline since no building is overcooled beyond 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling near baseline with small overcool-free rooms; tanks idle; hold strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; cooling follows baseline since rooms are within band and Building_1 is only 0.54C under setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline, Building_1 is 0.37 below setpoint so no trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.13C above setpoint so cooling stays at baseline, no trim needed; DHW idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 0.19C above setpoint so cooling stays at baseline with no trim; dhw held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so battery follows strategy values to shave peak; Building_1 is cool near its band edge so cooling stays at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so battery idle; cooling kept at baseline since rooms are near setpoint; Building_1 is 1.7C below setpoint so trim is not allowed to deepen beyond the envelope.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.55C below setpoint so trim cooling modestly, others hold baseline.","status":"ok"},{"clamps":[{"applied":0.4373,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.535,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling near baseline with trims held, DHW idle, peak headroom is ample.","status":"clamped"},{"clamps":[{"applied":0.4956,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.5931,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries stay idle; buildings 1 and 2 are overcooled, so I keep the held trim and baseline cooling with no extra action.","status":"clamped"},{"clamps":[{"applied":0.5912,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.6887,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price and high carbon now, so batteries stay idle; Building_1 trim is already held deeper than needed, others near setpoint, so baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.6952,"point":"Building_1.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.7927,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top hours; cooling near baseline with trims held; Building_1 overcooled? no, it is 1.49 below setpoint so trim held; battery idle for peak headroom.","status":"clamped"},{"clamps":[{"applied":0.6096,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.098","requested":0.7071,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 2.2C below setpoint so its trim is held, and other buildings keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.54,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.098","requested":0.6375,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, Building_1 overcooled so trim held, cooling near baseline elsewhere, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat-price hour so batteries stay idle; B1 and B3 are overcooled so cooling is trimmed 0.1 below baseline, B2 is near setpoint.","status":"ok"},{"clamps":[{"applied":0.3199,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.100","requested":0.4196,"rule":"trim_hold"},{"applied":0.315,"point":"Building_3.cooling","reason":"indoor 21.7 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.4154,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price, no top-price hours, batteries near floor and no discharge need; buildings 1 and 3 overcooled, so keep held trim and hold cooling near baseline.","status":"clamped"},{"clamps":[{"applied":0.1741,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.2,"rule":"trim_hold"},{"applied":0.2178,"point":"Building_3.cooling","reason":"indoor 22.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.25,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled so trim held at -0.1 with cooling at baseline; no DHW or grid charging.","status":"clamped"},{"clamps":[{"applied":0.1104,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.21,"rule":"trim_hold"},{"applied":0.162,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.262,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Buildings 1 and 3 overcooled by 1.1-1.3C get held trim; Building 2 at baseline; no dhw.","status":"clamped"},{"clamps":[{"applied":0.3492,"point":"Building_1.cooling","reason":"indoor 24.0 C is near the top of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"},{"applied":0.1113,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.212,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 and Building_3 overcooled, so trim cooling per envelope hold while keeping rooms within band.","status":"clamped"},{"clamps":[{"applied":0.0527,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.100","requested":0.1531,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 1.8 C below setpoint so cooling trimmed modestly; Building_2 is warm so keep baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.0914,"point":"Building_1.cooling","reason":"indoor 21.0 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.085","requested":0.176,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is overcooled so trim held, Building_3 unchanged at baseline cooling.","status":"clamped"},{"clamps":[{"applied":0.1987,"point":"Building_1.cooling","reason":"trim ended, indoor 22.3 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.12,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours, so batteries idle; Building_1 is overcooled so trim cooling modestly; others hold baseline.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, DHW idle, cooling near baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat-price hour with no top-price window, so batteries stay idle; cooling and tanks keep baseline since no room is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries idle; buildings 1 and 3 slightly under setpoint, keep baseline cooling and no trim.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 is 0.71 C below setpoint, so a small cooling trim is held, not deepened, and no end_trim needed.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle per strategy, cooling kept at baseline since rooms are within band and Building_1 only mildly overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 1.27C below setpoint so trim cooling; flat price and no top hour means battery idle except small charge per strategy; keep dhw zero.","status":"ok"},{"clamps":[{"applied":0.0,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.088","requested":0.0,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets deeper cooling trim; all batteries charge gently at the cheap, low-carbon hour within peak headroom, tanks idle.","status":"clamped"},{"clamps":[{"applied":0.0762,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.088 by at most 0.02 per hour","requested":0.1446,"rule":"trim_hold"}],"fallback":null,"reason":"Building_2 is overcooled by 1.2 C so its cooling is trimmed; batteries follow strategy charging in this cheap, clean hour before the top-price period.","status":"clamped"},{"clamps":[{"applied":0.1729,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.068 by at most 0.02 per hour","requested":0.2213,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 11: no top price now, district load 4.2 below target 10.35; hold batteries per strategy, keep baseline cooling with small trim held for Building_1.","status":"clamped"},{"clamps":[{"applied":0.2339,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.048","requested":0.2823,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests: price is flat-ish, not top-price now; Building_1 is overcooled slightly, so keep trim held and let envelope ease.","status":"clamped"},{"clamps":[{"applied":0.4191,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.048","requested":0.468,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 0.66C below setpoint so trim is held; batteries follow strategy, district load near peak target so no charging, DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Deepened cooling trim for overcooled Building_1 and Building_3 per the strategy; Building_2 is warm so it keeps baseline; batteries held.","status":"ok"},{"clamps":[{"applied":0.19,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 26.7 C, trim held at 0.100","requested":0.29,"rule":"trim_hold"},{"applied":0.6103,"point":"Building_3.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.072","requested":0.6827,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is 2.9C below setpoint so cooling trim is held; batteries idle as price is not top now and grid charging is not cheapest, following strategy.","status":"clamped"},{"clamps":[{"applied":0.5401,"point":"Building_1.cooling","reason":"trim ended, indoor 25.3 C is at or above the setpoint 24.2 C, cooling back to the baseline","requested":0.44,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 and Building_3 are overcooled; trim cooling per envelope, hold batteries idle as strategy says, and keep tanks at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled so cooling is trimmed; batteries discharge to cover load near the peak per strategy; no grid charging.","status":"ok"},{"clamps":[{"applied":0.6926,"point":"Building_1.cooling","reason":"indoor 21.0 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.031","requested":0.7234,"rule":"trim_hold"},{"applied":0.6232,"point":"Building_3.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 23.7 C, trim held at 0.100","requested":0.7235,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near idle, trim cooling in overcooled Building_3 per held trim, price not top now; keep baselines except Building_3 cooling kept at baseline.","status":"clamped"},{"clamps":[{"applied":0.4351,"point":"Building_1.cooling","reason":"indoor 20.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.031","requested":0.4659,"rule":"trim_hold"},{"applied":0.5321,"point":"Building_3.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.100","requested":0.6324,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled so trims held; batteries idle as top price is 3 hours ahead and charge is minimal; peak headroom is small.","status":"clamped"},{"clamps":[{"applied":0.3156,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.3 C, trim held at 0.031","requested":0.3464,"rule":"trim_hold"},{"applied":0.3388,"point":"Building_3.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.6 C, trim held at 0.100","requested":0.4391,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled, so trims are held; price not top now, batteries hold idle near floor, no grid charging at this hour.","status":"clamped"},{"clamps":[{"applied":0.3137,"point":"Building_1.cooling","reason":"indoor 21.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.314,"rule":"comfort"},{"applied":0.2829,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.031","requested":0.3137,"rule":"trim_hold"},{"applied":0.2947,"point":"Building_3.cooling","reason":"indoor 22.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.295,"rule":"comfort"},{"applied":0.1944,"point":"Building_3.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.2947,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled, so I hold their trims; batteries idle since price is not top and grid charging has little headroom to gain.","status":"clamped"},{"clamps":[{"applied":0.213,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.031","requested":0.2438,"rule":"trim_hold"},{"applied":0.1484,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.2487,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; buildings 1 and 3 trims held as envelope requires; batteries idle since usable charge is tiny and no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.0966,"point":"Building_3.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.100","requested":0.148,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled rooms get trimmed cooling per envelope; batteries idle since price is low and charging is small; no top-price hour now.","status":"clamped"},{"clamps":[{"applied":0.1147,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.031","requested":0.145,"rule":"trim_hold"},{"applied":0.2703,"point":"Building_2.cooling","reason":"indoor 24.6 C is near the top of the comfort band, cooling held at the baseline","requested":0.27,"rule":"comfort"},{"applied":0.0646,"point":"Building_3.cooling","reason":"indoor 23.5 C is within 0.5 C of the setpoint 24.0 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.145,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_3 trim held; batteries idle per strategy since price is low and not top; no charging needed, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.1573,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.031","requested":0.188,"rule":"trim_hold"},{"applied":0.0698,"point":"Building_3.cooling","reason":"indoor 23.9 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.13,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets held trim; batteries idle as price is not top now and usable charge is tiny; no grid charging at mid price; DHW idle.","status":"clamped"},{"clamps":[{"applied":0.2281,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.4 C, trim held at 0.031","requested":0.259,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is 0.79C below setpoint so cooling trim is held; batteries idle since price is not top and little usable charge; keep tank at 0.","status":"clamped"},{"clamps":[{"applied":0.1225,"point":"Building_1.cooling","reason":"indoor 20.6 C is more than 0.5 C below the setpoint 23.3 C, trim held at 0.031","requested":0.1533,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and charging batteries gently at the cheap, clean hour; no top-price discharge yet, tanks stay idle, load is well under peak target.","status":"clamped"},{"clamps":[{"applied":0.1011,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 23.2 C, trim held at 0.031","requested":0.1319,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled 1.66C below setpoint: trim held; battery charge kept at strategy 0.15 in cheap hour before top-price window at 11-14h.","status":"clamped"},{"clamps":[{"applied":0.1709,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.031 by at most 0.02 per hour","requested":0.1817,"rule":"trim_hold"}],"fallback":null,"reason":"Low-price, low-carbon hour with no overcooling; charge all batteries at 0.15 ahead of the top-price hours 11-13, keeping cooling and tanks at baseline.","status":"clamped"},{"clamps":[{"applied":0.2162,"point":"Building_1.cooling","reason":"indoor 20.9 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.011","requested":0.227,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.37C below setpoint; trim held and eased per envelope. Batteries follow strategy charging in cheap hour; no top price now, tank idle.","status":"clamped"},{"clamps":[{"applied":0.2194,"point":"Building_1.cooling","reason":"indoor 20.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.011","requested":0.2302,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled 1.85C below setpoint so trim is held; batteries follow strategy charging in cheap hour; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1932,"point":"Building_1.cooling","reason":"indoor 20.1 C is more than 0.5 C below the setpoint 22.3 C, trim held at 0.011","requested":0.204,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 2.2C; trim held at -0.011 and cooling kept near baseline, batteries idle as strategy suggests, DHW off.","status":"clamped"},{"clamps":[{"applied":0.1629,"point":"Building_1.cooling","reason":"indoor 20.4 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.011","requested":0.1737,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy suggests; price not top now, next top hours 7-9 ahead; keep cooling near baseline, trim held for Building_1 overcooled slightly.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is 3.45 C overcooled, so cooling is cut to zero; the other buildings keep baseline cooling and the battery strategy, with no grid charging before the top-price hours.","status":"ok"},{"clamps":[{"applied":0.0554,"point":"Building_1.cooling","reason":"indoor 23.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.082","requested":0.1373,"rule":"trim_hold"}],"fallback":null,"reason":"Hold baseline cooling; B1 overcooled 1.2C below setpoint so trim held at -0.082; batteries idle as price not top, charging deferred to cheap hours.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled so its trim is held deeper; batteries charge gently in this cheap hour ahead of the top-price period.","status":"ok"},{"clamps":[{"applied":0.171,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.083","requested":0.2535,"rule":"trim_hold"}],"fallback":null,"reason":"Trim B1 cooling slightly as it is overcooled; hold batteries at strategy charge in cheap hour; top price is 3 hours away so keep charging; no DHW.","status":"clamped"},{"clamps":[{"applied":0.2495,"point":"Building_1.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.083","requested":0.332,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 16-18h top price; charge batteries at the strategy rate, keep cooling trims held, tank idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trim cooling for overcooled occupied B1 per held trim; hold batteries near strategy since top price is 2-4 hours ahead; no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: batteries discharge evenly over the three remaining top-price hours; B1 cooling trimmed to the 0.1 depth since it is overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim overcooled occupied rooms 1 and 3; hold tank at 0 and keep Building 2 baseline.","status":"ok"},{"clamps":[{"applied":0.1839,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 25.4 C, trim held at 0.100","requested":0.2839,"rule":"trim_hold"},{"applied":0.3275,"point":"Building_3.cooling","reason":"indoor 22.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.092","requested":0.4192,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: spreading the usable battery charge over the remaining top-price hours instead of the front-loaded strategy value; cooling trims held.","status":"clamped"},{"clamps":[{"applied":0.1307,"point":"Building_1.cooling","reason":"indoor 24.0 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.131,"rule":"comfort"},{"applied":0.0307,"point":"Building_1.cooling","reason":"indoor 24.0 C is more than 0.5 C below the setpoint 26.4 C, trim held at 0.100","requested":0.1307,"rule":"trim_hold"},{"applied":0.3318,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.0 C, trim held at 0.092","requested":0.423,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries as strategy says; top price hours ahead at 21-23, so keep charge; Building_1 and Building_3 cooling eased per held trim.","status":"clamped"},{"clamps":[{"applied":0.2992,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.092","requested":0.3909,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20: price not top now, so no discharge; keep batteries idle; cooling at baseline, B1 trim held; top-price hours ahead, district load near target so no action beyond baseline.","status":"clamped"},{"clamps":[{"applied":0.2052,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.092","requested":0.2969,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled but a trim would be clamped near its band edge, so baseline holds; batteries idle as price is not top and cheaper charging hours come later.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled but the envelope would block deeper cooling near its band edge, so baseline is kept; Building 3 holds its trim; batteries idle as no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.11,"point":"Building_3.cooling","reason":"indoor 23.6 C is within 0.5 C of the setpoint 23.9 C, trim eases off from 0.092 by at most 0.02 per hour","requested":0.182,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is 2.55C below setpoint, so trim cooling; hold batteries idle as price is not top and no charging needed now.","status":"clamped"},{"clamps":[{"applied":0.0163,"point":"Building_3.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.072","requested":0.0887,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cool near its band edge so cooling stays at baseline; batteries start small grid charging in the cheap hours before the 16-18h peak.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed slightly; others hold baseline, and batteries start small charging in the cheapest hour ahead of top-price hours.","status":"ok"},{"clamps":[{"applied":0.2578,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.033 by at most 0.02 per hour","requested":0.2703,"rule":"trim_hold"}],"fallback":null,"reason":"Price is low and not top-price, so no discharge; battery charging stays at strategy baseline of 0 with grid charging ok; cooling holds baseline, trims near zero.","status":"clamped"},{"clamps":[{"applied":0.2204,"point":"Building_1.cooling","reason":"indoor 20.5 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.013","requested":0.2329,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap hour before top-price block 12-15h; charge batteries gently, keep cooling near baseline, no tank charging, Building_1 trim held.","status":"clamped"},{"clamps":[{"applied":0.18,"point":"Building_1.cooling","reason":"indoor 20.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.013","requested":0.1925,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 overcooled 1.6C below setpoint: trim held; keep baseline cooling, charge batteries gently in cheap hour as strategy suggests.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is over 1.5 C below setpoint, so its cooling trim deepens to 0.1; batteries charge gently in the cheap, clean hour before the top-price period.","status":"ok"},{"clamps":[{"applied":0.0812,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.100","requested":0.1811,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap clean hour before top-price block: charge batteries gently per strategy, keep cooling baseline with held trims, tank idle.","status":"clamped"},{"clamps":[{"applied":0.0859,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1658,"rule":"trim_hold"}],"fallback":null,"reason":"Follow the strategy battery charge in all buildings before the upcoming top-price hours; cooling trims held, no comfort breach.","status":"clamped"},{"clamps":[{"applied":0.1191,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.179,"rule":"trim_hold"}],"fallback":null,"reason":"Trim held near setpoint; battery charging from spare solar and cheap grid hour per strategy; no top price now, tank idle.","status":"clamped"},{"clamps":[{"applied":0.11,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.060","requested":0.17,"rule":"trim_hold"}],"fallback":null,"reason":"Hold cooling near baseline with held trims, keep batteries idle or small charge in cheap hours before top-price hours 6-9, no tank charging.","status":"clamped"},{"clamps":[{"applied":0.0331,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.060","requested":0.093,"rule":"trim_hold"}],"fallback":null,"reason":"Keep baseline cooling where rooms are near setpoint, hold Building_1 trim, and follow the battery plan; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1116,"point":"Building_1.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.060 by at most 0.02 per hour","requested":0.1515,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling and tank idle; building 3 takes the small strategy charge of 0.017 in this cheap, clean hour before the top-price window.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding batteries near 0.94 for the top-price hours ahead; B1 trims cooling to keep its held overcooling trim, B3 stores a small amount of cheap solar.","status":"ok"},{"clamps":[{"applied":0.2544,"point":"Building_1.cooling","reason":"indoor 23.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.040","requested":0.2943,"rule":"trim_hold"}],"fallback":null,"reason":"Prices are low and no top-price hour is now; batteries are near 0.95 so I keep baseline, with small cooling trims left to the envelope.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trimmed occupied overcooled rooms in Buildings 1 and 3 toward setpoint; batteries near full and idle, tanks idle, Building 2 unoccupied.","status":"ok"},{"clamps":[{"applied":0.3856,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.055","requested":0.4403,"rule":"trim_hold"},{"applied":0.511,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.037","requested":0.5485,"rule":"trim_hold"}],"fallback":null,"reason":"Top price starts in 1-3 hours; hold batteries, keep cooling near baseline, no tank charging, and follow strategy_battery as a small pre-charge.","status":"clamped"},{"clamps":[{"applied":0.4786,"point":"Building_1.cooling","reason":"indoor 23.1 C is more than 0.5 C below the setpoint 24.1 C, trim held at 0.055","requested":0.5333,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: all three batteries discharge evenly over the three top-price hours; Building_3 cooling trimmed deeper for overcooling, others held.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled so its cooling is trimmed deeper; batteries discharge at the top price per strategy, with no grid charging and tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are occupied and 2.2 C overcooled, so cooling is trimmed 0.1 below baseline; batteries follow strategy discharge for top-price hours.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Buildings 1 and 3 are overcooled by 1.4 to 2.6 C, so cooling is trimmed by the held 0.1; batteries hold since no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.2068,"point":"Building_1.cooling","reason":"indoor 23.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3067,"rule":"trim_hold"},{"applied":0.2405,"point":"Building_3.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.2 C, trim held at 0.100","requested":0.3409,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 and Building_3 held trims at -0.1; Building_2 near setpoint. Price not top now, hold batteries per strategy; no grid charging needed.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding batteries and tanks at baseline since no top-price hour is now; trim Building_1 cooling to its held depth and ease Building_3 per the envelope.","status":"ok"},{"clamps":[{"applied":0.1332,"point":"Building_1.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.19,"rule":"trim_hold"},{"applied":0.2148,"point":"Building_3.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 23.9 C, trim held at 0.080","requested":0.27,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 and Building_3 get small trims per envelope; batteries held per strategy since price is not at top and grid charging is marginal.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Trims cooling for overcooled occupied rooms, holds battery per strategy, headroom zero so no grid charging; price not top now so no discharge.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 2 and 3 are overcooled, so cooling is trimmed; Building 1 is warm so cooling holds baseline; batteries and tanks hold while prices are not at top.","status":"ok"},{"clamps":[{"applied":0.0475,"point":"Building_2.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.073 by at most 0.02 per hour","requested":0.1002,"rule":"trim_hold"},{"applied":0.0586,"point":"Building_3.cooling","reason":"indoor 24.0 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.072 by at most 0.02 per hour","requested":0.1108,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is overcooled by 1.81C so cooling is trimmed; batteries held idle as prices are low and not top-price; no DHW.","status":"clamped"},{"clamps":[{"applied":0.0536,"point":"Building_3.cooling","reason":"indoor 24.3 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.052 by at most 0.02 per hour","requested":0.072,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 2 is cheap and clean with no top price now; keep the suggested gentle battery charge, hold cooling near baseline, and leave DHW idle.","status":"clamped"},{"clamps":[{"applied":0.0596,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.032 by at most 0.02 per hour","requested":0.0718,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 3 is cheap and low-carbon with no top price now; charge batteries gently per strategy, keep cooling near baseline, no DHW.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled slightly? No, 1.25C above setpoint is below; cooling near baseline; charge batteries gently in cheap hour per strategy.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooling is absent; cooling near baseline. Charge batteries gently in cheap hour per strategy, no tank charge, peak headroom ample.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is 0.97 C overcooled so its cooling is trimmed; all batteries charge at 0.15 in this cheap, clean hour before the top-price window.","status":"ok"},{"clamps":[{"applied":0.1098,"point":"Building_1.cooling","reason":"indoor 22.0 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.048 by at most 0.02 per hour","requested":0.1376,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap low-carbon hour before top-price hours 9-11: charge batteries toward 0.95 per strategy; cooling trimmed only for overcooled Building_3.","status":"clamped"},{"clamps":[{"applied":0.1725,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.028 by at most 0.02 per hour","requested":0.1803,"rule":"trim_hold"},{"applied":0.1111,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.037 by at most 0.02 per hour","requested":0.1279,"rule":"trim_hold"}],"fallback":null,"reason":"Holding baseline cooling with held trims, following strategy battery charges at the low price; no tank use and no early trim ends.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cooling and battery follow baseline and strategy; Building_3 gently charges in this cheap, clean hour before the top-price period; tanks stay idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Trim Building_2 cooling slightly for overcooling; keep Building_1 and Building_3 on baseline, follow Building_3's gentle battery charge, and leave tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold cooling near baseline, no DHW, batteries follow strategy; top price 5 hours ahead so store spare solar only, no grid charging at this price.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 0.83 C, so its cooling is trimmed slightly; batteries hold near 0.94 for the 16-18h top-price window, dhw idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 2.3 C, so cooling is trimmed deeper; other devices hold baseline since prices are low and no top-price hour is now.","status":"ok"},{"clamps":[{"applied":0.0878,"point":"Building_1.cooling","reason":"indoor 26.2 C is within 0.5 C of the setpoint 26.7 C, trim eases off from 0.102 by at most 0.02 per hour","requested":0.169,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooling trims held; price not top now, batteries near full so store only spare solar; no grid charging needed; tanks idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Holding baselines; no overcooling, Building_3 unoccupied, and district load is well under the 6.57 kWh peak target.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries evenly over remaining top hours, trim overcooled occupied Building_1 slightly, keep cooling otherwise at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price now; discharge batteries evenly over remaining top hours, keep cooling near baseline, no dhw or grid charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy; trim overcooled occupied Building_1 by 0.1, keep Building_3 at baseline near band edge, Building_2 unoccupied.","status":"ok"},{"clamps":[{"applied":0.6055,"point":"Building_3.cooling","reason":"indoor 22.1 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.606,"rule":"comfort"}],"fallback":null,"reason":"Building 1 and 2 are overcooled trims held; B1 trim -0.1 held, B2 cooling near baseline; battery idle-ish; price not top now, grid charging minor; keep baseline except trims.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_3 is cold, so I keep cooling at baseline; batteries follow strategy, which shaves the peak; no DHW charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 and 3 are overcooled, so cooling is trimmed 0.1 below baseline; batteries and tanks hold since prices are not at the top.","status":"ok"},{"clamps":[{"applied":0.2248,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3243,"rule":"trim_hold"},{"applied":0.2173,"point":"Building_3.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3168,"rule":"trim_hold"}],"fallback":null,"reason":"District load is above 0.9x forecast, so Building_3 discharges to cover its load; overcooled rooms keep their held cooling trim.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled rooms in B1 and B3 get trim held at -0.1; battery idle per strategy since price is low and not top-price, grid charging low value.","status":"ok"},{"clamps":[{"applied":0.3796,"point":"Building_1.cooling","reason":"trim ended, indoor 23.5 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.28,"rule":"trim_hold"},{"applied":0.0853,"point":"Building_3.cooling","reason":"indoor 23.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.1853,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 is overcooled 1.26C, so trim cooling deeper; batteries idle per strategy, prices are not top-rate now, no grid charging needed.","status":"clamped"},{"clamps":[{"applied":0.066,"point":"Building_3.cooling","reason":"indoor 24.1 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.146,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 is cold and below its band, so cooling is eased toward its floor; other devices hold baseline, batteries idle since no top price now.","status":"clamped"},{"clamps":[{"applied":0.0572,"point":"Building_3.cooling","reason":"indoor 24.4 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.080 by at most 0.02 per hour","requested":0.1172,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before the 14-16h top price: charge batteries at the strategy rate, keep baseline cooling since no room is overcooled.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 is 2.2C below setpoint, so trim cooling; hold battery charging at strategy level since grid charging is allowed and prices are low.","status":"ok"},{"clamps":[{"applied":0.0569,"point":"Building_1.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.124","requested":0.1806,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top price; charge batteries gently per strategy, cooling near baseline, Building_1 slightly overcooled is within band so no trim change.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap clean hour before top-price hours 11-13: charge batteries at the strategy rate, keep cooling at baseline, tank idle, no trim to end.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 6 is cheap and clean; charge batteries gently per strategy, cooling at baseline since rooms are near setpoint, no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hold baseline cooling; Building_1 is 0.86C below setpoint trim not needed; battery charging at strategy level within limits, no top price now, grid charging ok.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building 1 is overcooled by 1.6 C, so its cooling is trimmed; batteries and tanks hold since no top-price hour is near.","status":"ok"},{"clamps":[{"applied":0.1957,"point":"Building_1.cooling","reason":"indoor 21.9 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.2761,"rule":"trim_hold"}],"fallback":null,"reason":"Building 1 overcooled slightly, keep baseline with held trim; batteries follow strategy, no tank charging; top price hours ahead so charging is modest.","status":"clamped"},{"clamps":[{"applied":0.1341,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.2,"rule":"comfort"}],"fallback":null,"reason":"B1 is below its comfort band so cooling rises above baseline and its trim ends; B2 and B3 discharge to shave the district peak near target.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"indoor below comfort band, overcooling trim ends"}]},{"clamps":[],"fallback":null,"reason":"Overcooled B1 eases trim; batteries follow strategy, B2/B3 low-SOC charging ok at low price; no top-price discharge now.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Top price is 4-6 hours ahead, so hold batteries and trim only overcooled Building_1; Building_3 is cool so no trim, batteries follow strategy charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Overcooled Building_1 gets a small cooling trim; batteries follow strategy, with B1 and B3 charging gently in cheap hours and B2 idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Cut Building_1 cooling 0.1 below baseline since its occupied room is 1.85 C under setpoint; keep other buildings on baseline and charge batteries in this cheap hour.","status":"ok"},{"clamps":[{"applied":0.5614,"point":"Building_1.cooling","reason":"indoor 23.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.661,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 15 is not top price; hold cooling near baseline, let batteries follow strategy, keep tanks idle, and avoid charging B1 beyond strategy since load is near peak target.","status":"clamped"},{"clamps":[{"applied":0.6079,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7077,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries evenly per strategy, no grid charging, tanks idle, keep cooling at baseline to avoid comfort clamps.","status":"clamped"},{"clamps":[{"applied":0.6345,"point":"Building_1.cooling","reason":"indoor 22.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7343,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy, deepen Building_3 cooling trim for overcooling, hold other cooling; no grid charging or DHW.","status":"clamped"},{"clamps":[{"applied":0.6292,"point":"Building_1.cooling","reason":"indoor 22.3 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.729,"rule":"trim_hold"},{"applied":0.6133,"point":"Building_3.cooling","reason":"indoor 21.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.7133,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharging batteries per strategy over the three top-price hours; cooling trims held, B2 warm so baseline cooling.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms in B1 and B3 keep trim at -0.1; B2 at setpoint; batteries idle since top price is 21-23h and grid charging is marginal.","status":"ok"},{"clamps":[{"applied":0.4529,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.5531,"rule":"trim_hold"},{"applied":0.3717,"point":"Building_3.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4721,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 20 is not top price now; battery stays near strategy with small discharge to shave peak, cooling trims held, no DHW.","status":"clamped"},{"clamps":[{"applied":0.2684,"point":"Building_1.cooling","reason":"indoor 21.9 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3686,"rule":"trim_hold"},{"applied":0.2539,"point":"Building_3.cooling","reason":"indoor 23.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3543,"rule":"trim_hold"}],"fallback":null,"reason":"Hold batteries near baseline (price not top, small usable charge); keep cooling trims as held; no DHW; Building_1 and 3 overcooled so trims held.","status":"clamped"},{"clamps":[{"applied":0.2363,"point":"Building_1.cooling","reason":"indoor 22.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.3365,"rule":"trim_hold"},{"applied":0.3049,"point":"Building_3.cooling","reason":"indoor 23.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.4053,"rule":"trim_hold"}],"fallback":null,"reason":"Peak headroom is zero and battery usable charge is tiny; keep baseline cooling, follow strategy battery, and hold DHW idle.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Overcooled occupied rooms in B1 and B3 get the held trim of -0.1 from baseline; B2 is in band, so baseline holds. Batteries stay idle, as the strategy suggests.","status":"ok"},{"clamps":[{"applied":0.08,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.13,"rule":"trim_hold"},{"applied":0.0959,"point":"Building_3.cooling","reason":"indoor 23.7 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.16,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are over 0.5 C cool so trims are held; batteries idle as price is not top and usable charge is tiny; tanks stay at zero.","status":"clamped"},{"clamps":[{"applied":0.0677,"point":"Building_3.cooling","reason":"indoor 24.2 C is within 0.5 C of the setpoint 24.4 C, trim eases off from 0.100 by at most 0.02 per hour","requested":0.1481,"rule":"trim_hold"}],"fallback":null,"reason":"Buildings 1 and 3 are overcooled slightly; hold baseline cooling with trims held, batteries idle as price is low and no top-price hours now, tanks at zero.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Cheap hour with grid charging ok: keep strategy battery charge 0.15, cooling at baseline with trims held near zero since rooms are within band.","status":"ok"},{"clamps":[{"applied":0.1801,"point":"Building_1.cooling","reason":"more than 0.15 away from the ideal-load cooling 0.33","requested":0.18,"rule":"deviation"},{"applied":0.0287,"point":"Building_2.cooling","reason":"indoor 23.4 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.029,"rule":"comfort"}],"fallback":null,"reason":"Overcooled B1 1.5C below setpoint gets trim; batteries follow strategy charge in cheap clean hour; no DHW; top price starts at hour 13.","status":"clamped"},{"clamps":[{"applied":0.0778,"point":"Building_1.cooling","reason":"indoor 21.4 C is more than 0.5 C below the setpoint 22.2 C, trim held at 0.150","requested":0.228,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price window: charge batteries gently per strategy; overcooled Building_1 trim held, cooling near baseline; no tank charging.","status":"clamped"},{"clamps":[{"applied":0.1792,"point":"Building_1.cooling","reason":"trim ended, indoor 22.5 C is at or above the setpoint 22.2 C, cooling back to the baseline","requested":0.09,"rule":"trim_hold"}],"fallback":null,"reason":"Overcooled Building_1 gets a trim held, cooling near baseline elsewhere; charge batteries gently in cheap hour per strategy, no tank charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_1 cooling trimmed for overcooling; all batteries follow strategy charge of 0.15 ahead of the top-price hours; tanks idle.","status":"ok"},{"clamps":[{"applied":0.1638,"point":"Building_1.cooling","reason":"indoor 22.1 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.059 by at most 0.02 per hour","requested":0.2032,"rule":"trim_hold"}],"fallback":null,"reason":"Cheap, clean hour before top-price window; charge batteries at 0.15 per strategy, cooling and DHW stay at baseline.","status":"clamped"},{"clamps":[{"applied":0.2047,"point":"Building_1.cooling","reason":"indoor 21.8 C is within 0.5 C of the setpoint 22.2 C, trim eases off from 0.039 by at most 0.02 per hour","requested":0.2241,"rule":"trim_hold"}],"fallback":null,"reason":"Building_1 trim held at -0.019 within 0.5C band; keep baseline cooling, follow strategy battery charging in cheap hour; no top price now, no dhw.","status":"clamped"},{"clamps":[{"applied":0.2136,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 22.8 C, trim held at 0.019","requested":0.233,"rule":"trim_hold"}],"fallback":null,"reason":"Hour 9: no top price now, so hold batteries near strategy values; Building_1 trim eases from baseline, Building_2 idle-unoccupied at baseline, small charging in cheap hour.","status":"clamped"},{"clamps":[{"applied":0.2146,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.25,"rule":"comfort"}],"fallback":null,"reason":"Building_1 is below its comfort band, so cooling rises above baseline and its trim ends; Building_3 charges gently ahead of top-price hours; others hold.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, end overcooling trim"}]},{"clamps":[],"fallback":null,"reason":"Holding baselines in all buildings; Building_3 charges 0.1 gently ahead of top-price hours 5-7, Building_1 and Building_2 batteries are near 0.95.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 overcooled 2.5C but unoccupied-band logic keeps trim; batteries follow strategy; top price 4-6h ahead so hold charge; no tank charging.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Hour 13 is not top-price and cheap hours follow, so batteries hold; trim Building_1 slightly is unnecessary, Building_3 strategy charge is small, keep baselines except clear overcool.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Price is not at top now; charge batteries gently in the cheap hour ahead of top-price hours 2-4, keep tank idle, and keep cooling at baseline since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is cool but its trim cannot be applied near the band edge, so baseline cooling holds; batteries follow strategy, with a small charge in Building_3.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Building_1 is overcooled by 2.2 C while occupied, so cooling is trimmed 0.1 below baseline; batteries discharge evenly over the three top-price hours.","status":"ok"},{"clamps":[{"applied":0.5914,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.100","requested":0.6912,"rule":"trim_hold"}],"fallback":null,"reason":"Top-price hour: discharge batteries per strategy over the two remaining top hours; cooling trim held for overcooled occupied Building_1; no grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour: discharge all usable battery charge, hold Building_1 cooling at the 0.1 trim, keep other cooling at baseline, tank idle.","status":"ok"},{"clamps":[{"applied":0.2045,"point":"Building_1.cooling","reason":"indoor 23.4 C is more than 0.5 C below the setpoint 26.4 C, trim held at 0.100","requested":0.304,"rule":"trim_hold"},{"applied":0.7036,"point":"Building_3.cooling","reason":"indoor 21.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.704,"rule":"comfort"}],"fallback":null,"reason":"Trim cooling in overcooled occupied buildings, hold batteries per strategy, no grid charging, tanks idle; district load near peak target.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Building_2 is overcooled so its cooling is trimmed slightly; batteries follow strategy discharge over top-price hours; tanks stay idle and grid charging is off.","status":"ok"},{"clamps":[{"applied":0.2676,"point":"Building_2.cooling","reason":"indoor 24.3 C is more than 0.5 C below the setpoint 25.0 C, trim held at 0.014","requested":0.2816,"rule":"trim_hold"}],"fallback":null,"reason":"Holding overcooled rooms at baseline due to band-edge rule; discharging batteries per strategy during the top-price hour; no DHW or grid charging.","status":"clamped"},{"clamps":[],"fallback":null,"reason":"Top-price hour with flat-ish plan: follow strategy batteries, hold cooling near baseline, no tank use, let envelope trim hold for Building_2.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is more than 0.5C overcooled, DHW held at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle. Building_1 overcooled 2.9C below setpoint but occupied band logic holds baseline; keep baseline cooling, no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling at baseline since no room is overcooled, tanks idle.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; cooling holds baseline, with trims not needed since rooms are not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day and all buildings near or above setpoint with no overcooling; hold batteries idle, keep baseline cooling and no DHW.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling near baseline, no trim needed as rooms are within band and not overcooled.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day so batteries idle; trim Building_3 cooling slightly for overcooling, hold Building_1 at baseline near its band edge, and keep Building_2 at baseline.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle, cooling near baseline since rooms are within band, dhw off.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; cooling follows baseline since no building is overcooled by more than 0.5 C.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; buildings 1 and 2 are near setpoint so baseline cooling holds, and DHW stays at zero.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, Building_1 overcooled slightly but within 0.5C of band so keep baseline cooling.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle and cooling follows baseline; Building_1 is 1.67C below setpoint so a small trim applies.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day, so batteries stay idle; Building_1 is 2.3C below setpoint so trim cooling held, DHW tanks idle, baseline cooling otherwise.","status":"ok"},{"clamps":[{"applied":0.4061,"point":"Building_1.cooling","reason":"indoor 22.4 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.44,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours, so batteries stay idle; Building_1 is 2.08 C below setpoint, so it is overcooled and cooling is trimmed below baseline.","status":"clamped"},{"clamps":[{"applied":0.4755,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.5,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 1.7C, so trim cooling deeper within envelope; others near baseline with no trim needed.","status":"clamped"},{"clamps":[{"applied":0.574,"point":"Building_1.cooling","reason":"indoor 22.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.7057,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, so batteries stay idle; cooling holds baseline with Building_1 trim held at -0.132 while it is overcooled.","status":"clamped"},{"clamps":[{"applied":0.6772,"point":"Building_1.cooling","reason":"indoor 22.6 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.8089,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 is 1.85C below setpoint so trim held, cooling at baseline; DHW and other cooling at baseline.","status":"clamped"},{"clamps":[{"applied":0.8546,"point":"Building_1.cooling","reason":"indoor 22.2 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.855,"rule":"comfort"},{"applied":0.7229,"point":"Building_1.cooling","reason":"indoor 22.2 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.132","requested":0.8546,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, batteries idle; Building_1 overcooled 2.2C below setpoint so trim held at -0.132 with cooling baseline, dhw and battery at baseline.","status":"clamped"},{"clamps":[{"applied":0.8319,"point":"Building_1.cooling","reason":"indoor 21.9 C is near the bottom of the comfort band, cooling held at the baseline","requested":0.95,"rule":"comfort"},{"applied":0.9582,"point":"Building_3.cooling","reason":"indoor 20.8 C is near the bottom of the comfort band, cooling held at the baseline","requested":1.0,"rule":"comfort"}],"fallback":null,"reason":"Building 1 and 3 are cold and occupied, so cooling rises; Building 1's trim ends. Flat prices mean batteries stay idle and tanks stay at zero.","status":"clamped","trim_ends":[{"building":"Building_1","reason":"room below comfort band, trim ends"}]},{"clamps":[],"fallback":null,"reason":"Flat price day, batteries idle; Buildings 1 and 3 are cold so cooling stays at baseline, Building 2 unoccupied and near setpoint.","status":"ok"},{"clamps":[],"fallback":null,"reason":"Flat price day with overcooled Building_1 (4.5C below setpoint); hold batteries, trim cooling modestly, keep dhw idle and let baseline run elsewhere.","status":"ok"},{"clamps":[{"applied":0.3574,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.425,"rule":"trim_hold"}],"fallback":null,"reason":"Rooms are cold or near setpoint, flat prices give no battery arbitrage, and district load is well below target, so baseline holds.","status":"clamped"},{"clamps":[{"applied":0.2731,"point":"Building_1.cooling","reason":"indoor 21.5 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.3407,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day, no top-price hours; batteries idle, cooling at baseline with held trim for overcooled Building_1, DHW idle.","status":"clamped"},{"clamps":[{"applied":0.2152,"point":"Building_1.cooling","reason":"indoor 21.8 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2828,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day with no top-price hours; batteries idle as suggested. Building_1 is overcooled, so the held trim stays and cooling is kept at baseline.","status":"clamped"},{"clamps":[{"applied":0.1475,"point":"Building_1.cooling","reason":"indoor 22.0 C is more than 0.5 C below the setpoint 24.4 C, trim held at 0.068","requested":0.2151,"rule":"trim_hold"}],"fallback":null,"reason":"Flat price day so batteries idle; Building_1 overcooled 2.4C, trim held at -0.068 with no deeper cut needed; others at baseline.","status":"clamped"}],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,2.0,3.0,4.0,5.0,5.0,5.0,5.0,5.0,6.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,7.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,8.0,9.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,10.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,19.0,21.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,29.0,30.0,31.0,32.0,33.0,34.0,35.0,36.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,37.0,38.0,39.0,40.0,41.0,42.0,44.0,45.0,46.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,47.0,48.0,49.0,50.0,51.0,53.0,55.0,57.0,60.0,63.0,65.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,67.0,68.0,68.0,69.0,69.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,70.0,71.0,72.0,73.0,74.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,75.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,81.0,83.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,88.0,90.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,97.0,98.0,99.0,100.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,101.0,102.0,104.0,105.0,107.0,108.0,108.0,108.0,108.0,108.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,109.0,111.0,113.0,114.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,115.0,116.0,117.0,117.0,118.0,120.0,121.0,123.0,125.0,126.0,127.0,128.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,133.0,133.0,134.0,136.0,138.0,140.0,142.0,144.0,146.0,148.0,150.0,151.0],"district_grid_kwh":[1.428,1.505,1.446,1.419,1.418,1.731,2.889,2.572,9.774,4.524,2.596,4.693,3.205,3.072,3.749,5.508,4.518,2.425,3.846,4.798,6.35,5.199,4.935,5.313,2.662,1.693,1.42,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.504,6.967,7.557,5.909,6.901,4.779,5.918,5.252,5.194,3.539,2.73,2.239,1.924,1.707,1.708,1.824,1.704,3.322,4.782,0.983,1.686,1.836,1.408,7.666,1.84,4.907,5.783,4.224,4.7,3.44,2.933,4.038,2.015,1.998,1.37,1.274,1.608,2.363,1.808,2.916,3.695,2.42,3.176,1.364,1.75,0.977,1.479,0.677,0.393,-0.773,0.408,1.462,3.514,3.092,3.252,2.845,3.3,3.352,2.926,2.89,2.757,2.646,3.336,1.638,2.291,3.892,1.512,0.613,0.276,1.015,1.716,1.858,2.26,1.407,1.653,3.85,5.468,6.605,3.946,2.36,2.645,2.22,3.181,2.766,1.837,3.031,1.625,3.471,11.931,2.928,3.569,7.487,2.738,1.202,1.25,1.579,2.745,0.947,0.949,2.115,3.098,4.646,12.543,4.061,2.756,2.552,2.914,4.076,3.357,3.142,2.845,2.813,5.519,2.823,4.008,1.616,0.796,4.509,3.156,3.192,3.361,0.9,0.925,2.722,5.463,3.815,4.402,3.15,1.961,2.142,1.903,2.941,2.346,2.285,2.268,3.978,3.287,1.919,2.43,0.757,0.633,1.133,0.777,1.626,2.262,1.034,1.302,1.973,4.68,4.83,4.41,3.23,2.838,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.474,1.431,2.602,2.919,9.291,6.191,5.687,4.933,5.866,6.606,5.413,3.852,3.693,3.788,2.651,2.203,2.125,2.161,1.742,1.507,2.93,1.578,1.493,1.265,0.886,1.289,1.072,2.349,10.873,3.493,4.669,11.31,6.567,7.595,6.376,4.609,3.643,3.227,2.574,2.608,3.106,3.289,1.577,2.637,1.61,7.204,3.648,6.248,4.07,2.427,1.514,1.609,2.848,8.085,2.861,3.338,2.913,5.471,4.896,3.87,9.817,2.286,3.437,2.407,2.315,3.332,3.169,3.085,3.119,3.124,1.675,1.227,2.877,1.673,2.263,1.769,2.995,3.665,3.748,8.384,5.056,6.951,8.503,7.67,8.132,10.967,3.634,2.183,1.974,3.385,2.773,2.691,2.807,4.156,1.783,1.568,0.691,0.902,0.956,1.551,1.476,3.515,2.834,3.169,2.196,4.991,6.073,5.044,4.333,5.147,2.751,2.909,3.262,3.239,2.737,2.673,2.832,3.2,4.736,3.033,0.954,1.079,0.792,2.955,2.758,0.963,0.88,1.239,2.14,4.912,5.635,5.634,3.481,3.157,3.811,3.792,3.821,3.261,3.025,4.134,2.114,2.323,4.15,6.713,3.861,3.027,2.275,2.331,2.004,4.659,1.901,2.218,3.854,5.818,4.534,4.253,5.515,2.645,4.409,2.27,2.524,2.145,1.938,1.769,1.797,1.846,4.154,2.309,2.566,2.084,1.979,7.515,3.188,4.44,3.907,7.421,6.03,5.245,5.283,5.762,4.365,2.495,1.784,1.801,1.728,1.272,1.175,1.383,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.944,2.007,3.042,3.178,3.362,3.151,3.036,4.838,6.005,2.505,2.439,3.625,2.946,1.739,3.903,6.805,3.201,2.344,2.283,2.423,3.741,5.53,3.146,5.541,3.05,2.84,3.449,3.476,3.132,3.397,1.371,1.888,3.469,5.529,4.477,3.341,1.959,1.397,2.822,3.085,5.089,0.876,0.72,2.012,2.756,3.247,3.272,2.968,1.98,3.171,3.866,4.588,3.022,2.57,2.625,3.946,1.838,3.059,2.711,1.507,1.077,3.114,2.421,0.864,1.091,0.459,1.278,1.649,2.642,3.106,3.882,6.143,3.819,4.244,2.213,1.919,2.229,3.642,3.194,2.829,3.078,3.85,1.565,1.006,0.934,3.23,1.987,2.222,3.141,1.958,2.888,2.884,7.895,4.354,3.735,4.013,3.742,3.189,3.619,3.916,1.996,3.021,2.325,4.041,7.961,4.826,5.108,2.581,1.491,4.181,3.019,2.155,3.687,4.385,3.677,2.643,5.084,5.674,4.553,4.148,2.807,2.303,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.213,9.224,2.975,4.917,3.697,7.391,11.838,6.626,5.944,6.997,5.246,4.401,3.69,3.356,2.847,2.348,2.359,1.597,1.499,1.796,2.04,2.114,3.156,2.921,2.058,4.002,1.611,7.747,6.152,2.637,4.197,9.548,7.193,7.326,4.817,4.508,4.246,4.569,2.35,2.362,2.212,2.98,1.562,3.133,5.132,5.441,3.648,2.376,1.222,1.928,1.838,3.238,3.061,5.031,1.442,1.886,1.857,2.741,6.318,4.152,4.48,3.781,2.254,2.778,2.272,3.342,3.567,3.858,3.028,2.794,2.459,1.78,2.303,1.134,1.095,2.39,2.704,2.749,1.134,1.588,2.732,3.984,3.963,4.901,3.266,8.24,2.992,3.025,3.464,3.241,3.063,2.967,5.536,3.09,3.041,4.12,2.2,1.085,1.641,0.605,0.701,2.914,2.558,4.346,2.592,6.712,14.271,5.214,7.633,3.054,3.327,2.024,3.599,2.971,1.466,3.075,4.166,6.521,4.009,7.423,7.13,4.001,4.062,4.564,4.337,6.241,3.048,4.126,3.755,5.978,7.441,4.61,18.966,4.239,2.863,2.47,4.851,4.74,2.837,3.257,2.994,5.398,3.205,2.903,3.41,2.945,5.975,4.262,3.399,4.631,2.937,3.751,3.823,13.567,6.44,4.501,5.053,5.277,4.022,2.382,2.05,1.522,1.483,1.472,1.598,1.704,3.256,3.394,6.398,4.925,2.867,4.312,5.35,6.469,7.03,8.005,8.103,7.187,5.896,5.316,5.103,5.225],"emission_kg":[0.575,1.151,1.685,2.206,2.736,3.403,4.545,5.603,9.833,11.772,12.988,15.276,16.851,18.349,20.147,22.744,24.823,25.913,27.601,29.693,32.489,34.814,37.033,39.388,40.535,41.209,41.753,42.54,43.421,44.372,45.326,45.878,47.172,47.781,48.997,50.669,54.776,57.918,60.56,63.861,67.373,70.085,73.196,75.321,77.964,80.37,82.752,84.362,85.64,86.638,87.45,88.134,88.798,89.504,90.177,91.526,93.52,94.099,95.02,96.08,96.852,100.993,101.96,104.514,107.503,109.674,112.07,113.786,115.236,117.248,118.234,119.222,119.883,120.468,121.132,122.042,122.794,124.103,125.744,126.91,128.546,129.259,130.213,130.743,131.535,131.95,132.249,132.354,132.565,133.312,135.106,136.702,138.398,139.861,141.518,143.099,144.384,145.57,146.636,147.683,149.044,149.759,150.825,152.699,153.464,153.815,154.261,155.07,156.068,157.067,158.271,159.011,159.873,161.866,164.662,167.982,169.936,171.06,172.283,173.308,174.69,175.816,176.537,177.66,178.26,179.552,184.28,185.504,187.093,190.513,191.784,192.404,193.226,194.101,195.511,196.029,196.613,197.661,199.16,201.343,207.112,208.948,210.168,211.246,212.443,214.018,215.272,216.448,217.544,218.658,220.951,222.126,223.918,224.704,225.196,227.312,228.824,230.388,232.03,232.469,233.047,234.327,236.822,238.497,240.437,241.829,242.676,243.588,244.391,245.503,246.354,247.164,248.002,249.515,250.857,251.749,252.953,253.346,253.794,254.5,255.006,255.762,256.832,257.324,257.94,258.863,261.05,263.303,265.372,266.893,268.202,269.149,270.028,270.715,271.27,271.789,272.302,272.845,273.871,274.616,276.233,276.9,277.559,278.78,280.176,284.642,287.561,290.212,292.504,295.209,298.225,300.696,302.484,304.191,305.866,306.952,307.834,308.635,309.384,309.975,310.485,311.474,312.016,312.542,312.993,313.447,314.007,314.519,315.567,320.578,322.222,324.425,329.759,332.853,336.335,339.209,341.293,342.925,344.324,345.426,346.505,347.737,348.996,349.59,350.562,351.162,353.89,355.295,357.773,359.341,360.313,361.033,361.805,363.15,367.034,368.416,370.04,371.46,374.131,376.521,378.415,383.152,384.211,385.708,386.745,387.685,388.989,390.224,391.446,392.714,394.045,394.796,395.431,396.711,397.475,398.56,399.418,400.863,402.61,404.378,408.283,410.597,413.735,417.613,421.183,425.035,430.174,431.84,432.844,433.735,435.167,436.307,437.441,438.674,440.625,441.52,442.314,442.828,443.488,444.119,444.991,445.758,447.573,449.015,450.602,451.684,454.117,457.095,459.59,461.742,464.26,465.589,466.91,468.349,469.674,470.762,471.794,472.952,474.364,476.606,478.108,478.711,479.395,479.872,481.297,482.616,483.307,483.722,484.302,485.302,487.574,490.171,492.787,494.397,495.792,497.415,498.936,500.398,501.589,502.664,504.158,504.975,505.925,507.681,510.541,512.238,513.606,514.661,515.7,516.657,518.705,519.54,520.502,522.162,524.681,526.651,528.526,530.983,532.134,533.963,534.888,535.84,536.642,537.359,538.017,538.698,539.406,541.01,541.895,542.858,543.674,544.535,547.714,549.075,550.957,552.617,555.753,558.304,560.524,562.784,565.305,567.278,568.414,569.216,570.063,570.863,571.459,571.998,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,572.653,574.715,576.938,578.936,579.954,581.474,583.1,584.783,586.334,587.804,590.201,593.243,594.535,595.819,597.717,599.292,600.236,602.348,606.008,607.684,608.886,610.043,611.247,613.077,615.83,617.43,620.251,621.765,623.133,624.666,626.191,627.56,629.058,629.679,630.578,632.319,635.15,637.477,639.199,640.223,641.09,642.59,644.247,646.918,647.374,647.748,648.783,650.18,651.781,653.35,654.75,655.658,657.047,658.786,660.711,661.959,663.084,664.314,666.273,667.213,668.783,670.167,670.985,671.725,673.373,674.737,675.237,675.829,676.078,676.77,677.662,679.092,680.775,682.876,686.18,688.221,690.485,691.622,692.633,693.795,695.724,697.453,699.015,700.719,702.859,703.717,704.296,704.878,706.618,707.693,708.89,710.573,711.618,713.161,714.701,718.931,721.288,723.323,725.478,727.437,729.033,730.65,732.316,733.113,734.295,735.193,736.786,740.266,742.38,744.743,746.057,746.777,748.836,750.329,751.384,753.157,755.252,756.997,758.241,760.602,763.188,765.255,767.127,768.354,769.329,770.284,770.956,771.531,772.146,772.65,773.225,774.068,775.795,777.801,782.368,786.01,787.273,789.437,791.116,794.578,800.188,803.334,806.154,809.465,811.913,813.929,815.606,817.086,818.294,819.233,820.116,820.701,821.227,821.846,822.538,823.268,824.392,825.448,826.305,827.834,828.515,831.842,834.562,835.871,837.787,842.173,845.406,848.618,850.707,852.677,854.532,856.492,857.487,858.501,859.385,860.519,861.131,862.414,864.709,867.292,869.126,870.314,871.092,872.039,873.125,874.74,876.272,878.805,879.553,880.503,881.435,882.805,885.939,887.991,890.212,892.055,893.125,894.329,895.269,896.584,897.979,899.495,900.726,901.903,902.972,903.765,904.866,905.386,905.959,907.075,908.357,909.672,910.214,910.974,912.275,914.174,916.064,918.428,920.002,923.831,925.152,926.406,927.77,929.016,930.185,931.307,933.451,934.701,935.982,937.723,938.701,939.278,940.175,940.984,941.758,943.189,944.451,946.603,947.893,951.224,958.288,960.875,964.635,966.073,967.554,968.389,969.831,970.966,971.51,972.67,974.312,977.049,978.847,982.31,985.509,987.365,989.296,991.502,993.616,996.636,998.091,1000.034,1001.781,1004.536,1007.953,1010.079,1018.85,1020.739,1021.949,1022.953,1024.731,1026.42,1027.419,1028.574,1029.667,1031.719,1032.971,1034.087,1035.382,1036.574,1039.119,1040.996,1042.529,1044.654,1046.008,1047.73,1049.479,1055.672,1058.55,1060.551,1062.805,1065.142,1066.942,1068.015,1068.959,1069.663,1070.352,1071.028,1071.768,1072.548,1074.005,1075.466,1077.993,1079.949,1081.146,1083.009,1085.407,1088.41,1091.707,1095.467,1099.269,1102.612,1105.359,1107.859,1110.218,1112.562],"kpi":{"all_time_peak_average":0.959269,"annual_normalized_unserved_energy_total":0.019385,"carbon_emissions_total":0.96101,"cost_total":0.919048,"daily_one_minus_load_factor_average":0.965129,"daily_peak_average":0.92641,"discomfort_cold_delta_average":0.464022,"discomfort_cold_delta_maximum":3.109464,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.060087,"discomfort_hot_delta_average":0.255475,"discomfort_hot_delta_maximum":5.110755,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.016849,"discomfort_proportion":0.076937,"electricity_consumption_total":0.969511,"monthly_one_minus_load_factor_average":0.999678,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684992,"ramping_average":1.007618,"zero_net_energy":0.968237},"run":"citylearn_challenge_2023_phase_2_local_evaluation_agent_citylearn_20261022T222703Z","steps":719},"agent_run":{"budget_stopped":false,"budget_usd":2.0,"calls":719,"clamped_hours":312,"cost_usd":0.5315,"envelope":{"battery_rate_per_step":0.5,"comfort_band_k":2.0,"comfort_margin_k":0.5,"cooling_max":1.0,"cooling_max_deviation":0.15,"cooling_min":0.0,"cooling_rate_per_step":0.35,"dhw_rate_per_step":0.5,"overcool_guard_unoccupied":true,"peak_forecast_days":2,"peak_limit":true,"peak_target_fraction":1.0,"soc_max":0.95,"soc_min":0.1,"spread_check":true,"storage_max":1.0,"storage_min":-1.0,"trim_hold":true,"trim_hold_c":0.5,"trim_min_depth":0.002,"trim_release_step":0.02},"fallback_hours":0,"model_id":"claude-haiku-5-5","model_key":"haiku","supervisor":"live","trim_ends_early":7},"agent_sample":false,"baseline":{"buildings":{"Building_1":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.678,0.846,0.725,0.633,0.607,1.001,1.608,0.534,4.653,0.483,-0.357,1.817,0.266,0.219,0.945,2.824,3.039,2.14,1.419,2.336,3.167,1.823,1.303,2.042,1.886,1.125,0.744,0.671,1.713,1.752,1.766,0.572,-0.245,-0.069,0.819,1.462,6.669,4.144,2.167,2.167,3.119,2.733,3.531,2.36,3.981,2.93,3.446,2.771,1.996,1.597,1.345,1.167,1.085,1.056,0.979,1.281,1.827,-0.118,-0.286,-0.743,-0.767,-0.321,-0.061,2.823,3.203,2.159,1.652,1.282,0.964,1.54,0.677,1.02,0.69,0.649,0.566,0.452,0.405,1.394,0.36,0.824,0.441,0.178,0.139,0.075,0.006,0.084,-0.175,-0.312,0.37,2.084,1.383,1.363,1.519,1.005,1.032,1.204,0.834,0.908,0.841,0.74,1.702,0.649,1.501,2.044,0.892,0.065,-0.434,-0.302,-0.145,0.399,0.651,1.341,1.712,3.301,2.332,2.04,1.413,1.158,1.266,1.144,0.775,0.658,1.104,1.109,0.93,1.45,5.714,0.799,0.646,5.824,0.119,-0.412,-0.309,-0.341,0.568,-0.373,0.001,3.061,1.979,2.83,8.927,2.165,1.511,1.13,1.289,1.736,1.238,0.991,0.848,0.767,1.873,0.998,2.518,0.266,0.062,5.66,1.286,1.119,1.178,0.97,0.791,2.262,1.689,1.153,2.04,0.959,0.651,0.561,0.49,0.432,0.383,0.35,0.349,3.199,0.452,0.203,1.584,-0.29,-0.446,-0.411,-0.314,0.182,0.323,0.609,0.97,1.585,1.969,1.98,1.566,1.143,0.818,0.682,1.003,0.589,0.549,0.517,0.491,0.446,1.379,0.385,2.23,0.199,0.068,0.72,1.2,1.804,2.687,2.771,2.189,2.53,2.226,2.274,1.659,1.535,1.25,1.57,1.246,1.262,1.367,0.988,0.878,2.232,0.811,0.668,0.35,-0.269,-0.223,-0.154,0.455,0.885,1.278,1.827,5.826,2.385,3.597,2.451,2.338,1.022,1.687,1.019,1.279,1.568,1.391,1.191,1.042,0.981,0.954,1.91,1.899,0.785,0.426,0.228,0.271,0.751,8.035,2.459,2.762,2.716,2.511,1.773,1.42,1.134,0.999,1.867,1.17,1.283,1.227,1.083,0.976,0.919,0.912,0.799,-0.092,-0.027,0.777,1.121,0.266,0.716,1.03,3.647,8.064,3.658,3.461,2.842,2.439,1.622,1.303,1.625,1.095,1.156,1.108,0.973,0.882,0.84,0.823,0.656,0.496,-0.416,-0.483,-0.313,-0.121,0.188,0.744,2.478,3.105,2.534,2.482,3.192,2.715,1.592,1.289,1.509,1.228,1.478,1.224,0.987,0.851,0.773,1.287,3.362,0.391,-0.307,-0.371,-0.205,1.991,1.839,-0.232,0.265,0.758,1.208,2.194,2.594,2.069,1.662,1.447,1.026,1.21,1.481,1.253,1.038,2.151,0.886,0.84,0.753,1.616,-0.171,-0.16,-0.111,0.282,0.224,2.107,1.77,1.998,3.705,2.641,2.159,1.815,3.686,1.274,0.984,1.183,1.504,1.333,1.125,0.968,0.901,0.91,2.903,0.721,0.62,0.328,0.068,4.92,0.98,1.011,0.264,3.799,3.082,1.976,1.843,2.38,1.544,0.885,0.661,0.591,0.537,0.496,0.46,0.429,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.341,1.27,1.438,1.167,1.319,1.597,1.361,1.153,1.011,3.963,1.66,0.809,0.571,0.041,0.632,0.17,0.622,4.299,0.693,1.403,1.806,2.239,2.031,4.027,1.332,4.166,1.122,0.797,0.979,1.289,1.158,1.903,0.884,0.82,0.787,0.652,0.721,1.083,0.014,-0.078,0.686,0.25,0.981,0.693,0.785,0.992,1.271,2.112,1.4,1.165,0.914,0.824,0.827,2.287,1.079,0.924,1.733,2.043,0.857,2.248,1.565,-0.023,-0.235,0.481,-0.126,-0.062,0.121,0.666,1.976,1.994,0.888,1.214,1.11,1.902,1.166,2.755,1.131,1.116,1.039,0.9,1.23,0.752,0.722,0.544,0.213,-0.372,-0.313,1.116,0.465,0.497,1.233,1.444,2.514,2.845,5.034,2.238,1.363,2.117,1.214,0.877,1.089,1.408,1.226,1.032,0.88,2.685,1.355,0.84,0.944,-0.187,0.317,2.427,1.013,0.481,0.986,2.991,3.158,2.811,2.549,2.184,2.534,1.661,1.244,1.04,1.197,0.785,0.677,0.633,0.606,0.579,1.018,0.96,1.038,1.937,6.549,0.489,1.75,1.634,4.402,8.38,2.747,2.775,2.818,2.972,2.443,1.928,1.857,1.732,1.079,1.169,0.69,0.608,0.884,1.063,1.069,0.909,0.01,-0.139,0.892,0.124,7.091,3.778,0.137,1.484,3.241,3.902,2.334,2.013,1.9,1.763,3.035,0.973,1.13,1.417,0.981,0.892,1.095,4.255,2.278,2.019,0.635,-0.163,0.882,-0.051,0.116,0.547,1.941,1.163,1.806,1.093,0.844,3.574,1.744,2.639,2.274,0.928,1.121,1.464,1.309,1.549,2.185,1.682,1.743,1.495,0.39,-0.05,0.108,0.011,0.15,0.716,0.798,1.338,1.966,2.61,1.711,1.991,2.574,1.412,1.201,1.514,1.213,1.31,1.214,1.003,0.926,0.874,0.908,1.117,0.402,-0.219,-0.236,-0.115,-0.644,-0.548,0.954,2.208,3.8,2.127,1.98,2.977,2.506,5.466,1.424,1.916,1.306,1.381,1.271,1.092,0.961,1.979,3.683,2.124,0.769,-0.199,-0.153,2.156,0.873,0.736,3.454,2.032,3.027,2.922,2.843,4.405,2.218,8.411,1.397,1.116,1.28,1.62,3.058,1.286,1.085,1.004,1.852,1.138,0.765,1.284,0.69,1.379,1.5,0.84,1.08,1.649,3.27,3.253,2.696,2.846,2.022,2.601,3.008,1.972,0.991,0.736,0.55,0.552,0.567,0.586,0.613,2.044,1.644,3.571,3.406,1.136,1.332,1.962,2.818,2.816,3.383,3.406,2.488,2.608,2.603,2.726,1.306],"indoor_c":[23.1,22.23,22.22,22.22,22.22,22.22,22.22,22.33,22.77,23.27,24.41,24.44,24.66,24.6,24.34,23.33,22.29,23.64,25.28,24.14,20.64,22.33,22.2,19.53,19.22,20.14,21.16,21.58,21.71,21.76,21.9,22.21,23.79,24.19,24.27,24.25,23.54,23.35,23.15,22.93,22.99,22.29,22.35,22.63,22.06,20.25,18.2,17.59,17.46,17.51,17.65,17.79,18.04,18.13,18.44,18.59,18.56,20.71,21.5,22.96,23.44,23.74,23.72,22.23,20.12,20.13,21.89,22.52,23.0,20.89,22.58,23.02,22.51,22.65,22.93,23.37,23.75,23.96,24.27,23.2,23.56,23.64,24.86,24.07,24.29,25.23,24.97,25.47,24.52,23.58,23.53,23.56,23.55,23.65,23.76,21.56,22.35,21.61,21.68,21.78,21.47,21.93,21.67,21.38,21.87,22.57,23.24,23.89,24.12,23.98,23.68,23.14,22.78,22.29,22.44,22.58,22.79,22.94,23.07,23.18,23.32,23.54,21.49,21.32,21.46,21.65,21.21,21.59,21.82,20.68,22.27,23.42,23.79,24.49,24.34,26.05,26.65,25.5,25.71,24.52,24.03,23.16,23.15,23.37,22.4,21.27,21.29,21.49,21.77,22.04,21.72,22.17,21.75,22.53,23.09,23.28,23.51,23.4,23.21,24.0,25.66,25.96,26.23,26.3,25.78,26.12,26.43,26.71,26.93,27.22,27.53,27.84,28.04,26.6,27.52,28.11,27.36,27.9,27.97,27.88,27.73,27.35,27.01,26.64,26.32,26.01,26.06,26.05,26.08,26.18,26.32,26.5,26.37,26.54,26.63,26.71,26.79,27.0,26.91,27.05,25.78,26.02,25.81,25.44,25.07,24.61,24.11,23.32,23.17,22.65,22.64,22.64,22.69,22.67,22.67,20.95,21.2,20.46,20.43,20.53,20.71,20.78,21.05,21.32,21.67,23.0,23.06,23.21,22.98,22.72,22.5,22.27,23.27,21.93,21.6,21.78,21.99,23.38,22.63,22.48,21.35,20.19,20.17,20.3,20.52,20.57,20.73,20.62,20.23,21.08,21.71,22.3,22.33,22.16,20.54,19.95,20.43,20.7,21.17,21.46,21.73,21.96,22.18,20.54,20.92,20.14,20.16,20.35,20.6,20.78,20.94,21.13,22.84,22.95,23.03,22.59,22.53,22.27,22.06,21.58,20.99,20.92,21.06,21.25,21.23,21.7,21.93,19.91,20.84,20.15,20.23,20.44,20.71,20.95,21.15,21.29,21.26,23.1,23.51,23.71,23.6,23.38,22.99,22.53,22.16,21.82,21.93,21.9,21.75,22.01,22.22,22.41,21.49,20.35,20.42,20.67,20.96,21.26,21.52,21.51,22.1,23.5,23.81,23.87,24.66,25.34,25.84,25.85,25.65,25.32,24.02,22.96,22.82,22.88,23.05,23.24,22.31,21.05,21.04,21.2,20.93,21.43,21.61,21.84,21.73,23.32,23.55,23.77,23.65,24.25,23.01,22.64,22.34,21.84,21.92,22.09,22.3,21.57,22.18,22.51,21.69,20.44,20.42,20.55,20.78,20.98,21.26,20.6,21.47,22.9,23.09,23.38,21.29,22.35,22.9,24.51,24.56,24.06,24.45,24.67,24.37,24.79,25.08,25.32,25.47,25.62,25.78,25.95,26.13,26.52,26.62,26.86,26.91,26.86,26.73,25.93,25.96,26.25,26.8,27.36,28.05,28.68,29.45,29.91,28.54,26.84,25.3,24.9,23.62,22.06,21.89,21.86,21.93,20.97,21.31,21.49,21.96,23.28,23.38,23.48,23.31,23.83,23.23,22.39,22.11,21.68,20.93,20.24,21.54,20.58,21.51,21.87,21.04,19.88,19.96,20.08,20.29,20.46,20.69,20.82,21.34,22.5,22.89,23.1,23.02,23.48,23.27,23.23,23.28,23.32,23.4,23.36,23.38,23.38,23.44,23.51,22.53,21.06,21.06,21.2,21.01,21.22,21.56,20.93,21.01,22.81,23.42,23.57,23.71,23.68,23.4,22.35,22.23,22.87,23.33,23.54,23.62,23.59,23.65,22.62,22.34,21.22,21.16,21.33,21.52,21.68,21.85,22.08,22.59,23.98,24.09,23.9,23.67,23.56,23.42,22.93,21.13,20.92,21.34,21.85,22.18,22.3,22.49,22.66,21.73,20.46,20.48,20.65,20.93,20.41,20.93,21.3,21.79,23.17,23.46,22.63,22.98,23.52,23.36,21.23,20.93,21.06,21.32,21.5,21.67,21.87,22.09,22.28,21.49,22.33,22.67,22.92,23.11,23.33,23.5,22.38,21.82,22.29,22.49,22.82,22.24,22.28,21.8,21.08,20.93,20.61,20.34,20.53,21.16,21.49,19.42,19.21,20.14,19.59,20.9,21.43,20.59,20.14,20.26,20.34,22.17,22.36,22.42,22.47,21.65,22.26,23.68,21.91,20.06,20.12,20.63,20.81,20.65,20.89,20.55,21.24,20.48,19.56,20.43,20.62,20.03,19.59,19.38,19.7,20.32,21.85,21.94,22.11,21.98,21.8,21.44,21.26,21.13,22.02,23.34,21.27,21.49,21.09,21.51,21.8,20.98,19.78,19.85,19.96,19.75,19.96,20.19,20.39,20.96,22.35,22.4,22.57,22.22,22.05,21.89,21.32,20.81,21.03,21.97,21.68,21.63,21.77,21.91,20.46,20.85,20.03,20.04,20.24,20.49,20.72,20.89,20.99,21.37,22.79,23.07,23.27,24.88,25.59,24.33,22.6,21.87,23.34,23.75,20.79,21.59,21.56,21.9,19.95,20.79,20.01,20.09,20.27,20.55,20.65,20.07,20.54,20.62,22.52,22.92,20.17,21.77,22.12,21.39,21.3,21.0,20.78,20.88,20.3,20.8,20.61,21.01,21.3,20.5,19.36,18.87,19.35,19.71,20.04,20.06,20.34,20.75,21.66,20.86,21.64,19.93,21.48,21.53,21.34,20.87,21.92,22.87,21.36,21.34,19.3,18.14,18.36,19.84,20.77,21.73,22.08,22.33,22.51,22.73,22.15,22.49,21.45,21.22,21.47,21.4,21.16,20.79,20.34,19.9,19.57,20.24,20.04,20.14,20.23,20.52]},"Building_2":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.187,0.186,0.185,0.187,0.202,0.231,0.248,0.345,2.934,0.672,0.633,0.669,0.97,0.787,1.197,2.665,1.802,1.708,1.202,1.013,1.561,1.204,0.913,0.323,0.212,0.379,0.46,0.201,0.202,0.231,0.243,0.245,2.33,0.564,1.008,1.188,1.013,1.471,1.827,2.989,1.635,1.344,1.37,0.795,0.66,0.629,0.641,0.483,0.374,0.313,0.274,0.251,0.247,0.262,0.256,0.358,0.371,0.5,0.455,1.85,0.977,0.827,0.738,0.363,0.47,0.676,0.656,0.581,0.607,0.85,0.532,0.268,0.202,0.232,0.416,0.352,0.202,0.231,0.254,0.361,0.365,0.437,0.441,0.449,0.404,0.336,0.454,0.428,0.723,1.826,0.673,0.718,0.518,0.511,0.503,0.58,0.518,0.23,0.185,0.187,0.202,0.231,0.241,1.601,0.461,0.556,0.868,1.536,1.003,0.964,1.034,1.16,1.171,1.317,1.129,0.737,0.781,0.715,0.584,0.374,0.514,0.278,0.185,0.187,0.202,0.231,0.298,0.426,0.569,0.516,0.582,0.598,1.149,0.966,0.734,0.822,0.925,1.038,1.108,0.679,0.552,0.488,0.412,0.7,0.563,0.186,0.185,0.187,0.202,0.231,1.118,0.35,0.594,1.127,0.674,0.467,0.628,0.712,0.926,1.0,1.022,1.022,0.857,0.653,0.745,0.511,0.528,0.67,0.764,0.686,0.185,0.187,0.202,0.231,0.24,0.971,0.4,0.494,0.514,0.822,0.672,0.699,0.885,0.926,0.955,1.009,0.942,0.855,0.746,0.725,0.619,0.373,0.307,0.389,0.234,0.217,0.218,0.236,0.332,0.536,0.653,0.738,0.704,0.896,0.874,1.035,1.117,1.233,1.168,1.161,1.067,0.811,0.711,0.665,1.343,0.341,0.295,0.257,0.23,0.215,0.219,0.24,0.318,0.415,0.602,0.865,0.886,0.916,1.168,9.8,1.415,1.521,1.533,1.541,1.605,1.062,0.854,0.539,0.654,0.746,0.36,0.205,0.227,0.235,0.25,0.275,0.345,0.705,2.349,0.969,1.006,0.935,0.907,1.331,1.137,1.166,1.158,1.182,1.092,0.82,0.642,0.518,0.525,0.6,0.753,0.396,0.185,0.187,0.214,0.249,0.358,0.482,0.759,1.709,0.658,0.777,1.085,1.057,1.105,1.215,1.205,1.706,1.345,0.994,0.857,0.933,0.999,0.492,0.207,0.225,0.471,0.223,0.232,0.254,0.353,0.554,0.544,0.592,0.517,0.843,0.679,0.668,1.592,1.638,0.706,0.994,1.2,0.983,1.252,0.897,1.846,0.524,0.596,0.664,0.198,0.187,0.202,0.231,0.414,0.589,2.082,0.685,1.01,0.714,0.885,0.797,0.929,1.012,1.021,2.391,1.077,1.195,0.806,0.751,0.616,0.448,0.681,0.483,0.185,0.187,0.206,0.24,0.452,0.622,6.144,3.19,1.807,1.768,0.757,0.853,1.282,1.227,1.225,1.287,1.232,0.937,0.991,1.101,0.608,0.452,0.497,0.485,0.198,0.221,0.215,0.266,0.444,0.613,0.758,0.985,0.842,0.941,1.124,1.163,2.019,1.939,1.246,1.269,1.286,1.051,0.856,1.04,0.466,0.394,0.568,0.607,0.231,0.198,0.447,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.653,1.154,0.459,0.385,0.638,0.576,0.185,0.192,0.22,0.253,2.199,0.708,0.975,2.712,0.878,0.926,2.237,1.089,1.578,1.481,1.102,0.808,0.802,0.705,0.748,0.601,0.35,0.435,0.696,0.387,0.185,0.187,0.202,0.231,0.278,6.647,1.482,1.563,0.569,0.533,0.915,2.424,6.174,0.663,0.577,0.416,0.357,0.305,0.443,0.45,0.233,0.306,0.613,0.287,0.185,0.187,0.202,0.231,0.252,0.309,0.462,0.816,0.836,2.079,2.033,0.354,0.376,0.551,0.778,0.395,0.796,0.526,0.613,0.496,0.507,0.597,0.66,0.291,0.185,0.187,0.202,0.231,0.266,0.373,0.466,0.572,0.602,0.747,0.823,0.831,1.042,1.565,1.265,0.827,2.076,0.823,0.744,0.702,0.569,0.479,0.63,0.658,0.185,0.187,0.202,0.231,0.359,2.37,0.984,1.299,0.681,0.976,1.447,1.103,1.875,1.984,0.872,1.098,1.164,0.918,0.71,0.814,0.966,1.008,0.385,0.192,0.215,0.457,0.231,0.255,0.368,1.009,3.283,9.608,1.758,1.698,1.542,0.953,1.274,1.445,1.453,1.458,1.829,1.082,1.002,0.906,0.481,0.89,0.818,0.442,0.202,0.216,0.241,0.269,0.389,1.799,1.068,0.766,2.297,0.715,1.178,1.8,1.831,1.158,2.944,1.33,2.405,1.014,1.124,0.708,0.401,0.798,0.713,0.186,0.188,0.216,0.248,0.28,1.013,0.752,0.762,0.72,0.811,0.904,1.367,0.896,1.48,1.583,1.483,0.616,0.58,0.718,0.739,0.65,0.492,0.441,0.33,0.245,0.249,0.247,0.257,0.279,0.369,0.475,0.589,0.698,0.664,0.687,0.862,0.821,0.952,1.007,1.017,1.095,1.025,0.991,0.888,0.851,5.033,0.691,0.413,0.351,0.226,0.232,0.241,0.267,0.467,0.748,1.804,0.926,0.907,1.525,0.928,1.054,1.164,1.302,1.39,1.489,3.266,1.215,1.019,0.949,0.94,0.648,0.664,0.402,0.288,0.242,0.258,0.281,0.447,0.621,1.257,0.909,0.89,0.963,1.7,1.222,1.457,1.592,1.718,1.883,1.726,1.224,1.008,1.208,1.098,1.366,0.579,1.241,0.361,0.264,0.277,0.302,1.734,0.617,1.13,1.053,1.231,1.078,1.197,1.483,2.018,1.833,1.453,1.494,1.359,1.588,0.999,0.877,0.552,0.461,0.59,0.574,0.272,0.26,0.273,0.307,0.395,0.539,0.89,1.092,1.14,1.29,1.624,1.632,1.964,2.077,1.855,1.711,1.995,1.325,0.959,0.855,0.502],"indoor_c":[24.28,24.26,24.21,24.12,24.0,23.89,24.2,24.85,24.99,25.0,25.0,25.0,25.46,25.66,25.65,25.87,26.17,26.25,26.3,26.46,25.57,24.73,23.96,25.42,25.97,24.94,24.06,25.36,26.0,26.02,26.45,26.83,24.44,25.53,25.77,25.61,25.97,25.28,25.2,24.87,25.92,25.96,26.25,26.48,26.48,26.37,25.84,25.91,25.88,26.1,26.35,26.61,26.81,26.86,27.27,27.58,27.69,27.64,27.39,26.93,26.67,25.39,25.48,26.82,26.73,26.64,26.6,26.53,26.14,24.91,24.57,25.4,25.83,25.92,24.47,24.48,25.61,25.72,26.05,26.33,26.51,26.83,27.01,27.22,27.36,27.41,27.3,27.31,26.84,26.65,26.79,26.72,26.69,26.59,25.99,24.94,23.92,24.89,25.54,25.71,25.71,25.57,26.16,25.39,25.86,26.19,24.31,24.24,24.54,24.8,24.77,24.95,25.31,25.53,25.41,25.37,25.46,25.54,25.63,25.69,24.65,25.31,26.01,26.25,26.31,26.26,26.56,26.58,26.49,26.41,26.43,26.43,25.5,25.36,26.09,26.46,26.48,26.49,26.7,26.57,26.52,26.53,26.55,24.62,24.5,26.02,26.5,26.69,26.68,26.53,25.74,26.24,25.59,23.71,25.57,25.9,25.91,25.95,25.77,26.04,26.16,26.28,26.4,26.27,26.32,26.28,25.78,24.44,23.08,22.38,24.39,25.61,25.73,25.56,25.64,25.4,25.59,25.66,25.72,25.59,25.69,25.92,25.83,26.05,26.13,26.21,26.25,26.25,26.18,26.07,25.98,26.05,25.99,26.06,26.17,26.29,26.34,26.28,26.39,26.37,26.24,26.24,26.29,26.3,26.31,26.34,26.08,26.14,26.12,26.09,26.09,26.04,25.95,25.88,24.94,25.57,25.44,25.57,25.72,25.89,26.01,26.04,26.2,26.23,26.01,25.87,25.78,25.72,25.68,25.03,25.26,25.32,25.29,25.26,25.24,25.31,25.42,25.55,24.72,23.83,24.74,25.71,26.0,26.26,26.46,26.57,26.72,25.32,23.35,24.33,23.86,24.38,24.96,25.06,25.03,25.26,25.36,25.41,25.43,25.4,25.48,25.55,25.19,24.45,23.3,24.08,25.32,25.86,26.18,26.35,26.5,26.43,26.17,25.08,25.49,25.47,25.5,25.51,25.36,25.48,25.56,25.5,25.68,25.61,25.57,25.42,24.05,24.56,25.73,25.78,25.83,25.92,26.0,26.03,26.21,26.21,25.93,25.89,25.91,25.88,25.89,25.97,24.06,24.05,25.79,25.8,26.01,25.85,25.67,25.52,24.79,24.96,24.22,23.81,25.18,25.81,25.98,25.92,26.09,26.1,24.47,25.22,25.43,25.49,25.53,25.71,25.6,25.72,25.75,24.46,25.32,25.22,25.39,25.44,25.5,25.34,23.8,24.0,25.46,25.97,26.12,26.04,26.09,26.06,25.49,23.98,23.72,25.07,25.62,25.5,25.3,25.38,25.39,25.37,25.36,25.32,25.15,24.31,24.66,24.97,24.45,24.83,25.86,26.11,26.23,26.15,26.18,26.06,25.92,25.77,25.78,25.69,25.59,25.54,24.04,23.65,24.75,25.05,25.01,25.09,25.24,25.35,25.47,25.51,24.26,23.66,25.03,25.83,25.73,26.01,26.34,26.5,26.54,26.63,26.69,27.01,27.39,27.91,28.54,29.11,29.67,30.24,30.89,31.44,28.82,28.24,27.48,27.07,24.65,24.27,25.84,26.45,26.7,26.79,24.32,24.53,24.23,23.62,24.97,25.35,24.23,24.91,23.86,24.08,24.85,24.82,24.89,25.04,25.09,25.12,25.19,24.55,22.96,23.6,24.76,25.19,25.48,25.64,25.73,25.55,25.62,25.76,25.74,25.8,25.9,25.69,25.37,25.71,25.93,25.99,26.04,25.96,25.84,25.74,25.72,25.14,23.86,24.42,25.2,25.48,25.62,25.64,25.78,25.81,25.85,24.5,24.07,25.43,25.78,25.88,25.74,25.7,25.77,25.73,25.53,25.69,25.67,25.64,25.02,23.62,22.53,23.67,24.99,25.38,25.46,25.37,25.7,25.81,25.77,25.77,25.79,25.7,25.72,25.83,25.65,24.6,24.87,25.83,24.56,25.38,25.42,25.44,25.49,25.53,23.75,23.54,25.13,25.7,25.83,25.74,25.84,24.02,23.69,23.05,24.5,24.52,23.61,24.43,23.27,23.17,24.98,25.17,25.2,25.24,25.26,25.31,24.11,22.99,24.23,25.46,25.68,25.84,25.95,25.9,25.98,25.47,25.18,24.61,24.45,23.38,23.88,25.16,25.02,25.09,25.1,25.12,25.14,25.2,25.22,25.23,25.3,23.61,22.89,24.66,25.46,25.81,26.0,26.02,25.97,23.5,23.79,24.89,23.51,24.47,24.69,23.37,23.32,24.58,23.21,24.15,23.41,24.18,23.49,23.81,24.58,22.74,22.68,24.42,25.06,25.39,25.66,25.81,24.51,24.49,24.83,25.38,25.67,24.59,23.96,24.75,23.2,23.17,22.4,24.13,24.89,25.0,25.05,25.13,24.76,24.64,24.9,25.27,25.35,25.46,25.58,25.7,25.89,25.89,25.76,25.77,25.54,25.48,25.4,25.49,25.36,25.46,25.46,25.44,25.45,25.42,25.32,25.11,23.02,23.76,24.17,24.28,24.83,24.98,25.16,25.31,25.52,25.09,24.27,24.91,25.24,24.87,25.3,25.21,25.37,25.53,25.53,25.51,24.1,24.94,24.9,24.78,24.61,24.48,24.3,24.57,25.04,25.46,25.62,25.67,25.81,25.73,25.19,25.41,25.57,25.67,25.48,25.53,25.32,25.35,25.05,24.83,24.94,25.16,25.16,24.21,24.09,23.59,23.95,23.38,24.77,25.2,25.42,25.51,24.1,24.78,23.58,24.11,24.52,24.51,24.48,24.12,23.36,23.62,24.28,24.29,24.36,24.22,24.52,24.61,24.75,24.86,24.02,23.7,24.8,25.3,25.52,25.54,25.59,25.48,25.15,24.95,24.87,24.78,24.71,24.68,24.4,24.34,24.24,24.25,24.09,24.6,24.76,24.79,25.0]},"Building_3":{"battery_soc":[0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2,0.2],"dhw_soc":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0],"grid_kwh":[0.563,0.473,0.446,0.433,0.435,0.5,1.033,0.884,2.187,2.132,1.284,0.969,0.731,0.829,0.891,1.994,1.803,1.649,1.968,1.807,1.774,2.584,2.719,2.948,0.809,0.645,0.577,1.238,0.461,0.608,0.55,0.63,0.852,0.872,0.804,0.82,0.798,0.894,1.726,2.027,3.019,2.253,2.421,2.045,1.615,1.693,1.107,0.639,0.589,0.559,0.535,0.519,0.525,0.572,0.535,0.508,1.347,0.915,1.691,0.415,0.565,8.096,1.113,1.721,2.25,1.528,2.802,1.989,1.722,1.679,0.726,0.479,0.478,0.484,0.476,0.472,0.47,0.56,2.248,0.742,2.124,0.749,1.171,0.453,1.069,0.202,0.114,0.249,0.422,0.807,1.332,1.114,1.238,1.352,1.374,0.742,0.579,0.514,0.494,0.481,0.47,0.528,0.458,0.391,0.2,0.105,-0.034,-0.076,0.858,0.495,0.575,0.952,1.225,2.137,2.804,4.356,2.4,0.973,1.143,0.754,0.656,0.592,0.549,0.497,0.492,0.553,8.204,0.944,1.117,1.147,0.941,0.355,0.469,0.49,0.703,1.24,1.54,1.379,1.715,1.358,3.324,1.408,0.834,0.723,0.65,0.917,0.898,0.844,0.592,0.578,1.476,1.06,0.654,0.397,0.281,0.361,1.26,0.871,0.725,0.775,1.628,2.323,3.137,2.229,1.836,1.845,0.891,0.745,0.649,0.586,0.541,0.511,0.48,0.548,1.358,0.745,0.446,0.313,0.188,0.172,0.237,0.744,0.988,1.193,1.485,2.414,2.149,2.623,2.755,2.023,1.66,1.034,0.69,0.636,0.587,0.564,0.555,0.599,0.603,0.761,0.631,0.536,0.658,0.987,0.845,6.452,2.388,1.682,1.651,2.174,3.312,2.328,1.708,1.719,1.421,0.741,0.662,0.605,0.565,0.54,0.528,0.589,0.579,0.544,0.447,0.423,0.577,0.319,0.859,0.703,1.045,1.614,4.011,2.641,2.393,2.863,1.419,2.082,0.97,0.84,0.97,0.92,0.844,0.561,0.48,0.601,4.874,0.917,0.805,1.241,0.534,0.411,0.792,0.886,0.994,1.375,1.684,1.595,2.146,2.303,2.388,9.131,1.259,1.141,0.599,0.637,0.684,0.661,0.657,0.714,0.617,0.536,0.625,0.764,0.382,0.507,0.561,1.241,0.84,1.134,1.53,2.179,2.146,4.945,4.652,5.853,9.45,1.516,0.881,0.593,0.569,0.552,0.551,0.606,1.792,0.574,0.528,0.44,0.794,0.37,0.42,0.379,0.663,1.167,1.71,1.728,1.96,2.549,1.729,2.494,2.664,1.286,0.673,0.622,0.58,0.552,0.526,0.591,0.613,0.785,0.418,0.334,0.219,0.282,0.305,0.403,0.493,1.076,1.46,1.527,1.917,3.356,3.53,1.587,1.556,1.479,0.664,0.62,0.585,0.563,0.54,0.598,0.768,2.533,1.353,0.967,0.685,0.618,0.552,0.556,0.874,1.251,1.729,2.102,2.715,2.296,2.326,1.591,1.314,3.385,0.757,0.647,0.614,0.592,0.586,0.63,0.647,0.638,0.83,1.126,1.079,1.134,1.553,1.127,1.493,1.787,2.459,1.761,2.065,2.472,2.609,1.864,1.226,0.811,0.724,0.666,0.628,0.6,0.587,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,2.082,1.939,1.791,0.631,1.084,0.593,0.579,0.568,0.567,0.622,0.91,0.988,0.719,0.858,1.673,0.796,0.874,0.753,0.931,1.151,1.215,1.42,1.489,1.38,1.647,1.299,0.812,0.841,0.575,0.563,0.551,0.543,0.542,0.602,2.226,0.732,1.068,0.706,0.581,0.492,1.007,0.706,0.793,0.803,0.736,0.665,1.249,0.949,1.561,1.361,0.834,0.804,1.27,0.776,0.521,0.512,0.495,1.692,0.73,0.558,0.78,0.769,0.578,0.617,0.514,0.572,0.573,0.484,0.834,1.975,1.368,1.391,2.159,3.745,2.419,0.82,0.525,0.513,0.509,1.815,0.524,0.609,0.866,2.932,0.886,0.497,0.475,1.125,0.698,0.725,0.948,1.168,1.311,1.565,1.591,1.445,1.725,1.611,1.096,0.889,0.661,0.613,0.586,0.565,0.548,0.634,8.641,0.92,2.622,1.322,0.42,0.601,0.535,0.613,1.087,1.637,1.918,2.038,2.217,3.475,2.241,2.363,1.288,0.808,0.73,0.677,0.633,0.6,0.586,0.637,0.651,2.323,0.863,0.977,0.917,1.189,2.025,1.51,2.116,2.496,2.828,2.111,3.038,1.88,1.644,1.545,1.298,0.852,0.8,0.748,0.706,0.676,0.671,0.709,0.656,0.81,0.955,1.02,1.012,0.971,1.19,1.186,1.281,1.755,4.027,2.367,2.992,2.196,1.889,2.179,1.534,0.929,0.814,0.737,0.699,0.581,0.597,0.64,0.957,0.922,1.024,0.869,0.572,1.043,0.856,0.72,0.808,0.95,1.266,1.62,1.983,2.28,1.924,1.448,1.216,0.673,0.636,0.615,0.598,0.585,0.589,0.671,0.643,0.594,0.97,1.857,0.499,0.541,1.542,1.496,1.311,1.227,1.175,2.316,1.937,1.67,2.065,1.637,2.575,1.149,1.905,0.655,0.598,0.591,0.562,3.354,0.9,0.883,1.806,1.471,0.414,0.377,0.737,0.53,0.752,1.076,1.373,2.043,2.442,10.08,2.374,2.07,1.379,1.041,0.858,0.744,0.683,0.64,0.618,0.668,1.154,1.676,5.556,7.639,2.401,0.942,1.24,2.053,1.408,1.747,2.14,2.081,2.099,2.959,2.074,10.153,2.433,1.072,0.834,0.753,0.701,0.667,0.656,0.695,0.737,1.006,0.775,0.831,0.864,3.518,1.473,1.025,1.503,1.906,1.666,2.159,10.01,2.211,1.709,1.576,1.716,1.589,0.8,0.74,0.7,0.671,0.668,0.705,0.696,0.673,0.861,1.962,0.921,0.982,1.897,2.298,2.228,2.679,2.766,2.987,2.982,2.241,2.032,1.8,3.695],"indoor_c":[24.43,24.44,24.44,24.44,24.36,24.29,24.11,23.35,23.33,23.33,23.33,23.33,23.1,22.81,22.46,22.34,22.04,22.87,23.26,23.79,24.0,24.11,23.58,22.63,23.22,23.65,23.94,24.63,24.94,24.62,25.03,25.49,25.27,24.87,24.59,24.34,24.15,23.93,23.58,22.75,22.0,22.52,23.01,22.36,22.28,22.31,23.47,24.18,24.53,24.77,24.94,25.04,25.13,25.24,25.45,25.24,24.82,24.88,24.05,24.03,23.92,23.18,22.87,22.56,22.75,22.98,22.65,22.64,22.65,22.64,23.08,24.05,24.34,24.52,24.7,24.84,24.99,25.13,24.6,24.98,24.54,24.86,24.95,24.8,24.61,24.45,24.35,24.38,24.33,24.2,24.37,24.41,23.81,23.21,23.21,23.62,23.96,24.02,24.11,24.21,24.38,24.93,25.4,25.63,25.63,25.46,25.2,24.96,24.8,24.81,24.51,24.3,24.06,23.53,23.72,22.49,23.03,23.43,23.67,23.92,24.22,24.28,24.39,24.57,24.8,24.89,24.81,24.94,24.06,23.63,23.38,22.96,22.71,22.44,22.19,22.1,21.86,22.84,23.45,23.61,22.9,23.46,23.8,24.09,24.36,24.2,24.13,24.15,24.45,24.74,25.09,25.16,25.23,25.15,24.88,24.63,24.25,24.03,23.79,23.51,23.23,22.87,22.9,22.99,23.3,23.47,23.85,24.14,24.28,24.45,24.54,24.66,24.88,25.01,24.93,25.17,25.12,24.94,24.81,24.5,24.21,23.54,23.19,22.98,22.59,21.6,21.76,21.98,22.09,22.51,23.09,23.36,23.57,23.75,23.91,23.98,24.05,24.18,24.41,24.61,24.67,24.68,24.53,24.32,24.17,23.39,23.31,23.13,23.1,22.88,22.39,22.88,23.1,23.31,23.48,23.74,23.92,24.1,24.23,24.31,24.43,24.52,24.78,24.99,25.08,25.0,24.79,24.46,24.06,23.7,23.44,22.64,21.61,21.35,21.26,21.09,21.58,21.83,22.25,22.52,22.04,21.96,22.03,23.0,23.85,24.12,22.85,23.36,23.67,23.64,23.53,23.34,22.73,22.44,22.34,22.39,22.06,22.66,22.55,21.92,21.9,21.47,22.29,23.24,23.65,23.6,23.47,23.58,23.7,23.87,24.39,24.8,24.3,24.0,23.62,23.4,23.28,22.99,22.69,22.48,22.48,22.73,23.13,22.62,22.0,20.79,20.81,22.4,23.01,23.27,23.52,23.78,24.06,24.34,24.27,24.45,23.95,23.57,23.33,23.18,22.99,22.77,22.55,22.55,22.45,22.5,22.49,22.54,22.77,22.38,22.24,23.26,23.66,23.82,23.95,24.12,24.37,24.58,24.99,25.27,25.22,24.89,24.52,24.24,23.94,23.66,23.48,23.1,22.52,22.84,23.21,22.57,22.44,22.7,22.76,23.62,23.86,24.1,24.23,24.37,24.56,24.61,24.79,24.14,24.32,24.27,24.18,23.96,23.59,23.36,23.11,22.54,22.16,22.3,21.86,22.04,22.21,22.48,22.73,22.2,22.95,23.36,23.66,23.88,24.05,24.22,24.48,24.65,24.66,23.99,23.59,23.3,23.0,22.71,22.48,22.11,21.84,22.16,22.42,22.63,22.81,22.99,23.25,23.51,23.73,23.92,24.07,24.16,24.24,24.7,24.99,24.89,24.28,24.03,23.62,23.51,23.45,23.53,23.95,24.38,25.15,25.91,26.8,27.4,23.48,23.41,23.29,24.34,24.51,24.61,24.68,24.72,24.78,24.86,25.04,25.07,24.55,24.02,23.58,23.38,23.13,22.89,22.68,22.49,22.37,22.6,22.58,22.7,22.77,22.85,23.01,23.65,23.91,24.0,24.12,24.27,24.44,24.62,24.17,24.03,23.95,24.39,24.41,24.22,23.9,23.68,23.52,23.4,22.95,23.47,23.45,23.65,23.72,23.75,23.92,24.04,24.26,24.31,24.42,24.59,24.82,24.51,24.75,24.84,24.28,24.1,23.99,23.73,23.49,23.38,23.31,23.16,23.22,22.94,23.25,23.32,23.35,22.2,22.72,23.58,23.97,24.14,24.28,23.73,24.2,24.49,24.86,24.2,23.88,23.6,23.44,23.24,23.05,22.81,22.61,22.48,22.44,22.99,23.38,23.61,23.79,23.92,24.14,23.74,24.3,24.44,24.53,24.63,24.78,24.9,24.69,24.93,23.99,24.08,23.94,23.65,23.43,23.27,23.14,22.9,22.06,22.04,21.9,21.59,21.82,21.98,22.68,23.22,23.43,23.7,23.86,23.98,24.11,24.24,24.48,23.87,24.07,23.97,23.78,23.5,22.78,22.17,21.43,21.1,20.83,21.18,21.18,21.49,21.79,22.06,22.23,22.57,22.66,22.81,22.94,23.03,23.11,23.23,23.74,24.2,24.2,23.7,23.17,22.88,22.6,22.38,22.13,21.71,20.99,20.85,20.7,21.06,21.65,21.86,22.12,22.46,22.65,22.82,22.99,23.56,23.82,24.04,24.26,24.25,23.72,23.59,23.37,23.14,22.86,22.62,22.47,22.37,22.42,22.66,22.34,22.16,22.31,22.5,22.66,23.41,23.7,23.83,23.97,24.12,24.28,24.46,24.73,24.84,24.6,24.42,23.71,23.12,22.9,22.68,22.48,22.32,22.09,22.41,22.72,22.72,22.43,22.5,22.0,22.97,23.31,23.47,23.62,23.8,24.04,23.17,23.71,24.02,23.58,23.67,23.5,23.35,23.11,22.96,22.73,22.48,22.25,22.06,22.25,21.79,22.17,22.37,22.67,22.95,23.25,23.37,23.48,23.66,23.89,24.13,24.22,24.25,23.67,23.03,22.59,22.9,22.52,22.19,21.66,21.31,21.22,21.58,21.94,22.14,22.49,22.06,22.46,22.78,23.0,23.26,23.45,23.65,23.84,24.05,24.32,24.43,24.41,24.2,23.88,22.49,22.62,22.37,22.24,22.04,21.83,21.77,21.48,21.99,22.38,22.64,22.92,23.15,23.29,23.52,23.68,23.8,23.91,24.05,24.26,24.3,24.19,23.29,23.29,23.03,22.34,21.47,21.02,20.78,20.59,20.8,21.24,21.68,22.03,22.34,21.65]}},"complete":true,"cost_usd":[0.0413,0.0849,0.1241,0.1603,0.1964,0.2464,0.33,0.3814,0.6663,0.7621,0.8181,0.9188,0.9761,1.0296,1.118,1.557,1.9468,2.2693,2.4031,2.5534,2.7429,2.9065,3.0492,3.203,3.287,3.3492,3.4008,3.4618,3.5306,3.6055,3.6796,3.7214,3.8135,3.855,3.9311,4.0315,4.2769,4.4651,4.6306,4.8384,5.0633,5.2464,5.4582,5.6087,5.7897,5.9416,6.0919,6.2045,6.2902,6.3616,6.424,6.48,6.5337,6.5884,6.6396,6.7017,6.8043,6.8452,6.9073,6.9728,7.0174,7.2756,7.3291,7.4711,7.6424,7.7686,7.9165,8.0279,8.1231,8.2409,8.2968,8.348,8.3876,8.4271,8.4693,8.5062,8.5374,8.6007,8.6835,8.7396,8.825,8.8648,8.9158,8.9443,8.9874,9.0055,9.0221,9.0618,9.1507,9.4274,9.5262,9.6193,9.7148,9.7984,9.8825,9.9556,10.0115,10.0593,10.1032,10.144,10.2127,10.2534,10.317,10.4347,10.4799,10.5011,10.5264,10.5712,10.6254,10.6796,10.7454,10.9481,11.1891,11.5854,11.768,11.9759,12.1099,12.1928,12.2794,12.3452,12.4015,12.4457,12.4988,12.5507,12.5977,12.6623,13.0736,13.1369,13.2048,13.4231,13.471,13.4988,13.5459,13.5884,13.6468,13.7678,13.9125,14.2339,14.3739,14.5157,14.8889,15.0073,15.0871,15.1609,15.2333,15.3154,15.3825,15.4411,15.4886,15.5341,15.6634,15.7336,15.8434,15.8955,15.9252,16.1143,16.2068,16.2856,16.368,16.5291,16.7309,17.0599,17.2256,17.3432,17.4779,17.5745,17.6344,17.6916,17.7466,17.7959,17.828,17.8583,17.8881,18.0032,18.0625,18.1184,18.1893,18.2128,18.2333,18.2622,18.2887,18.3361,18.4001,18.5601,18.7602,19.054,19.2015,19.3606,19.5083,19.6217,19.7113,19.7717,19.8296,19.8763,19.916,19.9536,19.9901,20.0272,20.0941,20.1428,20.2444,20.287,20.3284,20.4037,20.4881,20.7569,20.936,21.1005,21.2454,21.4151,21.6062,21.7628,21.8808,21.9942,22.1103,22.187,22.2508,22.3122,22.3748,22.4251,22.4722,22.5607,22.6101,22.6572,22.6977,22.7349,22.7773,22.813,22.8848,23.2143,23.3224,23.4659,23.7949,23.9849,24.2046,24.3891,24.5224,24.6278,24.7236,24.799,24.8744,24.9523,25.0236,25.0811,25.1324,25.1861,25.3647,25.4676,25.6149,25.7022,25.7595,25.8054,25.8628,25.9494,26.2457,26.539,26.8678,27.1901,27.3577,27.5004,27.6301,27.9445,28.025,28.1294,28.2024,28.2693,28.33,28.3858,28.4393,28.4937,28.5483,28.6013,28.6416,28.7137,28.7666,28.8367,28.8924,28.9803,29.067,29.4188,30.0524,30.495,30.6976,30.9535,31.1852,31.4303,31.7703,31.8754,31.9386,31.9957,32.0578,32.1083,32.1565,32.2057,32.2915,32.3435,32.3892,32.4193,32.4575,32.4929,32.5249,32.5609,32.6483,32.9582,33.2821,33.5904,33.7549,33.9509,34.117,34.2623,34.43,34.5261,34.5983,34.6782,34.7361,34.7861,34.8318,34.8779,34.9448,35.0829,35.1671,35.1968,35.2327,35.2617,35.3544,35.443,35.4845,35.6225,35.8126,36.1134,36.2647,36.473,36.6597,36.7763,36.881,36.9664,37.0404,37.1151,37.1736,37.2253,37.3092,37.359,37.4186,37.5325,37.7981,37.9193,37.9919,38.0615,38.1079,38.1555,38.2798,38.529,38.8195,39.2357,39.4278,39.5849,39.7345,39.9204,40.0129,40.1524,40.2229,40.2992,40.3612,40.4173,40.4685,40.5205,40.5783,40.6985,40.7653,40.8443,40.9094,40.9714,41.1912,41.2858,41.4166,41.5321,41.7492,41.926,42.0801,42.2353,42.4044,42.5331,42.6077,42.6617,42.7162,42.7685,42.8077,42.8441,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,42.8865,43.0044,43.1306,43.2373,43.3005,43.3884,43.4684,43.5299,43.5852,43.6372,43.7772,43.9152,43.9882,44.0542,44.1595,44.2523,44.3074,44.4163,44.5953,44.6886,44.9254,45.1672,45.4293,45.5553,45.7335,45.8421,46.0189,46.085,46.145,46.21,46.2748,46.3296,46.4058,46.4529,46.5007,46.5959,46.83,46.9253,47.023,47.057,47.0868,47.1629,47.2614,47.4931,47.6198,47.7429,47.8645,47.9483,48.0465,48.1457,48.2324,48.2897,48.3457,48.424,48.521,48.5726,48.6196,48.6899,48.8046,48.8578,48.9486,49.0304,49.0766,49.1178,49.2104,49.2847,49.3117,49.3429,49.4426,49.6531,49.9092,49.9981,50.0894,50.2026,50.3816,50.5,50.6207,50.6877,50.7432,50.7934,50.8773,50.9339,50.9799,51.0336,51.1458,51.1914,51.2226,51.254,51.3411,51.399,51.4588,51.5528,51.7978,52.0965,52.4037,52.6573,52.7887,52.9004,53.0295,53.1128,53.1777,53.2466,53.3241,53.3819,53.4335,53.4806,53.5834,53.8829,54.0033,54.1359,54.2123,54.2537,54.3704,54.4577,54.5218,54.6369,55.0248,55.3738,55.7227,55.8955,56.0873,56.2471,56.3881,56.4893,56.5719,56.6389,56.6867,56.7308,56.7797,56.8209,56.8634,56.9223,57.0465,57.1965,57.5587,57.8256,57.9232,58.0771,58.1956,58.421,58.7775,58.9807,59.1643,59.3867,59.5583,59.7056,59.8323,59.9374,60.0379,60.116,60.1842,60.2304,60.2738,60.3257,60.3848,60.4459,60.5477,60.6066,60.6582,60.7798,60.8321,61.1058,61.3015,61.3955,61.5227,61.8181,62.038,62.2616,62.4127,62.5548,62.6894,62.8332,62.9113,62.9882,63.0559,63.1099,63.1588,63.2149,63.3646,63.4875,63.5951,63.6657,63.712,63.778,63.8348,63.903,63.966,64.0893,64.3062,64.5734,64.7687,64.868,65.0596,65.1881,65.3262,65.4414,65.5005,65.5608,65.6281,65.6904,65.7593,65.847,65.9232,66.0029,66.0776,66.1344,66.2089,66.2459,66.2821,66.3565,66.445,66.5342,66.7438,66.9877,67.341,67.4772,67.6128,67.7739,67.8876,68.1424,68.2395,68.3416,68.4086,68.4676,68.5204,68.5704,68.7005,68.7663,68.8464,68.9633,69.0332,69.0717,69.1272,69.1757,69.2219,69.3056,69.5746,69.9597,70.2917,70.5158,70.9318,71.1038,71.3511,71.4594,71.5637,71.6455,71.7186,71.7835,71.8407,71.8938,71.9785,72.1314,72.2602,72.4812,72.7304,72.8263,72.9447,73.0559,73.1728,73.357,73.6721,74.076,74.48,74.6744,74.9247,75.0792,75.6556,75.7981,75.9009,75.9789,76.0834,76.2026,76.2668,76.3252,76.3831,76.5081,76.5886,76.6664,76.7588,76.84,77.0141,77.1357,77.2333,77.3674,77.6835,78.0583,78.4635,78.8735,79.0672,79.2051,79.3524,79.5051,79.6215,79.6904,79.7497,79.7937,79.8366,79.8802,79.9264,79.9757,80.0699,80.1681,80.3597,80.5179,80.6165,80.7569,80.9273,81.1301,81.3492,81.5808,81.8152,82.0312,82.2098,82.3716,82.5272,82.6864],"discomfort_h":[0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,3.0,4.0,4.0,5.0,5.0,5.0,6.0,7.0,8.0,9.0,11.0,12.0,13.0,14.0,15.0,15.0,15.0,15.0,15.0,16.0,17.0,17.0,17.0,18.0,19.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,21.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,22.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,23.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,30.0,30.0,30.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,31.0,32.0,33.0,35.0,37.0,39.0,40.0,41.0,41.0,41.0,41.0,42.0,43.0,43.0,43.0,43.0,43.0,43.0,43.0,44.0,45.0,46.0,47.0,48.0,49.0,50.0,51.0,52.0,53.0,54.0,55.0,56.0,57.0,58.0,59.0,60.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,61.0,62.0,63.0,64.0,65.0,66.0,67.0,68.0,70.0,72.0,74.0,76.0,77.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,78.0,79.0,80.0,81.0,82.0,83.0,84.0,85.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,86.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,87.0,88.0,89.0,91.0,92.0,93.0,94.0,95.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,96.0,97.0,98.0,99.0,100.0,102.0,104.0,106.0,107.0,108.0,109.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,110.0,111.0,112.0,113.0,114.0,116.0,118.0,120.0,123.0,126.0,127.0,129.0,130.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,131.0,132.0,133.0,134.0,135.0,136.0,137.0,138.0,139.0,140.0,141.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,142.0,143.0,144.0,145.0,146.0,147.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,148.0,149.0,150.0,152.0,154.0,156.0,158.0,159.0,160.0,161.0,161.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,162.0,163.0,164.0,166.0,168.0,170.0,172.0,174.0,176.0,178.0,179.0,180.0,181.0,182.0,183.0,184.0,185.0,185.0,186.0,186.0,186.0,187.0,188.0,189.0,189.0,190.0,191.0,192.0,194.0,196.0,198.0,200.0,202.0,204.0,206.0,207.0,208.0,209.0,210.0,211.0,212.0,213.0,214.0,215.0,216.0,217.0,218.0,219.0,220.0,221.0,222.0,223.0,224.0,225.0,226.0,227.0,228.0,229.0,230.0,231.0,232.0,233.0,234.0,235.0,236.0,237.0,238.0,239.0,239.0,239.0,240.0,241.0,241.0,242.0,243.0,244.0,245.0,246.0,248.0,249.0,250.0,251.0,252.0,253.0,254.0,255.0,256.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,257.0,258.0,260.0,262.0,264.0,266.0,268.0,269.0,270.0,271.0,272.0,273.0,273.0,273.0,273.0,274.0,274.0,274.0,274.0,274.0,275.0,276.0,277.0,278.0,279.0,281.0,283.0,285.0,287.0,288.0,290.0,291.0,292.0,293.0,294.0,295.0,296.0,297.0,298.0,299.0,299.0,300.0,301.0,301.0,302.0,303.0,304.0,305.0,306.0,307.0,309.0,311.0,313.0,315.0,316.0,317.0,318.0,319.0,320.0,321.0,322.0,323.0,323.0,323.0,324.0,324.0,325.0,326.0,327.0,328.0,330.0,332.0,334.0,336.0,338.0,340.0,342.0,344.0,346.0,348.0],"district_grid_kwh":[1.428,1.505,1.355,1.254,1.245,1.731,2.889,1.763,9.774,3.287,1.561,3.455,1.967,1.835,3.033,7.483,6.644,5.496,4.59,5.157,6.502,5.611,4.935,5.313,2.906,2.15,1.782,2.11,2.376,2.591,2.559,1.447,2.937,1.367,2.63,3.47,8.481,6.508,5.72,7.182,7.773,6.33,7.322,5.2,6.256,5.252,5.194,3.894,2.96,2.47,2.155,1.937,1.856,1.89,1.77,2.147,3.545,1.297,1.861,1.522,0.774,8.602,1.79,4.906,5.922,4.363,5.111,3.852,3.293,4.069,1.935,1.768,1.37,1.366,1.458,1.277,1.078,2.185,2.862,1.927,2.93,1.364,1.75,0.977,1.479,0.623,0.393,0.365,1.515,4.717,3.387,3.195,3.275,2.867,2.91,2.527,1.93,1.652,1.52,1.409,2.374,1.408,2.199,4.036,1.553,0.726,0.4,1.158,1.716,1.858,2.26,3.453,4.108,6.755,6.265,7.132,4.595,2.846,2.993,2.272,1.946,1.528,1.837,1.793,1.624,2.234,14.217,2.169,2.332,7.487,1.643,0.541,1.309,1.115,2.005,1.689,2.467,5.478,4.803,4.867,12.803,4.062,2.756,2.552,2.501,2.839,2.32,2.023,1.642,1.576,4.467,2.408,3.766,1.79,1.017,6.488,3.173,2.703,2.828,2.745,3.44,5.607,5.683,4.035,4.621,3.315,2.07,1.976,1.903,1.704,1.108,1.048,1.031,3.978,2.049,1.919,2.43,0.517,0.256,0.583,0.595,1.626,2.196,2.728,3.41,5.008,5.06,5.457,5.067,3.89,3.098,2.089,2.0,1.615,1.371,1.299,1.264,1.281,2.314,1.681,3.513,1.473,1.431,2.602,2.919,9.291,6.191,5.687,5.009,5.866,6.606,5.413,4.078,3.919,4.015,2.651,2.203,2.124,2.162,1.742,1.625,3.061,1.708,1.627,1.398,1.02,1.239,1.081,2.482,11.388,3.738,4.962,11.371,6.567,7.595,6.376,4.61,3.643,3.311,2.605,2.608,2.693,2.462,1.988,1.772,1.857,6.174,3.531,5.053,2.995,1.965,1.574,1.971,2.968,10.165,5.0,5.604,5.494,5.75,4.896,4.45,10.784,2.784,3.608,2.522,2.315,2.095,1.931,1.847,1.882,1.887,1.817,1.292,2.446,1.816,2.405,1.911,3.014,2.975,5.996,10.799,7.544,6.951,8.78,7.948,8.408,11.751,3.634,2.183,1.974,2.148,1.747,1.665,1.699,2.967,1.783,1.568,0.617,0.828,0.9,0.978,1.234,2.998,5.282,5.52,5.256,5.642,6.724,5.696,4.984,5.799,3.32,2.497,2.764,2.001,1.726,1.579,1.594,2.314,4.736,2.89,0.713,0.858,0.792,3.181,3.039,1.191,2.353,3.24,5.127,5.189,7.144,6.405,4.0,3.62,2.954,2.555,2.584,2.023,1.788,2.897,1.723,2.06,3.908,9.112,3.986,2.331,2.275,1.591,1.633,4.263,4.248,4.951,7.094,6.588,5.392,5.131,6.378,3.196,4.822,2.437,2.636,2.145,1.938,1.77,1.797,2.001,4.154,2.309,2.732,2.249,2.143,7.597,3.27,4.523,3.99,7.504,6.113,5.327,5.365,5.845,4.447,2.577,1.867,1.884,1.81,1.354,1.258,1.464,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,4.075,4.363,3.689,2.183,3.04,2.766,2.125,1.913,1.798,4.838,4.768,2.505,2.265,3.612,3.182,1.893,3.733,6.142,3.201,4.036,4.123,4.467,4.322,6.112,3.727,6.066,2.283,2.073,2.249,2.238,1.894,2.633,1.628,1.653,3.291,8.031,3.27,3.352,1.164,0.947,2.608,3.38,7.948,2.159,2.099,2.072,2.876,3.367,3.404,2.977,1.98,1.933,2.709,3.35,1.785,1.624,2.43,3.966,1.838,3.115,2.807,1.562,1.179,3.177,2.421,0.864,1.071,1.7,3.588,4.364,3.052,3.13,3.882,6.143,4.092,4.172,2.316,1.919,1.733,2.902,1.956,1.592,1.854,3.85,1.565,0.697,0.765,2.988,1.987,2.052,3.223,4.177,5.09,5.236,8.701,4.507,3.832,4.43,2.879,2.245,2.381,2.679,1.996,1.784,1.63,3.55,10.355,4.131,4.549,2.434,1.418,4.005,2.995,2.197,3.948,6.611,5.949,5.947,5.929,6.577,5.484,4.838,3.497,2.856,2.313,1.654,1.525,1.69,1.423,1.471,2.036,4.291,5.184,12.522,9.224,3.376,5.317,4.097,7.792,12.321,7.027,6.345,7.686,5.935,5.089,4.38,3.635,3.474,2.697,2.359,1.597,1.499,1.796,2.04,2.114,3.519,2.034,1.647,4.201,1.81,9.459,6.764,3.249,4.398,10.212,7.598,7.731,5.222,4.913,4.651,4.97,2.7,2.657,2.34,1.869,1.689,1.94,5.176,4.247,3.693,2.421,1.425,2.265,1.896,2.339,2.163,4.23,3.696,4.555,3.329,3.406,6.572,4.407,4.737,3.983,2.042,2.087,2.324,2.156,2.381,3.031,2.633,2.755,2.564,1.949,2.504,1.271,1.24,2.554,3.033,3.06,3.573,4.158,6.021,4.673,4.652,5.527,3.9,8.808,3.354,3.531,2.316,2.037,1.826,1.73,4.495,2.274,2.749,4.012,2.179,1.085,1.787,1.022,1.036,2.87,4.586,6.564,5.659,7.689,14.271,5.899,8.485,3.742,3.605,2.828,2.528,2.242,1.975,1.837,2.928,5.284,4.422,7.582,8.349,3.137,4.062,3.813,4.011,6.318,5.371,6.885,6.885,6.669,8.588,5.3,19.771,4.928,3.554,2.693,3.614,4.12,2.218,2.019,2.001,4.323,2.76,2.671,3.168,2.784,5.975,4.17,3.347,4.601,5.388,6.389,6.906,14.065,6.646,4.731,5.053,5.277,4.022,2.381,2.05,1.522,1.483,1.507,1.598,1.704,3.256,3.394,6.625,5.467,3.408,4.853,5.891,7.011,7.572,8.004,8.103,7.465,6.174,5.593,5.381,5.503],"emission_kg":[0.575,1.151,1.652,2.112,2.577,3.244,4.386,5.112,9.342,10.75,11.628,13.312,14.279,15.174,16.629,20.157,23.213,25.683,27.698,29.946,32.81,35.319,37.538,39.892,41.145,42.001,42.683,43.47,44.351,45.302,46.256,46.808,48.102,48.711,49.927,51.599,55.706,58.848,61.594,64.997,68.609,71.514,74.816,77.127,79.922,82.327,84.709,86.481,87.866,88.967,89.876,90.652,91.374,92.107,92.805,93.678,95.155,95.734,96.655,97.715,98.487,103.113,104.08,106.634,109.696,111.938,114.543,116.465,118.093,120.12,121.067,121.941,122.602,123.228,123.83,124.322,124.771,125.751,127.023,127.951,129.46,130.173,131.127,131.658,132.45,132.78,133.08,133.431,134.213,136.623,138.353,140.002,141.709,143.185,144.645,145.837,146.685,147.363,147.951,148.508,149.476,150.091,151.115,153.058,153.843,154.212,154.658,155.467,156.465,157.464,158.667,160.484,162.627,166.123,169.327,172.911,175.186,176.542,177.926,178.976,179.821,180.444,181.164,181.828,182.429,183.261,188.894,189.8,190.839,194.258,195.021,195.485,196.307,197.057,198.087,199.144,200.391,203.106,205.429,207.717,213.605,215.441,216.662,217.74,218.768,219.864,220.731,221.488,222.121,222.745,224.6,225.603,227.287,228.091,228.556,231.601,233.121,234.445,235.826,237.166,238.824,241.459,244.055,245.827,247.863,249.328,250.222,251.063,251.866,252.511,252.913,253.284,253.665,255.178,256.015,256.906,258.111,258.504,258.837,259.301,259.722,260.479,261.517,262.816,264.428,266.771,269.136,271.682,274.059,275.891,277.32,278.266,279.145,279.833,280.388,280.907,281.42,281.963,282.989,283.734,285.351,286.018,286.677,287.897,289.294,293.759,296.678,299.329,301.656,304.362,307.378,309.848,311.742,313.553,315.328,316.414,317.297,318.098,318.846,319.437,319.987,321.02,321.608,322.18,322.679,323.134,323.693,324.206,325.313,330.562,332.321,334.662,340.025,343.119,346.601,349.475,351.559,353.191,354.626,355.741,356.821,357.889,358.832,359.581,360.234,360.926,363.264,364.624,366.628,367.781,368.569,369.246,370.142,371.543,376.427,378.842,381.568,384.247,387.054,389.443,391.622,396.825,398.114,399.686,400.773,401.712,402.533,403.285,404.017,404.782,405.586,406.4,407.034,408.133,408.963,410.116,411.043,412.498,413.916,416.744,421.774,425.226,428.364,432.368,436.068,440.051,445.557,447.223,448.227,449.118,450.027,450.745,451.446,452.193,453.585,454.481,455.275,455.789,456.449,457.08,457.653,458.294,459.843,462.529,465.293,467.883,470.634,473.931,476.749,479.224,482.061,483.664,484.799,486.017,486.836,487.522,488.132,488.784,489.805,492.047,493.478,493.965,494.546,495.023,496.556,498.009,498.682,499.79,501.306,503.703,506.103,509.396,512.37,514.22,515.82,517.078,518.102,519.091,519.83,520.465,521.512,522.178,523.021,524.674,528.556,530.253,531.308,532.363,533.073,533.8,535.674,537.541,539.687,542.743,545.596,547.938,550.201,553.042,554.432,556.433,557.426,558.42,559.222,559.939,560.597,561.278,562.045,563.649,564.534,565.559,566.44,567.329,570.542,571.939,573.856,575.551,578.722,581.308,583.563,585.858,588.415,590.426,591.6,592.439,593.324,594.163,594.797,595.374,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,596.067,598.129,600.352,602.221,603.328,604.847,606.262,607.326,608.268,609.139,611.536,613.951,615.243,616.436,618.326,620.028,621.056,623.077,626.379,628.055,630.125,632.214,634.434,636.549,639.591,641.486,644.575,645.709,646.707,647.707,648.689,649.517,650.678,651.415,652.202,653.853,657.966,659.665,661.393,662.001,662.545,663.93,665.72,669.891,671.018,672.108,673.174,674.632,676.292,677.924,679.328,680.236,681.083,682.301,683.707,684.444,685.155,686.294,688.262,689.202,690.8,692.234,693.052,693.791,695.474,696.837,697.337,697.918,698.84,700.782,703.143,704.796,706.492,708.593,711.896,714.084,716.309,717.5,718.51,719.414,720.951,722.01,722.888,723.915,726.055,726.913,727.493,728.074,729.685,730.759,731.865,733.592,735.821,738.539,741.337,745.998,748.438,750.526,752.904,754.412,755.535,756.599,757.738,758.535,759.233,759.863,761.263,765.69,767.499,769.604,770.807,771.492,773.464,774.946,776.021,777.919,781.078,783.902,786.702,789.455,792.453,794.942,797.126,798.654,799.863,800.818,801.49,802.065,802.68,803.184,803.759,804.602,806.329,808.335,813.018,816.66,818.093,820.433,822.294,825.944,831.782,835.119,838.129,841.766,844.535,846.867,848.857,850.46,851.935,853.013,853.896,854.481,855.007,855.626,856.318,857.048,858.302,859.036,859.684,861.289,862.02,866.082,869.073,870.534,872.542,877.233,880.648,884.037,886.302,888.45,890.482,892.614,893.756,894.896,895.832,896.543,897.205,897.999,900.314,902.33,904.187,905.397,906.175,907.287,908.253,909.42,910.503,912.632,914.492,916.787,918.458,920.161,923.421,925.599,927.947,929.888,930.858,931.763,932.723,933.572,934.503,935.694,936.764,937.924,939.039,939.908,940.989,941.545,942.115,943.3,944.738,946.202,947.911,949.899,952.768,954.995,957.214,959.88,961.759,965.852,967.333,968.797,969.709,970.493,971.189,971.843,973.584,974.504,975.662,977.358,978.327,978.904,979.801,980.61,981.384,982.794,985.055,988.307,991.121,994.937,1002.001,1004.928,1009.108,1010.869,1012.474,1013.641,1014.653,1015.51,1016.243,1016.936,1018.09,1020.308,1022.291,1025.828,1029.643,1031.158,1033.089,1034.932,1036.887,1039.945,1042.509,1045.751,1048.955,1052.028,1055.973,1058.417,1067.561,1069.756,1071.259,1072.353,1073.677,1075.146,1075.926,1076.642,1077.373,1079.017,1080.095,1081.121,1082.325,1083.451,1085.996,1087.833,1089.343,1091.453,1093.937,1096.87,1100.03,1106.45,1109.419,1111.524,1113.777,1116.114,1117.914,1118.987,1119.932,1120.635,1121.324,1122.016,1122.757,1123.536,1124.993,1126.454,1129.071,1131.242,1132.665,1134.762,1137.402,1140.657,1144.208,1147.968,1151.77,1155.242,1158.118,1160.749,1163.237,1165.706],"kpi":{"all_time_peak_average":1.0,"annual_normalized_unserved_energy_total":0.018316,"carbon_emissions_total":1.0,"cost_total":1.0,"daily_one_minus_load_factor_average":1.0,"daily_peak_average":1.0,"discomfort_cold_delta_average":0.790764,"discomfort_cold_delta_maximum":3.437551,"discomfort_cold_delta_minimum":0.0,"discomfort_cold_proportion":0.15377,"discomfort_hot_delta_average":0.237991,"discomfort_hot_delta_maximum":5.059987,"discomfort_hot_delta_minimum":0.0,"discomfort_hot_proportion":0.017627,"discomfort_proportion":0.171398,"electricity_consumption_total":1.0,"monthly_one_minus_load_factor_average":1.0,"one_minus_thermal_resilience_proportion":0.369841,"power_outage_normalized_unserved_energy_total":0.684408,"ramping_average":1.0,"zero_net_energy":1.0},"run":"baseline","steps":719},"baseline_sample":false,"carbon":[0.4025,0.3826,0.3695,0.367,0.374,0.3852,0.3954,0.4112,0.4328,0.4285,0.4576,0.4875,0.4915,0.4876,0.4797,0.4715,0.46,0.4494,0.4389,0.4361,0.4404,0.4471,0.4497,0.4431,0.431,0.3983,0.3831,0.3726,0.371,0.3669,0.3727,0.3815,0.4067,0.4241,0.4621,0.4818,0.4843,0.4828,0.48,0.4738,0.4647,0.459,0.4509,0.4446,0.4466,0.458,0.4586,0.455,0.4681,0.4455,0.4221,0.4006,0.3888,0.3875,0.3949,0.4061,0.4168,0.4094,0.429,0.468,0.5007,0.5185,0.5224,0.5205,0.517,0.5139,0.5097,0.4989,0.4943,0.4983,0.4894,0.4943,0.4825,0.4589,0.413,0.3851,0.4159,0.4486,0.4443,0.4817,0.5151,0.5229,0.5451,0.5432,0.5356,0.5314,0.5271,0.5193,0.5156,0.511,0.5107,0.5161,0.5213,0.5146,0.502,0.4717,0.4391,0.4105,0.3868,0.3956,0.4078,0.4366,0.4654,0.4814,0.5058,0.5082,0.5142,0.5267,0.5363,0.5374,0.5328,0.526,0.5216,0.5175,0.5113,0.5026,0.4951,0.4765,0.4624,0.4618,0.4347,0.4071,0.3921,0.3705,0.3695,0.3723,0.3963,0.4178,0.4454,0.4567,0.4645,0.4861,0.508,0.5154,0.5138,0.5126,0.5056,0.4957,0.4837,0.47,0.4599,0.452,0.4427,0.4223,0.411,0.3863,0.3738,0.3741,0.3852,0.3962,0.4154,0.4162,0.4471,0.4496,0.457,0.4693,0.479,0.4898,0.4885,0.4881,0.482,0.4699,0.4568,0.4392,0.4405,0.4419,0.432,0.4257,0.422,0.3781,0.3629,0.3546,0.3694,0.3803,0.4083,0.4647,0.4958,0.4864,0.4747,0.4667,0.463,0.4656,0.4728,0.4764,0.4727,0.468,0.4674,0.4664,0.4691,0.4709,0.4614,0.4531,0.4395,0.4258,0.405,0.3994,0.4061,0.4235,0.4433,0.4432,0.4603,0.4527,0.4604,0.4691,0.4786,0.4806,0.4715,0.4662,0.4646,0.4612,0.4566,0.4564,0.4643,0.4623,0.4421,0.4098,0.4005,0.3769,0.3463,0.3391,0.3386,0.3375,0.3438,0.3518,0.3569,0.3526,0.3825,0.4152,0.4462,0.4609,0.4704,0.4719,0.4717,0.4711,0.4585,0.4507,0.4521,0.448,0.4334,0.4279,0.4141,0.3964,0.383,0.3768,0.3684,0.3729,0.3787,0.3851,0.3966,0.3851,0.4006,0.4304,0.4545,0.4721,0.4805,0.4829,0.4865,0.4877,0.4882,0.4879,0.4896,0.4825,0.4631,0.4357,0.4309,0.4058,0.3914,0.3897,0.3963,0.4066,0.4258,0.4484,0.4584,0.4444,0.4566,0.4795,0.4853,0.4825,0.4767,0.4716,0.4659,0.4575,0.4515,0.4561,0.4655,0.4737,0.4685,0.4584,0.4601,0.4513,0.423,0.4112,0.4213,0.4395,0.4692,0.5021,0.5067,0.4979,0.5033,0.5202,0.5214,0.5194,0.5164,0.5085,0.5007,0.4927,0.4876,0.4904,0.4946,0.4965,0.4894,0.4829,0.4542,0.4409,0.4092,0.3975,0.3858,0.409,0.4413,0.4734,0.495,0.4785,0.4719,0.4788,0.4821,0.4782,0.4728,0.4713,0.4679,0.4675,0.4625,0.4609,0.4643,0.4625,0.4421,0.4257,0.401,0.3826,0.3652,0.3553,0.3614,0.3867,0.4089,0.4231,0.426,0.4083,0.4236,0.4421,0.4459,0.4454,0.4396,0.4394,0.4335,0.4307,0.4331,0.4344,0.441,0.4455,0.4348,0.415,0.4075,0.3772,0.3739,0.3702,0.3717,0.3788,0.3836,0.386,0.3835,0.3753,0.3914,0.415,0.423,0.4272,0.4238,0.4247,0.4226,0.423,0.4234,0.4277,0.4375,0.4522,0.4554,0.4494,0.4699,0.4636,0.4684,0.4589,0.4732,0.4855,0.4789,0.4768,0.498,0.497,0.498,0.504,0.4996,0.4978,0.494,0.4969,0.4925,0.49,0.4953,0.49,0.5059,0.5096,0.5066,0.5072,0.4997,0.5116,0.5008,0.4922,0.4842,0.4955,0.5066,0.5156,0.5266,0.5235,0.5347,0.5428,0.5414,0.5377,0.5237,0.5128,0.5068,0.497,0.4892,0.4979,0.5083,0.5091,0.4967,0.4817,0.4443,0.4388,0.4372,0.4411,0.4525,0.4759,0.5019,0.512,0.5197,0.5154,0.5226,0.5302,0.5315,0.5295,0.5248,0.5216,0.5196,0.5143,0.5069,0.4931,0.4796,0.4716,0.4583,0.4382,0.4497,0.4196,0.4129,0.4379,0.4687,0.4964,0.5112,0.5131,0.5107,0.5163,0.5228,0.5295,0.5354,0.5401,0.5424,0.5426,0.5412,0.541,0.5415,0.5417,0.5413,0.5378,0.5346,0.5334,0.514,0.5264,0.5217,0.5296,0.5413,0.5521,0.5536,0.5561,0.5483,0.542,0.5397,0.5388,0.5407,0.539,0.5357,0.5338,0.534,0.5344,0.5357,0.5413,0.5449,0.5369,0.5236,0.5002,0.447,0.4253,0.3993,0.3911,0.3865,0.3941,0.4275,0.438,0.4626,0.4592,0.4826,0.4924,0.4948,0.4893,0.4809,0.4778,0.4747,0.4708,0.4643,0.4558,0.454,0.4513,0.4369,0.4235,0.4127,0.4064,0.3774,0.3634,0.3545,0.391,0.4141,0.4023,0.387,0.374,0.3948,0.4243,0.44,0.4543,0.4684,0.4738,0.4748,0.4745,0.4732,0.4667,0.4581,0.4544,0.4411,0.4244,0.4,0.3742,0.3659,0.351,0.3448,0.3389,0.3452,0.3564,0.3613,0.3623,0.3822,0.4039,0.4294,0.4422,0.4495,0.4567,0.4594,0.4494,0.4384,0.4336,0.4372,0.4369,0.4289,0.4231,0.4292,0.4,0.3806,0.3916,0.4096,0.4473,0.4746,0.5027,0.5002,0.4897,0.4909,0.4962,0.4989,0.5006,0.5034,0.5033,0.5037,0.5021,0.4998,0.496,0.4942,0.4957,0.4874,0.4749,0.4333,0.4133,0.3936,0.3909,0.393,0.4066,0.4211,0.4348,0.4457,0.4234,0.4368,0.4599,0.4642,0.4741,0.4782,0.4784,0.4781,0.4765,0.4766,0.4771,0.4823,0.4817,0.4647,0.4416,0.4147,0.3936,0.3846,0.3815,0.3782,0.3873,0.4045,0.4211,0.4227,0.4043,0.4363,0.4719,0.4859,0.4885,0.4911,0.4931,0.4954,0.4974,0.4963,0.495,0.4962,0.4926,0.4706,0.4453,0.4126,0.4005,0.3821,0.3709,0.3773,0.3942,0.4197,0.4484,0.4666,0.4463,0.4606,0.4754,0.4833,0.4874,0.484,0.4774,0.4709,0.4654,0.4609,0.4593,0.4611,0.4625,0.4455,0.4228,0.4063,0.3665,0.3565,0.3518,0.3547,0.365,0.3802,0.3906,0.3844,0.3798,0.4046,0.4259,0.4406,0.4509,0.4588,0.461,0.459,0.4576,0.4565,0.4468,0.4448,0.446,0.4428,0.4476,0.4507,0.4607,0.462,0.4648,0.4593,0.4635,0.4575,0.4475,0.4305,0.395,0.397,0.4176,0.432,0.4482,0.4642,0.4689,0.4698,0.4692,0.4652,0.4658,0.4703,0.4624,0.4486],"day":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,26,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,27,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,29,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30],"episode_hours":719,"headline":{"cost_pct":-8.1,"discomfort_points":-9.4,"emissions_pct":-3.9,"text":"Cost down 8.1% and emissions down 3.9% at equal or better comfort","tone":"win"},"hour_of_day":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23],"hours":719,"id":"citylearn_challenge_2023_phase_2_local_evaluation","name":"CityLearn 2023 challenge, local evaluation","occupied":{"Building_1":[1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"Building_2":[1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,1,1,0,1,1,1,0,0,0,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1],"Building_3":[1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1]},"outdoor_c":[24.7,24.1,23.9,23.9,23.8,23.9,25.0,26.9,29.3,31.7,33.9,35.9,37.5,38.7,39.3,39.5,39.2,38.1,36.1,32.6,31.2,29.6,28.0,26.8,25.9,25.2,24.9,24.8,24.8,24.7,25.4,27.0,29.4,32.1,34.5,36.6,38.3,39.5,40.2,40.3,39.8,38.7,36.5,32.4,31.3,30.8,29.3,27.8,26.7,26.0,25.5,25.2,25.0,24.9,25.3,26.4,28.4,30.5,32.6,32.2,31.2,31.7,31.8,31.6,31.1,30.1,28.7,26.9,26.3,25.9,25.4,24.9,24.8,24.6,24.5,24.2,23.7,23.4,23.8,24.9,26.7,28.3,29.2,29.6,29.7,29.8,29.6,29.5,29.6,29.8,29.1,27.6,26.0,25.2,24.8,24.4,23.9,23.2,22.8,22.4,22.2,22.2,23.5,25.5,27.8,30.0,32.3,34.1,35.5,36.5,36.9,37.0,36.6,35.7,33.9,29.9,28.6,27.9,27.4,26.6,25.3,24.5,23.8,23.4,23.1,23.2,24.6,26.8,28.8,30.8,32.7,34.2,35.3,36.2,36.8,36.9,36.4,35.4,33.2,29.9,28.9,28.4,27.5,26.7,25.9,25.1,24.5,23.7,22.9,22.9,24.6,26.6,28.8,30.9,32.8,34.4,35.6,36.4,36.8,37.0,36.5,35.0,32.2,29.7,28.9,28.3,27.3,26.0,24.7,23.5,22.6,22.0,21.6,21.4,23.5,26.0,28.5,30.8,32.7,34.3,35.6,36.5,36.7,36.5,36.0,35.1,33.2,30.3,29.0,28.5,27.9,26.5,25.5,24.8,24.2,23.9,23.5,23.3,24.6,26.5,28.8,30.9,32.8,34.4,35.5,36.3,36.5,36.2,35.3,34.0,32.2,29.1,27.8,27.0,26.4,25.8,25.2,24.5,23.9,23.5,23.4,23.4,24.6,26.6,29.4,31.5,33.5,35.1,36.5,37.4,37.8,37.7,37.1,35.9,33.8,31.3,29.4,28.1,27.1,26.5,25.9,25.6,25.4,25.4,25.3,25.2,25.7,27.3,29.3,31.0,33.0,35.2,36.6,37.3,37.4,37.0,36.3,35.2,33.4,31.0,29.2,28.0,27.0,26.2,25.7,25.4,25.3,25.3,25.2,25.0,25.7,27.5,29.4,31.1,32.8,34.2,35.4,36.2,36.8,37.0,36.8,35.9,34.1,31.0,29.6,28.4,27.4,26.3,25.3,24.6,24.4,24.1,24.1,24.1,25.3,27.2,28.8,30.3,31.8,33.1,34.3,35.4,36.3,36.8,36.7,36.0,34.2,31.5,30.9,29.7,28.1,26.9,26.0,24.9,23.9,23.1,22.6,22.4,24.4,26.8,29.3,31.6,33.3,34.5,35.2,35.6,35.6,35.4,35.0,34.2,32.9,30.2,28.8,28.1,27.4,26.6,25.7,24.9,24.2,23.8,23.6,23.6,24.9,27.1,29.4,31.6,33.5,35.0,36.0,36.6,36.8,36.6,36.2,35.3,33.8,31.8,29.9,28.5,27.5,26.7,26.0,25.5,25.2,24.9,24.5,24.2,24.9,26.8,29.0,31.0,32.8,34.3,35.6,36.4,36.8,36.7,36.0,34.9,33.3,31.3,29.7,28.6,27.7,26.8,26.1,25.4,25.1,24.7,24.3,23.9,24.7,26.8,29.3,31.5,33.4,35.0,36.2,36.8,36.8,36.2,34.8,33.4,32.0,30.6,29.4,28.3,27.3,26.4,25.7,25.2,24.8,24.5,24.2,24.0,24.7,26.2,28.7,31.0,32.9,34.3,35.3,35.4,35.2,34.9,33.3,30.9,28.5,26.8,26.1,25.7,25.4,25.0,24.6,24.3,24.2,24.0,23.8,23.7,24.0,24.7,25.7,26.7,27.3,27.7,28.2,28.6,28.7,28.3,27.7,26.8,25.7,24.5,23.8,23.7,23.8,24.0,24.2,24.3,24.1,23.9,23.8,23.7,23.9,24.5,25.4,26.3,27.3,28.0,28.4,28.4,28.0,27.7,27.4,26.8,26.0,25.0,24.5,24.4,24.2,24.1,23.9,23.8,23.6,23.5,23.4,23.3,24.5,25.9,28.1,30.7,32.5,33.9,35.0,35.7,35.9,35.8,35.2,34.2,32.5,29.4,28.2,27.3,26.4,25.6,25.0,24.6,24.2,23.8,23.3,22.9,24.7,27.0,29.6,32.1,34.3,36.2,37.5,38.4,38.7,38.6,37.7,36.3,34.1,31.8,30.1,29.0,27.9,26.9,26.0,25.3,24.7,24.2,23.9,23.8,25.1,27.2,29.6,32.0,34.2,35.9,37.1,37.8,37.9,37.3,36.2,34.5,32.7,30.6,29.0,27.9,26.8,26.0,25.5,25.2,25.0,24.9,24.7,24.6,25.5,27.4,29.3,31.2,32.8,34.1,35.8,36.8,37.0,36.6,35.3,33.8,32.0,30.0,28.7,27.7,26.8,26.0,25.6,25.5,25.4,25.3,25.2,25.1,25.6,26.6,27.8,29.2,30.8,32.1,33.4,34.0,34.0,33.6,32.9,32.1,31.0,29.2,28.0,27.2,26.5,25.9,25.5,25.2,25.0,24.8,24.5,24.4,25.2,26.3,28.0,29.9,31.9,33.6,34.7,35.3,35.5,35.4,34.9,34.1,32.6,30.5,29.5,28.4,27.4,26.5,25.8,25.1,24.5,23.9,23.8,23.8,25.0,27.1,29.4,31.9,34.1,35.8,37.0,37.8,38.3,38.3,38.0,37.0,35.2,32.1,30.4,29.0,28.0,27.1,26.4,25.6,25.0,24.4,23.9,23.9,25.5,27.6,30.0,32.5,34.7,36.4,37.7,38.6,39.0,38.9,38.1,36.8,34.8,32.2,30.4,29.1,28.0,27.0,26.2,25.7,25.4,25.2,24.9,24.7,25.9,28.1,30.4,32.6,34.6,36.3,37.6,38.4,38.7,38.5,37.6,36.0,33.8,31.5,29.8,28.6,27.5,26.7,26.1,25.7,25.6,25.4,25.2,25.1,26.1,28.0,30.2,32.6,34.8,36.7,38.1,39.0,39.4,39.1,38.1,36.6,34.5,32.0,29.9,28.5,27.3],"price":[0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0291,0.0587,0.0587,0.0587,0.0291,0.0291,0.0291,0.0291,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289,0.0289],"setpoint_c":{"Building_1":[23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.56,25.56,26.5,24.44,21.67,24.44,22.83,20.72,20.56,21.67,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.61,25.0,24.5,24.44,24.44,24.44,22.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,20.0,22.44,22.78,24.44,24.44,24.44,24.39,23.56,22.22,22.56,24.44,24.44,24.44,22.22,24.44,24.44,23.22,23.56,23.83,24.11,24.44,24.78,25.06,23.33,23.89,23.89,25.67,24.44,24.44,25.83,25.0,25.83,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,24.44,24.39,24.39,24.39,24.39,24.39,24.33,24.33,24.33,24.33,24.44,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,23.89,24.44,24.44,25.22,25.0,27.22,27.22,27.22,26.67,25.67,25.78,24.44,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,23.33,23.89,24.44,24.44,24.44,24.44,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.11,27.0,26.89,26.78,26.67,26.56,26.39,26.28,26.17,26.06,25.94,25.83,25.72,25.61,25.5,25.39,25.28,25.11,25.0,24.89,24.78,24.67,24.56,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.56,26.28,24.17,24.28,24.44,24.44,25.78,24.44,24.44,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,22.22,23.33,23.89,24.44,24.44,24.44,23.61,23.33,24.17,24.44,24.44,24.44,24.44,24.44,24.44,22.78,23.22,22.22,22.22,22.22,22.22,22.22,22.22,22.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,22.22,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,25.67,26.67,26.67,26.67,26.67,26.67,25.33,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.0,25.56,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,27.22,25.56,25.0,26.67,25.56,23.5,23.33,24.28,24.44,25.33,26.67,24.78,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.5,25.67,24.44,24.44,24.44,24.22,23.33,23.56,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.22,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.61,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.78,25.0,24.78,23.33,23.78,24.44,24.44,24.44,24.44,24.44,24.44,23.28,22.22,22.22,22.22,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,25.11,24.94,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.39,24.44,24.44,24.44,24.44,24.44,24.44,23.06,22.78,24.17,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.33,23.89,24.0,24.44,24.44,22.22,22.22,23.28,22.22,23.67,23.89,22.44,22.22,22.22,22.28,24.44,24.44,24.44,24.44,24.44,25.44,26.67,24.22,23.33,24.06,24.44,24.28,23.89,24.06,24.44,24.44,23.28,22.39,23.33,23.17,22.22,22.22,22.22,22.28,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.44,26.39,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,24.44,25.17,24.44,24.44,24.44,24.44,22.78,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,24.44,24.44,26.39,26.67,25.0,24.44,24.44,26.67,26.0,23.33,24.44,24.44,24.44,22.22,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.22,24.44,24.44,22.22,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.33,22.22,22.22,22.22,22.22,22.22,22.22,22.22,22.78,24.44,22.78,24.44,22.22,24.44,24.44,24.44,24.44,25.94,26.44,24.44,24.44,22.22,21.11,21.67,23.33,23.72,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,25.06,24.44,24.44,24.44,24.44],"Building_2":[24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,23.94,24.44,23.44,22.78,23.78,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,24.61,23.33,23.72,25.0,25.0,25.0,25.0,25.0,24.67,23.61,23.33,24.0,24.44,24.28,22.78,22.94,24.44,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.94,24.44,23.61,22.78,23.61,24.44,24.44,24.44,24.44,24.94,25.0,25.0,25.0,23.33,23.33,23.44,23.5,23.61,23.67,23.78,23.89,23.94,24.06,24.11,24.22,24.33,24.39,23.33,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.11,23.89,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.22,24.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.56,23.39,22.22,21.67,23.28,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.33,24.17,25.0,25.0,25.0,25.0,25.0,25.0,24.0,23.89,24.39,23.89,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.61,23.89,22.78,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,23.44,24.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.33,23.33,25.0,25.0,25.0,25.0,25.0,25.0,24.39,24.44,23.67,23.33,24.5,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,23.33,23.56,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.61,23.33,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.72,23.89,24.17,24.33,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.67,23.33,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.89,23.33,24.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.5,23.33,24.83,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,24.72,23.89,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.33,22.78,23.44,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.33,23.89,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.56,23.33,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.44,23.17,22.22,23.11,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.78,24.17,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,25.0,23.83,23.33,24.5,24.28,23.33,24.06,22.94,22.78,24.78,25.0,25.0,25.0,25.0,25.0,23.83,22.78,23.94,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.5,23.33,23.83,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,23.39,22.78,24.39,25.0,25.0,25.0,25.0,24.89,23.89,24.0,25.0,25.0,25.0,25.0,23.39,23.33,24.94,25.0,25.0,25.0,25.0,24.06,24.17,24.78,22.78,22.78,24.94,25.0,25.0,25.0,25.0,24.17,24.11,24.44,24.83,25.0,24.22,23.89,24.67,23.44,23.22,22.78,24.44,25.0,25.0,25.0,25.0,24.56,24.44,24.67,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.44,24.22,24.44,24.5,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.83,24.61,24.44,24.22,24.44,24.78,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.78,24.44,24.67,25.0,25.0,24.0,23.89,24.28,23.89,24.56,25.0,25.0,25.0,25.0,25.0,25.0,24.06,24.61,25.0,25.0,25.0,24.56,23.89,24.33,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.17,23.89,24.72,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,25.0,24.67,25.0,25.0,25.0,25.11],"Building_3":[24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,24.39,24.44,23.94,24.17,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.39,23.33,24.44,24.44,23.33,23.17,23.11,24.06,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.33,23.33,23.61,23.89,23.33,23.33,23.33,23.33,23.56,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.78,23.33,23.39,23.72,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,23.33,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.89,23.89,23.89,23.72,23.33,23.33,23.33,23.33,23.56,23.89,23.89,23.94,23.94,24.0,24.0,24.0,24.06,24.06,24.11,24.11,24.17,24.17,24.17,24.22,24.22,24.28,24.28,24.33,24.33,24.33,24.39,24.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.39,23.78,23.33,23.33,23.33,23.33,23.5,23.56,22.78,22.78,22.78,23.67,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.67,24.44,23.89,23.33,23.33,23.33,23.78,24.44,24.44,24.17,23.89,23.89,23.89,23.89,24.17,24.44,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,23.61,23.39,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,24.44,24.44,24.44,24.44,24.11,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,24.28,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.22,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.11,23.67,23.33,23.33,23.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.11,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,24.33,24.44,24.44,24.44,24.44,24.44,24.39,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.39,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.17,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,23.94,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,23.94,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.06,24.44,24.06,23.89,23.89,23.89,24.28,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.11,23.89,23.89,23.89,23.89,24.33,23.89,23.89,23.89,23.89,23.89,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.17,24.44,24.44,24.11,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.72,23.33,23.56,23.89,23.89,23.89,24.0,23.89,23.89,23.89,24.33,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.0,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.0,23.89,23.89,23.89,23.89,23.89,23.89,24.44,24.44,24.22,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.17,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.44,24.28,23.89,23.89,23.89,23.89,24.44,24.44,24.44,24.44,24.44,24.44]}}],"schema":2} diff --git a/docs/index.html b/docs/index.html index 6fd55d1..8504e77 100644 --- a/docs/index.html +++ b/docs/index.html @@ -53,7 +53,7 @@

Loading replay

How it works, every simulated hour

  1. 1
    The agent decidesIt reads the district, prices and forecasts and proposes cooling, hot water and battery actions as strict JSON.
  2. -
  3. 2
    The safety envelope checksPlain code enforces ranges, ramps, charge limits, comfort, the price spread and the peak cap, and logs every clamp.
  4. +
  5. 2
    The safety envelope checksPlain code enforces ranges, ramps, charge limits, comfort, the price spread, the peak cap and the cooling trim hold, and logs every clamp.
  6. 3
    CityLearn simulatesOne hour of three buildings: indoor temperature, heat pumps, batteries, hot water and rooftop solar.
  7. 4
    CityLearn scoresIts own KPI evaluation compares the month with the no-control reference: cost, carbon, comfort and the grid.
diff --git a/hyperbolic/__init__.py b/hyperbolic/__init__.py index c94a41e..d1f8295 100644 --- a/hyperbolic/__init__.py +++ b/hyperbolic/__init__.py @@ -1,3 +1,3 @@ """Hyperbolic: a supervisory controller for CityLearn district simulations.""" -__version__ = "0.7.0" +__version__ = "0.8.0" diff --git a/hyperbolic/cli.py b/hyperbolic/cli.py index 9e3b987..66d7ccb 100644 --- a/hyperbolic/cli.py +++ b/hyperbolic/cli.py @@ -174,7 +174,8 @@ def _against(run_dir: Path, hours: int) -> tuple[str, dict, Path]: raise ValueError(f"it covers {r.get('steps')} hours, the compared runs {hours}") sup = m.get("supervisor") or {} if sup.get("kind") == "scripted": - label = "rule-based" if int(sup.get("prompt_version", 1)) <= RULE_PROMPT_VERSION else "v4 script" + pv = int(sup.get("prompt_version", 1)) + label = "rule-based" if pv <= RULE_PROMPT_VERSION else f"v{pv} script" else: label = str(sup.get("model_key") or sup.get("kind")) return label, r.get("district_kpis") or {}, run_dir @@ -214,8 +215,9 @@ def build_parser() -> argparse.ArgumentParser: help="with --scripted, send a bad reply now and then to exercise clamps and fallback") r.add_argument("--prompt-version", type=int, default=None, choices=PROMPT_VERSIONS, help=f"observation and prompt version (default: {PROMPT_VERSION}; with --scripted, " - f"{RULE_PROMPT_VERSION}, the 0.4.0 rule-based controller, while version 4 " - "runs the version 4 strategy literally)") + f"{RULE_PROMPT_VERSION}, the 0.4.0 rule-based controller, while versions 4 and 5 " + "run their strategies literally and version 6 runs the version 5 strategy with the " + "trim hold)") r.set_defaults(func=cmd_run) rp = sub.add_parser("replay", help="re-run a saved run from its files with zero model or simulator calls") diff --git a/hyperbolic/envelope.py b/hyperbolic/envelope.py index b5b88dd..b9a31fc 100644 --- a/hyperbolic/envelope.py +++ b/hyperbolic/envelope.py @@ -14,11 +14,17 @@ 7. comfort: in occupied hours near the edge of CityLearn's comfort band the heat pump may not cool less (too warm) or more (too cool) than the baseline action, and with overcool_guard_unoccupied no extra cooling when already cool at night + 8. trim hold (0.8.0): a cooling trim, once on, is carried in code. While the room is + occupied and more than trim_hold_c below its setpoint it stays at least as deep as + last hour; within trim_hold_c it eases off by at most trim_release_step per hour; it + ends at once at or above the setpoint, in an unoccupied room, or when the baseline + has no cooling to trim. The model can end one early only with end_trim and a reason Then, across the district: - 8. peak limit: storage charging is trimmed so the district's load this hour stays at + 9. peak limit: storage charging is trimmed so the district's load this hour stays at or below the peak target (signals.peak_target_kwh), battery first, then the tank A null action, or any invalid reply, uses the baseline action for that device. -Every clamp and fallback is returned with a reason so the runner can log it. +Every clamp and fallback is returned with a reason so the runner can log it, and every +trim hold action (start, hold, ease, release, end, early end) is recorded with its reason. """ from __future__ import annotations @@ -44,12 +50,18 @@ class DeviceActions(BaseModel): battery: float | None +class DeviceActionsV6(DeviceActions): + """Prompt version 6 (0.8.0): a building may also end its held cooling trim early, with a reason.""" + + end_trim: str | None = Field(default=None, min_length=1, max_length=dc.REASON_MAX_CHARS) + + @lru_cache(maxsize=8) -def proposal_model(buildings: tuple[str, ...]) -> type[BaseModel]: +def proposal_model(buildings: tuple[str, ...], end_trim: bool = False) -> type[BaseModel]: """The only shape the model is allowed to return: a reason plus one entry per building.""" fields: dict[str, Any] = {"reason": (str, Field(min_length=1, max_length=dc.REASON_MAX_CHARS))} for b in buildings: - fields[b] = (DeviceActions, ...) + fields[b] = (DeviceActionsV6 if end_trim else DeviceActions, ...) return create_model( "Proposal", __config__=ConfigDict(extra="forbid", strict=True, allow_inf_nan=False), **fields ) @@ -59,7 +71,7 @@ def _nullable_number() -> dict: return {"anyOf": [{"type": "number"}, {"type": "null"}]} -def proposal_json_schema(buildings: tuple[str, ...]) -> dict: +def proposal_json_schema(buildings: tuple[str, ...], end_trim: bool = False) -> dict: """Hand-written JSON schema for structured output. Mirrors proposal_model.""" dev = { "type": "object", @@ -67,14 +79,19 @@ def proposal_json_schema(buildings: tuple[str, ...]) -> dict: "required": list(DEVICE_KEYS), "additionalProperties": False, } + if end_trim: + dev["properties"]["end_trim"] = {"anyOf": [{"type": "string"}, {"type": "null"}]} + dev["required"].append("end_trim") props: dict[str, Any] = {"reason": {"type": "string"}} for b in buildings: props[b] = dev return {"type": "object", "properties": props, "required": ["reason", *buildings], "additionalProperties": False} -def parse_reply(text: str | None, buildings: tuple[str, ...]) -> tuple[dict | None, str | None]: - """Return ({"reason", "buildings": {b: {device: value}}}, None) or (None, why it was rejected).""" +def parse_reply(text: str | None, buildings: tuple[str, ...], end_trim: bool = False) -> tuple[dict | None, str | None]: + """Return ({"reason", "buildings": {b: {device: value}}}, None) or (None, why it was rejected). + With end_trim (prompt version 6) the result also has "end_trim": {b: reason} for every + building whose reply ends its held cooling trim early.""" if text is None or not text.strip(): return None, "empty or missing reply" try: @@ -85,12 +102,16 @@ def parse_reply(text: str | None, buildings: tuple[str, ...]) -> tuple[dict | No return None, "reply is not a JSON object" data = _ints_to_floats(data) try: - p = proposal_model(tuple(buildings)).model_validate(data) + p = proposal_model(tuple(buildings), end_trim).model_validate(data) except ValidationError as exc: first = exc.errors()[0] loc = ".".join(str(x) for x in first["loc"]) return None, f"reply failed schema at {loc or 'root'}: {first['msg']} ({exc.error_count()} error(s))" - return {"reason": p.reason, "buildings": {b: getattr(p, b).model_dump() for b in buildings}}, None + out = {"reason": p.reason, + "buildings": {b: {d: getattr(getattr(p, b), d) for d in DEVICE_KEYS} for b in buildings}} + if end_trim: + out["end_trim"] = {b: getattr(p, b).end_trim for b in buildings if getattr(p, b).end_trim is not None} + return out, None def _ints_to_floats(obj: Any) -> Any: @@ -133,6 +154,14 @@ class EnvelopeConfig: # its round trip and standing losses and a cheaper hour is coming (signals.charge_spread). # Physical, not fitted: the efficiency and loss come from the battery itself. spread_check: bool = True + # Added in 0.8.0. Carry a cooling trim in code once it is on (Envelope._hold_trim). The + # numbers are the version 5 strategy's (StrategyParamsV5.trim_hold_c and trim_step); a trim + # shallower than trim_min_depth counts as off, so rounding never starts one, and a reply that + # misses the held depth by less than it is taken as rounding, not as a release. + trim_hold: bool = True + trim_hold_c: float = 0.5 + trim_release_step: float = 0.02 + trim_min_depth: float = 0.002 def as_dict(self) -> dict: return dict(self.__dict__) @@ -142,14 +171,20 @@ def from_manifest(cls, data: dict | None) -> "EnvelopeConfig": """Rebuild the config a run used. Fields a run did not record keep the behavior they had before they existed, so older runs replay exactly.""" legacy = {"cooling_max_deviation": None, "overcool_guard_unoccupied": False, "peak_limit": False, - "spread_check": False} + "spread_check": False, "trim_hold": False} return cls(**{**legacy, **(data or {})}) @classmethod def v040(cls) -> "EnvelopeConfig": """The 0.4.0 rule set: everything before the spread check. The rule-based reference controller runs with it so its 0.4.0 result reproduces exactly.""" - return cls(spread_check=False) + return cls(spread_check=False, trim_hold=False) + + @classmethod + def v070(cls) -> "EnvelopeConfig": + """The 0.7.0 rule set: everything before the trim hold. Runs on prompt versions before 6 + use it, so they behave as they did in 0.7.0.""" + return cls(trim_hold=False) def rate(self, device: str) -> float: return {"cooling": self.cooling_rate_per_step, "dhw": self.dhw_rate_per_step, @@ -203,6 +238,11 @@ def _r(v: float | None) -> float | None: return None if v is None else round(float(v), 4) +def _hold_event(b: str, action: str, depth_before: float, depth_after: float, reason: str) -> dict: + return {"building": b, "action": action, "depth_before": _r(depth_before), "depth_after": _r(depth_after), + "reason": reason} + + @dataclass class Decision: """Actions per building and device; None means the baseline action is used.""" @@ -211,6 +251,7 @@ class Decision: clamps: list[Clamp] = field(default_factory=list) fallback: str | None = None reason: str = "" + holds: list[dict] = field(default_factory=list) # trim hold actions this hour (0.8.0) @property def status(self) -> str: @@ -227,13 +268,16 @@ def resolved(self, ctx: StepContext) -> dict[str, dict[str, float]]: return out def as_dict(self) -> dict: - return { + out = { "status": self.status, "reason": self.reason, "fallback": self.fallback, "actions": {b: {d: _r(v) for d, v in acts.items()} for b, acts in self.actions.items()}, "clamps": [c.as_dict() for c in self.clamps], } + if self.holds: # absent when the hold did nothing, so older runs replay byte for byte + out["holds"] = [dict(h) for h in self.holds] + return out def baseline_decision(buildings, fallback: str | None = None) -> Decision: @@ -245,11 +289,13 @@ def __init__(self, config: EnvelopeConfig | None = None) -> None: self.config = config or EnvelopeConfig() self.memory: dict[str, float] = {} # "Building_1.battery" -> last applied action self.trims: dict[str, float] = {} # building -> last hour's cooling minus its baseline (0.7.0, read only) + self.holds: dict[str, float] = {} # building -> depth of the cooling trim being held (0.8.0) def fallback(self, ctx: StepContext, why: str) -> Decision: """Use the baseline action everywhere and remember it as the last action.""" self.memory = {f"{b}.{d}": st.baseline[d] for b, st in ctx.buildings.items() for d in DEVICE_KEYS} self.trims = {} + self.holds = {} return baseline_decision(ctx.buildings, fallback=why) def apply(self, proposal: dict | None, ctx: StepContext, invalid_reason: str | None = None) -> Decision: @@ -258,11 +304,16 @@ def apply(self, proposal: dict | None, ctx: StepContext, invalid_reason: str | N clamps: list[Clamp] = [] actions: dict[str, dict[str, float | None]] = {} memory: dict[str, float] = {} + events: list[dict] = [] + holds: dict[str, float] = {} + early = proposal.get("end_trim") or {} for b, st in ctx.buildings.items(): req = proposal["buildings"].get(b, {}) actions[b] = {} for d in DEVICE_KEYS: v = self._limit(b, d, req.get(d), st, clamps, ctx.prices) + if d == "cooling" and self.config.trim_hold: + v = self._hold_trim(b, v, st, early.get(b), clamps, events, holds) actions[b][d] = v memory[f"{b}.{d}"] = st.baseline[d] if v is None else v if self.config.peak_limit: @@ -270,7 +321,78 @@ def apply(self, proposal: dict | None, ctx: StepContext, invalid_reason: str | N self.memory = memory self.trims = {b: 0.0 if actions[b]["cooling"] is None else actions[b]["cooling"] - st.baseline["cooling"] for b, st in ctx.buildings.items()} - return Decision(actions=actions, clamps=clamps, reason=proposal["reason"]) + if self.config.trim_hold: + self.holds = holds + return Decision(actions=actions, clamps=clamps, reason=proposal["reason"], holds=events) + + def held_trim(self, b: str, st: BuildingState) -> tuple[float, str, str]: + """What the trim hold requires of building b this hour, before any early end: + (depth cooling must stay at least this far below the baseline, kind, why). kind is + "none" (no trim on), "end" (no trim may run now), "hold" or "ease".""" + cfg = self.config + prev = self.holds.get(b, 0.0) + gap = st.indoor_c - st.setpoint_c + if st.baseline["cooling"] <= cfg.trim_min_depth: + return 0.0, "end", "the baseline has no cooling to trim" + if not st.occupied: + return 0.0, "end", "the room is unoccupied" + if gap >= 0: + return 0.0, "end", f"indoor {st.indoor_c:.1f} C is at or above the setpoint {st.setpoint_c:.1f} C" + if prev <= cfg.trim_min_depth: + return 0.0, "none", "" + if gap < -cfg.trim_hold_c: + return prev, "hold", (f"indoor {st.indoor_c:.1f} C is more than {cfg.trim_hold_c:g} C below the setpoint " + f"{st.setpoint_c:.1f} C, trim held at {prev:.3f}") + need = round(max(0.0, prev - cfg.trim_release_step), 4) + return need, "ease", (f"indoor {st.indoor_c:.1f} C is within {cfg.trim_hold_c:g} C of the setpoint " + f"{st.setpoint_c:.1f} C, trim eases off from {prev:.3f} by at most " + f"{cfg.trim_release_step:g} per hour") + + def _hold_trim(self, b: str, v: float | None, st: BuildingState, early: str | None, clamps: list[Clamp], + events: list[dict], holds: dict[str, float]) -> float | None: + """Carry building b's cooling trim (0.8.0). A trim is cooling more than trim_min_depth + below the baseline action, and its depth is how far below. This runs after the comfort + rule and only keeps cooling below the baseline, by no more than the trim already passed + the deviation limit with, so it never undoes another rule. Every action is recorded in + events; a changed value is also a clamp with rule trim_hold.""" + cfg = self.config + point = f"{b}.cooling" + base = st.baseline["cooling"] + prev = self.holds.get(b, 0.0) + on = prev > cfg.trim_min_depth + applied = base if v is None else v + need, kind, why = self.held_trim(b, st) + if kind != "end" and on and early: + kind, why = "end_early", f"the model ended it early: {early}" + if kind in ("end", "end_early"): + trimmed = base - applied > cfg.trim_min_depth + if trimmed: + clamps.append(Clamp(point, "trim_hold", applied, round(base, 4), + f"trim ended, {why}, cooling back to the baseline")) + v = round(base, 4) + if on or trimmed: + events.append(_hold_event(b, kind, prev, 0.0, early if kind == "end_early" else why)) + return v + acted = False + # A miss smaller than trim_min_depth is rounding (the observation shows the baseline and + # trims to 3 decimals) and is let through; the held depth below still counts in full. + if on and base - applied < need - cfg.trim_min_depth: + lo = max(cfg.cooling_min, st.bounds["cooling"][0]) + nv = round(max(lo, base - need), 4) + clamps.append(Clamp(point, "trim_hold", applied, nv, why)) + v = applied = nv + acted = True + depth = round(max(base - applied, need), 4) + if depth <= cfg.trim_min_depth: + if on: + events.append(_hold_event(b, "release", prev, 0.0, "trim eased off fully")) + return v + holds[b] = depth + if not on: + events.append(_hold_event(b, "start", 0.0, depth, "trim started")) + elif acted: + events.append(_hold_event(b, kind, prev, depth, why)) + return v def peak_target(self, ctx: StepContext) -> float | None: if ctx.peak is None: diff --git a/hyperbolic/live.py b/hyperbolic/live.py index fc770f7..591e415 100644 --- a/hyperbolic/live.py +++ b/hyperbolic/live.py @@ -75,8 +75,10 @@ {"id": "week", "label": "1 week (167 hours)", "hours": 167}, {"id": "month", "label": "Full month (719 hours)", "hours": dc.EPISODE_HOURS}, ] -# Typical prompt version 5 request and reply, for a cost estimate before any run is recorded. -TYPICAL_TOKENS = (3000, 250) +# Typical prompt version 6 request and reply, for a cost estimate before any run is recorded: the +# 0.7.0 live month averaged 4,946 input and 771 output tokens on version 5, and version 6 is about +# 5 percent larger. +TYPICAL_TOKENS = (5200, 790) def key_status(env: dict[str, str] | None = None) -> dict: diff --git a/hyperbolic/live_assets/live.js b/hyperbolic/live_assets/live.js index 843a9eb..6c8f657 100644 --- a/hyperbolic/live_assets/live.js +++ b/hyperbolic/live_assets/live.js @@ -274,6 +274,13 @@ if (d.clamps.length > 3) ul.appendChild(el("li", "", "+" + (d.clamps.length - 3) + " more")); li.appendChild(ul); } + if (d.trim_ends && d.trim_ends.length) { + var te = el("ul", "trim-ends"); + d.trim_ends.forEach(function (t) { + te.appendChild(el("li", "", t.building.replace("_", " ") + ": trim ended early: " + t.reason)); + }); + li.appendChild(te); + } ui.log.insertBefore(li, ui.log.firstChild); while (ui.log.childNodes.length > LOG_MAX) ui.log.removeChild(ui.log.lastChild); } diff --git a/hyperbolic/model.py b/hyperbolic/model.py index f4c29e9..64d86ec 100644 --- a/hyperbolic/model.py +++ b/hyperbolic/model.py @@ -4,6 +4,10 @@ ScriptedSupervisor returns deterministic rule-based replies for offline runs and tests. HoldSupervisor always keeps the baseline action (the live page's baseline option). ReplaySupervisor serves recorded replies from a run directory, with zero API calls. +RecordedReplySupervisor + serves a recorded run's replies hour by hour whatever the request, so the + same answers can be sent through other envelope rules (an evaluation, never + a recorded run). """ from __future__ import annotations @@ -184,6 +188,32 @@ def call(self, step: int, request: dict) -> CallResult: ) +class RecordedReplySupervisor: + """Answers each hour with the reply a recorded run got for that hour, without checking the + request. Used to send a live run's own actions through different envelope rules + (scripts/evaluate_hold.py); with the run's own rules it reproduces the run exactly.""" + + kind = "recorded" + + def __init__(self, calls_path: Path, model_key: str) -> None: + self.model_key = model_key + self._inner = ReplaySupervisor(calls_path, model_key) + + def call(self, step: int, request: dict) -> CallResult: + rec = self._inner._by_step.get(step) + if rec is None: + return CallResult(None, error="no recorded reply for this hour") + reply = rec["reply"] + return CallResult( + text=reply.get("text"), + input_tokens=reply.get("input_tokens", 0), + output_tokens=reply.get("output_tokens", 0), + stop_reason=reply.get("stop_reason"), + error=reply.get("error"), + model=reply.get("model"), + ) + + @dataclass(frozen=True) class RuleParams: """Knobs of the rule-based policy for prompt version 3 observations. Defaults are the @@ -279,7 +309,8 @@ class ScriptedSupervisor: building's own load, and can shave the district peak: the 0.4.0 rule-based controller. For version 4 it follows that prompt's strategy literally (strategy_plan_v4), which is how the strategy's numbers are chosen offline, and likewise for version 5 - (strategy_plan_v5). Version 2 observations get the 0.3.0 + (strategy_plan_v5). Version 6 runs the same version 5 strategy, never ends a trim early, + and leaves holding trims to the envelope. Version 2 observations get the 0.3.0 rule and version 1 the simpler 0.2.0 rule. Faults are opt-in: on listed steps it injects a bad reply so the envelope and fallback @@ -321,6 +352,9 @@ def call(self, step: int, request: dict) -> CallResult: stop_reason="end_turn", model="scripted") if "smoothing" in obs: reply = strategy_plan_v5(obs, self.strategy_v5) + if "strategy_battery_reason" in obs: # version 6: the reply carries end_trim + for b in obs["buildings"]: + reply[b]["end_trim"] = None elif "price_plan" in obs: reply = strategy_plan_v4(obs, self.strategy) elif "signal_outlook" in obs: @@ -567,6 +601,22 @@ def strategy_plan_v5(obs: dict, p: StrategyParamsV5 | None = None) -> dict: started, is held until the room is nearly back at its setpoint and then released a little each hour; a grid charge starts small and rises a little each hour; the top-price discharge can keep some charge back for the evening district peak.""" + reply, battery_notes, cooling_notes = _strategy_v5(obs, p) + notes = battery_notes | cooling_notes + reason = "; ".join(sorted(notes)) if notes else "Nothing stands out, hold storage and meet the cooling load" + return {"reason": (reason[0].upper() + reason[1:])[:dc.REASON_TARGET_CHARS], **reply} + + +def battery_plan_v5(obs: dict, p: StrategyParamsV5 | None = None) -> tuple[dict[str, float], str]: + """The version 5 strategy's battery action for each building and why: what prompt version 6 + shows the model each hour as strategy_battery, in place of the 0.4.0 rule-based plan.""" + reply, battery_notes, _ = _strategy_v5(obs, p) + reason = "; ".join(sorted(battery_notes)) if battery_notes else "nothing stands out, hold the batteries" + return {b: r["battery"] for b, r in reply.items()}, (reason[0].upper() + reason[1:])[:dc.REASON_TARGET_CHARS] + + +def _strategy_v5(obs: dict, p: StrategyParamsV5 | None = None) -> tuple[dict, set[str], set[str]]: + """strategy_plan_v5's actions per building, with its battery and cooling notes kept apart.""" p = p or StrategyParamsV5() pp, peak, nxt = obs["price_plan"], obs["peak"], obs["next_24h"] top_now = bool(pp["top_price_now"]) @@ -586,7 +636,8 @@ def strategy_plan_v5(obs: dict, p: StrategyParamsV5 | None = None) -> dict: caps = {b: s["battery"]["capacity_kwh"] or 0.0 for b, s in obs["buildings"].items()} total_cap = sum(caps.values()) or 1.0 reply: dict = {} - notes = set() + notes: set[str] = set() # battery notes + cooling_notes: set[str] = set() for b, s in sorted(obs["buildings"].items()): bat = s["battery"] cap, fmax, soc = caps[b], bat["max_fraction_per_hour"] or 0.0, bat["soc"] @@ -636,12 +687,11 @@ def strategy_plan_v5(obs: dict, p: StrategyParamsV5 | None = None) -> dict: # The baseline arrives rounded to 3 decimals: keep 0.001 clear of the deviation limit. cooling = math.ceil(max(0.0, base + max(trim, -p.cold_trim) + 0.001) * 1000) / 1000 if cooling < base: - notes.add("hold a cooling trim in a cold room, easing it off slowly") + cooling_notes.add("hold a cooling trim in a cold room, easing it off slowly") else: cooling = None reply[b] = {"cooling": cooling, "dhw": 0.0, "battery": math.trunc(battery * 1000) / 1000} - reason = "; ".join(sorted(notes)) if notes else "Nothing stands out, hold storage and meet the cooling load" - return {"reason": (reason[0].upper() + reason[1:])[:dc.REASON_TARGET_CHARS], **reply} + return reply, notes, cooling_notes class HoldSupervisor: diff --git a/hyperbolic/prompt.py b/hyperbolic/prompt.py index f8f78a8..06eb253 100644 --- a/hyperbolic/prompt.py +++ b/hyperbolic/prompt.py @@ -21,6 +21,12 @@ cooling trim last hour. The strategy holds a trim until the room is nearly back at its setpoint and eases it off slowly, starts grid charging small and raises it a little each hour, and spreads discharge over the top-price hours. + 6 v0.8.0. The envelope holds a cooling trim in code (EnvelopeConfig.trim_hold), and the + prompt says so: null keeps a held trim, and the reply's new end_trim field, with a + reason, is the only way to end one early. The 0.4.0 rule-based reference_action is + replaced by the version 5 strategy's own battery action per building + (strategy_battery, with strategy_battery_reason), and each building shows the trim the + envelope will keep this hour (cooling_trim_held). """ from __future__ import annotations @@ -29,12 +35,27 @@ from . import district as dc from .envelope import Decision, Envelope, EnvelopeConfig, StepContext, proposal_json_schema -from .model import DEFAULT_EFFORT, DEFAULT_MAX_TOKENS, MODELS, StrategyParams, StrategyParamsV5, rule_plan_v3 +from .model import ( + DEFAULT_EFFORT, + DEFAULT_MAX_TOKENS, + MODELS, + StrategyParams, + StrategyParamsV5, + battery_plan_v5, + rule_plan_v3, +) from .signals import charge_spread, combined_signal -PROMPT_VERSION = 5 -PROMPT_VERSIONS = (1, 2, 3, 4, 5) +PROMPT_VERSION = 6 +PROMPT_VERSIONS = (1, 2, 3, 4, 5, 6) +# From this version the reply may end a held cooling trim early (envelope trim hold, 0.8.0). +END_TRIM_FROM = 6 + + +def end_trim_field(version: int) -> bool: + """Whether replies to this prompt version carry end_trim per building.""" + return version >= END_TRIM_FROM def _r(v, nd=3): @@ -599,6 +620,108 @@ def system_prompt_v5(cfg: EnvelopeConfig, buildings: tuple[str, ...]) -> str: reply invalid.""" +def build_observation_v6(state: dict, ctx: StepContext, last: Decision | None, look: Lookahead, + envelope: Envelope | None) -> dict: + """Version 6: version 5 with the version 5 strategy's battery plan in place of the 0.4.0 + rule-based reference action, and the trim the envelope will hold this hour.""" + obs = build_observation_v5(state, ctx, last, look, envelope) + del obs["reference_reason"] + for b in obs["buildings"]: + del obs["buildings"][b]["reference_action"] + battery, why = battery_plan_v5(obs) + obs["strategy_battery_reason"] = why + for b, st in ctx.buildings.items(): + held = 0.0 if envelope is None or not envelope.config.trim_hold else envelope.held_trim(b, st)[0] + obs["buildings"][b]["strategy_battery"] = battery[b] + obs["buildings"][b]["cooling_trim_held"] = _r(-held, 3) + return obs + + +def system_prompt_v6(cfg: EnvelopeConfig, buildings: tuple[str, ...]) -> str: + dev = ("" if cfg.cooling_max_deviation is None else + f"\n- cooling more than {cfg.cooling_max_deviation:g} away from the baseline_action") + guard = ("\n- extra cooling in an unoccupied building already near the bottom of its band" + if cfg.overcool_guard_unoccupied else "") + peak = ("\n- battery then tank charging, so district load stays at or below peak.target_kwh" + if cfg.peak_limit else "") + spread = ("\n- grid charging of a battery when grid_charging_ok is false (spare solar may still be stored)" + if cfg.spread_check else "") + hold = "\n- cooling above a held trim, and a trim where the hold has ended" if cfg.trim_hold else "" + sp = StrategyParamsV5() # the strategy's numbers, chosen on the tuning dataset + full = sp.cold_margin_c + sp.cold_ramp_c + reserve = ("" if sp.evening_reserve <= 0 else + f" Keep {sp.evening_reserve:g} of state of charge back for the evening district peak.") + return f"""You are the hourly supervisory controller for a simulated district of {len(buildings)} \ +buildings ({dc.DATASET_NAME}, CityLearn). Each building has a heat pump for space cooling, a hot water \ +tank, a battery and rooftop solar. Every hour you choose one action per device for every building. + +Goals, in this order, graded by CityLearn's own KPIs over the month against the no-control reference \ +(storage idle, heat pump meeting the ideal load): +1. Comfort: no more discomfort than the reference. Discomfort is any occupied hour with indoor \ +temperature outside setpoint +/- {cfg.comfort_band_k:g} C. +2. Peaks and smoothness: keep the district's daily peak, its daily load factor and its ramping at or \ +better than the reference. Ramping counts every hour the district draws more than the hour before, \ +so a step up costs and a step down does not. +3. Cost first, then carbon: lower electricity cost and lower emissions than the reference. Each \ +building's cost counts equally, whatever its size. + +What you see: +- strategy_battery in each building: the battery action points 2 to 4 below give this hour, worked \ +out in code, with strategy_battery_reason. Use it unless you have a clear reason; say why you differ. +- price_plan: the price now, the 24 hour top and low, top_price_now (this is one of the most \ +expensive hours), top_price_hours_ahead (hours ahead at the top price) and flat_24h (no price \ +difference in view, as on weekends). +- battery: soc, soc_floor (the battery cannot go below it), usable_kwh above the floor, capacity, \ +max_fraction_per_hour, round_trip_min (the share of a charge that comes back at worst) and \ +grid_charging_ok (false when no price in the next 24 hours pays back the losses and a cheaper \ +hour is still coming). +- indoor_c is the measured room temperature; indoor_vs_setpoint_c is how far it is from the \ +setpoint; cooling_trim_last_hour is how far below baseline_action cooling ran last hour; \ +cooling_trim_held is the trim the envelope keeps this hour. +- smoothing: district_draw_last_hour_kwh (measured), district_load_now_kwh (before storage), \ +district_load_next_hour_kwh (the next hour's load before storage, as yesterday). +- peak: target_kwh, headroom_kwh, forecast_today_kwh. +- signal_outlook and next_24h: price and carbon by hour. Carbon is the same hour yesterday. + +Strategy: +1. Comfort and cooling. An occupied room more than {sp.cold_margin_c:g} C below its setpoint is \ +overcooled: cut its cooling below baseline_action, from 0 at {sp.cold_margin_c:g} C below the \ +setpoint to {sp.cold_trim:g} at {full:g} C or more below. The envelope holds a trim in code: while \ +the room is occupied and more than {cfg.trim_hold_c:g} C below its setpoint it stays at least as deep \ +as last hour, within {cfg.trim_hold_c:g} C it eases off by at most {cfg.trim_release_step:g} per hour, \ +and it ends at the setpoint, when the room empties or when baseline cooling is 0. null keeps a held \ +trim; you may trim deeper. End one early only through end_trim; early ends are logged. +2. Hold the battery for the top-price hours. When top_price_now is true, discharge the usable charge \ +evenly over the top-price hours left, each hour no more than the building's load_now_kwh (power \ +sent back to the grid earns nothing).{reserve} Do not discharge in cheaper hours before them, except \ +to keep district load down: once district_load_now_kwh reaches {sp.shave:g} x forecast_today_kwh, \ +discharge to cover the building's own load. On flat_24h days leave the battery idle. +3. Charge so each battery is near {sp.soc_target:g} when the top-price hours start: only when \ +grid_charging_ok is true, in the cheapest hours with the lowest carbon (usually the early morning), \ +up to about {sp.charge_rate:g} of capacity per hour, starting small and rising by at most \ +{sp.charge_step:g} per hour, within headroom_kwh. Store spare solar any time. +4. Never charge at the top price. Leave the hot water tank at 0. + +Actions per building, use null to keep the baseline action: +- cooling: heat pump power as a fraction of nominal, {cfg.cooling_min:g} to {cfg.cooling_max:g}. +- dhw: hot water tank, fraction of capacity to charge (+) or discharge (-) this hour. Baseline 0. +- battery: fraction of battery capacity to charge (+) or discharge (-) this hour. Baseline 0. +- end_trim: null, or a short reason to end that building's held cooling trim now. + +A safety envelope checks every value before it is applied. It will clamp: +- any value outside its range or CityLearn's action space +- any move larger than {cfg.cooling_rate_per_step:g} (cooling), {cfg.dhw_rate_per_step:g} (dhw) or \ +{cfg.battery_rate_per_step:g} (battery) per hour, measured from last hour's action or this hour's baseline +- charge that would leave a battery or tank outside {cfg.soc_min:g} to {cfg.soc_max:g} state of charge{dev} +- in occupied hours within {cfg.comfort_margin_k:g} C of a comfort band edge, cooling below the baseline \ +when warm or above it when cool{guard}{hold}{spread}{peak} +An invalid reply uses the baseline action everywhere for that hour. Clamps are logged against you. + +Reply with one JSON object only, matching the schema. "reason" is one plain sentence of at most \ +{dc.REASON_TARGET_CHARS} characters. A reason over {dc.REASON_MAX_CHARS} characters makes the whole \ +reply invalid.""" + + def observe(version: int, state: dict, ctx: StepContext, last: Decision | None, look: Lookahead, envelope: Envelope | None = None) -> dict: if version == 1: @@ -611,6 +734,8 @@ def observe(version: int, state: dict, ctx: StepContext, last: Decision | None, return build_observation_v4(state, ctx, last, look, envelope) if version == 5: return build_observation_v5(state, ctx, last, look, envelope) + if version == 6: + return build_observation_v6(state, ctx, last, look, envelope) raise ValueError(f"unknown prompt version {version}") @@ -625,7 +750,7 @@ def build_request(obs: dict, cfg: EnvelopeConfig, buildings: tuple[str, ...], mo max_tokens: int = DEFAULT_MAX_TOKENS, effort: str = DEFAULT_EFFORT, prompt_version: int = 1) -> dict: system = {1: system_prompt, 2: system_prompt_v2, 3: system_prompt_v3, - 4: system_prompt_v4, 5: system_prompt_v5}[prompt_version](cfg, buildings) + 4: system_prompt_v4, 5: system_prompt_v5, 6: system_prompt_v6}[prompt_version](cfg, buildings) return { "model": MODELS[model_key]["id"], "max_tokens": max_tokens, @@ -633,6 +758,7 @@ def build_request(obs: dict, cfg: EnvelopeConfig, buildings: tuple[str, ...], mo "messages": [{"role": "user", "content": user_message(obs)}], "output_config": { "effort": effort, - "format": {"type": "json_schema", "schema": proposal_json_schema(buildings)}, + "format": {"type": "json_schema", + "schema": proposal_json_schema(buildings, end_trim_field(prompt_version))}, }, } diff --git a/hyperbolic/runner.py b/hyperbolic/runner.py index 3596521..41210c2 100644 --- a/hyperbolic/runner.py +++ b/hyperbolic/runner.py @@ -29,22 +29,27 @@ request_sha256, worst_case_cost_usd, ) -from .prompt import PROMPT_VERSION, Lookahead, build_request, observe +from .prompt import PROMPT_VERSION, Lookahead, build_request, end_trim_field, observe from .signals import PeakInfo, PeakTracker, PriceOutlook # The rule-based controller is the 0.4.0 reference, kept frozen so its result reproduces: prompt -# version 3 and the 0.4.0 envelope. Prompt version 4 shows its plan to the model each hour. +# version 3 and the 0.4.0 envelope. Prompt versions 4 and 5 show its plan to the model each hour. RULE_PROMPT_VERSION = 3 +# Prompt version 6 is the first that knows the envelope holds cooling trims (0.8.0). +HOLD_PROMPT_VERSION = 6 def controller_settings(rule_based: bool, prompt_version: int | None = None) -> tuple[int, EnvelopeConfig]: """Prompt version and envelope rules for a new run. Without a prompt version, models get the - current one and the rule-based controller the 0.4.0 one, each with its own envelope.""" + current one and the rule-based controller the 0.4.0 one, each with its own envelope. Prompt + versions before 6 run with the 0.7.0 rules, as they did then; version 6 adds the trim hold.""" if prompt_version is None: prompt_version = RULE_PROMPT_VERSION if rule_based else PROMPT_VERSION if rule_based and prompt_version <= RULE_PROMPT_VERSION: return prompt_version, EnvelopeConfig.v040() + if prompt_version < HOLD_PROMPT_VERSION: + return prompt_version, EnvelopeConfig.v070() return prompt_version, EnvelopeConfig() @@ -228,7 +233,7 @@ def decide(self, step: int, state: dict, writer: RunWriter) -> tuple[Decision, d if res.error: decision = self.envelope.fallback(ctx, f"no usable reply: {res.error}") else: - proposal, err = parse_reply(res.text, buildings) + proposal, err = parse_reply(res.text, buildings, end_trim_field(self.prompt_version)) decision = self.envelope.apply(proposal, ctx, None if err is None else f"invalid reply: {err}") if decision.status == "clamped": self.counts["clamped"] += 1 diff --git a/hyperbolic/viewer.py b/hyperbolic/viewer.py index 188ab11..5a3abe2 100644 --- a/hyperbolic/viewer.py +++ b/hyperbolic/viewer.py @@ -88,19 +88,33 @@ def _actions(run: dict, n: int, buildings: list[str]) -> dict: def _decision(s: dict) -> dict: d = s.get("decision") or {} - return { + out = { "status": d.get("status", "ok"), "reason": d.get("reason") or "", "fallback": d.get("fallback"), "clamps": [{"point": c["point"], "rule": c["rule"], "requested": c["requested"], "applied": c["applied"], "reason": c["reason"]} for c in d.get("clamps") or []], } + # Cooling trims the model ended early, with its reason (0.8.0). Present only when there are + # some, so the viewer data of older runs is unchanged. + ends = [{"building": h["building"], "reason": h["reason"]} for h in d.get("holds") or [] + if h.get("action") == "end_early"] + if ends: + out["trim_ends"] = ends + return out def _decisions(run: dict, n: int) -> list[dict]: return [_decision(s) for s in run["steps"][:n]] +def _trim_end_count(manifest: dict, decisions: list[dict]) -> dict: + """How many cooling trims the model ended early, for runs recorded with the trim hold.""" + if not (manifest.get("envelope") or {}).get("trim_hold"): + return {} + return {"trim_ends_early": sum(len(d.get("trim_ends", [])) for d in decisions)} + + def _pct(agent: float | None, base: float | None) -> float | None: if agent is None or base is None or abs(base) < 1e-12: return None @@ -184,6 +198,7 @@ def build_scenario(baseline_dir: Path, agent_dir: Path) -> dict: "fallback_hours": sum(1 for d in decisions if d["status"] == "fallback"), "budget_stopped": bool(ar.get("budget_stopped")), "envelope": am.get("envelope"), + **_trim_end_count(am, decisions), }, "headline": headline(base["result"].get("district_kpis") or {}, ar.get("district_kpis") or {}), } diff --git a/pyproject.toml b/pyproject.toml index 5de6b05..3e31ec1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "hyperbolic" -version = "0.7.0" +version = "0.8.0" description = "Supervisory control for CityLearn district simulations, behind a deterministic safety envelope." readme = "README.md" license = { text = "MIT" } diff --git a/scripts/evaluate_hold.py b/scripts/evaluate_hold.py new file mode 100644 index 0000000..dc956ea --- /dev/null +++ b/scripts/evaluate_hold.py @@ -0,0 +1,159 @@ +"""Estimate the 0.8.0 trim hold on a recorded live run, as an evaluation, never a recorded run. + + python scripts/evaluate_hold.py RUN_DIR + +The run's own replies are sent hour by hour, unchanged, through two envelopes on a fresh +CityLearn month with zero model calls: + + control the rules the run was recorded with. It must reproduce the run's published KPIs + exactly, or the script stops: that proves the replay path itself changes nothing. + hold the same rules with the trim hold on (EnvelopeConfig.trim_hold). + +The replies are fixed, so later hours do not react to what the hold changed (a warmer or cooler +room), and nothing here measures what a version 6 prompt would change. It prints both sets of +KPIs, the clamps by rule, the hold's actions, trim episodes counted as in the 0.7.0 diagnosis, +and the exact ramping split (scripts/split_ramping.py) for both. +""" + +from __future__ import annotations + +import collections +import dataclasses +import json +import statistics +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) +sys.path.insert(0, str(ROOT / "scripts")) + +from split_ramping import split, table # noqa: E402 + +from hyperbolic.envelope import Envelope, EnvelopeConfig # noqa: E402 +from hyperbolic.model import Budget, RecordedReplySupervisor # noqa: E402 +from hyperbolic.runner import AgentController, NullWriter, load_jsonl, run_session # noqa: E402 + +KPI_KEYS = ("cost_total", "carbon_emissions_total", "electricity_consumption_total", "discomfort_proportion", + "discomfort_cold_proportion", "discomfort_hot_proportion", "daily_peak_average", "all_time_peak_average", + "ramping_average", "daily_one_minus_load_factor_average", "power_outage_normalized_unserved_energy_total") +TRIM_MIN = 0.002 + + +def evaluate(run_dir: Path, cfg: EnvelopeConfig) -> dict: + from hyperbolic.sim import CityLearnSimulator + + class KeepEnv(CityLearnSimulator): + def close(self) -> None: # keep the finished env for the ramping split + pass + + m = json.loads((run_dir / "manifest.json").read_text(encoding="utf-8")) + sup = m["supervisor"] + ctl = AgentController( + supervisor=RecordedReplySupervisor(run_dir / "calls.jsonl", sup["model_key"]), + envelope=Envelope(cfg), + budget=Budget(limit_usd=float(sup["budget_usd"])), + max_tokens=int(sup["max_tokens"]), + effort=sup["effort"], + prompt_version=int(sup.get("prompt_version", 1)), + ) + sim, w = KeepEnv(control=True), NullWriter() + res = run_session(sim, ctl, w, hours=m.get("hours_limit"), sim_info={"kind": "citylearn", "control": True}, + log=lambda *_: None) + return {"result": res, "steps": w.steps, "split": split(sim.env, w.steps)} + + +def trim_episodes(steps: list[dict]) -> dict: + """Trim episodes as the 0.7.0 diagnosis counted them: cooling more than 0.002 below the + baseline action, and episodes that ended within the month. An end broke the version 5 rule + when the room was occupied, still below its setpoint and the baseline still had cooling to + trim, and either the room was more than 0.5 C too cold or the trim dropped more than 0.02.""" + lengths, occupied_ends, cold_ends, fast_ends = [], 0, 0, 0 + for b in steps[0]["actions"]: + run, depth = 0, 0.0 + for s in steps: + d = s["state"]["baseline"][b]["cooling"] - s["actions"][b]["cooling"] + if d > TRIM_MIN: + run, depth = run + 1, d + continue + if run: + lengths.append(run) + st = s["state"]["buildings"][b] + gap = st["indoor_c"] - st["setpoint_c"] + if st["occupants"] > 0: + occupied_ends += 1 + if gap < 0 and s["state"]["baseline"][b]["cooling"] > TRIM_MIN: + if gap < -0.5: + cold_ends += 1 + elif depth > 0.02 + 1e-9: + fast_ends += 1 + run = 0 + return {"episodes": len(lengths), "median_hours": statistics.median(lengths) if lengths else 0, + "one_hour": sum(1 for x in lengths if x == 1), "ended_occupied": occupied_ends, + "broke_rule": cold_ends + fast_ends, "ended_too_cold": cold_ends, "dropped_fast": fast_ends} + + +def clamp_rules(steps: list[dict]) -> dict: + hours, clamps = collections.Counter(), collections.Counter() + for s in steps: + rules = [c["rule"] for c in (s["decision"] or {}).get("clamps", [])] + clamps.update(rules) + hours.update(set(rules)) + return {r: (hours[r], clamps[r]) for r in sorted(clamps)} + + +def hold_actions(steps: list[dict]) -> dict: + out = collections.Counter() + for s in steps: + for h in (s["decision"] or {}).get("holds", []): + kind = h["action"] + if kind == "end": + kind = ("end: no baseline cooling" if "baseline" in h["reason"] else + "end: unoccupied" if "unoccupied" in h["reason"] else "end: at or above setpoint") + out[kind] += 1 + return dict(sorted(out.items())) + + +def main(argv: list[str] | None = None) -> int: + args = argv if argv is not None else sys.argv[1:] + if len(args) != 1: + print(__doc__.splitlines()[2].strip(), file=sys.stderr) + return 2 + run_dir = Path(args[0]) + m = json.loads((run_dir / "manifest.json").read_text(encoding="utf-8")) + published = json.loads((run_dir / "result.json").read_text(encoding="utf-8"))["district_kpis"] + control_cfg = EnvelopeConfig.from_manifest(m["envelope"]) + if control_cfg.trim_hold: + print("this run was recorded with the trim hold already on", file=sys.stderr) + return 2 + control = evaluate(run_dir, control_cfg) + got = control["result"]["district_kpis"] + if got != published: + diff = {k: (published.get(k), got.get(k)) for k in set(published) | set(got) if published.get(k) != got.get(k)} + print(f"control does not reproduce the published KPIs: {diff}", file=sys.stderr) + return 1 + hold = evaluate(run_dir, dataclasses.replace(control_cfg, trim_hold=True)) + recorded = load_jsonl(run_dir / "steps.jsonl") + if [s["actions"] for s in control["steps"]] != [s["actions"] for s in recorded]: + print("control actions differ from the recording", file=sys.stderr) + return 1 + hk = hold["result"]["district_kpis"] + print(f"{run_dir.name}: its own replies through the {m.get('tool_version')} rules (control) and with the " + "trim hold (evaluation, not a recorded run)") + print("control reproduces the published KPIs exactly: yes") + print(f" {'CityLearn KPI (district)':<46}{'control':>10}{'hold':>10}{'change':>10}") + for k in KPI_KEYS: + print(f" {k:<46}{got[k]:>10.4f}{hk[k]:>10.4f}{hk[k] - got[k]:>+10.4f}") + for name, ev in (("control", control), ("hold", hold)): + r = ev["result"] + print(f" {name}: clamped hours {r['clamped_steps']}, fallback hours {r['fallback_steps']}; " + f"clamps by rule (hours, clamps) {clamp_rules(ev['steps'])}") + print(f" {name}: trims {trim_episodes(ev['steps'])}") + print(f" hold actions: {hold_actions(hold['steps'])}") + print() + print(table({"control": control["split"], "hold": hold["split"]})) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/split_ramping.py b/scripts/split_ramping.py new file mode 100644 index 0000000..6c776b8 --- /dev/null +++ b/scripts/split_ramping.py @@ -0,0 +1,159 @@ +"""Split CityLearn's district ramping by cause, exactly (the 0.8.0 diagnosis). + + python scripts/split_ramping.py RUN_DIR [RUN_DIR ...] + +CityLearn's ramping_average is R(E) / R(E_ref). R adds up every hour-to-hour rise of a series +(a fall counts for nothing), E is the district's net draw, and E_ref is CityLearn's own +reference for the same run: its net draw with storage taken out and cooling put back to the +ideal load (net_electricity_consumption_without_storage_and_partial_load). It is not the +baseline run: in an outage hour E is 0 whatever the actions, but E_ref still has the cooling +difference taken off, so extra cooling in an outage lowers E_ref there and adds a rise to it. + +Each run is simulated again from its recorded actions (the outcomes must match the recording). +Per building, by construction, net = ref + battery + hot water storage + cooling gap, where the +cooling gap is (net - storage) - ref. Each hour's rise max(0, dE) is split among the causes +below with Shapley values, starting from the reference's own change that hour, so the shares +add up exactly: R(E) = R(E_ref) + sum of the shares. + + battery_charge, battery_discharge the positive and negative parts of the battery's draw + dhw_storage the hot water tank's draw + trim_start, trim_end, trim_depth the cooling gap while cooling is more than 0.002 below the + baseline action: the hour a trim starts, the hour it ends, + and changes in its depth in between + extra_cooling the cooling gap while cooling is more than 0.002 above it + cooling_rounding the remaining cooling gap (actions rounded to 4 decimals) + outage_hours everything in a building's outage hours, where the grid + draw is 0 whatever the actions +""" + +from __future__ import annotations + +import itertools +import json +import math +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +sys.path.insert(0, str(ROOT)) + +import numpy as np # noqa: E402 + +from hyperbolic.runner import load_jsonl # noqa: E402 + +CAUSES = ("battery_charge", "battery_discharge", "dhw_storage", "trim_start", "trim_end", "trim_depth", + "extra_cooling", "cooling_rounding", "outage_hours") +TRIM_MIN = 0.002 # a trim is cooling more than this below the baseline action (EnvelopeConfig.trim_min_depth) + + +def resimulate(run_dir: Path): + """Run a recorded run's actions through CityLearn again. Returns (CityLearnEnv, steps).""" + from hyperbolic.sim import CityLearnSimulator + + steps = load_jsonl(Path(run_dir) / "steps.jsonl") + m = json.loads((Path(run_dir) / "manifest.json").read_text(encoding="utf-8")) + sim = CityLearnSimulator(control=steps[0]["actions"] is not None) + state = sim.start(m.get("hours_limit")) + i = 0 + while state is not None and i < len(steps): + outcome, state = sim.step(steps[i]["actions"]) + if outcome != steps[i]["outcome"]: + raise ValueError(f"{run_dir}: hour {i} does not reproduce the recorded outcome") + i += 1 + return sim.env, steps + + +def _rise(x: np.ndarray) -> float: + return float(np.clip(np.diff(x), 0.0, None).sum()) + + +def _shapley(start: float, deltas: list[float]) -> list[float]: + """Exact Shapley shares of max(0, start + sum(deltas)) - max(0, start).""" + phi = [0.0] * len(deltas) + live = [i for i, d in enumerate(deltas) if abs(d) > 1e-12] + m = len(live) + for i in live: + others = [j for j in live if j != i] + for r in range(m): + w = math.factorial(r) * math.factorial(m - r - 1) / math.factorial(m) + for sub in itertools.combinations(others, r): + s = start + sum(deltas[j] for j in sub) + phi[i] += w * (max(0.0, s + deltas[i]) - max(0.0, s)) + return phi + + +def split(env, steps: list[dict]) -> dict: + """The exact split for a finished CityLearn env and the run's step records.""" + n = len(steps) + ref_total = np.zeros(n) + net_total = np.zeros(n) + inc = {c: np.zeros(n) for c in CAUSES} + for b in env.buildings: + name = b.name + net = np.asarray(b.net_electricity_consumption, dtype=float)[:n] + ws = np.asarray(b.net_electricity_consumption_without_storage, dtype=float)[:n] + ref = np.asarray(b.net_electricity_consumption_without_storage_and_partial_load, dtype=float)[:n] + bat = np.asarray(b.electrical_storage_electricity_consumption, dtype=float)[:n] + dhw = net - ws - bat # all other storage: the hot water tank here + gap = ws - ref + act = np.array([s["actions"][name]["cooling"] for s in steps]) + base = np.array([s["state"]["baseline"][name]["cooling"] for s in steps]) + out = np.array([bool(s["state"]["buildings"][name].get("power_outage")) for s in steps]) + trimmed, extra = (act < base - TRIM_MIN) & ~out, (act > base + TRIM_MIN) & ~out + level = { + "battery_charge": np.where(out, 0.0, np.clip(bat, 0.0, None)), + "battery_discharge": np.where(out, 0.0, np.clip(bat, None, 0.0)), + "dhw_storage": np.where(out, 0.0, dhw), + "extra_cooling": np.where(extra, gap, 0.0), + "cooling_rounding": np.where(~trimmed & ~extra & ~out, gap, 0.0), + "outage_hours": np.where(out, bat + dhw + gap, 0.0), + } + for c, x in level.items(): + inc[c][1:] += np.diff(x) + trim = np.where(trimmed, gap, 0.0) + d = np.diff(trim) + for t in range(1, n): + kind = ("trim_depth" if trimmed[t] and trimmed[t - 1] else "trim_start" if trimmed[t] + else "trim_end" if trimmed[t - 1] else None) + if kind: + inc[kind][t] += d[t - 1] + ref_total += ref + net_total += net + dref = np.zeros(n) + dref[1:] = np.diff(ref_total) + shares = dict.fromkeys(CAUSES, 0.0) + for t in range(1, n): + for c, v in zip(CAUSES, _shapley(dref[t], [inc[c][t] for c in CAUSES])): + shares[c] += v + r, r_ref = _rise(net_total), _rise(ref_total) + if abs(r_ref + sum(shares.values()) - r) > 1e-6: + raise AssertionError("the shares do not add up to the run's ramping") + return {"ramping_kwh": r, "reference_kwh": r_ref, "ramping_average": r / r_ref, "shares_kwh": shares} + + +def table(results: dict[str, dict]) -> str: + names = list(results) + lines = [f"{'cause, points of ramping_average':<34}" + "".join(f"{n:>18}" for n in names)] + for c in CAUSES: + lines.append(f"{c:<34}" + "".join(f"{results[n]['shares_kwh'][c] / results[n]['reference_kwh'] * 100:>+18.2f}" + for n in names)) + lines.append(f"{'reference rises (kWh)':<34}" + "".join(f"{results[n]['reference_kwh']:>18.2f}" for n in names)) + lines.append(f"{'ramping_average':<34}" + "".join(f"{results[n]['ramping_average']:>18.4f}" for n in names)) + return "\n".join(lines) + + +def main(argv: list[str] | None = None) -> int: + dirs = [Path(a) for a in (argv if argv is not None else sys.argv[1:])] + if not dirs: + print(__doc__.splitlines()[2].strip(), file=sys.stderr) + return 2 + results = {} + for d in dirs: + env, steps = resimulate(d) + results[d.name[-16:]] = split(env, steps) + print(table(results)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/tune_strategy.py b/scripts/tune_strategy.py index d81082e..7a10360 100644 --- a/scripts/tune_strategy.py +++ b/scripts/tune_strategy.py @@ -3,6 +3,7 @@ python scripts/tune_strategy.py # version 5 grid (0.7.0) python scripts/tune_strategy.py --quick # the shipped version 5 defaults only python scripts/tune_strategy.py --version 4 # the 0.6.0 version 4 search, as it was run + python scripts/tune_strategy.py --version 6 # 0.8.0 check: the trim hold, nothing tuned Tuning set: citylearn_challenge_2023_phase_2_online_evaluation_1 from CityLearn v3.0.2, copied unchanged into scripts/tuning_data. It has the same three buildings, batteries and LSTM models as @@ -23,6 +24,12 @@ months, ramping is below the baseline and cost, emissions, discomfort and both peaks are no worse than the 0.6.0 tuned version 4 strategy on the same months. The qualifying candidate with the lowest ramping plus daily load factor wins, cost plus emissions breaking ties. + +Version 6 (0.8.0) tunes nothing. The envelope's trim hold takes its numbers from the version 5 +strategy (hold within 0.5 C, ease by 0.02 per hour), and the check runs the shipped version 5 +strategy through the 0.7.0 rules and through the 0.8.0 rules (prompt version 6, trim hold on), +so its effect is measured on the tuning months before anything is reported on the test month. +The version 4 and 5 searches run with the 0.7.0 rules they were made with. """ from __future__ import annotations @@ -100,8 +107,8 @@ def month_datasets(out: Path) -> list[Path]: def kpis(job: tuple[str, dict | None, str]) -> dict: - """job: (kind, params or None, schema path). kind is baseline, rule, strategy (version 4) or - strategy5 (version 5).""" + """job: (kind, params or None, schema path). kind is baseline, rule, strategy (version 4), + strategy5 (version 5) or strategy6 (version 5's strategy with the 0.8.0 trim hold).""" import torch torch.set_num_threads(1) # one simulation per process @@ -114,12 +121,16 @@ def kpis(job: tuple[str, dict | None, str]) -> dict: controller = AgentController(ScriptedSupervisor(), Envelope(EnvelopeConfig.v040()), Budget(1.0), prompt_version=3) control = True elif kind == "strategy": - controller = AgentController(ScriptedSupervisor(strategy=StrategyParams(**params)), Envelope(EnvelopeConfig()), - Budget(1.0), prompt_version=4) + controller = AgentController(ScriptedSupervisor(strategy=StrategyParams(**params)), + Envelope(EnvelopeConfig.v070()), Budget(1.0), prompt_version=4) + control = True + elif kind == "strategy5": + controller = AgentController(ScriptedSupervisor(strategy_v5=StrategyParamsV5(**params)), + Envelope(EnvelopeConfig.v070()), Budget(1.0), prompt_version=5) control = True - else: - controller = AgentController(ScriptedSupervisor(strategy_v5=StrategyParamsV5(**params)), Envelope(EnvelopeConfig()), - Budget(1.0), prompt_version=5) + else: # strategy6: the same strategy, prompt version 6, with the 0.8.0 trim hold + controller = AgentController(ScriptedSupervisor(strategy_v5=StrategyParamsV5(**params)), + Envelope(EnvelopeConfig()), Budget(1.0), prompt_version=6) control = True res = run_session(CityLearnSimulator(control=control, schema=Path(schema)), controller, NullWriter(), log=lambda *_: None) @@ -166,7 +177,7 @@ def line(name: str, k: dict) -> str: def main(argv: list[str] | None = None) -> int: ap = argparse.ArgumentParser(description=__doc__.splitlines()[0]) - ap.add_argument("--version", type=int, default=5, choices=(4, 5)) + ap.add_argument("--version", type=int, default=5, choices=(4, 5, 6)) ap.add_argument("--quick", action="store_true") ap.add_argument("--jobs", type=int, default=None, help="parallel simulations (default: one per CPU)") ap.add_argument("--out", type=Path, default=None, help="optionally write every result as JSON") @@ -174,6 +185,8 @@ def main(argv: list[str] | None = None) -> int: if args.version == 5: return main_v5(args) + if args.version == 6: + return main_v6(args) with tempfile.TemporaryDirectory() as tmp: months = [str(d / "schema.json") for d in month_datasets(Path(tmp))] candidates = [asdict(StrategyParams())] if args.quick else [ @@ -237,5 +250,33 @@ def main_v5(args) -> int: return 0 +def main_v6(args) -> int: + """The trim hold on the tuning months: the shipped version 5 strategy with and without it.""" + params = asdict(StrategyParamsV5()) + with tempfile.TemporaryDirectory() as tmp: + months = [str(d / "schema.json") for d in month_datasets(Path(tmp))] + jobs = [("baseline", None, m) for m in months] + [("strategy5", params, m) for m in months] + jobs += [("strategy6", params, m) for m in months] + with cf.ProcessPoolExecutor(max_workers=args.jobs, mp_context=mp.get_context("spawn")) as pool: + results = list(pool.map(kpis, jobs)) + n = len(months) + base, v5, v6 = mean(results[:n]), mean(results[n:2 * n]), mean(results[2 * n:3 * n]) + print(f"tuning set: {TUNING_DATASET.name}, {n} months, mean over months") + print(line("baseline", base)) + print(line("0.7 rules", v5)) + print(line("0.8 hold", v6)) + worse = [k for k in KEYS if v6[k] > v5[k] + TOLERANCE] + print("with the trim hold, worse than without on: " + (", ".join(worse) if worse else "nothing")) + for i in range(n): + a, b = results[n + i], results[2 * n + i] + print(f" month {i + 1}: ramping {a['ramping_average']:.4f} -> {b['ramping_average']:.4f}, " + f"cost {a['cost_total']:.4f} -> {b['cost_total']:.4f}, " + f"discomfort {a['discomfort_proportion']:.4f} -> {b['discomfort_proportion']:.4f}") + if args.out: + args.out.write_text(json.dumps({"baseline": base, "v5_070": v5, "v5_080": v6, "months": results}, + indent=2, sort_keys=True), encoding="utf-8") + return 0 + + if __name__ == "__main__": raise SystemExit(main()) diff --git a/tests/test_dryrun.py b/tests/test_dryrun.py index 8599b31..fc4e7c2 100644 --- a/tests/test_dryrun.py +++ b/tests/test_dryrun.py @@ -55,7 +55,7 @@ def call(self, step, request): def test_cooling_actions_change_the_building(): """Would have caught a dead HVAC path: a cooling offset through the envelope moves temperatures.""" _, base = _run(BaselineController(), False) - env = Envelope(EnvelopeConfig(overcool_guard_unoccupied=False)) + env = Envelope(EnvelopeConfig(overcool_guard_unoccupied=False, trim_hold=False)) _, more = _run(AgentController(ExtraCooling(0.15), env, Budget(1.0)), True) _, less = _run(AgentController(ExtraCooling(-0.15), env, Budget(1.0)), True) sent = [s for s in more if s["state"]["baseline"]["Building_1"]["cooling"] < 0.8] @@ -133,7 +133,7 @@ def test_indoor_temperature_is_the_one_citylearn_simulated(): comfort rule never saw what the heat pump actually did.""" import pandas as pd - env = Envelope(EnvelopeConfig(overcool_guard_unoccupied=False, cooling_max_deviation=None)) + env = Envelope(EnvelopeConfig(overcool_guard_unoccupied=False, cooling_max_deviation=None, trim_hold=False)) _, less = _run(AgentController(ExtraCooling(-0.3), env, Budget(1.0)), True, hours=47) for b in ("Building_1", "Building_2", "Building_3"): dataset = pd.read_csv(dc.dataset_dir() / f"{b}.csv")["indoor_dry_bulb_temperature"] @@ -183,3 +183,43 @@ def test_v5_strategy_full_month_brings_ramping_below_the_baseline(): assert k["ramping_average"] < 1.0 assert k["cost_total"] < 0.9611 and k["carbon_emissions_total"] < 0.9947 and k["discomfort_proportion"] < 0.1714 assert k["daily_peak_average"] < 1.0 and k["all_time_peak_average"] < 1.0 + + +@needs_citylearn +def test_v6_dry_run_with_the_trim_hold_and_replay(tmp_path): + """24 hours of prompt version 6 (the version 5 strategy, the trim hold on), and replay.""" + from hyperbolic.sim import CityLearnSimulator + + version, cfg = controller_settings(rule_based=True, prompt_version=6) + assert cfg.trim_hold is True + ctl = AgentController(ScriptedSupervisor(), Envelope(cfg), Budget(2.0), prompt_version=version) + run_dir = tmp_path / "v6" + res = run_session(CityLearnSimulator(control=True), ctl, RunWriter(run_dir), hours=HOURS, log=quiet, + sim_info={"kind": "citylearn", "control": True}) + assert res["steps"] == HOURS and res["fallback_steps"] == 0 + manifest = json.loads((run_dir / "manifest.json").read_text(encoding="utf-8")) + assert manifest["supervisor"]["prompt_version"] == 6 and manifest["envelope"]["trim_hold"] is True + calls = load_jsonl(run_dir / "calls.jsonl") + obs = observation_from_request(calls[5]["request"]) + assert {"strategy_battery", "cooling_trim_held"} <= set(obs["buildings"]["Building_1"]) + assert "reference_action" not in json.dumps(obs) and "end_trim" in calls[5]["request"]["system"] + rep = replay_run(run_dir) + assert rep.deterministic and rep.api_calls == 0 and rep.identical_steps == HOURS + + +@needs_citylearn +def test_v6_strategy_full_month_with_the_trim_hold(): + """The scripted version 5 strategy through the 0.8.0 rules: ramping still below the baseline, + still ahead of the 0.4.0 rule-based controller, and close to its 0.7.0 month on every KPI.""" + from hyperbolic.sim import CityLearnSimulator + + version, cfg = controller_settings(rule_based=True, prompt_version=6) + ctl = AgentController(ScriptedSupervisor(), Envelope(cfg), Budget(2.0), prompt_version=version) + w = NullWriter() + res = run_session(CityLearnSimulator(control=True), ctl, w, hours=dc.EPISODE_HOURS, log=quiet) + k = res["district_kpis"] + assert res["complete"] and res["fallback_steps"] == 0 + assert k["ramping_average"] < 0.9966 # the version 5 month under the 0.7.0 rules + assert k["cost_total"] < 0.9611 and k["carbon_emissions_total"] < 0.9947 and k["discomfort_proportion"] < 0.1714 + assert abs(k["cost_total"] - 0.9015) < 0.001 and abs(k["discomfort_proportion"] - 0.0424) < 0.002 + assert any(h["action"] == "hold" for s in w.steps for h in s["decision"].get("holds", [])) diff --git a/tests/test_envelope.py b/tests/test_envelope.py index 283af8e..e84ac3d 100644 --- a/tests/test_envelope.py +++ b/tests/test_envelope.py @@ -191,7 +191,8 @@ def test_config_is_respected(): def test_cooling_deviation_cap(envelope_v3): - d = envelope_v3.apply(proposal(Building_1={"cooling": 0.7}, Building_2={"cooling": 0.0}), ctx()) + d = envelope_v3.apply(proposal(Building_1={"cooling": 0.7}, Building_2={"cooling": 0.0}), + ctx(Building_2={"indoor": 23.0})) # a cold room, where a trim may run assert ("Building_1.cooling", "deviation") in rules(d) assert ("Building_2.cooling", "deviation") in rules(d) assert d.actions["Building_1"]["cooling"] == pytest.approx(0.55) diff --git a/tests/test_evaluation.py b/tests/test_evaluation.py new file mode 100644 index 0000000..89c5ff1 --- /dev/null +++ b/tests/test_evaluation.py @@ -0,0 +1,50 @@ +"""scripts/split_ramping.py and scripts/evaluate_hold.py: the 0.8.0 diagnosis and estimate tools.""" + +import dataclasses +import json +import sys +from pathlib import Path + +import pytest +from conftest import needs_citylearn + +sys.path.insert(0, str(Path(__file__).parents[1] / "scripts")) + +import evaluate_hold # noqa: E402 +import split_ramping # noqa: E402 + +from hyperbolic.envelope import Envelope, EnvelopeConfig # noqa: E402 +from hyperbolic.model import Budget, ScriptedSupervisor # noqa: E402 +from hyperbolic.runner import AgentController, RunWriter, run_session # noqa: E402 + + +@pytest.mark.parametrize("start, deltas", [(0.5, [0.3, -0.9, 0.2]), (-1.0, [0.4, 0.4, 0.4]), (2.0, [0.0, -0.5])]) +def test_shapley_shares_add_up_to_the_rise(start, deltas): + phi = split_ramping._shapley(start, deltas) + assert sum(phi) == pytest.approx(max(0.0, start + sum(deltas)) - max(0.0, start)) + + +def test_equal_causes_get_equal_shares(): + a, b = split_ramping._shapley(0.0, [0.3, 0.3]) + assert a == pytest.approx(b) == pytest.approx(0.3) + + +@needs_citylearn +def test_evaluation_control_reproduces_a_recorded_run_and_the_split_adds_up(tmp_path): + from hyperbolic.sim import CityLearnSimulator + + run = tmp_path / "v5" + ctl = AgentController(ScriptedSupervisor(), Envelope(EnvelopeConfig.v070()), Budget(2.0), prompt_version=5) + run_session(CityLearnSimulator(control=True), ctl, RunWriter(run), hours=47, log=lambda *_: None, + sim_info={"kind": "citylearn", "control": True}) + published = json.loads((run / "result.json").read_text(encoding="utf-8"))["district_kpis"] + control = evaluate_hold.evaluate(run, EnvelopeConfig.v070()) + assert control["result"]["district_kpis"] == published + s = control["split"] + assert s["ramping_average"] == pytest.approx(published["ramping_average"], abs=1e-6) + assert s["reference_kwh"] + sum(s["shares_kwh"].values()) == pytest.approx(s["ramping_kwh"]) + hold = evaluate_hold.evaluate(run, dataclasses.replace(EnvelopeConfig.v070(), trim_hold=True)) + assert hold["result"]["steps"] == 47 + env, steps = split_ramping.resimulate(run) + assert split_ramping.split(env, steps)["ramping_kwh"] == pytest.approx(s["ramping_kwh"]) + assert evaluate_hold.trim_episodes(control["steps"])["episodes"] >= 0 diff --git a/tests/test_prompt.py b/tests/test_prompt.py index 0fd1184..e33ce08 100644 --- a/tests/test_prompt.py +++ b/tests/test_prompt.py @@ -31,15 +31,20 @@ def fake_states(n): return out -def test_default_prompt_is_version_5_and_the_rule_based_controller_stays_on_3(): - assert PROMPT_VERSION == 5 - assert AgentController(ScriptedSupervisor(), Envelope(), Budget(1.0)).describe()["prompt_version"] == 5 +def test_default_prompt_is_version_6_and_the_rule_based_controller_stays_on_3(): + assert PROMPT_VERSION == 6 + assert AgentController(ScriptedSupervisor(), Envelope(), Budget(1.0)).describe()["prompt_version"] == 6 # The rule-based controller is the frozen 0.4.0 reference: prompt version 3, no spread check. assert controller_settings(True) == (3, EnvelopeConfig.v040()) - assert controller_settings(False) == (5, EnvelopeConfig()) - assert controller_settings(True, 4) == (4, EnvelopeConfig()) - assert controller_settings(True, 5) == (5, EnvelopeConfig()) + assert controller_settings(False) == (6, EnvelopeConfig()) + # Versions before 6 keep the 0.7.0 rules; only version 6 knows the envelope holds trims. + assert controller_settings(True, 4) == (4, EnvelopeConfig.v070()) + assert controller_settings(True, 5) == (5, EnvelopeConfig.v070()) + assert controller_settings(False, 5) == (5, EnvelopeConfig.v070()) + assert controller_settings(True, 6) == (6, EnvelopeConfig()) assert EnvelopeConfig.v040().spread_check is False and EnvelopeConfig().spread_check is True + assert EnvelopeConfig().trim_hold is True + assert EnvelopeConfig.v070().trim_hold is False and EnvelopeConfig.v040().trim_hold is False def test_lookahead_places_forecasts_at_their_real_horizons(): @@ -118,15 +123,15 @@ def test_v2_prompt_states_the_strategy_and_the_rules(): def test_request_carries_the_observation_for_each_version(): st = fake_states(1)[0] ctx = context_from_state(st) - for version in (1, 2, 3, 4, 5): + for version in (1, 2, 3, 4, 5, 6): obs = observe(version, st, ctx, None, Lookahead()) req = build_request(obs, EnvelopeConfig(), tuple(st["buildings"]), "haiku", prompt_version=version) assert observation_from_request(req) == json.loads(json.dumps(obs)) with pytest.raises(ValueError): - observe(6, st, ctx, None, Lookahead()) + observe(7, st, ctx, None, Lookahead()) -@pytest.mark.parametrize("version", [3, 4, 5]) +@pytest.mark.parametrize("version", [3, 4, 5, 6]) def test_rule_policy_charges_cheap_and_discharges_into_the_peak(version): # Fake district: price 0.05 most of the day and 0.25 from hour 16 to 20. Version 3 runs the # 0.4.0 rule; versions 4 and 5 run their scripted strategies, without peak shaving, which the diff --git a/tests/test_prompt_v6.py b/tests/test_prompt_v6.py new file mode 100644 index 0000000..f534993 --- /dev/null +++ b/tests/test_prompt_v6.py @@ -0,0 +1,163 @@ +"""Prompt version 6 (0.8.0): the trim hold in the prompt, end_trim in the reply, and the version 5 +strategy's battery plan in place of the 0.4.0 reference action.""" + +import json + +import pytest +from fakes import FakeDistrict + +from hyperbolic import district as dc +from hyperbolic.envelope import Envelope, EnvelopeConfig, parse_reply, proposal_json_schema +from hyperbolic.model import ( + Budget, + RecordedReplySupervisor, + ScriptedSupervisor, + battery_plan_v5, + observation_from_request, + strategy_plan_v5, +) +from hyperbolic.prompt import Lookahead, build_request, observe, system_prompt_v5, system_prompt_v6 +from hyperbolic.runner import AgentController, NullWriter, RunWriter, context_from_state, run_session +from hyperbolic.signals import PeakTracker, PriceOutlook + +BUILDINGS = ("Building_1", "Building_2", "Building_3") + + +def _obs(version, n=40, envelope=None): + """An observation late in the second day of the fake district, so every outlook is filled.""" + sim = FakeDistrict() + st = sim.start(n + 3) + look, peaks = Lookahead(), PeakTracker() + for _ in range(n): + look.update(st) + peaks.update(st) + last = st + _, st = sim.step(None) + t = last["time_step"] + ctx = context_from_state(last, peaks.info(t), PriceOutlook(last["shared"]["price_forecast"][0], + tuple(look.outlook(t)["price"]))) + env = envelope or Envelope(EnvelopeConfig()) + return last, ctx, look, env, observe(version, last, ctx, None, look, env) + + +def test_schema_adds_a_nullable_end_trim_per_building_only_for_version_6(): + v5, v6 = proposal_json_schema(BUILDINGS), proposal_json_schema(BUILDINGS, end_trim=True) + assert "end_trim" not in v5["properties"]["Building_1"]["properties"] + dev = v6["properties"]["Building_1"] + assert dev["properties"]["end_trim"] == {"anyOf": [{"type": "string"}, {"type": "null"}]} + assert "end_trim" in dev["required"] and dev["additionalProperties"] is False + assert proposal_json_schema(BUILDINGS) == v5 # the cached older schema is not touched + + +def _reply(**b1): + r = {"reason": "t"} + for b in BUILDINGS: + r[b] = {"cooling": None, "dhw": None, "battery": None, **(b1 if b == "Building_1" else {})} + return json.dumps(r) + + +def test_end_trim_parses_for_version_6_and_is_refused_before_it(): + p, err = parse_reply(_reply(end_trim="room needs it"), BUILDINGS, end_trim=True) + assert err is None and p["end_trim"] == {"Building_1": "room needs it"} + assert set(p["buildings"]["Building_1"]) == {"cooling", "dhw", "battery"} + p, err = parse_reply(_reply(end_trim=None), BUILDINGS, end_trim=True) + assert err is None and p["end_trim"] == {} + p, err = parse_reply(_reply(), BUILDINGS, end_trim=True) # left out: same as null + assert err is None and p["end_trim"] == {} + for bad in ("", "x" * (dc.REASON_MAX_CHARS + 1), 3): + p, err = parse_reply(_reply(end_trim=bad), BUILDINGS, end_trim=True) + assert p is None and "end_trim" in err + p, err = parse_reply(_reply(end_trim="no"), BUILDINGS) # version 5 has no such field + assert p is None and "end_trim" in err + p, err = parse_reply(_reply(), BUILDINGS) + assert err is None and "end_trim" not in p + + +def test_v6_observation_swaps_the_reference_action_for_the_strategy_battery_plan(): + env = Envelope(EnvelopeConfig()) + st, ctx, look, env, v6 = _obs(6, envelope=env) + v5 = observe(5, st, ctx, None, look, env) + assert "reference_reason" not in v6 and "reference_action" not in json.dumps(v6) + assert {k for k in v6 if k != "strategy_battery_reason"} == {k for k in v5 if k != "reference_reason"} + battery, why = battery_plan_v5(v5) + assert v6["strategy_battery_reason"] == why + for b in BUILDINGS: + assert set(v6["buildings"][b]) == set(v5["buildings"][b]) - {"reference_action"} | { + "strategy_battery", "cooling_trim_held"} + assert v6["buildings"][b]["strategy_battery"] == battery[b] + assert v6["buildings"][b]["cooling_trim_held"] == 0.0 + + +def test_v6_observation_shows_the_trim_the_envelope_will_hold(): + env = Envelope(EnvelopeConfig()) + env.holds = {"Building_2": 0.06} + st, ctx, look, env, obs = _obs(6, envelope=env) + st_b2 = ctx.buildings["Building_2"] + assert obs["buildings"]["Building_2"]["cooling_trim_held"] == -round(env.held_trim("Building_2", st_b2)[0], 3) + + +def test_battery_plan_is_the_v5_strategys_own_battery_action(): + st, ctx, look, env, v5 = _obs(5) + battery, why = battery_plan_v5(v5) + full = strategy_plan_v5(v5) + assert battery == {b: full[b]["battery"] for b in BUILDINGS} + assert why and len(why) <= dc.REASON_TARGET_CHARS and "cooling" not in why + + +def test_v6_system_prompt_states_the_hold_and_the_early_end(): + cfg = EnvelopeConfig() + text = system_prompt_v6(cfg, BUILDINGS) + for phrase in ("holds a trim in code", "more than 0.5 C below its setpoint", "at most 0.02 per hour", + "end_trim", "strategy_battery", "null keeps a held trim", "cooling above a held trim"): + assert phrase in text + assert "reference_action" not in text and chr(0x2014) not in text + assert "held trim" not in system_prompt_v6(EnvelopeConfig.v070(), BUILDINGS).split("It will clamp:")[1] + + +def test_v6_request_stays_close_to_v5_in_size(): + st, ctx, look, env, v6 = _obs(6) + v5 = observe(5, st, ctx, None, look, env) + r5 = build_request(v5, env.config, BUILDINGS, "haiku", prompt_version=5) + r6 = build_request(v6, env.config, BUILDINGS, "haiku", prompt_version=6) + assert "end_trim" in json.dumps(r6["output_config"]) and "end_trim" not in json.dumps(r5["output_config"]) + assert len(json.dumps(r6)) < 1.06 * len(json.dumps(r5)) + assert len(r6["system"]) < 1.07 * len(system_prompt_v5(env.config, BUILDINGS)) + + +def test_scripted_v6_reply_follows_the_strategy_battery_and_never_ends_a_trim(): + st, ctx, look, env, obs = _obs(6) + req = build_request(obs, env.config, BUILDINGS, "haiku", prompt_version=6) + res = ScriptedSupervisor().call(5, req) + reply = json.loads(res.text) + for b in BUILDINGS: + assert reply[b]["battery"] == obs["buildings"][b]["strategy_battery"] and reply[b]["end_trim"] is None + p, err = parse_reply(res.text, BUILDINGS, end_trim=True) + assert err is None and p["end_trim"] == {} + + +def test_v6_run_on_the_fake_district_is_clean(): + ctl = AgentController(ScriptedSupervisor(), Envelope(EnvelopeConfig()), Budget(2.0), prompt_version=6) + w = NullWriter() + res = run_session(FakeDistrict(), ctl, w, hours=48, log=lambda *_: None) + assert res["fallback_steps"] == 0 and ctl.describe()["prompt_version"] == 6 + + +def test_recorded_replies_are_served_by_hour_whatever_the_request(tmp_path): + run = tmp_path / "v6" + ctl = AgentController(ScriptedSupervisor(tokens=(5000, 780)), Envelope(EnvelopeConfig()), Budget(2.0), + prompt_version=6) + run_session(FakeDistrict(), ctl, RunWriter(run), hours=24, log=lambda *_: None) + sup = RecordedReplySupervisor(run / "calls.jsonl", "haiku") + calls = [json.loads(x) for x in (run / "calls.jsonl").read_text(encoding="utf-8").splitlines()] + got = sup.call(3, {"messages": [{"role": "user", "content": "anything"}]}) + assert got.text == calls[3]["reply"]["text"] and got.input_tokens == 5000 + assert sup.call(99, {}).error == "no recorded reply for this hour" + assert observation_from_request(calls[3]["request"])["time_step"] == 3 + + +@pytest.mark.parametrize("version", [1, 2, 3, 4, 5]) +def test_older_prompt_versions_build_the_same_requests(version): + """Requests for versions 1 to 5 carry no end_trim, so recorded runs keep their hashes.""" + st, ctx, look, env, obs = _obs(version) + req = build_request(obs, EnvelopeConfig.v070(), BUILDINGS, "haiku", prompt_version=version) + assert "end_trim" not in json.dumps(req) diff --git a/tests/test_smoothing.py b/tests/test_smoothing.py index db8a74c..36ccf42 100644 --- a/tests/test_smoothing.py +++ b/tests/test_smoothing.py @@ -51,7 +51,7 @@ def test_peak_tracker_reports_last_hour_and_next_hour_as_yesterday(): def test_envelope_remembers_each_buildings_trim_and_forgets_it_on_fallback(): st, ctx, *_ = _obs() - env = Envelope(EnvelopeConfig()) + env = Envelope(EnvelopeConfig.v070()) # the record alone; the fake room sits at its setpoint base = st["baseline"]["Building_1"]["cooling"] prop = {"reason": "t", "buildings": {b: {"cooling": None, "dhw": None, "battery": None} for b in st["buildings"]}} prop["buildings"]["Building_1"]["cooling"] = base - 0.08 diff --git a/tests/test_trim_hold.py b/tests/test_trim_hold.py new file mode 100644 index 0000000..28c9664 --- /dev/null +++ b/tests/test_trim_hold.py @@ -0,0 +1,207 @@ +"""The envelope's cooling trim hold (0.8.0): on, hold, ease, end, early end, logging and replay.""" + +import json + +import pytest +from conftest import BUILDINGS, bstate, proposal +from fakes import FakeDistrict + +from hyperbolic.envelope import Envelope, EnvelopeConfig, StepContext, parse_reply +from hyperbolic.model import Budget, ScriptedSupervisor +from hyperbolic.runner import AgentController, RunWriter, load_jsonl, replay_run, run_session + +COLD, NEAR, AT = 22.5, 23.7, 24.0 # indoor C against a 24.0 C setpoint: 1.5 below, 0.3 below, at it + + +def step(t=10, **b1) -> StepContext: + """Building_1 as given (indoor, occupied, cooling_base); the others at their setpoint.""" + return StepContext(time_step=t, buildings={b: bstate(**(b1 if b == "Building_1" else {})) for b in BUILDINGS}) + + +def hold_rules(d): + return [c for c in d.clamps if c.rule == "trim_hold"] + + +def actions(d): + return [h["action"] for h in d.holds] + + +@pytest.fixture +def env(): + """A trim of 0.08 (cooling 0.32 against a 0.4 baseline) already started in a cold room.""" + e = Envelope(EnvelopeConfig()) + d = e.apply(proposal(Building_1={"cooling": 0.32}), step(indoor=COLD)) + assert actions(d) == ["start"] and not d.clamps and e.holds == {"Building_1": 0.08} + return e + + +def test_a_trim_starts_and_is_recorded(env): + assert env.trims["Building_1"] == pytest.approx(-0.08) + + +def test_hold_keeps_the_trim_while_the_room_is_more_than_half_a_degree_cold(env): + d = env.apply(proposal(), step(indoor=22.8)) # null cooling: the held trim stays on + assert d.actions["Building_1"]["cooling"] == pytest.approx(0.32) + assert actions(d) == ["hold"] and len(hold_rules(d)) == 1 + d = env.apply(proposal(Building_1={"cooling": 0.47}), step(indoor=22.9, cooling_base=0.5)) + assert d.actions["Building_1"]["cooling"] == pytest.approx(0.42) # follows the baseline, same depth + c = hold_rules(d)[0] + assert c.point == "Building_1.cooling" and c.requested == 0.47 and "more than 0.5 C below" in c.reason + + +def test_a_deeper_trim_is_allowed(env): + d = env.apply(proposal(Building_1={"cooling": 0.3}), step(indoor=COLD)) + assert d.actions["Building_1"]["cooling"] == 0.3 and not d.clamps and not d.holds + assert env.holds["Building_1"] == pytest.approx(0.1) + + +def test_within_half_a_degree_the_trim_eases_by_at_most_0_02_per_hour(env): + d = env.apply(proposal(), step(indoor=NEAR)) + assert d.actions["Building_1"]["cooling"] == pytest.approx(0.34) and actions(d) == ["ease"] + assert "eases off" in hold_rules(d)[0].reason + for want in (0.36, 0.38): + d = env.apply(proposal(Building_1={"cooling": 0.4}), step(indoor=NEAR)) + assert d.actions["Building_1"]["cooling"] == pytest.approx(want) + d = env.apply(proposal(), step(indoor=NEAR)) + assert d.actions["Building_1"]["cooling"] is None and actions(d) == ["release"] + assert env.holds == {} + + +def test_a_miss_smaller_than_rounding_is_not_clamped_but_still_held(env): + d = env.apply(proposal(Building_1={"cooling": 0.3215}), step(indoor=COLD)) # 0.0015 short + assert not d.clamps and env.holds["Building_1"] == pytest.approx(0.08) + d = env.apply(proposal(Building_1={"cooling": 0.3245}), step(indoor=COLD)) # still measured from 0.08 + assert d.actions["Building_1"]["cooling"] == pytest.approx(0.32) and len(hold_rules(d)) == 1 + + +@pytest.mark.parametrize("where, why", [ + ({"indoor": AT}, "at or above the setpoint"), + ({"indoor": 24.6}, "at or above the setpoint"), + ({"indoor": COLD, "occupied": False}, "unoccupied"), + ({"indoor": COLD, "cooling_base": 0.0}, "no cooling to trim"), +]) +def test_the_trim_ends_at_once(env, where, why): + d = env.apply(proposal(), step(**where)) + assert actions(d) == ["end"] and why in d.holds[0]["reason"] + assert d.actions["Building_1"]["cooling"] is None and not d.clamps and env.holds == {} + + +def test_a_trim_asked_for_where_the_hold_has_ended_goes_back_to_the_baseline(env): + d = env.apply(proposal(Building_1={"cooling": 0.3}), step(indoor=AT)) + assert d.actions["Building_1"]["cooling"] == 0.4 + assert "trim ended" in hold_rules(d)[0].reason and env.holds == {} + fresh = Envelope(EnvelopeConfig()) # no trim on yet: none may start in an empty room either + d = fresh.apply(proposal(Building_1={"cooling": 0.3}), step(indoor=COLD, occupied=False)) + assert d.actions["Building_1"]["cooling"] == 0.4 and actions(d) == ["end"] and fresh.holds == {} + + +def _v6_reply(**b1) -> dict: + reply = {"reason": "test"} + for b in BUILDINGS: + reply[b] = {"cooling": None, "dhw": None, "battery": None, "end_trim": None, **(b1 if b == "Building_1" else {})} + p, err = parse_reply(json.dumps(reply), BUILDINGS, end_trim=True) + assert err is None + return p + + +def test_the_model_can_end_a_trim_early_only_with_a_reason(env): + d = env.apply(_v6_reply(end_trim="Room heading for an outage, keep it cool"), step(indoor=COLD)) + assert d.actions["Building_1"]["cooling"] is None and not d.clamps + assert d.holds == [{"building": "Building_1", "action": "end_early", "depth_before": 0.08, "depth_after": 0.0, + "reason": "Room heading for an outage, keep it cool"}] + assert env.holds == {} + + +def test_an_early_end_that_still_asks_for_a_trim_is_brought_back_to_the_baseline(env): + d = env.apply(_v6_reply(cooling=0.3, end_trim="done"), step(indoor=COLD)) + assert d.actions["Building_1"]["cooling"] == 0.4 and actions(d) == ["end_early"] + assert "ended it early: done" in hold_rules(d)[0].reason + + +def test_end_trim_without_a_trim_on_does_nothing(): + e = Envelope(EnvelopeConfig()) + d = e.apply(_v6_reply(end_trim="nothing to end"), step(indoor=COLD)) + assert not d.holds and not d.clamps and d.status == "ok" + + +def test_every_hold_action_is_logged_in_the_decision(env): + d = env.apply(proposal(), step(indoor=22.8)) + rec = d.as_dict() + assert rec["status"] == "clamped" and rec["clamps"][0]["rule"] == "trim_hold" + assert rec["holds"][0]["action"] == "hold" and rec["holds"][0]["depth_after"] == 0.08 + quiet = env.apply(proposal(Building_1={"cooling": 0.32}), step(indoor=22.8)).as_dict() + assert "holds" not in quiet and quiet["status"] == "ok" # nothing to record, no key + + +def test_fallback_forgets_the_hold(env): + env.fallback(step(indoor=COLD), "test") + assert env.holds == {} + d = env.apply(proposal(), step(indoor=COLD)) + assert d.actions["Building_1"]["cooling"] is None and not d.holds + + +def test_deviation_and_comfort_rules_still_come_first(): + e = Envelope(EnvelopeConfig()) + d = e.apply(proposal(Building_1={"cooling": 0.1}), step(indoor=COLD)) + assert {c.rule for c in d.clamps} == {"deviation"} and e.holds["Building_1"] == pytest.approx(0.15) + # Near the bottom of the band extra cooling is still refused, and the trim is untouched. + d = e.apply(proposal(Building_1={"cooling": 0.5}), step(indoor=22.2)) + assert {c.rule for c in d.clamps} == {"comfort", "trim_hold"} + assert d.actions["Building_1"]["cooling"] == pytest.approx(0.25) + + +def test_without_the_hold_the_0_7_0_rules_are_unchanged(): + e = Envelope(EnvelopeConfig.v070()) + e.apply(proposal(Building_1={"cooling": 0.32}), step(indoor=COLD)) + d = e.apply(proposal(), step(indoor=22.8)) + assert d.actions["Building_1"]["cooling"] is None and not d.clamps and not d.holds and e.holds == {} + assert "holds" not in d.as_dict() + + +def test_older_runs_rebuild_their_rules_without_the_hold(): + old = EnvelopeConfig.v070().as_dict() + for key in ("trim_hold", "trim_hold_c", "trim_release_step", "trim_min_depth"): + old.pop(key) + assert EnvelopeConfig.from_manifest(old) == EnvelopeConfig.v070() # a 0.6.0 or 0.7.0 manifest + assert EnvelopeConfig.from_manifest({}).trim_hold is False + assert EnvelopeConfig.from_manifest(EnvelopeConfig().as_dict()) == EnvelopeConfig() + + +class ColdDistrict(FakeDistrict): + """The fake district with a 25 C setpoint, so occupied rooms start a degree too cold and the + scripted strategy trims them; trimming warms them (FakeDistrict's indoor model).""" + + def state(self): + st = super().state() + for s in st["buildings"].values(): + s["setpoint_c"] = 25.0 + return st + + +def _record_v6(run_dir): + ctl = AgentController(ScriptedSupervisor(tokens=(5000, 780)), Envelope(EnvelopeConfig()), Budget(2.0), + prompt_version=6) + run_session(ColdDistrict(), ctl, RunWriter(run_dir), hours=48, log=lambda *_: None) + + +def test_a_v6_run_with_hold_actions_replays_byte_for_byte(tmp_path): + run = tmp_path / "v6" + _record_v6(run) + steps = load_jsonl(run / "steps.jsonl") + kinds = {h["action"] for s in steps for h in s["decision"].get("holds", [])} + assert {"start", "hold", "release"} <= kinds + assert any(c["rule"] == "trim_hold" for s in steps for c in s["decision"]["clamps"]) + assert json.loads((run / "manifest.json").read_text(encoding="utf-8"))["envelope"]["trim_hold"] is True + rep = replay_run(run) + assert rep.deterministic and rep.api_calls == 0 and rep.identical_steps == 48, (rep.mismatched_steps, rep.error) + replay_run(run, out_dir=tmp_path / "again") + assert (tmp_path / "again" / "steps.jsonl").read_bytes() == (run / "steps.jsonl").read_bytes() + + +def test_a_run_replayed_under_other_hold_rules_is_detected(tmp_path): + run = tmp_path / "v6" + _record_v6(run) + m = json.loads((run / "manifest.json").read_text(encoding="utf-8")) + m["envelope"]["trim_release_step"] = 1.0 # release at once instead + (run / "manifest.json").write_text(json.dumps(m), encoding="utf-8") + assert not replay_run(run).deterministic diff --git a/tests/test_viewer.py b/tests/test_viewer.py index eb913b8..9771756 100644 --- a/tests/test_viewer.py +++ b/tests/test_viewer.py @@ -198,3 +198,33 @@ def test_page_explains_how_it_works_and_how_to_run_it(): assert cmd in run, cmd assert 'Run it yourself' in html # the sample banner points at it assert chr(0x2014) not in html + + +def test_viewer_shows_trims_the_model_ended_early(fixture_runs, tmp_path): + import shutil + + from hyperbolic.viewer import build_scenario + + base, agent = fixture_runs + run = tmp_path / "agent" + shutil.copytree(agent, run) + m = json.loads((run / "manifest.json").read_text(encoding="utf-8")) + m["envelope"]["trim_hold"] = True + (run / "manifest.json").write_text(json.dumps(m), encoding="utf-8") + lines = (run / "steps.jsonl").read_text(encoding="utf-8").splitlines() + rec = json.loads(lines[3]) + rec["decision"]["holds"] = [ + {"building": "Building_2", "action": "end_early", "depth_before": 0.06, "depth_after": 0.0, + "reason": "Outage ahead, keep the room cool"}, + {"building": "Building_1", "action": "hold", "depth_before": 0.05, "depth_after": 0.05, "reason": "held"}] + lines[3] = json.dumps(rec) + (run / "steps.jsonl").write_text("\n".join(lines) + "\n", encoding="utf-8") + s = build_scenario(base, run) + assert s["agent"]["decisions"][3]["trim_ends"] == [{"building": "Building_2", + "reason": "Outage ahead, keep the room cool"}] + assert all("trim_ends" not in d for i, d in enumerate(s["agent"]["decisions"]) if i != 3) + assert s["agent_run"]["trim_ends_early"] == 1 + assert "trim_ends_early" not in build_scenario(base, agent)["agent_run"] # older runs: unchanged + root = Path(__file__).parents[1] + assert "trim ended early" in (root / "docs" / "assets" / "app.js").read_text(encoding="utf-8") + assert "trim ended early" in (root / "hyperbolic" / "live_assets" / "live.js").read_text(encoding="utf-8")