Mathematical Formulation¶
Here we present the mathematical formulation of the optimization problem solved by the oHySEM model.
Acronyms¶
Acronym |
Description |
|---|---|
BESS |
Battery Energy Storage System |
DA |
Day-Ahead Market |
ESS |
Energy Storage System (includes BESS and HESS) |
H-VPP |
Hydrogen-based Virtual Power Plant |
HESS |
Hydrogen Energy Storage System |
ID |
Intraday Markets |
RT |
Real Time Market |
SoC |
State of Charge |
VRE |
Variable Renewable Energy |
Indices¶
Index |
Description |
|---|---|
\(ω\) |
Scenario (e.g., solar generation, ID prices, etc.) |
\(nd\) |
Node |
\(n\) |
Load level |
\(\nu\) |
Duration of the time step for the load levels (e.g., 0.25 h for 15 min load levels, 0.5 h for half an hour load levels) |
\(eg\) |
Electricity unit (thermal or hydro unit or ESS) |
\(et\) |
Electricity thermal unit |
\(es\) |
Electricity energy storage system (eESS) |
\(hg\) |
Hydrogen unit (e.g., electrolyzer, hydrogen tank) |
\(hz\) |
Hydrogen electrolyzer |
\(hs\) |
Hydrogen energy storage system (e.g., hydrogen tank) |
\(R_i\) |
Reserve market number \(i\) (secondary and tertiary) |
\(k\) |
Segment of production function piecewise approximation |
Parameters¶
They are written in uppercase letters.
Demand |
Description |
Unit |
oHySEM.py |
\(ED_{nnd}\) |
Electricity demand |
GW |
« |
\(HD_{nnd}\) |
Hydrogen demand |
kgH2 |
« |
\(DUR_n\) |
Duration of each load level |
h |
« |
\(CEB_{nnd}, PES^{DA}_{nnd}\) |
Cost/price of electricity bought/sold |
€/MWh |
« |
\(CHB_{nnd}, PHS^{DA}_{nnd}\) |
Cost/price of hydrogen bought/sold |
€/kgH2 |
« |
\(UP^{SR}_{n}, DP^{SR}_{n}\) |
Price of \(SR\) upward and downward secondary reserve |
€/MW |
« |
\(UR^{SR}_{n}, DR^{SR}_{n}\) |
Requirement for \(SR\) upward and downward secondary reserve |
€/MW |
« |
\(UEI^{TR}_{n}, DEI^{TR}_{n}\) |
Expected income of \(TR\) upward and downward tertiary reserve |
€/MW |
« |
\(CENS\) |
Cost of electricity not served. Value of Lost Load (VoLL) |
€/MWh |
« |
\(CHNS\) |
Cost of hydrogen not served. |
€/tH2 |
« |
Scenarios |
Description |
Unit |
oHySEM.py |
\(P^ω\) |
Probability of each scenario |
p.u. |
« |
Generation system |
Description |
Unit |
oHySEM.py |
\(\underline{EP}_{neg}, \overline{EP}_{neg}\) |
Minimum and maximum electricity generation of a generator |
MWh |
« |
\(\widehat{EP}_{neg}\) |
Last update of the position in the market of the electricity generation of a generator |
MWh |
« |
\(\underline{EC}_{neg}, \overline{EC}_{neg}\) |
Minimum and maximum electricity consumption of an ESS |
MWh |
« |
\(\overline{EC}^{comp}_{nhs}\) |
Maximum electricity consumption of a compressor unit to compress hydrogen |
MWh |
« |
\(\overline{EC}^{standby}_{nhz}\) |
Maximum electricity consumption of an electrolyzer unit during the standby mode |
MWh |
« |
\(\widehat{EC}_{neg}\) |
Last update of the position in the market of the electricity consumption of a generator |
MWh |
« |
\(\underline{EI}_{neg}, \overline{EI}_{neg}\) |
Maximum and minimum electricity storage of an ESS |
MWh |
« |
\(\underline{EEO}_{neg}, \overline{EEO}_{neg}\) |
Maximum and minimum electricity outflows of an ESS (e.g., kg of H2) |
MW |
« |
\(\underline{EEI}_{neg}, \overline{EEI}_{neg}\) |
Maximum and minimum electricity inflows of an ESS |
MW |
« |
\(\underline{HP}_{nhg}, \overline{HP}_{nhg}\) |
Minimum and maximum hydrogen generation of a generator |
kgH2 |
« |
\(\widehat{HP}_{nhg}\) |
Last update of the position in the market of the hydrogen generation of a generator |
MWh |
« |
\(\underline{HC}_{nhg}, \overline{HC}_{nhg}\) |
Minimum and maximum hydrogen consumption of an ESS |
kgH2 |
« |
\(\widehat{HC}_{nhg}\) |
Last update of the position in the market of the hydrogen consumption of a generator |
kgH2 |
« |
\(\underline{HI}_{nhg}, \overline{HI}_{nhg}\) |
Maximum and minimum hydrogen storage of an ESS |
kgH2 |
« |
\(\underline{HEO}_{nhg}, \overline{HEO}_{nhg}\) |
Maximum and minimum hydrogen outflows of an ESS |
kgH2 |
« |
\(\underline{HEI}_{nhg}, \overline{HEI}_{nhg}\) |
Maximum and minimum hydrogen inflows of an ESS (e.g., kg of H2) |
kgH2 |
« |
\(CF_g, CV_g\) |
Fixed and variable cost of an electricity generator. Variable cost includes fuel, O&M and emission cost |
€/h, €/MWh |
« |
\(RU_t, RD_t\) |
Ramp up and ramp down of an electricity thermal unit |
MW/h |
« |
\(RC^{+}_{hz}, RC^{-}_{hz}\) |
Ramp up and ramp down of a hydrogen unit |
kgH2/h |
« |
\(TU_t, TD_t\) |
Minimum uptime and downtime of an electricity thermal unit |
h |
« |
\(CSU_g, CSD_g\) |
Startup and shutdown cost of an electricity committed unit |
M€ |
« |
\(CRU_h, CRD_h\) |
Ramp up and ramp down cost of a hydrogen unit |
M€/MWh |
« |
\(EF_e\) |
Round-trip efficiency of the charge/discharge of an electricity ESS |
p.u. |
« |
\(EF_h\) |
Round-trip efficiency of the charge/discharge of a hydrogen ESS |
p.u. |
« |
\(PF_{he}\) |
Production function of electricity from hydrogen |
kWh/kgH2 |
« |
\(PF1_{ehk}\) |
Intercept of piecewise Production function of hydrogen from electricity |
kgH2/kWh « |
|
\(PF2_{ehk}\) |
slope of piecewise Production function of hydrogen from electricity |
||
\(URA^{SR}_{n}, DRA^{SR}_{n}\) |
\(SR\) upward and downward activation |
p.u. |
« |
\(URA^{TR}_{n}, DRA^{TR}_{n}\) |
\(TR\) upward and downward activation |
p.u. |
« |
Network system |
Description |
Unit |
oHySEM.py |
\(\underline{ENF}_{nijc}, \overline{ENF}_{nijc}\) |
Minimum and maximum electricity network flow through the line ijc |
MWh |
« |
\(\underline{HNF}_{nijc}, \overline{HNF}_{nijc}\) |
Minimum and maximum hydrogen network flow through the line ijc |
MWh |
« |
\(\overline{X}_{nijc}\) |
Reactance of the line ijc |
p.u. |
« |
Variables¶
They are written in lowercase letters.
Demand |
Description |
Unit |
oHySEM.py |
\(e^{b}_{nnd}, e^{s}_{nnd}\) |
Electricity bought and sold in the electricity market |
GW |
« |
\(ens_{nnd}\) |
Electricity not served |
GW |
« |
\(ed_{nnd}\) |
Electricity demand |
GW |
« |
\(ed^{\Delta}_{nnd}\) |
Electricity demand due to market correction |
GW |
« |
\(h^{b}_{nnd}, h^{s}_{nnd}\) |
Hydrogen bought and sold in the hydrogen market |
kgH2 |
« |
\(hns_{nnd}\) |
Hydrogen not served |
kgH2 |
« |
\(hd_{nnd}\) |
Hydrogen demand |
kgH2 |
« |
\(hd^{\Delta}_{nnd}\) |
Hydrogen demand due to market correction |
kgH2 |
« |
Generation system |
Description |
Unit |
oHySEM.py |
\(ep_{neg}\) |
Electricity production (discharge if an ESS) |
GW |
« |
\(ec_{nes}, ec_{nhz}\) |
Electricity consumption of electricity ESS and electrolyzer units |
GW |
« |
\(ep2b_{neg}\) |
Electricity production of the second block (i.e., above the minimum load) |
GW |
« |
\(ec2b_{nes}, ec2b_{nhz}\) |
Electricity charge of the second block (i.e., above the minimum charge) |
GW |
« |
\(ep^{\Delta}_{neg}\) |
Electricity production (discharge if an ESS) for market correction |
GW |
« |
\(ec^{\Delta}_{nes}, ec^{\Delta}_{nhz}\) |
Electricity consumption of electricity ESS and electrolyzer units for market correction |
GW |
« |
\(ec^{R+}_{nes}, ec^{R+}_{nhz}\) |
Positive ramp of electricity consumption of an ESS and electrolyzer |
GW |
« |
\(ec^{R-}_{nes}, ec^{R-}_{nhz}\) |
Negative ramp of electricity consumption of an ESS and electrolyzer |
GW |
« |
\(eei_{nes}\) |
Electricity inflows of an ESS |
GWh |
« |
\(eeo_{nes}\) |
Electricity outflows of an ESS |
GWh |
« |
\(esi_{nes}\) |
Electricity ESS stored energy (inventory, SoC for batteries) |
GWh |
« |
\(ess_{nes}\) |
Electricity ESS spilled energy |
GWh |
« |
\(hp_{nhg}\) |
Hydrogen production (discharge if an ESS) |
kgH2 |
« |
\(hc_{nhs}, hc_{neg}\) |
Hydrogen consumption of hydrogen ESS and electricity thermal units |
kgH2 |
« |
\(hp2b_{nhg}\) |
Hydrogen production of the second block (i.e., above the minimum load) |
kgH2 |
« |
\(hc2b_{nhs}, hc2b_{neg}\) |
Hydrogen charge of the second block (i.e., above the minimum charge) |
kgH2 |
« |
\(hp^{\Delta}_{nhg}\) |
Hydrogen production (discharge if an ESS) for market correction |
kgH2 |
« |
\(hc^{\Delta}_{nhs}, hc^{\Delta}_{neg}\) |
Hydrogen consumption of hydrogen ESS and electricity thermal units for market correction |
kgH2 |
« |
\(hei_{nhs}\) |
Hydrogen inflows of an ESS |
GWh |
« |
\(heo_{nhs}\) |
Hydrogen outflows of an ESS |
GWh |
« |
\(hsi_{nhs}\) |
Hydrogen ESS stored energy (inventory, SoC for batteries) |
GWh |
« |
\(hss_{nhs}\) |
Hydrogen ESS spilled energy |
GWh |
« |
\(ec^{Comp}_{nhs}\) |
Electricity consumption of a compressor unit to compress hydrogen |
kgH2 |
« |
\(ec^{StandBy}_{nhz}\) |
Electricity consumption of a electrolyzer unit during the standby mode |
kgH2 |
« |
\(up^{SR}_{neg}, dp^{SR}_{neg}\) |
Upward and downward \(SR\) operating reserves of a generating or ESS unit |
GW |
« |
\(uc^{SR}_{nes}, dc^{SR}_{nes}\) |
Upward and downward \(SR\) operating reserves of an ESS as a consumption unit |
GW |
« |
\(up^{TR}_{ωneg}, dp^{TR}_{ωneg}\) |
Upward and downward \(TR\) operating reserves of a generating or ESS unit |
GW |
« |
\(uc^{TR}_{ωnes}, dc^{TR}_{ωnes}\) |
Upward and downward \(TR\) operating reserves of an ESS as a consumption unit |
GW |
« |
\(euc_{neg}, esu_{neg}, esd_{neg}\) |
Commitment, startup and shutdown of electricity generation unit per load level |
{0,1} |
« |
\(euc^{max}_{neg}\) |
Maximum commitment of electricity generation unit per load level |
{0,1} |
« |
\(huc_{nhg}\) |
Commitment of hydrogen generation unit per load level |
{0,1} |
« |
\(huc^{max}_{nhg}\) |
Maximum commitment of hydrogen generation unit per load level |
{0,1} |
« |
\(esf_{nes}\) |
Electricity ESS energy functioning per load level, charging or discharging |
{0,1} |
« |
\(hsf_{nhs}\) |
Hydrogen ESS energy functioning per load level, charging or discharging |
{0,1} |
« |
\(hcf_{nhs}\) |
Hydrogen compressor functioning, off or on |
{0,1} |
« |
\(hsb_{nhg}\) |
Hydrogen electrolyzer StandBy mode, off or on |
{0,1} |
« |
Network system |
Description |
Unit |
oHySEM.py |
\(ef_{nijc}\) |
Electricity transmission flow through a line |
GW |
« |
\(hf_{nijc}\) |
Hydrogen transmission flow through a pipeline |
kgH2 |
« |
\(theta_{ni}\) |
Voltage angle of a node |
rad |
« |
Equations¶
This formulation corresponds to a Rolling horizon optimization problem to schedule the operation of the electricity and hydrogen systems in a multi-energy system. The model is enabled to consider previous information from the Day-Ahead (DA) market, Intraday (ID) markets, and Real-Time (RT) market, and correct the market positions of the systems. The model is solved using a rolling horizon approach: once the DA market is cleared, the model is solved for the next ID markets, and so on.
Objective function: minimization of operation cost for the scope of the model
Market variable cost in [M€] («eTotalMCost»)
\(\sum_{nnd}DUR_n (CEB_{nnd} e^{b}_{nnd} - PES_{nnd} e^{s}_{nnd} + CHB_{nnd} h^{b}_{nnd} - PHS_{nnd} h^{s}_{nnd} + CENS ens_{nnd} + CHNS hns_{nnd}) +\)
Generation operation cost [M€] («eTotalGCost»)
\(\sum_{neg}DUR_n (CV_g ep_{neg} + CF_g euc_{neg} + CF_h (huc_{nhz} - hsb_{nhz}) + CRU_h ec^{R+}_{nhz} + CSU_g esu_{neg} + CSD_g esd_{neg} + CSU_h hsu_{nhz} + CSD_h hsd_{nhz}) +\)
Generation emission cost [M€] («eTotalECost»)
\(\sum_{neg}DUR_n CE_g ep_{neg} +\)
Consumption operation cost [M€] («eTotalCCost»)
\(\sum_{n}DUR_n (\sum_{es} CV_{es} ec_{nes} + \sum_{hz} CV_{hz} ec_{nhz}) -\)
Operation reserve revenue [M€] («eTotalRCost»)operation
\(\sum_{neg} UP^{SR}_{n} up^{SR}_{neg} + DP^{SR}_{n} dp^{SR}_{neg} + DUR_n (UEI^{SR}_{n} URA^{SR}_{n} up^{SR}_{neg} + DEI^{SR}_{n} DRA^{SR}_{n} dp^{SR}_{neg} + UEI^{TR}_{n} URA^{TR}_{n} up^{TR}_{neg} + DEI^{TR}_{n} DRA^{TR}_{n} dp^{TR}_{neg}) +\)
\(\sum_{nes} UP^{SR}_{n} uc^{SR}_{nes} + DP^{SR}_{n} dc^{SR}_{nes} + DUR_n (UEI^{SR}_{n} URA^{SR}_{n} uc^{SR}_{nes} + DEI^{SR}_{n} DRA^{SR}_{n} dc^{SR}_{nes} + UEI^{TR}_{n} URA^{TR}_{n} uc^{TR}_{nes} + DEI^{TR}_{n} DRA^{TR}_{n} dc^{TR}_{nes}) +\)
Constraints¶
Corrections of the units in the electricity and hydrogen markets:
Electricity production («
eMarketCorrectionEleProd»)
\(ep_{neg} = \widehat{EP}_{neg} + ep^{\Delta}_{neg} \quad \forall neg\)
Electricity consumption («
eMarketCorrectionEleCharge»)
\(ec_{nes} = \widehat{EC}_{nes} + ec^{\Delta}_{nes} \quad \forall nes\)
Hydrogen production («
eMarketCorrectionHydProd»)
\(ec_{nhz} = \widehat{EC}_{nhz} + ec^{\Delta}_{nhz} \quad \forall nhz\)
Hydrogen consumption («
eMarketCorrectionHydCharge»)
\(hp_{neg} = \widehat{HP}_{nhg} + hp^{\Delta}_{nhg} \quad \forall nhg\)
Electricity consumption («
eMarketCorrectionEleCharge»)
\(hc_{nes} = \widehat{HC}_{nhs} + hc^{\Delta}_{nhs} \quad \forall nhs\)
Hydrogen demand («
eMarketCorrectionHydDemand»)
\(hc_{net} = \widehat{HC}_{net} + hc^{\Delta}_{net} \quad \forall net\)
Electricity balance of generation and demand [GW] («eElectricityBalance»)
\(\sum_{g\in nd} ep_{neg} - \sum_{es\in nd} ec_{nes} - \sum_{hz\in nd} (ec_{nhz} + ec^{StandBy}_{nhz}) - \sum_{hs\in nd} (ec^{Comp}_{nhs}) + ens_{nnd} + eb_{nnd} - es_{nnd} = ED_{nnd} + \sum_{jc} ef_{nndjc} - \sum_{jc} ef_{njndc} \quad \forall nnd\)
Hydrogen balance of generation and demand [GW] («eHydrogenBalance»)
\(\sum_{h\in nd} hp_{nhg} - \sum_{hs\in nd} hc_{nhs} - \sum_{g\in nd} hc_{net} + hns_{nnd} + hb_{nnd} - hs_{nnd} = HD_{nnd} + \sum_{jc} hf_{nndjc} - \sum_{jc} hf_{njndc} \quad \forall nnd\)
Upward and downward operating secondary reserves provided by non-renewable generators, and ESS when charging for each area [GW] («eReserveRequire_Up_SR, eReserveRequire_Dw_SR»)
\(\sum_{neg} up^{SR}_{neg} + \sum_{nes} uc^{SR}_{nes} \leq UR^{SR}_{n} \quad \forall n\)
\(\sum_{neg} dp^{SR}_{neg} + \sum_{nes} dc^{SR}_{nes} \leq DR^{SR}_{n} \quad \forall n\)
Upward and downward operating tertiary reserves provided by non-renewable generators, and ESS when charging for each area [GW] («eReserveRequire_Up_TR, eReserveRequire_Dw_TR»)
\(\sum_{neg} up^{TR}_{neg} + \sum_{nes} uc^{TR}_{nes} \leq UR^{TR}_{n} \quad \forall n\)
\(\sum_{neg} dp^{TR}_{neg} + \sum_{nes} dc^{TR}_{nes} \leq DR^{TR}_{n} \quad \forall n\)
operating reserves from ESS can only be provided if enough energy is available for producing [GW] («eReserveUpIfEnergyProd, eReserveDwIfEnergyProd»)
\(URA^{SR}_{n}up^{SR}_{nes} + URA^{TR}_{n}up^{TR}_{nes} \leq \frac{ esi_{nes}}{DUR_n} \quad \forall nes\)
\(DRA^{SR}_{n}dp^{SR}_{nes} + DRA^{TR}_{n}dp^{TR}_{nes} \leq \frac{\overline{EI}_{nes} - esi_{nes}}{DUR_n} \quad \forall nes\)
or for storing [GW] («eReserveUpIfEnergyCons, eReserveDwIfEnergyCons»)
\(URA^{SR}_{n}uc^{SR}_{nes} + URA^{TR}_{n}uc^{TR}_{nes} \leq \frac{\overline{EI}_{nes} - esi_{nes}}{DUR_n} \quad \forall nes\)
\(DRA^{SR}_{n}dc^{SR}_{nes} + DRA^{TR}_{n}dc^{TR}_{nes} \leq \frac{ esi_{nes}}{DUR_n} \quad \forall nes\)
Maximum and minimum relative inventory of ESS (only for load levels multiple of 1, 24, 168, 8736 h depending on the ESS storage type) constrained by the ESS commitment decision times the maximum capacity [p.u.] («eMaxInventory2Comm, eMinInventory2Comm»)
\(\frac{esi_{nes}}{\overline{EI}_{nes}} \leq euc_{nes} \quad \forall nes\)
\(\frac{esi_{nes}}{\underline{EI}_{nes}} \geq euc_{nes} \quad \forall nes\)
\(\frac{hsi_{nhs}}{\overline{HI}_{nhs}} \leq huc_{nhs} \quad \forall nhs\)
\(\frac{hsi_{nhs}}{\underline{HI}_{nhs}} \geq huc_{nhs} \quad \forall nhs\)
Energy inflows of ESS (only for load levels multiple of 1, 24, 168, 8736 h depending on the ESS storage type) constrained by the ESS commitment decision times the inflows data [p.u.] («eMaxInflows2Commitment, eMinInflows2Commitment»)
\(\frac{eei_{nes}}{EEI_{nes}} \leq euc_{nes} \quad \forall nes\)
\(\frac{hei_{nhs}}{HEI_{nhs}} \leq huc_{nhs} \quad \forall nhs\)
ESS energy inventory (only for load levels multiple of 1, 24, 168 h depending on the ESS storage type) [GWh] («eEleInventory, eHydInventory»)
\(esi_{n-\frac{\tau_e}{\nu},es} + \sum_{n' = n-\frac{\tau_e}{\nu}}^n DUR_{n'} (eei_{n'es} - eeo_{n'es} - ep_{n'es} + EF_{es} ec_{n'es}) = esi_{nes} + ess_{nes} \quad \forall nes\)
\(hsi_{n-\frac{\tau_h}{\nu},hs} + \sum_{n' = n-\frac{\tau_h}{\nu}}^n DUR_{n'} (hei_{n'hs} - heo_{n'hs} - hp_{n'hs} + EF_{hs} hc_{n'hs}) = hsi_{nhs} + hss_{nhs} \quad \forall nhs\)
Energy conversion from energy from electricity to hydrogen and vice versa [p.u.] («eAllEnergy2Ele, eAllEnergy2Hyd»)
\(ep_{neg} = PF_{he} hc_{neg} \quad \forall neg\)
\(hp_{nhz} \leq PF1_{ehk} + PF2_{ehk} gc_{nhz} \quad \forall nhz\)
Relationship between electricity outflows and commitment of the units [p.u.] («eMaxEleOutflows2Commitment, eMinEleOutflows2Commitment»)
\(\frac{eeo_{nes}}{\overline{EEO}_{nes}} \leq euc_{nes} \quad \forall nes\)
\(\frac{eeo_{nes}}{\underline{EEO}_{nes}} \geq euc_{nes} \quad \forall nes\)
Relationship between hydrogen outflows and commitment of the units [p.u.] («eMaxHydOutflows2Commitment, eMinHydOutflows2Commitment»)
\(\frac{heo_{nhs}}{\overline{HEO}_{nhs}} \leq huc_{nhs} \quad \forall nhs\)
\(\frac{heo_{nhs}}{\underline{HEO}_{nhs}} \geq huc_{nhs} \quad \forall nhs\)
ESS electricity outflows (only for load levels multiple of 1, 24, 168, 672, and 8736 h depending on the ESS outflow cycle) must be satisfied [GWh] («eEleEnergyOutflows»)
\(\sum_{n' = n-\frac{\tau_e}{\rho_e}}^n DUR_{n'} (eeo_{n'es} - EEO_{n'es}) = 0 \quad \forall nes, n \in \rho_e\)
ESS hydrogen minimum and maximum outflows (only for load levels multiple of 1, 24, 168, 672, and 8736 h depending on the ESS outflow cycle) must be satisfied [GWh] («eHydMinEnergyOutflows, eHydMaxEnergyOutflows»)
\(\sum_{n' = n-\frac{\tau_h}{\rho_h}}^n DUR_{n'} (heo_{n'hs} - HEO_{n'hs}) \geq 0 \quad \forall nhs, n \in \rho_h\)
\(\sum_{n' = n-\frac{\tau_h}{\rho_h}}^n DUR_{n'} (heo_{n'hs} - HEO_{n'hs}) \leq 0 \quad \forall nhs, n \in \rho_h\)
Demand cycle target [GWh] («eHydDemandCycleTarget»)
\(\sum_{n' = n-\frac{\tau_d}{\nu}}^n DUR_{n'} (hd_{n'nd} - HD_{n'nd}) = 0 \quad \forall nnd, n \in \rho_d\)
Maximum and minimum electricity generation of the second block of a committed unit (all except the VRE and ESS units) [p.u.] («eMaxEleOutput2ndBlock, eMinEleOutput2ndBlock»)
D.A. Tejada-Aranego, S. Lumbreras, P. Sánchez-Martín, and A. Ramos “Which Unit-Commitment Formulation is Best? A Systematic Comparison” IEEE Transactions on Power Systems 35 (4):2926-2936 Jul 2020 10.1109/TPWRS.2019.2962024
Gentile, G. Morales-España, and A. Ramos “A tight MIP formulation of the unit commitment problem with start-up and shut-down constraints” EURO Journal on Computational Optimization 5 (1), 177-201 Mar 2017. 10.1007/s13675-016-0066-y
Morales-España, A. Ramos, and J. Garcia-Gonzalez “An MIP Formulation for Joint Market-Clearing of Energy and Reserves Based on Ramp Scheduling” IEEE Transactions on Power Systems 29 (1): 476-488, Jan 2014. 10.1109/TPWRS.2013.2259601
Morales-España, J.M. Latorre, and A. Ramos “Tight and Compact MILP Formulation for the Thermal Unit Commitment Problem” IEEE Transactions on Power Systems 28 (4): 4897-4908, Nov 2013. 10.1109/TPWRS.2013.2251373
\(\frac{ep2b_{net} + up^{SR}_{net} + up^{TR}_{net}}{\overline{EP}_{net} - \underline{EP}_{net}} \leq euc_{net} \quad \forall net\)
\(\frac{ep2b_{net} - dp^{SR}_{net} - dp^{TR}_{net}}{\overline{EP}_{net} - \underline{EP}_{net}} \geq 0 \quad \forall net\)
Maximum and minimum hydrogen generation of the second block of a committed unit [p.u.] («eMaxHydOutput2ndBlock, eMinHydOutput2ndBlock»)
\(\frac{hp2b_{nhg}}{\overline{HP}_{nhg} - \underline{HP}_{nhg}} \leq huc_{nhg} \quad \forall nhg\)
\(\frac{hp2b_{nhg}}{\overline{HP}_{nhg} - \underline{HP}_{nhg}} \geq 0 \quad \forall nhg\)
Maximum and minimum discharge of the second block of an electricity ESS [p.u.] («eMaxEleESSOutput2ndBlock, eMinEleESSOutput2ndBlock»)
\(\frac{ep2b_{nes} + up^{SR}_{nes} + up^{TR}_{nes}}{\overline{EP}_{nes} - \underline{EP}_{nes}} \leq 1 \quad \forall nes\)
\(\frac{ep2b_{nes} - dp^{SR}_{nes} - dp^{TR}_{nes}}{\overline{EP}_{nes} - \underline{EP}_{nes}} \geq 0 \quad \forall nes\)
Maximum and minimum discharge of the second block of a hydrogen ESS [p.u.] («eMaxHydESSOutput2ndBlock, eMinHydESSOutput2ndBlock»)
\(\frac{hp2b_{nhs}}{\overline{HP}_{nhs} - \underline{HP}_{nhs}} \leq 1 \quad \forall nhs\)
\(\frac{hp2b_{nhs}}{\overline{HP}_{nhs} - \underline{HP}_{nhs}} \geq 0 \quad \forall nhs\)
Maximum and minimum charge of the second block of an electricity ESS [p.u.] («eMaxEleESSCharge2ndBlock, eMinEleESSCharge2ndBlock»)
\(\frac{ec2b_{nes} + dc^{SR}_{nes} + dc^{TR}_{nes}}{\overline{EC}_{nes} - \underline{EC}_{nes}} \leq 1 \quad \forall nes\)
\(\frac{ec2b_{nes} - uc^{SR}_{nes} - uc^{TR}_{nes}}{\overline{EC}_{nes} - \underline{EC}_{nes}} \geq 0 \quad \forall nes\)
Maximum and minimum charge of the second block of a hydrogen unit due to the energy conversion [p.u.] («eMaxEle2HydCharge2ndBlock, eMinEle2HydCharge2ndBlock»)
\(\frac{ec2b_{nhz} + dc^{SR}_{nhz} + dc^{TR}_{nhz}}{\overline{EC}_{nhz}} \leq 1 \quad \forall nhz\)
\(\frac{ec2b_{nhz} - uc^{SR}_{nhz} - uc^{TR}_{nhz}}{\overline{EC}_{nhz}} \geq 0 \quad \forall nhz\)
Maximum and minimum charge of the second block of a hydrogen ESS [p.u.] («eMaxHydESSCharge2ndBlock, eMinHydESSCharge2ndBlock»)
\(\frac{hc2b_{nhs}}{\overline{HC}_{nhs} - \underline{HC}_{nhs}} \leq 1 \quad \forall nhs\)
\(\frac{hc2b_{nhs}}{\overline{HC}_{nhs} - \underline{HC}_{nhs}} \geq 0 \quad \forall nhs\)
Incompatibility between charge and discharge of an ESS [p.u.] («eEleChargingDecision, eEleDischargingDecision»)
\(\frac{ec_{nes}}{\overline{EC}_{nes}} \leq esf_{nes} \quad \forall nes\)
\(\frac{ep_{nes}}{\overline{EP}_{nes}} \leq 1 - esf_{nes} \quad \forall nes\)
Upward operating reserve decision of an ESS when it is consuming and constrained by charging and discharging itself [p.u.] («eReserveConsChargingDecision_Up»)
\(\frac{uc^{SR}_{nes} + uc^{TR}_{nes}}{\overline{EC}_{nes}} \leq esf_{nes} \quad \forall nes\)
Upward operating reserve decision of an ESS when it is producing and constrained by charging and discharging itself [p.u.] («eReserveProdDischargingDecision_Up»)
\(\frac{up^{SR}_{nes} + up^{TR}_{nes}}{\overline{EP}_{nes}} \leq esf_{nes} \quad \forall nes\)
Downward operating reserve decision of an ESS when it is consuming and constrained by charging and discharging itself [p.u.] («eReserveConsChargingDecision_Dw»)
\(\frac{dc^{SR}_{nes} + dc^{TR}_{nes}}{\overline{EC}_{nes}} \leq 1 - esf_{nes} \quad \forall nes\)
Downward operating reserve decision of an ESS when it is producing and constrained by charging and discharging itself [p.u.] («eReserveProdDischargingDecision_Dw»)
\(\frac{dp^{SR}_{nes} + dp^{TR}_{nes}}{\overline{EP}_{nes}} \leq 1 - esf_{nes} \quad \forall nes\)
Energy stored for upward operating reserve in consecutive time steps when ESS is consuming [GWh] («eReserveConsUpConsecutiveTime»)
\(\sum_{n' = n-\frac{\tau_e}{\nu}}^n DUR_{n'} (uc^{SR}_{nes} + uc^{TR}_{nes}) \leq \overline{EC}_{nes} - esi_{nes} \quad \forall nes\)
Energy stored for downward operating reserve in consecutive time steps when ESS is consuming [GWh] («eReserveConsDwConsecutiveTime»)
\(\sum_{n' = n-\frac{\tau_e}{\nu}}^n DUR_{n'} (dc^{SR}_{nes} + dc^{TR}_{nes}) \leq esi_{nes} - \underline{EC}_{nes} \quad \forall nes\)
Energy stored for upward operating reserve in consecutive time steps when ESS is producing [GWh] («eReserveProdUpConsecutiveTime»)
\(\sum_{n' = n-\frac{\tau_e}{\nu}}^n DUR_{n'} (up^{SR}_{nes} + up^{TR}_{nes}) \leq \overline{EP}_{nes} - esi_{nes} \quad \forall nes\)
Energy stored for downward operating reserve in consecutive time steps when ESS is producing [GWh] («eReserveProdDwConsecutiveTime»)
\(\sum_{n' = n-\frac{\tau_e}{\nu}}^n DUR_{n'} (dp^{SR}_{nes} + dp^{TR}_{nes}) \leq esi_{nes} - \underline{EP}_{nes} \quad \forall nes\)
Incompatibility between charge and discharge of a hydrogen ESS [p.u.] («eHydChargingDecision, eHydDischargingDecision»)
\(\frac{hc_{nhs}}{\overline{HC}_{nhs}} \leq hsf_{nhs} \quad \forall nhs\)
\(\frac{hp_{nhs}}{\overline{HP}_{nhs}} \leq 1 - hsf_{nhs} \quad \forall nhs\)
Total generation of an electricity unit (all except the VRE units) [GW] («eEleTotalOutput»)
\(\frac{ep_{neg}}{\underline{EP}_{neg}} = euc_{neg} + \frac{ep2b_{neg} + URA^{SR}_{n}up^{SR}_{nes} + URA^{TR}_{n}up^{TR}_{nes} - DRA^{SR}_{n}dp^{SR}_{nes} - DRA^{TR}_{n}dp^{TR}_{nes}}{\underline{EP}_{neg}} \quad \forall neg\)
Total generation of a hydrogen unit [kgH2] («eHydTotalOutput»)
\(\frac{hp_{nhg}}{\underline{HP}_{nhg}} = huc_{nhg} + \frac{hp2b_{nhz}}{\underline{HP}_{nhg}} \quad \forall nh\)
Total charge of an electricity ESS [GW,kgH2] («eEleTotalCharge»)
\(\frac{ec_{nes}}{\underline{EC}_{nes}} = 1 + \frac{ec2b_{nes} - URA^{SR}_{n}uc^{SR}_{nes} - URA^{TR}_{n}uc^{TR}_{nes} + DRA^{SR}_{n}dc^{SR}_{nes} + DRA^{TR}_{n}dc^{TR}_{nes}}{\underline{EC}_{nes}} \quad \forall nes\)
Total charge of a hydrogen unit [kgH2] («eHydTotalCharge»)
\(\frac{hc_{nhs}}{\underline{HC}_{nhs}} = 1 + \frac{hc2b_{nhs}}{\underline{EC}_{nhs}} \quad \forall nhs\)
Incompatibility between charge and outflows use of an electricity ESS [p.u.] («eIncompatibilityEleChargeOutflows»)
\(\frac{eeo_{nes} + ec2b_{nes}}{\overline{EC}_{nes} - \underline{EC}_{nes}} \leq 1 \quad \forall nes\)
Incompatibility between charge and outflows use of a hydrogen ESS [p.u.] («eIncompatibilityHydChargeOutflows»)
\(\frac{heo_{nhs} + hc2b_{nhs}}{\overline{HC}_{nhs} - \underline{HC}_{nhs}} \leq 1 \quad \forall nhs\)
Logical relation between commitment, startup and shutdown status of a committed electricity unit (all except the VRE units) [p.u.] («eEleCommitmentStartupShutdown»)
Initial commitment of the units is determined by the model based on the merit order loading, including the VRE and ESS units.
\(euc_{neg} - euc_{n-\nu,g} = esu_{neg} - esd_{neg} \quad \forall neg\)
Maximum commitment of an electricity unit (all except the VRE units) [p.u.] («eEleMaxCommitment»)
\(euc_{neg} \leq sum_{n' = n-\nu-TU_t}^n euc^{max}_{n't} \quad \forall neg\)
Logical relation between commitment, startup and shutdown status of a committed hydrogen unit [p.u.] («eHydCommitmentStartupShutdown»)
\(huc_{nhg} - huc_{n-\nu,hg} = hsu_{nhg} - hsd_{nhg} \quad \forall nhg\)
Maximum ramp up and ramp down for the second block of a non-renewable (thermal, hydro) electricity unit [p.u.] («eMaxRampUpEleOutput, eMaxRampDwEleOutput»)
Damcı-Kurt, S. Küçükyavuz, D. Rajan, and A. Atamtürk, “A polyhedral study of production ramping,” Math. Program., vol. 158, no. 1–2, pp. 175–205, Jul. 2016. 10.1007/s10107-015-0919-9
\(\frac{- ep2b_{n-\nu,g} - dp^{SR}_{n-\nu,g} - dp^{TR}_{n-\nu,g} + ep2b_{neg} + up^{SR}_{neg} + up^{TR}_{neg}}{DUR_n RU_g} \leq euc_{neg} - esu_{neg} \quad \forall neg\)
\(\frac{- ep2b_{n-\nu,g} + up^{SR}_{n-\nu,g} + up^{TR}_{n-\nu,g} + ep2b_{neg} - dp^{SR}_{neg} - dp^{TR}_{neg}}{DUR_n RD_g} \geq - euc_{n-\nu,g} + esd_{neg} \quad \forall neg\)
Maximum ramp down and ramp up for the charge of an electricity ESS [p.u.] («eMaxRampUpEleCharge, eMaxRampDwEleCharge»)
\(\frac{- ec2b_{n-\nu,es} + dc^{SR}_{n-\nu,es} + dc^{TR}_{n-\nu,es} + ec2b_{nes} - uc^{SR}_{nes} - uc^{TR}_{nes}}{DUR_n RU_es} \geq - 1 \quad \forall nes\)
\(\frac{- ec2b_{n-\nu,es} - uc^{SR}_{n-\nu,es} - uc^{TR}_{n-\nu,es} + ec2b_{nes} + dc^{SR}_{nes} + dc^{TR}_{nes}}{DUR_n RD_es} \leq 1 \quad \forall nes\)
Maximum ramp up and ramp down for the second block of a hydrogen unit [p.u.] («eMaxRampUpHydOutput, eMaxRampDwHydOutput»)
\(\frac{- hp2b_{n-\nu,hg} + hp2b_{nhg}}{DUR_n RU_hg} \leq huc_{nhg} - hsu_{nhg} \quad \forall nhg\)
\(\frac{- hp2b_{n-\nu,hg} + hp2b_{nhg}}{DUR_n RD_hg} \geq - huc_{n-\nu,hg} + hsd_{nhg} \quad \forall nhg\)
Maximum ramp down and ramp up for the charge of a hydrogen ESS [p.u.] («eMaxRampUpHydCharge, eMaxRampDwHydCharge»)
\(\frac{- hc2b_{n-\nu,hs} + hc2b_{nhs}}{DUR_n RU_hs} \geq - 1 \quad \forall nhs\)
\(\frac{- hc2b_{n-\nu,hs} + hc2b_{nhs}}{DUR_n RD_hs} \leq 1 \quad \forall nhs\)
Maximum ramp up and ramp down for the outflows of a hydrogen ESS [p.u.] («eMaxRampUpHydOutflows, eMaxRampDwHydOutflows»)
\(\frac{- heo_{n-\nu,hs} + heo_{nhs}}{DUR_n RU_hs} \leq 1 \quad \forall nhs\)
\(\frac{- heo_{n-\nu,hs} + heo_{nhs}}{DUR_n RD_hs} \geq - 1 \quad \forall nhs\)
Ramp up and ramp down for the provision of demand to the hydrogen customers [p.u.] («eMaxRampUpHydDemand, eMaxRampDwHydDemand»)
\(\frac{- hd_{n-\nu,nd} + hd_{nnd}}{DUR_n RU_nd} \leq 1 \quad \forall nnd\)
\(\frac{- hd_{n-\nu,nd} + hd_{nnd}}{DUR_n RD_nd} \geq - 1 \quad \forall nnd\)
Differences between electricity consumption of two consecutive hours [GW] («eEleConsumptionDiff»)
\(-ec_{n-\nu,es} + ec_{nes} = RC^{+}_{hz} - RC^{-}_{hz}\)
Minimum up time and down time of thermal unit [h] («eMinUpTimeEle, eMinDownTimeEle»)
Rajan and S. Takriti, “Minimum up/down polytopes of the unit commitment problem with start-up costs,” IBM, New York, Technical Report RC23628, 2005. https://pdfs.semanticscholar.org/b886/42e36b414d5929fed48593d0ac46ae3e2070.pdf
\(\sum_{n'=n+\nu-TU_t}^n esu_{n't} \leq euc_{net} \quad \forall net\)
\(\sum_{n'=n+\nu-TD_t}^n esd_{n't} \leq 1 - euc_{net} \quad \forall net\)
Minimum up time and down time of hydrogen unit [h] («eMinUpTimeHyd, eMinDownTimeHyd»)
\(\sum_{n'=n+\nu-TU_h}^n hsu_{n'hg} \leq huc_{nhg} \quad \forall nhg\)
\(\sum_{n'=n+\nu-TD_h}^n hsd_{n'hg} \leq 1 - huc_{nhg} \quad \forall nhg\)
Decision variable of the operation of the compressor conditioned by the on/off status variable of itself [GWh] («eCompressorOperStatus»)
\(ec^{Comp}_{nhs} \geq hp_{nhz}/\overline{HP}_{nhz} \overline{EC}^{comp}_{nhs} - 1e-3 (1 - hcf_{nhs}) \quad \forall nhs\)
Decision variable of the operation of the compressor conditioned by the status of energy of the hydrogen tank [kgH2] («eCompressorOperInventory»)
\(hsi_{nhs} \leq \underline{HI}_{nhs} + (\overline{HI}_{nhs} - \underline{HI}_{nhs}) hcf_{nhs} \quad \forall nhs\)
StandBy status of the electrolyzer conditioning its electricity consumption [GWh] («eEleStandBy_consumption_UpperBound, eEleStandBy_consumption_LowerBound»)
\(ec^{StandBy}_{nhz} \geq \overline{EC}_{nhz} hsf_{nhz} \quad \forall nhz\)
\(ec^{StandBy}_{nhz} \leq \overline{EC}_{nhz} hsf_{nhz} \quad \forall nhz\)
StandBy status of the electrolyzer conditioning its hydrogen production [GWh] («eHydStandBy_production_UpperBound, eHydStandBy_production_LowerBound»)
\(ec^{StandBy}_{nhz} \geq \overline{EC}_{nhz} (1 - hsf_{nhz}) \quad \forall nhz\)
\(ec^{StandBy}_{nhz} \leq \underline{EC}_{nhz} (1 - hsf_{nhz}) \quad \forall nhz\)
Avoid transition status from off to StandBy of the electrolyzer [p.u.] («eHydAvoidTransitionOff2StandBy»)
\(hsf_{nhz} \leq huc_{nhz} \quad \forall nhz\)
Second Kirchhoff’s law for the electricity network [kgH2] («eKirchhoff2ndLaw»)
\(\frac{ef_{nijc}}{\overline{ENF}_{nijc}} - \frac{\theta_{ni} - \theta_{nj}}{\overline{X}_{nijc}\overline{ENF}_{nijc}} == 0 \quad \forall nijc\)
Bounds on variables [GW, kgH2]
\(0 \leq ep_{neg} \leq \overline{EP}_{neg} \quad \forall neg\)
\(-\widehat{EP}_{neg} \leq ep^{\Delta}_{neg} \leq \overline{EP}_{neg} - \widehat{EP}_{neg} \quad \forall neg\)
\(0 \leq hp_{nhg} \leq \overline{HP}_{nhg} \quad \forall nhg\)
\(-\widehat{HP}_{nhg} \leq hp^{\Delta}_{nhg} \leq \overline{HP}_{nhg} - \widehat{HP}_{nhg} \quad \forall nhg\)
\(0 \leq ec_{nes} \leq \overline{EC}_{nes} \quad \forall nes\)
\(-\widehat{EC}_{nes} \leq ec^{\Delta}_{nes} \leq \overline{EC}_{nes} - \widehat{EC}_{nes} \quad \forall nes\)
\(0 \leq ec_{nhz} \leq \overline{EC}_{nhz} \quad \forall nhz\)
\(-\widehat{EC}_{nhz} \leq ec^{\Delta}_{nhz} \leq \overline{EC}_{nhz} - \widehat{EC}_{nhz} \quad \forall nhz\)
\(0 \leq hc_{nhs} \leq \overline{HC}_{nhs} \quad \forall nhs\)
\(-\widehat{HC}_{nhs} \leq hc^{\Delta}_{nhs} \leq \overline{HC}_{nhs} - \widehat{HC}_{nhs} \quad \forall nhs\)
\(0 \leq hc_{net} \leq \overline{HC}_{net} \quad \forall net\)
\(-\widehat{HC}_{net}\leq hc^{\Delta}_{net} \leq \overline{HC}_{net} -\widehat{HC}_{net} \quad \forall net\)
\(0 \leq ep2b_{neg} \leq \overline{EP}_{neg} - \underline{EP}_{neg} \quad \forall neg\)
\(0 \leq hp2b_{nhg} \leq \overline{HP}_{nhg} - \underline{HP}_{nhg} \quad \forall nh\)
\(0 \leq eeo_{nes} \leq \max(\overline{EP}_{nes},\overline{EC}_{nes}) \quad \forall nes\)
\(0 \leq heo_{nhs} \leq \max(\overline{HP}_{nhs},\overline{HC}_{nhs}) \quad \forall nhs\)
\(0 \leq up^{SR}_{neg}, dp^{SR}_{neg} \leq \overline{EP}_{neg} - \underline{EP}_{neg} \quad \forall neg\)
\(0 \leq up^{TR}_{neg}, dp^{TR}_{neg} \leq \overline{EP}_{neg} - \underline{EP}_{neg} \quad \forall neg\)
\(0 \leq uc^{SR}_{nes}, dc^{SR}_{nes} \leq \overline{EC}_{nes} - \underline{EC}_{nes} \quad \forall nes\)
\(0 \leq uc^{TR}_{nes}, dc^{TR}_{nes} \leq \overline{EC}_{nes} - \underline{EC}_{nes} \quad \forall nes\)
\(0 \leq ec2b_{nes} \leq \overline{EC}_{nes} \quad \forall nes\)
\(0 \leq hc2b_{nhs} \leq \overline{HC}_{nhs} \quad \forall nhs\)
\(\underline{EI}_{nes} \leq esi_{nes} \leq \overline{EI}_{nes} \quad \forall nes\)
\(\underline{HI}_{nhs} \leq hsi_{nhs} \leq \overline{HI}_{nhs} \quad \forall nhs\)
\(0 \leq ess_{nes} \quad \forall nes\)
\(0 \leq hss_{nhs} \quad \forall nhs\)
\(0 \leq ec^{R+}_{nes}, ec^{R-}_{nes} \leq \overline{EC}_{nes} \quad \forall nes\)
\(0 \leq ec^{R+}_{nhz}, ec^{R-}_{nhz} \leq \overline{EC}_{nhz} \quad \forall nhz\)
\(0 \leq ec^{Comp}_{nhs} \leq \overline{EC}_{nhs} \quad \forall nhs\)
\(0 \leq ec^{StandBy}_{nhz} \leq \overline{EC}_{nhz} \quad \forall nhz\)
\(-\overline{ENF}_{nijc} \leq ef_{nij} \leq \overline{ENF}_{nijc} \quad \forall nijc\)
\(-\overline{HNF}_{nijc} \leq hf_{nij} \leq \overline{HNF}_{nijc} \quad \forall nijc\)