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

«pElectricityDemand»

\(HD_{nnd}\)

Hydrogen demand

kgH2

«pHydrogenDemand»

\(DUR_n\)

Duration of each load level

h

«pDuration»

\(CEB_{nnd}, PES^{DA}_{nnd}\)

Cost/price of electricity bought/sold

€/MWh

«pElectricityCost, pElectricityPrice»

\(CHB_{nnd}, PHS^{DA}_{nnd}\)

Cost/price of hydrogen bought/sold

€/kgH2

«pHydrogenCost, pHydrogenPrice»

\(UP^{SR}_{n}, DP^{SR}_{n}\)

Price of \(SR\) upward and downward secondary reserve

€/MW

«pOperatingReservePrice_Up_SR, pOperatingReservePrice_Down_SR»

\(UR^{SR}_{n}, DR^{SR}_{n}\)

Requirement for \(SR\) upward and downward secondary reserve

€/MW

«pOperatingReserveRequire_Up_SR, pOperatingReserveRequire_Down_SR»

\(UEI^{TR}_{n}, DEI^{TR}_{n}\)

Expected income of \(TR\) upward and downward tertiary reserve

€/MW

«pOperatingReservePrice_Up_TR, pOperatingReservePrice_Down_TR»

\(CENS\)

Cost of electricity not served. Value of Lost Load (VoLL)

€/MWh

«pParENSCost»

\(CHNS\)

Cost of hydrogen not served.

€/tH2

«pParHNSCost»

Scenarios

Description

Unit

oHySEM.py

\(P^ω\)

Probability of each scenario

p.u.

«pScenProb»

Generation system

Description

Unit

oHySEM.py

\(\underline{EP}_{neg}, \overline{EP}_{neg}\)

Minimum and maximum electricity generation of a generator

MWh

«pMaxPower, pMinPower»

\(\widehat{EP}_{neg}\)

Last update of the position in the market of the electricity generation of a generator

MWh

«pVarPositionGeneration»

\(\underline{EC}_{neg}, \overline{EC}_{neg}\)

Minimum and maximum electricity consumption of an ESS

MWh

«pMaxCharge, pMinCharge»

\(\overline{EC}^{comp}_{nhs}\)

Maximum electricity consumption of a compressor unit to compress hydrogen

MWh

«pGenMaxCompressorConsumption»

\(\overline{EC}^{standby}_{nhz}\)

Maximum electricity consumption of an electrolyzer unit during the standby mode

MWh

«pGenStandByPower»

\(\widehat{EC}_{neg}\)

Last update of the position in the market of the electricity consumption of a generator

MWh

«pVarPositionConsumption»

\(\underline{EI}_{neg}, \overline{EI}_{neg}\)

Maximum and minimum electricity storage of an ESS

MWh

«pMaxStorage, pMinStorage»

\(\underline{EEO}_{neg}, \overline{EEO}_{neg}\)

Maximum and minimum electricity outflows of an ESS (e.g., kg of H2)

MW

«pMaxOutflows, pMinOutflows»

\(\underline{EEI}_{neg}, \overline{EEI}_{neg}\)

Maximum and minimum electricity inflows of an ESS

MW

«pMaxInflows, pMinInflows»

\(\underline{HP}_{nhg}, \overline{HP}_{nhg}\)

Minimum and maximum hydrogen generation of a generator

kgH2

«pMaxPower, pMinPower»

\(\widehat{HP}_{nhg}\)

Last update of the position in the market of the hydrogen generation of a generator

MWh

«pVarPositionGeneration»

\(\underline{HC}_{nhg}, \overline{HC}_{nhg}\)

Minimum and maximum hydrogen consumption of an ESS

kgH2

«pMaxCharge, pMinCharge»

\(\widehat{HC}_{nhg}\)

Last update of the position in the market of the hydrogen consumption of a generator

kgH2

«pVarPositionConsumption»

\(\underline{HI}_{nhg}, \overline{HI}_{nhg}\)

Maximum and minimum hydrogen storage of an ESS

kgH2

«pMaxStorage, pMinStorage»

\(\underline{HEO}_{nhg}, \overline{HEO}_{nhg}\)

Maximum and minimum hydrogen outflows of an ESS

kgH2

«pMaxOutflows, pMinOutflows»

\(\underline{HEI}_{nhg}, \overline{HEI}_{nhg}\)

Maximum and minimum hydrogen inflows of an ESS (e.g., kg of H2)

kgH2

«pMaxInflows, pMinInflows»

\(CF_g, CV_g\)

Fixed and variable cost of an electricity generator. Variable cost includes fuel, O&M and emission cost

€/h, €/MWh

«pGenConstantVarCost, pGenLinearVarCost»

\(RU_t, RD_t\)

Ramp up and ramp down of an electricity thermal unit

MW/h

«pGenRampUp, pGenRampDown»

\(RC^{+}_{hz}, RC^{-}_{hz}\)

Ramp up and ramp down of a hydrogen unit

kgH2/h

«pGenRampUp, pGenRampDown»

\(TU_t, TD_t\)

Minimum uptime and downtime of an electricity thermal unit

h

«pGenUpTime, pGenDownTime»

\(CSU_g, CSD_g\)

Startup and shutdown cost of an electricity committed unit

M€

«pGenStartUpCost, pGenShutDownCost»

\(CRU_h, CRD_h\)

Ramp up and ramp down cost of a hydrogen unit

M€/MWh

«pGenRampUpCost, pGenRampDownCost»

\(EF_e\)

Round-trip efficiency of the charge/discharge of an electricity ESS

p.u.

«pGenEfficiency»

\(EF_h\)

Round-trip efficiency of the charge/discharge of a hydrogen ESS

p.u.

«pGenEfficiency»

\(PF_{he}\)

Production function of electricity from hydrogen

kWh/kgH2

«pGenProductionFunction»

\(PF1_{ehk}\)

Intercept of piecewise Production function of hydrogen from electricity

kgH2/kWh «pGenProductionFunction»

\(PF2_{ehk}\)

slope of piecewise Production function of hydrogen from electricity

\(URA^{SR}_{n}, DRA^{SR}_{n}\)

\(SR\) upward and downward activation

p.u.

«pOperatingReserveActivation_Up_SR, pOperatingReserveActivation_Down_SR»

\(URA^{TR}_{n}, DRA^{TR}_{n}\)

\(TR\) upward and downward activation

p.u.

«pOperatingReserveActivation_Up_TR, pOperatingReserveActivation_Down_TR»

Network system

Description

Unit

oHySEM.py

\(\underline{ENF}_{nijc}, \overline{ENF}_{nijc}\)

Minimum and maximum electricity network flow through the line ijc

MWh

«pEleNetTTCBck, pEleNetTTC»

\(\underline{HNF}_{nijc}, \overline{HNF}_{nijc}\)

Minimum and maximum hydrogen network flow through the line ijc

MWh

«pHydNetTTCBck, pHydNetTTC»

\(\overline{X}_{nijc}\)

Reactance of the line ijc

p.u.

«pEleNetReactance»

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

«vElectricityBuy, vElectricitySell»

\(ens_{nnd}\)

Electricity not served

GW

«vENS»

\(ed_{nnd}\)

Electricity demand

GW

«vEleTotalDemand»

\(ed^{\Delta}_{nnd}\)

Electricity demand due to market correction

GW

«vEleTotalDemandDelta»

\(h^{b}_{nnd}, h^{s}_{nnd}\)

Hydrogen bought and sold in the hydrogen market

kgH2

«vHydrogenBuy, vHydrogenSell»

\(hns_{nnd}\)

Hydrogen not served

kgH2

«vHNS»

\(hd_{nnd}\)

Hydrogen demand

kgH2

«vHydTotalDemand»

\(hd^{\Delta}_{nnd}\)

Hydrogen demand due to market correction

kgH2

«vHydTotalDemandDelta»

Generation system

Description

Unit

oHySEM.py

\(ep_{neg}\)

Electricity production (discharge if an ESS)

GW

«vEleTotalOutput»

\(ec_{nes}, ec_{nhz}\)

Electricity consumption of electricity ESS and electrolyzer units

GW

«vEleTotalCharge»

\(ep2b_{neg}\)

Electricity production of the second block (i.e., above the minimum load)

GW

«vEleTotalOutput2ndBlock»

\(ec2b_{nes}, ec2b_{nhz}\)

Electricity charge of the second block (i.e., above the minimum charge)

GW

«vEleTotalCharge2ndBlock»

\(ep^{\Delta}_{neg}\)

Electricity production (discharge if an ESS) for market correction

GW

«vEleTotalOutputDelta»

\(ec^{\Delta}_{nes}, ec^{\Delta}_{nhz}\)

Electricity consumption of electricity ESS and electrolyzer units for market correction

GW

«vEleTotalChargeDelta»

\(ec^{R+}_{nes}, ec^{R+}_{nhz}\)

Positive ramp of electricity consumption of an ESS and electrolyzer

GW

«vEleTotalChargeRampPos»

\(ec^{R-}_{nes}, ec^{R-}_{nhz}\)

Negative ramp of electricity consumption of an ESS and electrolyzer

GW

«vEleTotalChargeRampNeg»

\(eei_{nes}\)

Electricity inflows of an ESS

GWh

«vEleEnergyInflows»

\(eeo_{nes}\)

Electricity outflows of an ESS

GWh

«vEleEnergyOutflows»

\(esi_{nes}\)

Electricity ESS stored energy (inventory, SoC for batteries)

GWh

«vEleInventory»

\(ess_{nes}\)

Electricity ESS spilled energy

GWh

«vEleSpillage»

\(hp_{nhg}\)

Hydrogen production (discharge if an ESS)

kgH2

«vHydTotalOutput»

\(hc_{nhs}, hc_{neg}\)

Hydrogen consumption of hydrogen ESS and electricity thermal units

kgH2

«vHydTotalCharge»

\(hp2b_{nhg}\)

Hydrogen production of the second block (i.e., above the minimum load)

kgH2

«vHydTotalOutput2ndBlock»

\(hc2b_{nhs}, hc2b_{neg}\)

Hydrogen charge of the second block (i.e., above the minimum charge)

kgH2

«vHydTotalCharge2ndBlock»

\(hp^{\Delta}_{nhg}\)

Hydrogen production (discharge if an ESS) for market correction

kgH2

«vHydTotalOutputDelta»

\(hc^{\Delta}_{nhs}, hc^{\Delta}_{neg}\)

Hydrogen consumption of hydrogen ESS and electricity thermal units for market correction

kgH2

«vHydTotalChargeDelta»

\(hei_{nhs}\)

Hydrogen inflows of an ESS

GWh

«vHydEnergyInflows»

\(heo_{nhs}\)

Hydrogen outflows of an ESS

GWh

«vHydEnergyOutflows»

\(hsi_{nhs}\)

Hydrogen ESS stored energy (inventory, SoC for batteries)

GWh

«vHydInventory»

\(hss_{nhs}\)

Hydrogen ESS spilled energy

GWh

«vHydSpillage»

\(ec^{Comp}_{nhs}\)

Electricity consumption of a compressor unit to compress hydrogen

kgH2

«vHydCompressorConsumption»

\(ec^{StandBy}_{nhz}\)

Electricity consumption of a electrolyzer unit during the standby mode

kgH2

«vHydStandByConsumption»

\(up^{SR}_{neg}, dp^{SR}_{neg}\)

Upward and downward \(SR\) operating reserves of a generating or ESS unit

GW

«vEleReserveProd_Up_SR, vEleReserveProd_Down_SR»

\(uc^{SR}_{nes}, dc^{SR}_{nes}\)

Upward and downward \(SR\) operating reserves of an ESS as a consumption unit

GW

«vEleReserveCons_Up_SR, vEleReserveCons_Down_SR»

\(up^{TR}_{ωneg}, dp^{TR}_{ωneg}\)

Upward and downward \(TR\) operating reserves of a generating or ESS unit

GW

«vEleReserveProd_Up_TR, vEleReserveProd_Down_TR»

\(uc^{TR}_{ωnes}, dc^{TR}_{ωnes}\)

Upward and downward \(TR\) operating reserves of an ESS as a consumption unit

GW

«vEleReserveCons_Up_TR, vEleReserveCons_Down_TR»

\(euc_{neg}, esu_{neg}, esd_{neg}\)

Commitment, startup and shutdown of electricity generation unit per load level

{0,1}

«vGenCommitment, vGenStartup, vGenShutdown»

\(euc^{max}_{neg}\)

Maximum commitment of electricity generation unit per load level

{0,1}

«vGenMaxCommitment»

\(huc_{nhg}\)

Commitment of hydrogen generation unit per load level

{0,1}

«vHydCommitment, vHydStartup, vHydShutdown»

\(huc^{max}_{nhg}\)

Maximum commitment of hydrogen generation unit per load level

{0,1}

«vHydMaxCommitment»

\(esf_{nes}\)

Electricity ESS energy functioning per load level, charging or discharging

{0,1}

«vEleStorOperat»

\(hsf_{nhs}\)

Hydrogen ESS energy functioning per load level, charging or discharging

{0,1}

«vHydStorOperat»

\(hcf_{nhs}\)

Hydrogen compressor functioning, off or on

{0,1}

«vHydCompressorOperat»

\(hsb_{nhg}\)

Hydrogen electrolyzer StandBy mode, off or on

{0,1}

«vHydStandBy»

Network system

Description

Unit

oHySEM.py

\(ef_{nijc}\)

Electricity transmission flow through a line

GW

«vEleNetFlow»

\(hf_{nijc}\)

Hydrogen transmission flow through a pipeline

kgH2

«vHydNetFlow

\(theta_{ni}\)

Voltage angle of a node

rad

«vEleNetTheta»

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

    1. 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

    1. 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

    1. 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»)

    1. 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»)

\(\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\)