Javascript is required
@article{1, title={Fair consumer outcomes in the balance: Data driven analysis of distributed {PV} curtailment}, author={Stringer, N. and Haghdadi, N. and Bruce, A. and MacGill, I.}, journal={Renew. Energy}, volume={173}, pages={972--986}, year={2021}, doi={10.1016/j.renene.2021.04.020}, url={}}. [Crossref]
@article{2, title={Real-world data analysis of distributed {PV} and battery energy storage system curtailment in low voltage networks}, author={Yildiz, B. and Stringer, N. and Klymenko, T. and Syahman Samhan, M. and Abramowitz, G. and Bruce, A. and MacGill, I. and Egan, R. and Sproul, A. B.}, journal={Renew. Sustain. Energy Rev.}, volume={186}, pages={113696}, year={2023}, doi={10.1016/j.rser.2023.113696}, url={}}. [Crossref]
@article{3, title={Management of prosumers using dynamic export limits and shared community energy storage}, author={Zabihinia Gerdroodbari, Y. and Khorasany, M. and Razzaghi, R. and Heidari, R.}, journal={Appl. Energy}, volume={355}, pages={122222}, year={2024}, doi={10.1016/j.apenergy.2023.122222}, url={}}. [Crossref]
@article{4, title={Influence of high-resolution data on accurate curtailment loss estimation and optimal design of hybrid {PV}--wind power plants}, author={Klyve, {\O}. S. and Grab, R. and Olkkonen, V. and Marstein, E. S.}, journal={Appl. Energy}, volume={372}, pages={123784}, year={2024}, doi={10.1016/j.apenergy.2024.123784}, url={}}. [Crossref]
@article{5, title={Smart grid evolution: {P}redictive control of distributed energy resources---{A} review}, author={Babayomi, O. and Zhang, Z. and Dragi{\v{c}}evi{\'c}, T. and Hu, J. and Rodriguez, J.}, journal={Int. J. Electr. Power Energy Syst.}, volume={147}, pages={108812}, year={2023}, doi={10.1016/j.ijepes.2022.108812}, url={}}. [Crossref]
@article{6, title={Model predictive control for photovoltaic plants with non-ideal energy storage using mixed integer linear programming}, author={Cede{\~n}o, A. L. and L{\'o}pez Ahuar, R. and Rojas, J. and Carvajal, G. and Silva, C. and Ag{\"u}ero, J. C.}, journal={Energies}, volume={15}, number={17}, pages={6427}, year={2022}, doi={10.3390/en15176427}, url={}}. [Crossref]
@article{7, title={Stochastic model predictive control of photovoltaic battery systems using a probabilistic forecast model}, author={Gro{\ss}, A. and Wittwer, C. and Diehl, M.}, journal={Eur. J. Control}, volume={56}, pages={254--264}, year={2020}, doi={10.1016/j.ejcon.2020.02.004}, url={}}. [Crossref]
@article{8, title={The value of solar forecasts and the cost of their errors: {A} review}, author={Gandhi, O. and Zhang, W. and Kumar, D. S. and Rodr{\'i}guez-Gallegos, C. D. and Yagli, G. M. and Yang, D. and Reindl, T. and Srinivasan, D.}, journal={Renew. Sustain. Energy Rev.}, volume={189}, pages={113915}, year={2024}, doi={10.1016/j.rser.2023.113915}, url={}}. [Crossref]
@article{9, title={Task-based end-to-end model learning in stochastic optimization}, author={Donti, P. and Amos, B. and Kolter, J. Z.}, booktitle={Advances in Neural Information Processing Systems}, pages={5485--5495}, year={2017}, address={Long Beach, CA, USA}}.
@article{10, title={Smart ``predict, then optimize''}, author={Elmachtoub, A. N. and Grigas, P.}, journal={Manage. Sci.}, volume={68}, number={1}, pages={9--26}, year={2022}, doi={10.1287/mnsc.2020.3922}, url={}}. [Crossref]
@article{11, title={The cost of photovoltaic forecasting errors in microgrid control with peak pricing}, author={Schmitt, T. and Rodemann, T. and Adamy, J.}, journal={Energies}, volume={14}, number={9}, pages={2569}, year={2021}, doi={10.3390/en14092569}, url={}}. [Crossref]
@article{12, title={Decision-focused learning for optimal {PV}-battery scheduling}, author={Depoortere, J. and Kazmi, H. and Driesen, J.}, journal={J. Energy Storage}, volume={154}, number={part A}, pages={121152}, year={2026}, doi={10.1016/j.est.2026.121152}, url={}}. [Crossref]
@article{13, title={Smart predict-then-optimize-based model predictive control for virtual power plants with battery storage}, author={Zheng, W. and Liu, L. and Li, S. and Zhang, Z. and Zhao, P. and Li, T. and Zhang, X. and Wang, Z.}, journal={J. Energy Storage}, volume={142}, pages={119606}, year={2026}, doi={10.1016/j.est.2025.119606}, url={}}. [Crossref]
@article{14, title={A novel forecast-based operation strategy for residential {PV}-battery-flexible loads systems considering the flexibility of battery and loads}, author={Luo, Z. and Peng, J. and Tan, Y. and Yin, R. and Zou, B. and Hu, M. and Yan, J.}, journal={Energy Convers. Manage.}, volume={278}, pages={116705}, year={2023}, doi={10.1016/j.enconman.2023.116705}, url={}}. [Crossref]
@article{15, title={Bayesian probabilistic photovoltaic power forecasting and stochastic model-predictive control for an agricultural microgrid}, author={Brown, P. and G{\"o}l, M.}, journal={Sol. Energy}, volume={304}, pages={114197}, year={2026}, doi={10.1016/j.solener.2025.114197}, url={}}. [Crossref]
@article{16, title={An analysis of multi objective energy scheduling in {PV}-{BESS} system under prediction uncertainty}, author={Nair, U. R. and Sandelic, M. and Sangwongwanich, A. and Dragi{\v{c}}evi{\'c}, T. and Costa-Castell{\'o}, R. and Blaabjerg, F.}, journal={IEEE Trans. Energy Convers.}, volume={36}, number={3}, pages={2276--2286}, year={2021}, doi={10.1109/TEC.2021.3055453}, url={}}. [Crossref]
@article{17, title={{ECMWF} {IFS} {ENS} forecast, 15 day, 0.25 degree}, author={{dynamical.org}}, url={https://dynamical.org/catalog/ecmwf-ifs-ens-forecast-15-day-0-25-degree/}}.
@article{18, title={Energy management and optimization of renewable energy communities with flexible load coordination and shared energy utilization}, author={Bianco, N. and Di Somma, M.}, journal={Power Eng. Eng. Thermophys.}, volume={5}, number={2}, pages={95--111}, year={2026}, doi={10.56578/peet050202}, url={}}. [Crossref]
@article{19, title={Enhancing sustainability in {H}opedale, {N}ewfoundland and {L}abrador, through hybrid microgrid system design}, author={Maliat, A. and Kotian, S. and Shirinnezhad, S. and Ghahremanlou, D.}, journal={Power Eng. Eng. Thermophys.}, volume={3}, number={1}, pages={58--76}, year={2024}, doi={10.56578/peet030105}, url={}}. [Crossref]
@article{20, title={{MPC}-driven optimal scheduling of grid-connected microgrid: {C}ost and degradation minimization with {PEVs} integration}, author={Nawaz, A. and Wang, D. and Mahmoudi, A. and Khan, M. Q. and Wang, X. and Wang, B. and Wang, X.}, journal={Electr. Power Syst. Res.}, volume={238}, pages={111173}, year={2025}, doi={10.1016/j.epsr.2024.111173}, url={}}. [Crossref]
Search
Open Access
Research article

Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage

Ahmed M. Jendeya1*,
Ikram S. Babazade2
1
Department of Electric Power Engineering, Faculty of Power Engineering, Azerbaijan State Oil and Industry University, AZ1010 Baku, Azerbaijan
2
Department of Electrical Engineering and Power Electronics, Bauman Moscow State Technical University, 105005 Moscow, Russian Federation
Power Engineering and Engineering Thermophysics
|
Volume 5, Issue 4, 2026
|
Pages 295-309
Received: 09-16-2026,
Revised: 10-16-2026,
Accepted: 10-22-2026,
Available online: 10-29-2026
View Full Article|Download PDF

Abstract:

Hard point-of-interconnection (POI) export limits can strand otherwise-available photovoltaic (PV) energy unless battery storage is dispatched with sufficient anticipation and under physically consistent constraints. This study evaluates a constraint-audited receding-horizon dispatch framework for curtailment recovery at an anonymized 230 MW utility-scale PV plant with a modeled 195.5 MW export cap and a nominal 30 MW/140 MWh battery energy storage system (BESS). The mixed-integer model predictive controller enforces BESS power and energy limits, charge–discharge exclusivity, no grid charging, forecast-dependent discharge headroom, first-action receding-horizon execution, and a common 50%-to-50% terminal-energy protocol. Twelve rolling monthly folds from September 2024 to August 2025 are evaluated against cap-only operation and a protocol-matched perfect-information Oracle. Cap-only operation curtails 26,279 MWh (4.9872% of evaluated PV energy). A transparent 72 h Diurnal model predictive control (MPC) reduces curtailment to 11,719.454 MWh, recovers 14,559.546 MWh, and closes 98.450% of the modeled cap-only-to-Oracle recoverable-energy opportunity; the matched Oracle curtails 11,490.175 MWh. All 3 h closed-loop trajectories satisfy the modeled export cap, BESS limits, terminal equality, charge–discharge exclusivity, discharge-headroom rule, and no-grid-import condition. A matched information-sensitivity analysis then compares History-CatBoost and Weather-CatBoost under the same controller. Weather-CatBoost lowers daylight mean absolute error (MAE) by 2.225 MW at 24 h and 1.175 MW at 72 h relative to History-CatBoost, while annual curtailment is 288.601 MWh higher at 24 h and 99.699 MWh lower at 72 h; the monthly block-bootstrap intervals include zero in both cases. Histogram gradient boosting (HGB) robustness and BESS-sensitivity results further show that the incremental control value of weather information is model- and configuration-dependent. Under the tested plant, cap, BESS, 3 h resolution, horizon, and terminal protocol, physically constrained anticipatory dispatch captures most of the modeled recoverable curtailed energy, leaving comparatively limited residual opportunity for additional forecast sophistication.

Keywords: Photovoltaic curtailment, Battery energy storage system, Export-constrained dispatch, Model predictive control, Receding-horizon control, Perfect-information benchmark, Physical integrity audit

1. Introduction

Utility-scale photovoltaic (PV) plants can produce more active power than a grid connection is permitted to export. Such a point-of-interconnection (POI) limit can arise from an interconnection agreement, equipment rating, congestion-management requirement, or protection constraint. When available generation exceeds that boundary, the excess must be curtailed unless another resource can absorb it. Curtailment under an undersized or constrained POI is therefore a direct energy-routing problem, and recent studies of constrained and hybrid renewable plants show that the magnitude of this loss depends on both the connection boundary and the temporal resolution at which it is evaluated [1-4].

A co-located battery energy storage system (BESS) can recover part of this otherwise-lost energy by charging during above-cap PV periods and discharging later when export headroom becomes available. The useful role of storage in this setting is not generic arbitrage: it is temporal routing of renewable energy through a constrained interface. Whether that routing succeeds depends on BESS power, usable energy, efficiency, state of charge (SOC), the timing of cap-binding events, and the controller’s ability to preserve headroom before future surplus arrives.

Model predictive control (MPC) is an established framework for this class of constrained intertemporal problem. It can schedule charging, discharging, stored energy, export, and curtailment over a finite horizon while applying only the first action before the optimization is repeated [5-7]. Mixed-integer linear programming (MILP) is likewise well established for enforcing logical operating modes such as charge–discharge exclusivity. Here, MILP–MPC is used as the optimization engine within a matched closed-loop protocol that attributes curtailment recovery among storage, causal look-ahead, forecast information, and perfect information while holding the physical envelope and terminal-energy treatment fixed.

Fair benchmarking is particularly important for storage. A controller that finishes an evaluation period with less stored energy can appear to have exported or recovered more energy simply because it depleted the battery. Conversely, a perfect-information benchmark can become artificially advantaged if future realized PV is allowed to alter terminal preparation in a way unavailable to causal controllers. A defensible comparison therefore requires common initial and final stored energy, a causal terminal-feasibility treatment shared across methods, matched plant constraints, and a perfect-information benchmark that differs only in the information intentionally assigned to it.

This leads to a useful performance hierarchy. Cap-only operation measures the renewable-energy loss imposed by the export boundary without storage. A causal forecast-driven MPC measures how much of that loss can be recovered through anticipatory constrained dispatch. A protocol-matched perfect-information Oracle then defines the modeled recoverable-energy opportunity under the same BESS and terminal conditions. The fraction of the cap-only-to-Oracle opportunity already captured by a simple causal controller reveals how much room remains for more sophisticated prediction. This interpretation is complementary to forecast-centric and decision-focused work showing that lower prediction error does not necessarily produce better downstream decisions [8-13].

Previous PV–BESS studies address complementary control questions. Forecast-based strategies for PV battery systems examine how prediction affects energy use and operating schedules [14-15]. Mixed-integer MPC has been applied to PV plants with non-ideal storage [6]; stochastic MPC and multiobjective PV–BESS scheduling also consider prediction uncertainty and competing operating objectives [7-16]. Decision-focused PV–battery scheduling evaluates the effect of prediction on the resulting dispatch [12]. The present formulation minimizes export-cap curtailment with a subordinate throughput penalty, explicit PV-only charging, a forecast-based discharge-headroom restriction, and a common monthly terminal-energy condition. Diurnal, history-based, weather-informed, and perfect-PV information enter the same finite-horizon MILP–MPC, followed by an audit of the executed three-hour trajectories. These common operating and terminal rules provide the basis for comparing the information streams.

Probabilistic PV–BESS control addresses a related but distinct methodological question: how forecast uncertainty should be represented and propagated through stochastic or scenario-based scheduling. Such approaches may use quantile forecasts, calibrated prediction intervals, shared scenario decisions, or risk-sensitive headroom management. The present study instead asks how curtailment recovery should be attributed when the physical envelope, terminal-energy basis, and execution protocol are held fixed. Its forecasting branches therefore serve as controlled information inputs to a deterministic receding-horizon benchmark rather than as a probabilistic-control architecture. The principal comparisons concern horizon length, protocol-matched perfect-information opportunity, terminal fairness, and realized physical integrity, with operational numerical weather prediction (NWP) evaluated as an incremental information sensitivity.

Forecast sophistication is evaluated as a secondary information-sensitivity layer after the physical control benchmark is established. A transparent Diurnal reference, a matched History-CatBoost residual forecast, and a Weather-CatBoost residual forecast that additionally receives operational NWP are frozen before closed-loop evaluation. The learned branches use the same chronological support, model family, tuning budget, weighting, residual structure, shrinkage, and fallback rules, so their difference isolates the incremental use of NWP as far as the available data permit.

The contribution of this study is an integrated control-evaluation and attribution protocol for determining how much export-cap curtailment is recoverable by causal storage dispatch and how much modeled opportunity remains for additional information. First, a hard POI limit is combined with physically constrained BESS dispatch, charge–discharge exclusivity, no grid charging, forecast-dependent discharge headroom, first-action receding-horizon execution, and realized-trajectory auditing. Second, a common 50%-to-50% terminal-energy protocol with causal terminal preparation places the causal controllers and protocol-matched Oracle on the same stored-energy basis. Third, the Cap-only–causal MPC–Oracle hierarchy separates curtailment recovery attributable to storage and anticipatory control from the residual opportunity available to additional information. Fourth, forecast streams are generated chronologically and frozen before control evaluation, after which monthly paired inference, model-family robustness, and independent BESS power and energy sensitivities quantify the remaining information effect.

Section 2 describes the PV–BESS model, receding-horizon controller, terminal protocol, forecasting inputs, and evaluation methods. Section 3 reports the control, forecast-information, and robustness results. Sections 4–6 present the discussion, limitations, and conclusions.

2. Methodology

2.1 System Model and Curtailment-Recovery Problem
2.1.1 Plant, export boundary, and evaluation support

The case study uses measured active-power records from an anonymized 230 MW grid-connected PV plant. The plant identity and raw measurements are withheld due to contractual confidentiality. The research export boundary is represented as

$P^{\text {cap }}=\alpha P^{\text {rated }}=0.85 \times 230=195.5~ \mathrm{MW}$
(1)

where, $\alpha$ denotes the export-cap fraction (0.85), and $P^{\text {rated }}$ denotes the rated PV plant capacity (230 MW). The 195.5 MW value is a modeling boundary for the present experiment and is not presented as a confirmed plant operating limit. The hourly records were timestamped in plant local standard time (Coordinated Universal Time (UTC)+4), quality controlled, and converted to UTC. Hourly power values were then averaged over nonoverlapping intervals [$t$, $t$ + 3 h] to form the common three-hour PV series. This interval matches the three-hour NWP forecast lead spacing and defines the duration of each scheduled battery action. The export cap is applied to the resulting interval-average power. Accordingly, curtailment energy and constraint compliance are evaluated consistently on the three-hour forecast–dispatch grid adopted in this study. Two isolated missing hours were interpolated, one duplicated timestamp was resolved, and observations above the declared 230 MW rating were clipped before aggregation. The common closed-loop evaluation covers twelve monthly folds from September 2024 through August 2025 and contains 526,931 MWh of measured PV energy.

The nominal BESS has symmetric 30 MW charging and discharging limits, 140 MWh nameplate energy, charge and discharge efficiencies of 0.95, and a 10–90% SOC operating range. Initial and final stored energy are both fixed at 50% of nameplate energy, i.e., 70 MWh in the nominal case. Grid charging is not allowed; the battery is used as a PV-curtailment-recovery resource.

2.1.2 Cap-only loss and recoverable-energy opportunity

Without storage, realized export and curtailment at interval $t$ are

$P_t^{g, \text { cap }}=\min \left(P_t^{\text {pv }}, P^{\text {cap}}\right)$
(2)
$P_t^{\text {curt}, \text { cap }}=\max \left(P_t^{\text {pv }}-P^{\text {cap }}, 0\right)$
(3)

For a 3 h interval $\Delta t$, total cap-only curtailed energy is

$E_{\text {curt }}^{\text {cap }}=\sum_t P_t^{\text {curt}, \text { cap }} \Delta t$
(4)

For any storage controller $m$, the reduction in modeled curtailed PV energy relative to cap-only operation is

$R_m=E_{\text{curt}}^{\text {cap}}-E_{\text{curt}}^m$
(5)

Let $O$ denote the protocol-matched perfect-information Oracle. The modeled recoverable-energy opportunity is

$R_O=E_{\text{curt}}^{\text {cap}}-E_{\text{curt}}^O$
(6)

and the Oracle-gap closure of controller $m$ is

$C_m=\frac{R_m}{R_0}$
(7)

where, $O$ denotes the receding-horizon MILP–MPC supplied with the realized future PV sequence outside the common terminal-steering window. During terminal preparation it receives the same Diurnal forecast as every other controller. All methods share the BESS and POI limits, the monthly initial and final energy, and the same first-action execution rule. The model represents PV generation, BESS operation, and grid export at the POI, without a separately modeled local electrical load. Thus $R_O$ is the opportunity represented by this finite-horizon information comparator, and $C_m$ measures closure relative to that comparator. No full-period global optimum is implied.

PV-only charging allows the battery to absorb both above-cap surplus and PV generation that could otherwise have been exported. Accordingly, $R_m$ measures avoided modeled curtailment, while the net export change is $E_g^m-E_g^{\text {cap}}$. With equal initial and final battery energy, charging and discharge losses can make these two quantities different. The control results report both curtailed and exported energy. The fixed physical, forecasting, and control configurations are summarized in Table 1.

Table 1. Frozen physical, protocol, forecasting, and control configuration

Item

Value

Role in the Comparison

PV and export boundary

230 MW; 195.5 MW cap

Fixed plant-side active-power envelope

Nominal BESS

30 MW/140 MWh

Symmetric charge/discharge power limits

Efficiency and SOC range

\(\eta_c\) = \(\eta_d\) = 0.95; 10–90%

Stored-energy range 14–126 MWh

Initial and final SOC

50% and 50%

Exactly 70 MWh at every nominal fold start and fold end

Time step and horizons

3 h; 24 h and 72 h

8 and 24 MPC steps, respectively

Charging source

PV only

Grid charging prohibited

Diurnal

Same valid-time slot 24 h earlier

Transparent causal reference

History-CatBoost

PV history and calendar variables

Learned no-weather information layer

Weather-CatBoost

History features plus operational NWP

Incremental weather-information layer

Oracle

Realized PV outside terminal window

Protocol-matched perfect-information benchmark

Terminal window

168 h prebuffer + 24 h endgame

Common causal terminal steering for every method

Note: PV = photovoltaic; BESS = battery energy storage system; SOC = state of charge; MPC = model predictive control; NWP = numerical weather prediction; $\eta_c$ and $\eta_d$ = charging and discharging efficiencies, respectively. CatBoost denotes a gradient-boosted decision-tree algorithm. Oracle denotes the protocol-matched perfect-information benchmark.
2.2 Constraint-Audited Receding-Horizon Mixed-Integer Linear Programming–Model Predictive Control
2.2.1 Optimization model

At decision time $t$, the controller receives a PV trajectory over the active horizon. The first entry is the measured PV power and is therefore common to all methods; future entries come from the information stream under evaluation:

$\tilde{P}_{k \mid t}^{\text {pv }}= \begin{cases}P_t^{\text {pv }}, & k=0, \\ \widehat{P}_{t+k \Delta t \mid t}^{\text {pv }}, & k=1, \ldots, H-1 .\end{cases}$
(8)

For compactness, the decision-time index $t$ is omitted below and $\tilde{P}_{k \mid t}^{\text {pv }}$ is written as $\tilde{P}_k^{\text {pv }}$. Let $\mathcal{K}=\{0, \ldots, H-1\}$. The decision variables are charging power $P_k^{\text {ch}}$, discharging power $P_k^{\text {dis}}$, grid export $P_k^g$, curtailed PV power $P_k^{\text {curt }}$, stored energy $E_k$, binary charge-mode variable $z_k$, and nonnegative terminal-deviation variables $\xi^{+}$ and $\xi^{-}$. The stored-energy limits and target are

$E^{\min }=0.1 E_B, \quad E^{\max }=0.9 E_B, \quad E^{\operatorname{tar}}=0.5 E_B$
(9)

$E_B$ is the BESS nameplate energy capacity (140 MWh). Forecast-dependent export headroom is

$h_k=\max \left(P^{\text {cap }}-\tilde{P}_k^{\text {pv }}, 0\right), \quad k \in \mathcal{K}$
(10)

which is evaluated from the PV input before each optimization. The constraint $P_k^{\text {dis}} \leq h_k$ is an additional, conservative dispatch rule: it reserves forecast PV export headroom by withholding discharge when forecast PV reaches the cap. Grid export remains governed by the power balance and POI constraint, Eqs. (12) and (13). A different feasible allocation of charging and curtailment could satisfy those equations without satisfying this additional discharge rule. The controller retains the restriction for every compared information stream.

The receding-horizon MILP is

$\min \sum_{k \in \mathcal{K}}\left[w_{\text {curt }} P_k^{\text {curt }} \Delta t+w_{\text {thr }}\left(P_k^{\text {ch}}+P_k^{\text {dis}}\right) \Delta t\right]+w_{\text {term }}\left(\xi^{+}+\xi^{-}\right)$
(11)
$P_k^g=\tilde{P}_k^{\text {pv }}-P_k^{\text {ch}}+P_k^{\text {dis}}-P_k^{\text {curt }}$
(12)
$0 \leq P_k^g \leq P^{\text {cap }}$
(13)
$E_{k+1}=E_k+\eta_c P_k^{\text {ch}} \Delta t-\frac{P_k^{\text {dis}} \Delta t}{\eta_d}$
(14)
$E^{\min } \leq E_k \leq E^{\max }, \quad k=0, \ldots, H$
(15)
$0 \leq P_k^{\text {ch}} \leq z_k P^{{\text {ch}} \text {, } \text {max}}$
(16)
$0 \leq P_k^{\text {dis}} \leq\left(1-z_k\right) P^{{\text {dis}}, \max }$
(17)
$z_k \in\{0,1\}$
(18)
$0 \leq P_k^{\text {curt }} \leq \tilde{P}_k^{\text {pv }}$
(19)
$P_k^{\text {dis}} \leq h_k$
(20)
$E_0=E_t^{\text {meas }}$
(21)
$E_H-E^{\operatorname{tar}}=\xi^{+}-\xi^{-}$
(22)
$\xi^{+} \geq 0, \quad \xi^{-} \geq 0$
(23)

where, $E_t^{\text {meas }}$ denotes the measured battery stored energy at decision time $t$, while $P^{{\text {ch}}, \max }$ and $P^{{\text {dis}}, \max }$ denote the maximum charging and discharging powers, respectively. The weights are $w_{\text {curt }}$ = 1000, $w_{\text {thr }}$ = 1, and $w_{\text {term }}$ = 50 for every method and both horizons. The curtailed-energy weight gives priority to PV utilization; the lower throughput weight discourages unnecessary cycling, and the terminal weight penalizes deviation from the target energy at the end of an ordinary prediction horizon. The chosen values define a curtailment-prioritized dispatch and do not constitute a battery-degradation or economic calibration. Charging cannot exceed the modeled available PV, and grid charging is excluded by the nonnegative-export constraint, power balance, and charge–discharge exclusivity. The power balance permits diversion of exportable PV into the battery. At $k$ = 0, the common PV input and the associated headroom are used to form the first scheduled action.

All MILPs are solved through scipy.optimize.milp with the HiGHS backend. The nominal horizons contain 8 or 24 three-hour intervals, corresponding to 24 h and 72 h. In an ordinary solve, Eq. (22) and the objective’s terminal-deviation term permit a soft endpoint target at the prediction horizon. If the actual monthly fold endpoint falls within the nominal horizon, the horizon is shortened to that boundary and the exact terminal condition

$E_H=E^{\operatorname{tar}}=0.5 E_B$
(24)

is imposed. At that boundary the terminal-deviation variables are zero, so the soft penalty does not alter the fixed endpoint. The common steering policy described below supports reachability of this equality across the compared controllers.

2.2.2 Closed-loop first-action execution and audit boundary

Only the first optimized charging and discharging commands are executed. Stored energy is then updated using the battery model and the realized action before the horizon advances and the optimization is solved again. This first-action implementation distinguishes the results from open-loop schedule evaluation and ensures that forecast errors affect the state trajectory only through actions actually taken.

Optimization constraints alone are not treated as sufficient evidence of physical validity. The realized closed-loop trajectories are independently checked for POI-cap violation, SOC lower- or upper-bound violation, simultaneous charging and discharging, grid import, discharge beyond available headroom, battery-induced curtailment, compliance with the steering floor, solver completion, and exact terminal energy. The audit is performed after execution and state updating so that post-optimization inconsistencies cannot be hidden by solver feasibility alone.

2.3 Terminal-Fair Protocol and Benchmark Hierarchy
2.3.1 Common 50%-to-50% terminal protocol

Each monthly fold starts at 50% SOC and must finish at the same level, corresponding to 70 MWh for the nominal BESS. This common endpoint prevents one controller from obtaining an apparent energy advantage by leaving less energy in storage. Each fold is evaluated with its own initial and final energy condition.

Terminal preparation occupies the last 192 h of each fold: a 168 h prebuffer and a 24 h endgame. During the prebuffer, the lower permitted energy floor increases in seven 8 MWh increments at 19:00 plant-local time. The floor reaches the 70 MWh target at the start of the endgame and is combined with backward-reachable energy limits to preserve the remaining terminal path. When the actual fold endpoint enters the MPC horizon, the controller applies Eq. (24) exactly. Ordinary horizons use the soft terminal-deviation penalty in Eq. (11).

During the prebuffer and endgame, Diurnal, History-CatBoost, Weather-CatBoost, and Oracle use the same Diurnal forecasting rule for terminal steering while retaining the common current PV input. Elsewhere, each uses its designated forecast sequence; the Oracle alone receives realized future PV. This common terminal policy holds the end-of-fold preparation and target energy fixed across the information comparisons. This shared steering rule was adopted to reduce forecast-dependent differences in terminal preparation and preserve comparability across controllers.

2.3.2 Benchmark hierarchy and attribution logic

The comparison is interpreted in the following order. Cap-only operation establishes the curtailment burden created by the POI limit without storage. Diurnal MPC establishes the recovery attainable with a transparent causal look-ahead signal and the same BESS. History-CatBoost tests whether nonlinear residual learning from PV history and calendar information changes that recovery. Weather-CatBoost adds operational NWP under the matched forecasting design. Finally, the protocol-matched Oracle provides a perfect-PV information reference within the same plant, BESS, finite horizon, terminal, and execution rules.

This hierarchy avoids crediting an advanced forecast with curtailment reduction that is principally attributable to the existence of storage or to anticipatory control itself. It also makes the remaining Oracle gap operationally interpretable: when a simple causal controller already closes almost all of the modeled recoverable opportunity, forecast improvement has little objective space in which to create an additional gain.

2.4 Forecast-Information Streams and Chronological Protocol
2.4.1 Diurnal, history, and weather information

The Diurnal forecast uses the PV value from the same valid-time slot 24 h earlier as a transparent no-weather reference. The two learned branches are formulated as residual corrections to that reference:

$\hat{P}_{t+k \Delta t \mid t}^m=\operatorname{clip}\left(\hat{P}_{t+k \Delta t \mid t}^D+\lambda_k^m \hat{r}_{t+k \Delta t \mid t}^m, 0, P^{\text {rated }}\right)$
(25)

The superscript $D$ identifies the Diurnal reference, $\hat{r}$ denotes the predicted PV residual, and $\lambda$ denotes the lead-specific residual shrinkage coefficient, while $m \in\{H, W\}$ identifies History-CatBoost or Weather-CatBoost, respectively. Both branches include the issue-time PV input, PV lags at 3, 6, 24, and 48 h, a 24 h rolling mean, calendar cycles, and lead and NWP-run-age descriptors. The weather branch adds the operational NWP predictor columns to these common features. The same residual target, candidate-model grid, training rows, chronological validation method, selection criterion, sample weights, shrinkage choices, and forecast fallback convention are used in the matched comparison. All forecast streams enter an identical controller and evaluation support.

2.4.2 Operational numerical weather prediction and causal alignment

The weather archive is based on the European Centre for Medium-Range Weather Forecasts (ECMWF) Integrated Forecasting System (IFS) ensemble 0.25$^\circ$ product processed by dynamical.org from ECMWF Open Data [17]. Daily 00 UTC control-member forecasts were extracted for 1 August 2024–31 August 2025 and cleaned to leads from 3 to 72 h at 3 h spacing. Run time, lead time, and valid time were explicitly verified. The nearest grid point was 8.34 km from the plant coordinates. Predictors include interval-mean downward shortwave and longwave surface radiation fluxes; instantaneous 2 m air and dew-point temperature, surface pressure, and 10 m wind components; derived wind speed and direction; and mean precipitation rate over the preceding 3 h together with its derived 3 h accumulation.

Each NWP record is indexed by its forecast run, valid time, and lead, with $t_{\text {valid }}=t_{\text {run }}+\ell$. For each issue time, the feature pipeline selects the latest eligible archived run and matches its valid-time row to the intended PV target. Direct NWP coverage is 100% over the 24 h forecast support and 89.172% over the 72 h support. When a required weather row is absent, Weather-CatBoost uses the Diurnal value for that target; no weather observation is substituted. The 72 h controller consumes leads through 69 h, while the 72 h forecast lead is retained for diagnostics. The run, valid-time, and lead keys are retained with the aligned forecast records for traceability.

2.4.3 Rolling-origin training and forecast freezing

Training, validation, and test sets are separated by target valid time. For every monthly fold and lead, all training and validation targets precede the fold start. The last 60 days of the available pretest period form the nominal validation tail, subject to minimum-sample requirements. Both CatBoost branches use the same matched pretest rows with direct NWP coverage and the same chronological training/validation partition. Their predictor lists differ by the inclusion of NWP fields; each branch selects its own best candidate and residual shrinkage from the common prescribed menus. At test times without a direct weather row, the weather branch uses the same Diurnal fallback.

Three prespecified CatBoost configurations differ in depth, learning rate, iteration limit, and L2 regularization. Sample weights are 1 for ordinary rows, 2 for daylight rows, and 10 for true over-cap rows. Candidates are ranked lexicographically by over-cap missed-event rate, daylight mean absolute error (MAE), cap-weighted root mean square error (RMSE), iteration count, and candidate identifier. Leadwise shrinkage is selected from \{0, 0.25, 0.5, 0.75, 1, 1.25\}. The selected model is refitted on all pretest data and the resulting forecast table is frozen before controller evaluation. The campaign contains 1,656 candidate fits, 552 selected refits, and 266,784 common forecast-table rows. Exact software, model, and solver settings are provided in Supplementary Table S1 (Supplementary Material 1). The reproducibility scope and supporting documentation are provided in Supplementary Material 2, while the executable code and derived evidence are included in Supplementary Material 3.

2.5 Evaluation, Statistics, Robustness, and Integrity
2.5.1 Control and forecast metrics

Control evaluation reports curtailed energy, curtailment fraction, exported energy, recovered energy relative to cap-only operation, Oracle-gap closure, charge/discharge throughput, equivalent cycles, monthly wins/ties/losses, solver completion, terminal equality, and physical-integrity checks. Equivalent cycles are reported as a throughput-based measure of battery cycling and are interpreted descriptively rather than as a battery degradation model.

Forecast evaluation is secondary to the control benchmark and includes daylight MAE, normalized daylight MAE, RMSE, over-cap recall, missed-event rate, precision, F1, near-cap MAE, skill relative to Diurnal, and direct-NWP coverage. Daylight is defined by measured PV power of at least 2% of rated capacity (4.6 MW). An over-cap event occurs when measured PV reaches or exceeds 195.5 MW. Near-cap MAE uses measured PV satisfying $\left|P_t^{\text {pv}}-P^{\text {cap}}\right| \leq 0.10 P^{\text {cap }}$, i.e., 175.95–215.05 MW.

2.5.2 Paired monthly inference

For a lower-is-better metric $M$, weather benefit relative to reference $r$ in fold $f$ is

$B_f^{W, r}=M_{f, r}-M_{f, W}$
(26)

Positive values therefore favor Weather-CatBoost. Annual totals are reported descriptively. Uncertainty is assessed using the twelve chronologically ordered monthly paired benefits. In each circular moving-block bootstrap replicate, four starting months are sampled with replacement, and the three consecutive months following each start are taken with wraparound at the end of the year. The resulting 12-month series yields one resampled mean benefit. The procedure uses 10,000 replicates; the empirical 2.5th and 97.5th percentiles of their means define the 95% interval. A three-month block retains short-range month-to-month dependence while allowing resampling of a small annual series; its length is a pragmatic choice with only twelve observations. These intervals summarize uncertainty in the estimated mean monthly benefit under the specified bootstrap procedure and the limited twelve-month sample. Two-sided Wilcoxon signed-rank and exact sign tests are secondary descriptive checks. Ties use a fixed 10$^{-6}$ MWh numerical tolerance. Spearman correlation with the same block bootstrap examines the monthly association of forecast improvement with curtailment benefit. BESS-sensitivity $p$-values are adjusted by the Benjamini–Hochberg procedure.

2.5.3 Model-family robustness and battery energy storage system sensitivity

Histogram gradient boosting (HGB) provides a secondary model-family check using the same history-only versus history-plus-NWP comparison, forecast support, fallback policy, controller, and terminal protocol. BESS sensitivity changes one hardware dimension at a time while reusing the frozen CatBoost forecasts. Power is varied over 15, 30, 45, and 60 MW at fixed 140 MWh; energy is varied over 70, 140, 210, and 280 MWh at fixed 30 MW. The nominal 30 MW/140 MWh configuration is counted once. Initial and terminal energy remain at 50% of each configuration’s capacity. These cases are sensitivity experiments, not storage-sizing optimization.

3. Results

3.1 Cap-Only Curtailment Burden

Across the twelve monthly folds, evaluated PV energy is 526,931 MWh. With no BESS, the 195.5 MW export boundary curtails 26,279.000 MWh, corresponding to 4.9872% of evaluated PV energy. This cap-only result defines the loss that storage and anticipatory control are asked to recover; it is therefore the appropriate starting point for interpreting all controller results.

3.2 Curtailment Recovery by Constrained Receding-Horizon Model Predictive Control

All storage-equipped controllers recover a large fraction of the cap-only loss. At the 24 h horizon, Diurnal MPC reduces curtailment to 12,621.440 MWh and recovers 13,657.560 MWh. History-CatBoost achieves 12,410.608 MWh curtailment and 13,868.392 MWh recovered, while Weather-CatBoost achieves 12,699.209 and 13,579.791 MWh, respectively. The 24 h protocol-matched Oracle curtails 11,574.587 MWh, so the corresponding recoverable opportunity is 14,704.413 MWh.

At 72 h, the causal Diurnal controller reduces curtailment further to 11,719.454 MWh and recovers 14,559.546 MWh. Relative to the 72 h Oracle curtailment of 11,490.175 MWh, this closes 98.450% of the modeled recoverable-energy opportunity. History-CatBoost closes 97.833%, while Weather-CatBoost closes 98.507%. Thus, in the nominal 72 h case, a physically constrained, terminal-fair causal MPC with a transparent Diurnal input captures almost all of the recoverable opportunity represented by the matched Oracle. Figure 1 illustrates the annual curtailed PV energy and Oracle-gap closure across the compared controllers at both prediction horizons.

Figure 1. Annual curtailed PV energy under cap-only operation, the three causal forecast-driven controllers, and the protocol-matched Oracle
Note: Numbers above the bars indicate curtailed energy; percentages beneath them indicate closure of the cap-only-to-Oracle recoverable-energy opportunity. The cap-only and perfect-PV MPC bars are comparison references; closure percentages are calculated against the corresponding finite-horizon perfect-PV MPC. Percentages are shown to two decimal places. PV = photovoltaic; MPC = model predictive control; CatBoost = gradient-boosted decision-tree algorithm. Oracle denotes the protocol-matched perfect-information benchmark.

The numerical campaign results for both prediction horizons are summarized in Table 2.

3.3 Horizon Effect and Remaining Oracle Gap

Increasing the causal Diurnal horizon from 24 h to 72 h reduces annual curtailment from 12,621.440 to 11,719.454 MWh, an additional 901.986 MWh reduction under otherwise matched physical and terminal conditions. More importantly for attribution, the Diurnal Oracle-gap closure increases from 92.881% to 98.450%. The remaining 72 h Diurnal-to-Oracle curtailment gap is only 229.280 MWh over the annual campaign. This difference measures the remaining margin to the specified finite-horizon perfect-PV comparator under the same 72 h protocol.

The learned forecasts do not alter this overall picture. At 24 h, History-CatBoost is the best causal method in annual curtailment, but its 94.314% closure remains below the Oracle and differs modestly from Diurnal. At 72 h, Weather-CatBoost is numerically the best causal method, but it is only 8.554 MWh below Diurnal in annual curtailment. The hierarchy therefore shows that horizon length and constrained BESS scheduling account for far more of the recovered opportunity than the incremental differences among the three causal forecast streams in the nominal case.

Table 2. Nominal closed-loop campaign results for the 30 MW/140 MWh BESS

Horizon

Method

Curtailment (MWh)

Fraction (%)

Export (MWh)

Recovered (MWh)

Oracle Closure (%)

Equiv. Cycles

24 h

Cap-only

26279.000

4.987

500652.000

0.000

0.000

0.000

24 h

Diurnal

12621.440

2.395

512880.083

13657.560

92.881

99.618

24 h

History-CatBoost

12410.608

2.355

513093.950

13868.392

94.314

99.407

24 h

Weather-CatBoost

12699.209

2.410

512820.311

13579.791

92.352

98.364

24 h

Oracle

11574.587

2.197

513905.873

14704.413

100.000

101.086

72 h

Cap-only

26279.000

4.987

500652.000

0.000

0.000

0.000

72 h

Diurnal

11719.454

2.224

513759.805

14559.546

98.450

101.170

72 h

History-CatBoost

11810.599

2.241

513664.419

14468.401

97.833

101.465

72 h

Weather-CatBoost

11710.900

2.222

513763.660

14568.100

98.507

101.497

72 h

Oracle

11490.175

2.181

513988.003

14788.825

100.000

101.245

Note: BESS = battery energy storage system; Equiv. cycles = equivalent cycles.
3.4 Physical Feasibility and Terminal Fairness

Neither the CatBoost campaign nor the HGB robustness campaign encountered a solver failure. The BESS-sensitivity analysis completed 163,352 mixed-integer solves. Independent checks across the nominal, robustness, and sensitivity trajectories found no violations of the export cap, SOC bounds, charge–discharge exclusivity, no-grid-import rule, discharge-headroom constraint, battery-induced-curtailment condition, terminal equality, or steering floor. The maximum terminal deviation was 0 MWh. Thus, differences in curtailment are not attributable to infeasible execution, unequal final stored energy, or solver fallback.

The CatBoost controller evaluation contains 23,336 optimal MILP solutions across both horizons and four storage-enabled controllers. The mean, median, and maximum solver-only times are 1.449, 1.415, and 41.118 ms, respectively; the 95th percentile is 2.227 ms. Mean solver times are 1.156 ms for 24 h and 1.741 ms for 72 h horizons. The maximum relative MIP gap is 9.96 × 10$^{-11}$, and the maximum branch-and-bound node count is one. The control models were solved using SciPy 1.17.0 with HiGHS under Python 3.13.5. The archived forecasting environment was 64-bit Linux (kernel 6.12.13; glibc 2.41), with CatBoost 1.2.8, NumPy 2.3.5, and pandas 2.2.3. The HGB configuration also records scikit-learn 1.8.0 and joblib 1.5.3. The MILP solver timings were obtained on a Linux system equipped with an AMD EPYC 9V74 processor, four allocated CPU cores, and a 4 GiB memory limit. The nominal 24 h and 72 h MILPs contain 43 and 123 decision variables, respectively, including 8 and 24 binary variables. The measured durations cover individual optimization calls, excluding forecast generation, data transfer, supervisory execution, and plant protection. These solver-only results indicate a small offline computational burden relative to the 3 h control interval but do not constitute a plant-deployment timing measurement.

3.5 Incremental Effect of Learned and Weather Information

Once the controller benchmark is established, the forecast layer shows that Weather-CatBoost contains additional predictive information relative to the matched History-CatBoost branch. On the control-consumed support, 24 h daylight MAE decreases from 35.931 to 33.706 MW, RMSE from 53.217 to 50.293 MW, and over-cap missed-event rate from 28.904% to 27.338%; near-cap MAE is lower by 1.191 MW. At 72 h, daylight MAE decreases from 35.710 to 34.534 MW and missed-event rate from 27.218% to 26.856%. Weather-CatBoost also has lower aggregate MAE than Diurnal at both horizons, whereas History-CatBoost is slightly worse than Diurnal in the two horizon summaries.

Detailed campaign forecast metrics, including normalized MAE, RMSE, over-cap precision/recall/F1, near-cap MAE, and direct-NWP coverage, are reported in Supplementary Table S2 (Supplementary Material 4).

The aggregate forecast improvement is not uniform by lead (Supplementary Fig. S1). Weather-CatBoost is strongest at several short and intermediate leads, while History-CatBoost is comparable or better at some points. For the 72 h case, direct-NWP coverage is 89.172%; fallback to Diurnal causes convergence at the longest leads. Restricting the calculation to direct-NWP rows gives a 72 h daylight MAE of 33.816 MW and a missed-event rate of 25.680%, compared with 34.534 MW and 26.856% on full operational support.

Against History-CatBoost, mean monthly daylight-MAE benefit is 2.314 MW at 24 h (95% block-bootstrap interval 1.339–3.217 MW; 10 wins, 0 ties, 2 losses) and 1.197 MW at 72 h (0.799–1.563 MW; 11/0/1). The Wilcoxon $p$-values are 0.00244 and 0.00098. These forecast improvements do not translate into a stable curtailment advantage. At 24 h, Weather-CatBoost curtails 288.601 MWh more than History-CatBoost and 77.768 MWh more than Diurnal. At 72 h, it curtails 99.699 MWh less than History-CatBoost but only 8.554 MWh less than Diurnal.

The executed charge and discharge commands offer a direct control-level comparison. Across 2,917 paired control intervals in each horizon, the first charge/discharge commands of History-CatBoost and Weather-CatBoost differ by more than 0.1 MW (sum of absolute charge and discharge differences) in 389 intervals (13.34%) at 24 h and 378 (12.96%) at 72 h. Of these differences, 78 and 62 intervals, respectively, coincide with PV above the modeled export cap. These comparisons quantify how frequently alternative forecast inputs produce different executed actions under the matched control protocol.

The monthly weather-related curtailment benefit, defined as History-minus-Weather curtailed energy, is concentrated in a small number of folds (Supplementary Fig. S2). At 24 h, Weather-CatBoost records 2 wins, 5 ties, and 5 losses; mean monthly benefit is -24.050 MWh with a 95% interval of -63.713 to 2.950 MWh. At 72 h, the count is 4/6/2 and mean benefit is 8.308 MWh with an interval of -14.229 to 43.776 MWh. Both intervals include zero; Wilcoxon $p$-values are 0.156 and 0.844. The intervals do not establish equivalence between the forecasting branches, and the monthly sample is too small to exclude modest operating-regime effects. A supplementary sensitivity that allows History-CatBoost and Weather-CatBoost to retain their own forecasts during terminal preparation changes the weather-related curtailment benefits from -288.6 to -192.6 MWh at 24 h and from +99.7 to +151.8 MWh at 72 h, retaining the same horizon-dependent signs.

Across monthly folds, the Spearman correlation between Weather-minus-History daylight-MAE improvement and curtailment benefit is 0.007 at 24 h (95% interval -0.457 to 0.420; $p$ = 0.982) and 0.321 at 72 h (-0.030 to 0.741; $p$ = 0.309). Forecast improvement therefore does not reliably identify the months in which curtailment is reduced. The paired statistical effects and model-family robustness results are summarized in Table 3.

Table 3. Paired statistical effects and HGB robustness

Family/Layer

Horizon

Mean Monthly Benefit

95% Interval

W/T/L

Wilcoxon $\boldsymbol{p}$

Campaign Effect

Interpretation

CatBoost forecast MAE

24 h

2.314 MW

[1.339, 3.217]

10/0/2

0.0024

2.225 MW

Forecast improves

CatBoost curtailment

24 h

-24.050 MWh

[-63.713, 2.950]

2/5/5

0.1563

-288.601 MWh

Control worsens

CatBoost forecast MAE

72 h

1.197 MW

[0.799, 1.563]

11/0/1

0.0010

1.175 MW

Forecast improves

CatBoost curtailment

72 h

8.308 MWh

[-14.229, 43.776]

4/6/2

0.8438

99.699 MWh

Uncertain benefit

HGB forecast MAE

24 h

–

–

–

–

1.290 MW

Forecast improves

HGB curtailment

24 h

–

–

–

–

-197.486 MWh

Control worsens

HGB forecast MAE

72 h

–

–

–

–

0.768 MW

Forecast improves

HGB curtailment

72 h

–

–

–

–

-149.579 MWh

Control worsens

Note: For lower-is-better metrics, benefits are calculated as the reference (History) value minus the corresponding Weather value, consistent with Eq. (26). Positive values indicate improved performance with weather information; negative values indicate deterioration. Thus, the -288.601 MWh campaign benefit at 24 h indicates 288.601 MWh greater curtailment under Weather-CatBoost. MAE = mean absolute error; HGB = histogram gradient boosting; CatBoost = gradient-boosted decision-tree algorithm; W/T/L = wins/ties/losses across monthly folds; Wilcoxon $p$ = $p$-value from the Wilcoxon signed-rank test. The 95% intervals are monthly block-bootstrap intervals for the mean monthly benefit. A dash (–) indicates a statistic not reported.
3.6 Robustness and Battery Energy Storage System Sensitivity

The HGB robustness campaign preserves the main separation between forecast and control performance. Adding weather variables improves daylight MAE by 1.290 MW at 24 h and 0.768 MW at 72 h, yet annual curtailment increases by 197.486 MWh and 149.579 MWh, respectively. HGB therefore confirms the adverse 24 h CatBoost result but changes the 72 h sign, demonstrating that the direction of the 72 h control effect is model-family dependent.

The BESS sensitivity likewise shows that incremental weather value depends on hardware configuration (Supplementary Fig. S3). At 24 h, annual Weather-minus-History curtailment benefit ranges from a 288.6 MWh disadvantage in the nominal case to a 113.8 MWh advantage for 30 MW/280 MWh, and every block-bootstrap interval includes zero. At 72 h, weather is favorable in six of seven configurations, with positive annual effects between 63.0 and 199.5 MWh in those favorable cases. The 45 MW/140 MWh and 60 MW/140 MWh cases have positive intervals for mean monthly benefit (mean 9.734 MWh; lower bound 2.274 MWh), but their Wilcoxon tests remain nonsignificant, all Benjamini–Hochberg $q$-values for the sensitivity family are 1.0, and several folds are exact ties. The sensitivity therefore supports configuration dependence, not a general sizing or weather-value claim.

4. Discussion

4.1 Constrained Control Captures Most of the Modeled Recoverable Value

The largest operational effect is the curtailment reduction achieved by anticipatory storage dispatch. Cap-only operation loses 26,279 MWh. With the same BESS and a transparent Diurnal input, 72 h receding-horizon dispatch recovers 14,559.546 MWh and closes 98.450% of the modeled Oracle opportunity. The residual Diurnal-to-Oracle gap is 229.280 MWh. Under this configuration, physically constrained temporal routing by storage captures nearly all of the modeled recoverable energy.

This result is specific to the tested 3 h resolution, 195.5 MW export cap, 30 MW/140 MWh BESS, 50%-to-50% terminal protocol, and 72 h controller. Within that operating regime, the modeled perfect-information margin remaining after the Diurnal controller is small. The small observed margin to the finite-horizon comparator indicates limited realized advantage from the tested alternative forecast inputs. Oracle-gap closure therefore provides a reference for the remaining information effect within the specified benchmark protocol.

The horizon comparison reinforces the same point. Moving from 24 h to 72 h Diurnal MPC increases Oracle-gap closure from 92.881% to 98.450% and removes a further 901.986 MWh of curtailment. This is a larger operational change than any of the forecast-stream differences within a fixed horizon. The result suggests that, for the tested plant model, enough look-ahead to position SOC across future cap-binding periods is more consequential than replacing the transparent forecast with a more complex point predictor.

4.2 Meaning of the Remaining Oracle Gap

The Oracle is deliberately protocol matched. It does not bypass BESS limits, POI limits, charge–discharge exclusivity, no-grid-charging rules, or the common terminal treatment. Its role is therefore not to represent an unconstrained theoretical maximum, but to identify the curtailment recoverable through future-PV information under the same modeled hardware and execution framework. A small gap can arise because storage power, storage energy, or the export boundary dominate the remaining loss, because the causal controller already positions SOC effectively, or because the 3 h temporal aggregation removes higher-frequency opportunities.

This distinction is important when interpreting advanced forecasting. If a causal controller is far from the protocol-matched Oracle, information or controller design may have substantial room to improve. If the gap is already small, an apparently strong forecast improvement can still yield negligible control value because the tested schedules already yield similar curtailed-energy totals. The benchmark hierarchy therefore helps separate an information limitation from a hardware- or opportunity-limited regime without claiming that the Oracle is a universal optimum outside the specified model.

4.3 When Additional Forecast Sophistication Can Matter

Weather-CatBoost clearly improves several forecast metrics relative to the matched History-CatBoost branch, demonstrating that the operational NWP contains predictive information. That information affects curtailment only when it changes feasible actions at cap-relevant times while useful SOC flexibility remains. Aggregate MAE improvement is distributed across many daylight samples, whereas curtailment value is concentrated in comparatively few intervals where the cap binds and the battery can still be repositioned. Because SOC couples actions over time, a locally more accurate forecast can also create a state trajectory that is less useful for a later event.

The action comparisons in Section 3.5 show that the added weather information changes executed commands in a minority of intervals. Since charging and discharging also alter later SOC, different commands need not yield a proportional annual curtailment gain. The 72 h CatBoost result provides a concrete boundary case. Weather-CatBoost is numerically 99.699 MWh better than History-CatBoost but only 8.554 MWh better than Diurnal, and the monthly Weather-versus-History interval includes zero. HGB changes the 72 h sign despite improving forecast error. The BESS sensitivity further shows that the sign and magnitude of weather value change with storage power and energy. Together, these results characterize additional forecast sophistication as a limited and configuration-dependent residual effect once the constrained controller is already close to the protocol-matched Oracle.

4.4 Practical Implications for Photovoltaic–Battery Energy Storage System Controller Evaluation

For controller development, the physical and benchmarking protocol should be defined before forecast models are compared. The required elements are the POI boundary, charging source, BESS power and energy limits, SOC range, charge–discharge exclusivity, forecast-dependent discharge headroom, first-action execution, terminal-energy treatment, and post-dispatch audit. A cap-only baseline then establishes the gross curtailment burden. A transparent causal controller quantifies the value attainable without sophisticated forecasting. The protocol-matched Oracle defines the remaining modeled information opportunity. Only after these quantities are known is it meaningful to ask whether a more complex forecast creates repeatable closed-loop improvement.

This assessment also depends on the control problem being compared. Forecast-based PV–battery studies examine the operating effect of prediction under their chosen storage and grid arrangements [14-15]; mixed-integer PV–storage MPC explicitly represents equipment constraints [6], while stochastic and multiobjective formulations address uncertainty or competing objectives [7-16]. Related studies have examined coordinated photovoltaic–battery energy management in renewable energy communities [18] and the design of hybrid solar–wind–storage microgrids [19]. The present comparisons use curtailed energy as the primary objective, a subordinate cycling term, a fixed POI boundary, matched PV inputs, and a common monthly stored-energy endpoint. The objective weights ($w_{\text {curt}}, w_{\text {thr}}, w_{\text {term}}$) = (1000, 1, 50) express this curtailment-prioritized scheduling preference. They were held fixed across the compared methods; the results do not establish that these weights are optimal for battery wear or economic return, objectives addressed in other MPC studies [20].

This ordering also reduces the risk of attributing storage value to AI or forecasting. A forecast model may be statistically superior while the controller is already close to the benchmark bound; conversely, a large Oracle gap can indicate a configuration in which better information or a different control architecture deserves attention. The approach is configuration driven rather than tied to the confidential plant record. Given a time-indexed renewable-power series and a forecast table on a common grid, the controller, terminal-fairness, integrity, and statistical layers can be reused with site-specific ratings, limits, time zone, sampling interval, and operating rules.

5. Limitations and Future Work

The analysis concerns one anonymized utility-scale PV plant over September 2024–August 2025. The 195.5 MW export boundary is a research assumption and is not claimed to be a confirmed site constraint. The BESS configurations are modeled rather than verified installed assets. The model is limited to active-power scheduling and curtailment recovery; reactive power, voltage and frequency behavior, converter and protection dynamics, detailed battery degradation, market prices, and investment costs are outside scope. The reported reductions are therefore physical energy outcomes, not profit or stability estimates.

The 3 h control interval was selected to match the temporal spacing of the operational NWP forecasts used in this study, ensuring consistent alignment between forecast inputs and scheduled BESS actions. Hourly PV measurements were consequently averaged to the 3 h control grid, with the export cap evaluated on interval-mean power. The curtailment and feasibility results therefore characterize this temporal representation rather than instantaneous operating conditions. As temporal resolution can influence curtailment estimates [4], future work will investigate shorter control intervals with appropriately aligned higher-frequency forecast data. This extension will also examine whether the high Diurnal Oracle-gap closure persists under finer temporal resolution, different export-cap severities, and broader BESS power and energy configurations.

The weather archive contains one deterministic control member, one grid point, and daily 00 UTC forecasts. Direct NWP coverage falls to 89.172% over the 72 h support, and exact Diurnal fallback reduces the distinction between direct-weather and fallback periods. Different NWP products, ensemble information, spatial aggregation, intraday updates, probabilistic scenarios, or source-specific irradiance processing could change forecast and control effects. These are appropriate future tests because the present study establishes a controller benchmark and residual opportunity against which additional information can be measured.

The common terminal policy removes terminal-energy bias but also suppresses method-specific forecast influence during the final eight days of each monthly fold. The method-specific terminal sensitivity preserves the 24 h adverse and 72 h favorable CatBoost signs while changing their magnitudes, showing that terminal design is part of the experimental definition. More general terminal treatments, including economically valued terminal energy or multi-fold continuous operation, should be compared while preserving fairness.

Inference is based on twelve ordered monthly folds. The block-bootstrap intervals are therefore emphasized over isolated $p$-values, and the BESS-sensitivity cases remain exploratory. The robustness of the confidence intervals to alternative bootstrap block lengths was not evaluated. Multi-year and multi-site replication is needed before making general claims about the relative value of forecast sophistication, horizon length, or storage configuration. Degradation-aware objectives remain an important extension of the present analysis. Probabilistic and scenario-based MPC represent a separate controller-design layer and should be evaluated under similarly explicit terminal-energy, causal-information, and physical-integrity conditions. The first-action comparisons provide evidence of differences in executed dispatch decisions, but isolating the individual effects of forecast errors, SOC, and binding operating constraints would require controlled counterfactual ablations, which are left for future work.

6. Conclusions

Under a 230 MW PV rating, 195.5 MW modeled export cap, and 30 MW/140 MWh BESS, cap-only operation curtails 26,279 MWh. A terminal-fair 72 h Diurnal receding-horizon MPC reduces curtailment to 11,719.454 MWh, recovers 14,559.546 MWh, and closes 98.450% of the 14,788.825 MWh recoverable opportunity defined by the protocol-matched Oracle. All evaluated 3 h trajectories pass the post-dispatch integrity checks for the modeled POI cap, SOC limits, charge–discharge exclusivity, no-grid-import condition, discharge-headroom constraint, common terminal steering, and exact final energy. These results show that, for the tested plant, export cap, BESS, 3 h resolution, horizon, and terminal protocol, physically constrained anticipatory storage dispatch captures most of the modeled recoverable curtailed energy.

The information-sensitivity results define the remaining forecast effect within that operating regime. Weather-CatBoost improves daylight MAE relative to History-CatBoost by 2.225 MW at 24 h and 1.175 MW at 72 h, while annual curtailment is 288.601 MWh higher at 24 h and 99.699 MWh lower at 72 h; neither monthly block-bootstrap interval supports a stable weather advantage. HGB changes the 72 h control sign despite retaining forecast improvement, and BESS sensitivities show configuration dependence. Additional forecast sophistication therefore provides comparatively limited and non-stable incremental curtailment value once the constrained controller is already close to the protocol-matched Oracle.

The study supports a practical evaluation sequence for export-constrained renewable-storage control: define the physical envelope and terminal-energy basis, quantify cap-only loss, benchmark causal receding-horizon recovery, use a matched perfect-information Oracle to measure the residual opportunity, and evaluate more sophisticated information streams within that remaining margin.

7. Supplementary Materials

Supplementary materials are available at: https://doi.org/10.56578/peet050404.

Supplementary Material 1. File name: Supplementary\_Material\_1.pdf. Format: PDF. Title: Supplementary Table S1. Description: final implementation settings for the matched CatBoost forecast campaign, HGB robustness analysis, mixed-integer MPC, terminal-fairness protocol, BESS sensitivity, and statistical analysis.

Supplementary Material 2. File name: Supplementary\_Material\_2.pdf. Format: PDF. Title: Supplementary Reproducibility Statement. Description: scope, entry points, confidentiality boundary, computational environment, forecast-freezing records, integrity controls, and authentication information for the nonconfidential reproducibility materials.

Supplementary Material 3. File name: Supplementary\_Material\_3.zip. Format: ZIP archive. Title: Reproducibility package for constrained PV–BESS dispatch and forecast-information analysis. Description: executable source code, machine-readable configurations, model-selection records, derived evidence, sanitized input documentation, manifests, and SHA-256 checksums. The archive includes SHA-256 manifests for authentication of the supplied reproducibility materials.

Supplementary Material 4. File name: Supplementary\_Material\_4.pdf. Format: PDF. Title: Supplementary forecast-information sensitivity results. Description: detailed campaign forecast metrics (Supplementary Table S2), leadwise forecast diagnostics (Supplementary Fig. S1), monthly Weather-CatBoost versus History-CatBoost curtailment effects (Supplementary Fig. S2), and independent BESS power/energy weather-sensitivity results (Supplementary Fig. S3).

Author Contributions

Conceptualization, A.M.J.; methodology, A.M.J.; software, A.M.J.; validation, A.M.J.; formal analysis, A.M.J.; investigation, A.M.J.; data curation, A.M.J.; writing—original draft preparation, A.M.J.; writing—review and editing, A.M.J. and I.S.B.; visualization, A.M.J.; supervision, I.S.B. All authors have read and agreed to the published version of the manuscript.

Data Availability

The raw plant measurements cannot be made publicly available because they are subject to contractual confidentiality. The nonconfidential reproducibility package (Supplementary Material 3) contains executable source code, machine-readable configuration files, frozen forecast manifests and authenticated derived outputs, model-selection records, derived metrics, statistical and integrity scripts, a sanitized input template, a data dictionary, and SHA-256 manifests. These materials support application of the workflow to other suitably formatted PV datasets and, with source-specific forecasting adjustments, to other renewable-power datasets. Exact reproduction of the plant-specific numerical results requires access to the confidential measurements, which may be considered only with permission from the data holder.

Conflicts of Interest

The authors declare no conflicts of interest.

Declaration on the Use of Generative AI and AI-assisted Technologies

During the preparation and revision of this manuscript, the corresponding author used OpenAI ChatGPT (GPT-5.6) for language editing, formatting support, and consistency checking. The AI-assisted output was reviewed and verified by the corresponding author, with necessary edits made before incorporation into the manuscript. All authors take full responsibility for the final manuscript. The tool was not used to generate, alter, select, or execute the reported experimental results.

References
@article{1, title={Fair consumer outcomes in the balance: Data driven analysis of distributed {PV} curtailment}, author={Stringer, N. and Haghdadi, N. and Bruce, A. and MacGill, I.}, journal={Renew. Energy}, volume={173}, pages={972--986}, year={2021}, doi={10.1016/j.renene.2021.04.020}, url={}}. [Crossref]
@article{2, title={Real-world data analysis of distributed {PV} and battery energy storage system curtailment in low voltage networks}, author={Yildiz, B. and Stringer, N. and Klymenko, T. and Syahman Samhan, M. and Abramowitz, G. and Bruce, A. and MacGill, I. and Egan, R. and Sproul, A. B.}, journal={Renew. Sustain. Energy Rev.}, volume={186}, pages={113696}, year={2023}, doi={10.1016/j.rser.2023.113696}, url={}}. [Crossref]
@article{3, title={Management of prosumers using dynamic export limits and shared community energy storage}, author={Zabihinia Gerdroodbari, Y. and Khorasany, M. and Razzaghi, R. and Heidari, R.}, journal={Appl. Energy}, volume={355}, pages={122222}, year={2024}, doi={10.1016/j.apenergy.2023.122222}, url={}}. [Crossref]
@article{4, title={Influence of high-resolution data on accurate curtailment loss estimation and optimal design of hybrid {PV}--wind power plants}, author={Klyve, {\O}. S. and Grab, R. and Olkkonen, V. and Marstein, E. S.}, journal={Appl. Energy}, volume={372}, pages={123784}, year={2024}, doi={10.1016/j.apenergy.2024.123784}, url={}}. [Crossref]
@article{5, title={Smart grid evolution: {P}redictive control of distributed energy resources---{A} review}, author={Babayomi, O. and Zhang, Z. and Dragi{\v{c}}evi{\'c}, T. and Hu, J. and Rodriguez, J.}, journal={Int. J. Electr. Power Energy Syst.}, volume={147}, pages={108812}, year={2023}, doi={10.1016/j.ijepes.2022.108812}, url={}}. [Crossref]
@article{6, title={Model predictive control for photovoltaic plants with non-ideal energy storage using mixed integer linear programming}, author={Cede{\~n}o, A. L. and L{\'o}pez Ahuar, R. and Rojas, J. and Carvajal, G. and Silva, C. and Ag{\"u}ero, J. C.}, journal={Energies}, volume={15}, number={17}, pages={6427}, year={2022}, doi={10.3390/en15176427}, url={}}. [Crossref]
@article{7, title={Stochastic model predictive control of photovoltaic battery systems using a probabilistic forecast model}, author={Gro{\ss}, A. and Wittwer, C. and Diehl, M.}, journal={Eur. J. Control}, volume={56}, pages={254--264}, year={2020}, doi={10.1016/j.ejcon.2020.02.004}, url={}}. [Crossref]
@article{8, title={The value of solar forecasts and the cost of their errors: {A} review}, author={Gandhi, O. and Zhang, W. and Kumar, D. S. and Rodr{\'i}guez-Gallegos, C. D. and Yagli, G. M. and Yang, D. and Reindl, T. and Srinivasan, D.}, journal={Renew. Sustain. Energy Rev.}, volume={189}, pages={113915}, year={2024}, doi={10.1016/j.rser.2023.113915}, url={}}. [Crossref]
@article{9, title={Task-based end-to-end model learning in stochastic optimization}, author={Donti, P. and Amos, B. and Kolter, J. Z.}, booktitle={Advances in Neural Information Processing Systems}, pages={5485--5495}, year={2017}, address={Long Beach, CA, USA}}.
@article{10, title={Smart ``predict, then optimize''}, author={Elmachtoub, A. N. and Grigas, P.}, journal={Manage. Sci.}, volume={68}, number={1}, pages={9--26}, year={2022}, doi={10.1287/mnsc.2020.3922}, url={}}. [Crossref]
@article{11, title={The cost of photovoltaic forecasting errors in microgrid control with peak pricing}, author={Schmitt, T. and Rodemann, T. and Adamy, J.}, journal={Energies}, volume={14}, number={9}, pages={2569}, year={2021}, doi={10.3390/en14092569}, url={}}. [Crossref]
@article{12, title={Decision-focused learning for optimal {PV}-battery scheduling}, author={Depoortere, J. and Kazmi, H. and Driesen, J.}, journal={J. Energy Storage}, volume={154}, number={part A}, pages={121152}, year={2026}, doi={10.1016/j.est.2026.121152}, url={}}. [Crossref]
@article{13, title={Smart predict-then-optimize-based model predictive control for virtual power plants with battery storage}, author={Zheng, W. and Liu, L. and Li, S. and Zhang, Z. and Zhao, P. and Li, T. and Zhang, X. and Wang, Z.}, journal={J. Energy Storage}, volume={142}, pages={119606}, year={2026}, doi={10.1016/j.est.2025.119606}, url={}}. [Crossref]
@article{14, title={A novel forecast-based operation strategy for residential {PV}-battery-flexible loads systems considering the flexibility of battery and loads}, author={Luo, Z. and Peng, J. and Tan, Y. and Yin, R. and Zou, B. and Hu, M. and Yan, J.}, journal={Energy Convers. Manage.}, volume={278}, pages={116705}, year={2023}, doi={10.1016/j.enconman.2023.116705}, url={}}. [Crossref]
@article{15, title={Bayesian probabilistic photovoltaic power forecasting and stochastic model-predictive control for an agricultural microgrid}, author={Brown, P. and G{\"o}l, M.}, journal={Sol. Energy}, volume={304}, pages={114197}, year={2026}, doi={10.1016/j.solener.2025.114197}, url={}}. [Crossref]
@article{16, title={An analysis of multi objective energy scheduling in {PV}-{BESS} system under prediction uncertainty}, author={Nair, U. R. and Sandelic, M. and Sangwongwanich, A. and Dragi{\v{c}}evi{\'c}, T. and Costa-Castell{\'o}, R. and Blaabjerg, F.}, journal={IEEE Trans. Energy Convers.}, volume={36}, number={3}, pages={2276--2286}, year={2021}, doi={10.1109/TEC.2021.3055453}, url={}}. [Crossref]
@article{17, title={{ECMWF} {IFS} {ENS} forecast, 15 day, 0.25 degree}, author={{dynamical.org}}, url={https://dynamical.org/catalog/ecmwf-ifs-ens-forecast-15-day-0-25-degree/}}.
@article{18, title={Energy management and optimization of renewable energy communities with flexible load coordination and shared energy utilization}, author={Bianco, N. and Di Somma, M.}, journal={Power Eng. Eng. Thermophys.}, volume={5}, number={2}, pages={95--111}, year={2026}, doi={10.56578/peet050202}, url={}}. [Crossref]
@article{19, title={Enhancing sustainability in {H}opedale, {N}ewfoundland and {L}abrador, through hybrid microgrid system design}, author={Maliat, A. and Kotian, S. and Shirinnezhad, S. and Ghahremanlou, D.}, journal={Power Eng. Eng. Thermophys.}, volume={3}, number={1}, pages={58--76}, year={2024}, doi={10.56578/peet030105}, url={}}. [Crossref]
@article{20, title={{MPC}-driven optimal scheduling of grid-connected microgrid: {C}ost and degradation minimization with {PEVs} integration}, author={Nawaz, A. and Wang, D. and Mahmoudi, A. and Khan, M. Q. and Wang, X. and Wang, B. and Wang, X.}, journal={Electr. Power Syst. Res.}, volume={238}, pages={111173}, year={2025}, doi={10.1016/j.epsr.2024.111173}, url={}}. [Crossref]
Nomenclature

BESS

Battery energy storage system

ECMWF

European Centre for Medium-Range Weather Forecasts

ENS

Ensemble forecast

HGB

Histogram gradient boosting

IFS

Integrated Forecasting System

MAE

Mean absolute error

MILP

Mixed-integer linear programming

MPC

Model predictive control

NWP

Numerical weather prediction

POI

Point of interconnection

PV

Photovoltaic

RMSE

Root mean square error

SHA‑256

Secure Hash Algorithm 256-bit

SOC

State of charge

UTC

Coordinated Universal Time

Supplementary Information/Materials
Download

Cite this:
APA Style
IEEE Style
BibTex Style
MLA Style
Chicago Style
GB-T-7714-2015
Jendeya, A. M. & Babazade, I. S. (2026). Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage. Power Eng. Eng Thermophys., 5(4), 295-309. https://doi.org/10.56578/peet050404
A. M. Jendeya and I. S. Babazade, "Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage," Power Eng. Eng Thermophys., vol. 5, no. 4, pp. 295-309, 2026. https://doi.org/10.56578/peet050404
@research-article{Jendeya2026ConstraintAR,
title={Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage},
author={Ahmed M. Jendeya and Ikram S. Babazade},
journal={Power Engineering and Engineering Thermophysics},
year={2026},
page={295-309},
doi={https://doi.org/10.56578/peet050404}
}
Ahmed M. Jendeya, et al. "Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage." Power Engineering and Engineering Thermophysics, v 5, pp 295-309. doi: https://doi.org/10.56578/peet050404
Ahmed M. Jendeya and Ikram S. Babazade. "Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage." Power Engineering and Engineering Thermophysics, 5, (2026): 295-309. doi: https://doi.org/10.56578/peet050404
JENDEYA A M, BABAZADE I S. Constraint Audited Receding Horizon Dispatch for Curtailment Recovery in Export Capped Utility Scale Photovoltaic Plants With Battery Energy Storage[J]. Power Engineering and Engineering Thermophysics, 2026, 5(4): 295-309. https://doi.org/10.56578/peet050404
cc
©2026 by the author(s). Published by Acadlore Publishing Services Limited, Hong Kong. This article is available for free download and can be reused and cited, provided that the original published version is credited, under the CC BY 4.0 license.