Files
mattandClaude Sonnet 5 c70c9731a6
CI / test (push) Successful in 14s
Run the full three-year dispatch and fix issues it surfaced
Executed battery-dispatch run over the full 2018-2020 Attachment 2
series (225.9s, 1096 rolling-horizon windows) and committed the
results: outputs/ (dispatch.csv, annual/monthly summaries, summary.json,
four figures), README.md (setup, run instructions, assumptions, the
one-paragraph approach summary) and RESULTS.md (headline numbers,
per-year table, charts, commentary).

The full run surfaced three real issues, all fixed rather than papered
over:

- validate_schedule's soc_within_bounds check used a fixed 1e-6 MWh
  tolerance for the "state of charge below zero" case, while its
  sibling soc_matches_power_flows check already scales its tolerance
  with sqrt(n) for the same reason (CBC's own solver precision
  accumulating over a long cumulative sum). Over 52,608 half-hours this
  false-failed on a 5.1e-6 MWh solver-noise dip, not a real violation.
  Scaled it the same way.
- cli.py's summary printed net_of_opex_gbp under the label "Less fixed
  opex", so the terminal output showed the post-opex profit (£193k)
  where a reader would expect the opex figure itself (£15k). Split into
  two correctly-labelled lines.
- plots.py's monthly revenue chart stacked Market 1 (always negative
  here) and Market 2 (always positive) with a single running `bottom`,
  which is only correct for same-signed series: Market 2's bar
  completely overlapped and painted over Market 1's, hiding the
  -£297k Market 1 loss entirely. Now accumulates positive and negative
  contributions on separate baselines and marks the net.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-24 16:29:40 +01:00

3.2 KiB

1monthgross_profit_gbpprofit_market_1_gbpprofit_market_2_gbpcharged_mwhdischarged_mwhequivalent_full_cyclescaptured_spread_gbp_per_mwh
22018-015465.302553-10616.51225816081.814811384.869784343.54831190.4074515.908396
32018-025649.230748-9703.96184715353.192595349.200387318.95001983.93421517.711962
42018-038237.234668-10604.23718841.471667396.015555355.59903993.57869523.16439
52018-044806.727348-9305.27830614112.005654360.263313324.23514185.32503714.824819
62018-055511.866602-9401.57182614913.438427370.694857336.35710988.51502916.386948
72018-064846.162293-8254.16457513100.326868344.023224311.3834681.94301615.563326
82018-074733.333558-10028.82759214762.16115352.885749316.67438983.33536514.947005
92018-085369.799211-10320.61110115690.410312325.781443295.82275277.84809318.152083
102018-096294.844593-8947.09660315241.941196306.195008275.43849572.48381422.853903
112018-105998.14371-7374.22312813372.366838305.310416276.44515172.74872421.69741
122018-115658.950526-9976.70887915635.659404308.559422276.51405972.76685820.465327
132018-125227.858471-10580.16831515808.026786292.344937265.80212569.94792819.668234
142019-014846.091122-9716.46768414562.558806301.096315269.93442571.03537517.952846
152019-024386.850007-9169.97480413556.824811354.872114322.07708484.75712713.620497
162019-035685.537534-9202.1293614887.666893395.787504355.39322393.52453215.997878
172019-044718.922967-9321.7792414040.702207366.770343330.10773486.87045614.2951
182019-055427.961092-9266.1363814694.097472424.406564385.597895101.4731314.076739
192019-065106.284583-8953.11283414059.397417431.412168389.48601102.49631813.110316
202019-074410.738629-10309.25021714719.988846455.116658407.132784107.14020610.833661
212019-085371.192114-7627.94438412999.136498411.497847373.18180698.20573914.392963
222019-096108.180331-6121.83475412230.015085446.080294404.392466106.4190715.104585
232019-106225.554888-7392.26846313617.823351460.993925414.125371108.98036115.03302
242019-115546.450256-9064.88977814611.340034417.26031374.88907698.6550214.79491
252019-126465.947275-7738.79707614204.744351478.917865433.125873113.98049314.928564
262020-015752.783129-6748.392412501.175529469.180307424.045227111.59084913.566438
272020-026045.669316-5597.40940511643.07872446.676521405.028061106.58633214.926544
282020-036146.118796-6819.49980912965.618605494.105284446.125018117.40132113.776674
292020-045671.636666-5544.65995711216.296623482.833775435.757483114.67302213.015581
302020-055591.88205-5609.890711201.77275518.380706467.838587123.11541811.952588
312020-065305.6492-5883.5386111189.18781491.564836442.734765116.50914911.98381
322020-075152.114341-6940.20384512092.318187513.960584463.849427122.06563911.107299
332020-084740.600521-9184.27836713924.878888479.188819431.491892113.55049810.986534
342020-097591.825678-6986.50082114578.326499397.581913357.91891294.18918721.211021
352020-107291.309946-7303.09701114594.406957443.701444402.315335105.87245718.123371
362020-117836.211148-5352.90710713189.118256436.922129391.614722103.05650620.010001
372020-129205.886933-6449.73267915655.619612387.71957353.52691293.03339826.040131