Hydrogen Production Commitment

Dolphyn.h2_production_commitMethod
h2_production_commit(EP::Model, inputs::Dict, setup::Dict)

This function defines the operating constraints for thermal hydrogen generation plants subject to unit commitment constraints on hydrogen plant start-ups and shut-down decision ($g \in \mathcal{UC}$).

Hydrogen balance expression

Contributions to the hydrogen balance expression from each thermal resources with unit commitment $g \in \mathcal{UC}$ are also defined as below. If liquid hydrogen is modeled, a liquid hydrogen balance expression is needed and contributions to the gas balance are accounted for.

\[\begin{equation*} HydrogenBalGas_{GEN} = \sum_{g \in \mathcal{UC}} x_{g,z,t}^{\textrm{H,GEN}} - \sum_{g \in \mathcal{UC}} x_{g,z,t}^{\textrm{H,LIQ}} + \sum_{g \in \mathcal{UC}} x_{g,z,t}^{\textrm{H,EVAP}} \quad \forall z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} HydrogenBalLiq_{GEN} = \sum_{g \in \mathcal{UC}} x_{g,z,t}^{\textrm{H,LIQ}} - \sum_{g \in \mathcal{UC}} x_{g,z,t}^{\textrm{H,EVAP}} \quad \forall z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

Startup and shutdown events (thermal plant cycling)

Capacity limits on unit commitment decision variables

Thermal resources subject to unit commitment ($k \in \mathcal{UC}$) adhere to the following constraints on commitment states, startup events, and shutdown events, which limit each decision to be no greater than the maximum number of discrete units installed (as per the following three constraints):

\[\begin{equation*} n_{g,z,t}^{\textrm{H,GEN}} \leq \frac{y_{g,z}^{\textrm{H,GEN}}}{\Omega_{g,z}^{\textrm{H,GEN,size}}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} n_{g,z,t}^{\textrm{H,UP}} \leq \frac{y_{g,z}^{\textrm{H,GEN}}}{\Omega_{g,z}^{\textrm{H,GEN,size}}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} n_{g,z,t}^{\textrm{H,DN}} \leq \frac{y_{g,z}^{\textrm{H,GEN}}}{\Omega_{g,z}^{\textrm{H,GEN,size}}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

where decision $n_{g,z,t}^{\textrm{H,GEN}}$ designates the commitment state of generator cluster $g$ in zone $z$ at time $t$, decision $n_{g,z,t}^{\textrm{H,UP}}$ represents number of startup decisions, decision $n_{g,z,t}^{\textrm{H,DN}}$ represents number of shutdown decisions, $y_{g,z}^{\textrm{H,GEN}}$ is the total installed capacity, and parameter $\Omega_{g,z}^{\textrm{H,GEN},size}$ is the unit size. (See Constraints 1-3 in the code)

Commitment state constraint linking start-up and shut-down decisions

Additionally, the following constarint maintains the commitment state variable across time, $n_{g,z,t}^{\textrm{H,GEN}}$, as the sum of the commitment state in the prior, $n_{g,z,t-1}^{\textrm{H,GEN}}$, period plus the number of units started in the current period, $n_{g,z,t}^{H,UP}$, minus the number of units shut down in the current period, $n_{g,z,t}^{H,DN}$:

\[\begin{aligned} n_{g,z,t}^{\textrm{H,GEN}} &= n_{g,z,t-1}^{\textrm{H,GEN}} + n_{g,z,t}^{\textrm{H,UP}} - n_{g,z,t}^{\textrm{H,DN}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T}^{interior} \\ n_{g,z,t}^{\textrm{H,GEN}} &= n_{g,z,t +\tau^{period}-1}^{\textrm{H,GEN}} + n_{g,z,t}^{\textrm{H,UP}} - n_{g,z,t}^{\textrm{H,DN}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T}^{start} \end{aligned}\]

(See Constraint 4 in the code)

Like other time-coupling constraints, this constraint wraps around to link the commitment state in the first time step of the year (or each representative period), $t \in \mathcal{T}^{start}$, to the last time step of the year (or each representative period), $t+\tau^{period}-1$.

Ramping constraints

Thermal resources subject to unit commitment ($k \in \mathcal{UC}$) adhere to the following ramping constraints on hourly changes in power output:

\[\begin{aligned} x_{g,z,t-1}^{\textrm{H,GEN}} - x_{g,z,t}^{\textrm{H,GEN}} &\leq \kappa_{g,z}^{\textrm{H,DN}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times \left(n_{g,z,t}^{\textrm{H,UP}} - n_{g,z,t}^{\textrm{H,DN}}\right) \\ \qquad &- \underline{\rho_{g,z,t}^{\textrm{H,GEN}}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,DN}} \\ \qquad &+ \text{min}(\overline{\rho_{g,z,t}^{\textrm{H,GEN}}}}, \text{max}(\underline{\rho_{g,z,t}^{\textrm{H,GEN}}}, \kappa_{g,z}^{\textrm{H,GEN}})) \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,DN}} \\ \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

\[\begin{aligned} x_{g,z,t}^{\textrm{H,GEN}} - x_{g,z,t-1}^{\textrm{H,GEN}} &\leq \kappa_{g,z}^{\textrm{H,UP}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times \left(n_{g,z,t}^{\textrm{H,UP}} - n_{g,z,t}^{\textrm{H,DN}}\right) \\ \qquad &+ \text{min}(\overline{\rho_{g,z,t}^{\textrm{H,GEN}}}, \text{max}(\underline{\rho_{g,z,t}^{\textrm{H,GEN}}}, \kappa_{k,z}^{\textrm{H,UP}})) \times \Omega_{k,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,DN}} \\ \qquad &- \underline{\rho_{g,z,t}^{\textrm{H,GEN}}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,DN}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{aligned}\]

(See Constraints 5-6 in the code)

where decision $x_{g,z,t}^{\textrm{H,GEN}}$ is the energy injected into the grid by technology $y$ in zone $z$ at time $t$, parameter $\kappa_{g,z,t}^{\textrm{H,UP}}$, $\kappa_{G,z,t}^{\textrm{H,DN}}$ is the maximum ramp-up or ramp-down rate as a percentage of installed capacity, parameter $\underline{\rho_{g,z}^{\textrm{H,GEN}}}$ is the minimum stable power output per unit of installed capacity, and parameter $\overline{\rho_{g,z,t}^{\textrm{H,GEN}}}$ is the maximum available generation per unit of installed capacity. These constraints account for the ramping limits for committed (online) units as well as faster changes in power enabled by units starting or shutting down in the current time step.

\[\begin{equation*} x_{g,z,t}^{\textrm{H,GEN}} \geq \underline{\rho_{g,z,t}^{\textrm{H,GEN}}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,UP}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} x_{g,z,t}^{\textrm{H,GEN}} \geq \overline{\rho_{g,z}^{\textrm{H,GEN}}} \times \Omega_{g,z}^{\textrm{H,GEN,size}} \times n_{g,z,t}^{\textrm{H,UP}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 7-8 the code)

Minimum and maximum up and down time

Thermal resources subject to unit commitment adhere to the following constraints on the minimum time steps after start-up before a unit can shutdown again (minimum up time) and the minimum time steps after shut-down before a unit can start-up again (minimum down time):

\[\begin{equation*} n_{g,z,t}^{\textrm{H,GEN}} \geq \displaystyle \sum_{\tau = t-\tau_{g,z}^{\textrm{H,UP}}}^t n_{g,z,\tau}^{\textrm{H,UP}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

\[\begin{equation*} \frac{y_{g,z}^{\textrm{H,GEN}}}{\Omega_{g,z}^{\textrm{H,GEN,size}}} - n_{g,z,t}^{\textrm{H,UP}} \geq \displaystyle \sum_{\tau = t-\tau_{g,z}^{\textrm{H,DN}}}^t n_{g,z,\tau}^{\textrm{H,DN}} \quad \forall g \in \mathcal{UC}, z \in \mathcal{Z}, t \in \mathcal{T} \end{equation*}\]

(See Constraints 9-10 in the code)

where $\tau_{g,z}^{\textrm{H,UP}}$ and $\tau_{g,z}^{\textrm{H,DN}}$ is the minimum up or down time for units in generating cluster $g$ in zone $z$.

Like with the ramping constraints, the minimum up and down constraint time also wrap around from the start of each time period to the end of each period. It is recommended that users of DOLPHYN must use longer subperiods than the longest min up/down time if modeling unit commitment. Otherwise, the model will report error.