22 KiB
Policies for battery charging
Battery
Capacity: 2MWh
Charging Power: 1MW
Discharging Power: 1MW
Baseline policy
Determining 2 thresholds for battery charging and discharging. Charging when the imbalance price is below the lower threshold and discharging when the imbalance price is above the upper threshold.
Training data: 01-01-2020 - 31-12-2022 Test data: 01-01-2023 - 12-12-2023
| Charge threshold | Discharge threshold | Charging Cost | Discharging Profit | Total Profit | Charge cycles | Mean charging price | Mean discharging price | |
|---|---|---|---|---|---|---|---|---|
| 0 | 150 | 175 | 165982 | 989322 | 823340 | 1701.62 | 32.4889 | 348.51 |
| 0 | 175 | 200 | 190060 | 1.00145e+06 | 811389 | 1594 | 37.0705 | 367.44 |
| 0 | 125 | 150 | 132766 | 939145 | 806378 | 1729.88 | 27.7746 | 333.447 |
| 0 | 200 | 225 | 219726 | 1.01789e+06 | 798159 | 1493.12 | 42.9038 | 390.49 |
| 0 | 150 | 200 | 151145 | 937599 | 786454 | 1514.88 | 32.4889 | 367.44 |
| 0 | 125 | 175 | 122067 | 904885 | 782818 | 1584.62 | 27.7746 | 348.51 |
| 0 | 175 | 225 | 173050 | 950270 | 777219 | 1415 | 37.0705 | 390.49 |
| 0 | 100 | 125 | 69876.4 | 829454 | 759577 | 1662.88 | 19.9739 | 315.1 |
| 0 | 150 | 225 | 136563 | 886279 | 749716 | 1339.12 | 32.4889 | 390.49 |
| 0 | 125 | 200 | 109873 | 853728 | 743855 | 1402.5 | 27.7746 | 367.44 |
| 0 | 100 | 150 | 63807.1 | 802437 | 738630 | 1502.5 | 19.9739 | 333.447 |
| 0 | 100 | 175 | 56405.8 | 770173 | 713768 | 1366.75 | 19.9739 | 348.51 |
| 0 | 75 | 100 | 14153.7 | 724660 | 710506 | 1684.5 | 11.3023 | 284.61 |
| 0 | 125 | 225 | 97524.1 | 804468 | 706944 | 1231.88 | 27.7746 | 390.49 |
| 0 | 25 | 50 | -56542.1 | 637628 | 694171 | 2696.12 | -16.9846 | 204.943 |
| 0 | 75 | 125 | 8003.32 | 688780 | 680776 | 1407.38 | 11.3023 | 315.1 |
| 0 | 100 | 200 | 49469.3 | 721380 | 671911 | 1196.12 | 19.9739 | 367.44 |
| 0 | 50 | 75 | -47575.2 | 614964 | 662539 | 1752 | -9.65396 | 254.211 |
| 0 | 75 | 150 | 5147.22 | 661439 | 656292 | 1254.62 | 11.3023 | 333.447 |
| 0 | 50 | 100 | -46110.5 | 592694 | 638805 | 1417.5 | -9.65396 | 284.61 |
| 0 | 100 | 225 | 42046.6 | 677560 | 635514 | 1042.88 | 19.9739 | 390.49 |
| 0 | 75 | 175 | 850.49 | 631552 | 630702 | 1129 | 11.3023 | 348.51 |
| 0 | 25 | 75 | -63342.8 | 561356 | 624699 | 1637 | -16.9846 | 254.211 |
| 0 | 50 | 125 | -46686.3 | 556263 | 602950 | 1150.5 | -9.65396 | 315.1 |
| 0 | 25 | 100 | -61448.6 | 537683 | 599132 | 1306.5 | -16.9846 | 284.61 |
| 0 | 75 | 200 | -1767.94 | 590094 | 591862 | 981.5 | 11.3023 | 367.44 |
| 0 | 50 | 150 | -45858.6 | 531472 | 577330 | 1007.5 | -9.65396 | 333.447 |
| 0 | 25 | 125 | -61228.7 | 500861 | 562089 | 1045.62 | -16.9846 | 315.1 |
| 0 | 75 | 225 | -3475.71 | 555727 | 559203 | 855.875 | 11.3023 | 390.49 |
| 0 | 50 | 175 | -46084.1 | 506348 | 552432 | 900.875 | -9.65396 | 348.51 |
| 0 | 25 | 150 | -60177.2 | 476823 | 537000 | 906.75 | -16.9846 | 333.447 |
| 0 | 50 | 200 | -43738 | 473478 | 517216 | 779.25 | -9.65396 | 367.44 |
| 0 | 25 | 175 | -59466.7 | 453988 | 513455 | 808.25 | -16.9846 | 348.51 |
| 0 | 50 | 225 | -40529.8 | 452651 | 493181 | 693.875 | -9.65396 | 390.49 |
| 0 | 25 | 200 | -55766.8 | 426055 | 481822 | 699.875 | -16.9846 | 367.44 |
| 0 | 25 | 225 | -51953 | 407484 | 459437 | 623.875 | -16.9846 | 390.49 |
| 0 | 0 | 75 | -107853 | 332344 | 440197 | 851.375 | -73.2011 | 254.211 |
| 0 | 0 | 100 | -97804.3 | 341072 | 438876 | 761.5 | -73.2011 | 284.61 |
| 0 | 0 | 50 | -121468 | 314671 | 436139 | 993.625 | -73.2011 | 204.943 |
| 0 | 0 | 125 | -91087.2 | 342646 | 433734 | 686.125 | -73.2011 | 315.1 |
| 0 | 0 | 25 | -126590 | 305984 | 432574 | 1041.75 | -73.2011 | 193.87 |
| 0 | 0 | 150 | -85919 | 341046 | 426964 | 635.75 | -73.2011 | 333.447 |
| 0 | 0 | 175 | -82378.2 | 338310 | 420688 | 600.625 | -73.2011 | 348.51 |
| 0 | 0 | 200 | -75822.2 | 328188 | 404010 | 541.25 | -73.2011 | 367.44 |
| 0 | 0 | 225 | -69488.7 | 320776 | 390265 | 494.75 | -73.2011 | 390.49 |
| 0 | -25 | 125 | -102495 | 269615 | 372110 | 534.062 | -105.73 | 315.1 |
| 0 | -25 | 100 | -108934 | 262527 | 371462 | 574.938 | -105.73 | 284.61 |
| 0 | -25 | 75 | -118553 | 252453 | 371006 | 626.062 | -105.73 | 254.211 |
| 0 | -25 | 150 | -97080 | 271209 | 368289 | 503.438 | -105.73 | 333.447 |
| 0 | -25 | 50 | -129918 | 236112 | 366030 | 683.562 | -105.73 | 204.943 |
| 0 | -25 | 175 | -92889.5 | 272520 | 365409 | 480.438 | -105.73 | 348.51 |
| 0 | -25 | 25 | -132518 | 227910 | 360428 | 695.562 | -105.73 | 193.87 |
| 0 | -25 | 200 | -85482.7 | 268638 | 354120 | 438.5 | -105.73 | 367.44 |
| 0 | -25 | 225 | -79253.2 | 264052 | 343305 | 403.75 | -105.73 | 390.49 |
| 0 | -25 | 0 | -139125 | 199831 | 338956 | 724.312 | -105.73 | 146.436 |
| 0 | -50 | 125 | -102665 | 216740 | 319405 | 431.562 | -127.845 | 315.1 |
| 0 | -50 | 175 | -94272.2 | 223434 | 317706 | 393.188 | -127.845 | 348.51 |
| 0 | -50 | 150 | -97889.1 | 219525 | 317414 | 409.312 | -127.845 | 333.447 |
| 0 | -50 | 100 | -108274 | 208273 | 316548 | 458.312 | -127.845 | 284.61 |
| 0 | -50 | 75 | -115707 | 198325 | 314032 | 488.438 | -127.845 | 254.211 |
| 0 | -50 | 200 | -87698.7 | 223235 | 310933 | 363.625 | -127.845 | 367.44 |
| 0 | -50 | 50 | -124664 | 184027 | 308691 | 525.688 | -127.845 | 204.943 |
| 0 | -50 | 25 | -126605 | 177834 | 304440 | 533.062 | -127.845 | 193.87 |
| 0 | -50 | 225 | -81706.8 | 221510 | 303217 | 337.75 | -127.845 | 390.49 |
| 0 | -50 | 0 | -131679 | 158118 | 289797 | 551.188 | -127.845 | 146.436 |
| 0 | -50 | -25 | -135234 | 140945 | 276180 | 565 | -127.845 | 139.469 |
| 0 | -75 | 175 | -90764.9 | 184846 | 275611 | 325.812 | -146.153 | 348.51 |
| 0 | -75 | 125 | -98076.6 | 176722 | 274799 | 355.062 | -146.153 | 315.1 |
| 0 | -75 | 150 | -93979.3 | 179914 | 273893 | 338.188 | -146.153 | 333.447 |
| 0 | -75 | 100 | -103131 | 169294 | 272425 | 375.062 | -146.153 | 284.61 |
| 0 | -75 | 200 | -85036.8 | 186067 | 271104 | 302.375 | -146.153 | 367.44 |
| 0 | -75 | 75 | -109431 | 159779 | 269210 | 395.938 | -146.153 | 254.211 |
| 0 | -75 | 225 | -79978.8 | 185752 | 265731 | 282.75 | -146.153 | 390.49 |
| 0 | -75 | 50 | -116483 | 147147 | 263630 | 421.062 | -146.153 | 204.943 |
| 0 | -75 | 25 | -117886 | 141847 | 259734 | 424.812 | -146.153 | 193.87 |
| 0 | -75 | 0 | -120983 | 126071 | 247054 | 435.188 | -146.153 | 146.436 |
| 0 | -75 | -25 | -123261 | 111930 | 235190 | 443.625 | -146.153 | 139.469 |
| 0 | -75 | -50 | -124708 | 101672 | 226380 | 449.25 | -146.153 | 136.356 |
| 0 | -100 | 200 | -76499.7 | 137174 | 213674 | 219.625 | -179.829 | 367.44 |
| 0 | -100 | 175 | -79830.5 | 132966 | 212797 | 230.125 | -179.829 | 348.51 |
| 0 | -100 | 225 | -72449.9 | 138631 | 211081 | 207.625 | -179.829 | 390.49 |
| 0 | -100 | 150 | -82202.7 | 128215 | 210418 | 237.125 | -179.829 | 333.447 |
| 0 | -100 | 125 | -84192.7 | 123976 | 208169 | 243.625 | -179.829 | 315.1 |
| 0 | -100 | 100 | -86319.5 | 117325 | 203645 | 250.25 | -179.829 | 284.61 |
| 0 | -100 | 75 | -90219.7 | 109153 | 199373 | 259.25 | -179.829 | 254.211 |
| 0 | -100 | 50 | -94055.9 | 99443.5 | 193499 | 269.875 | -179.829 | 204.943 |
| 0 | -100 | 25 | -94464.1 | 96073.2 | 190537 | 270.875 | -179.829 | 193.87 |
| 0 | -100 | 0 | -95713.7 | 87279.5 | 182993 | 274.625 | -179.829 | 146.436 |
| 0 | -100 | -25 | -97020.3 | 78656.5 | 175677 | 278.25 | -179.829 | 139.469 |
| 0 | -100 | -50 | -97722.9 | 71560.6 | 169283 | 280.375 | -179.829 | 136.356 |
| 0 | -100 | -75 | -98604.6 | 63373.8 | 161978 | 282.625 | -179.829 | 134.012 |
Optimal policy
Charge threshold: 150 €/MWh
Discharge threshold: 175 €/MWh
Profit on test data: € 359548
Charge cycles: 855.938
Smarter Policy using predicted NRV
Test data: 01-01-2023 until 08-10–2023
| Policy | Threshold Step Size (€) | Total Profit (€) | Charge Cycles |
|---|---|---|---|
| Baseline (charge: 150, discharge: 175) | 25 | 251202.59 | 725 |
| Baseline (yesterday imbalance price) | 25 | 342980.0938 | 903 |
| GRU Predicted NRV (mean reconstructed imbalance price) | 50 | 325362.81 | 856 |
| GRU Predicted NRV (mean reconstructed imbalance price) | 25 | 334058.65 | 862 |
| GRU Predicted NRV (mean thresholds) | 25 | 339846.9062 | 842 |
| Diffusion Predicted NRV (mean thresholds) | 25 | 338168.0312 | 886 |
Penalty parameter for charge cycles
| Policy | Penalty parameter | Total Profit (€) | Charge Cycles |
|---|---|---|---|
| Baseline (yesterday imbalance price) | 10 | 335968.9062 | 895.4375 |
| Baseline (yesterday imbalance price) | 20 | 328577.2812 | 886.5625 |
| Baseline (yesterday imbalance price) | 50 | 306301.9688 | 850.9375 |
| Baseline (yesterday imbalance price) | 150 | 251367.0469 | 749.7500 |
| Diffusion Predicted NRV | 10 | 331288.7812 | 880.3750 | | Diffusion Predicted NRV | 20 | 324568.7812 | 871.5000 | | Diffusion Predicted NRV | 50 | 304761.1875 | 837.3125 | | Diffusion Predicted NRV | 150 | 238441.5625 | 670.1875 |
TODO
-
Baseline
-
Profit penalty parameter als over charge cycles voor een dag -> parameter bepalen op training data (convex probleem) (< 400 charge cycles per jaar) (over een dag kijken hoeveel charge cycles -> profit - penalty * charge cycles erover, (misschien belonen als eronder charge cycles))
-
Meer verschil bekijken tussen GRU en diffusion
-
(In Progress) Andere lagen voor diffusion model (GRU, kijken naar TSDiff)
-
Policies met andere modellen (Linear, Non Linear)
-
Visualize the policies over the whole testr set -> thresholds plotten voor elke dag (elke policy) -> mss distribution om overzichtelijk te houden (mean and std)
-
Probleem met diffusion model (activation function? waarom direct grote waardes?)
-
Autoregressive confidence problem -> Quantiles zelf uit elkaar halen (helpt dit?)
-
time steps reducing for diffusion model (UNet activation functions?)
-
(State space model? S4)
TODO:
-
diffusion model oefening generative models vragen -> geen lab hierop
-
Non autoregressive models policy testen (Non Linear eerst) -> als dit al slect, niet verder kijken, wel vermelden (IN PROGRESS)
-
Policy in test set -> over charge cycles (stop trading electricity)
-
penalty bepalen op training data
-
cycles en profit herschalen naar per jaar
-
Eerste baseline -> thresholds bepalen op training data maar ook stoppen als 400 cycles (herschalen) per jaar bereikt zijn -> thresholds zouden anders moeten zijn (Ook met penalty parameter) -> deze toepassen op test set (ook stoppen als 400/jaar bereikt zijn)
Visualizatie van thresholds over test set voor baselines en complexere modellen -> zonder penalties tonen
1 a 2 Case studies (extreme gevallen, thresholds 150, -5, normale mss)
- Generatie van NRV (echte NRV)
- Thresholds die eruit komen
- Profit en charge cycles
Policy volledig fixen en later training script met policy direct erachter (tijdens schrijven door laten runnen)
- Policy
- Finetuning van modellen (+ vergelijken met elkaar opbv profit en error)
- Ablation Study (input features weghalen en kijken wat er gebeurt) ( 4) Diffusion tussendoor )
Inleiding + Literatuurstudie + Tabellen die we gaan bespreken -> updaten met nieuwe data dan
!!!!! Fix the test set (maybe save pickle)
Plot profits per year (maybe with charge cycles) for the different models and baselines.
RESULTATEN FIXEN
Nog eens 3e meeting opbrengen voor 2e deel maart.
Baseline -> thresholds bepalen training data, penalty aanpassen na evaluatie op test (In Progress, see last comment)
- Schaal van plotjes aan zelfde
- NRV generaties plotten
- Profit during training
- Beste diffusion and best GRU model -> plotjes van profits during training
!!!! Baseline + Non autoregressive !!!!!!!!!!!!!!!
profit evaluation done day by day. Start with fresh battery. Maybe electritiy bought but not sold -> negative profits? What to do with this?
2 solutions: - work further with the state of charge of the battery - don't count the electricity bought but not sold in the profit calculation
Global baseline:
uitleggen
-> penalty bepalen aan de hand van de test set
Perfect baseline:
uitleggen + niet absoluut maximum, normaal integer linear programming nodig
Simple linear model
forecast inputs
Plotten van thresholds over de test set (baseline, GRU, diffusion) Plotten van state of charge
State of charge waarde van batterij wordt niet meegenomen in threshold bepaling, enkel de verkochte elektriciteit. -> simpele policy maar zelfde policy voor baselines en complexere modellen