Model Formulation
E4ST.setup_model
— Methodsetup_model(config, data) -> model
Sets up a JuMP Model for E4ST using config
and data
.
Parameters
Name | Symbol | Letter |
---|---|---|
$N_G$ | :num_gen | Number of generators |
$N_B$ | :num_bus | Number of buses |
$N_L$ | :num_branch | Number of branches |
$G = \{1,2,...,N_G \}$ | N/A | Set of generator indices |
$B = \{1,2,...,N_B \}$ | N/A | Set of bus indices |
$L = \{1,2,...,N_L \}$ | N/A | Set of branch indices |
$g \in G$ | :gen_idx | Generator index |
$b \in B$ | :bus_idx | Bus index |
$l \in L$ | :branch_idx | Branch index |
$y \in Y$ | :year_idx | Year index |
$y_{S_g} \in Y$ | :yearonidx | Starting Year index for generator g |
Variables
These are the decision variables to be optimized over. Can be accessed by model[symbol]
Name | Symbol | Unit | Description |
---|---|---|---|
$\theta_{b,y,h}$ | :θ_bus | Radians | Hourly voltage angle of each bus. Reference buses fixed to 0.0 |
$P_{G_{g,y,h}}$ | :pgen_gen | MW | Hourly avg. power generated by each generator |
$P_{C_{g,y}}$ | :pcap_gen | MW | Annual power generation capacity of each generator |
$P_{S_{b,y,h}}$ | :plserv_bus | MW | Hourly avg. power served to each bus |
Expressions
Expressions are calculated as linear combinations of variables. Can be accessed by model[symbol]
Name | Symbol | Unit | Description |
---|---|---|---|
$P_{F_{l,y,h}}$ | :pflow_branch | MW | Hourly avg. power flowing through each branch |
$P_{F_{b,y,h}}$ | :pflow_bus | MW | Hourly avg. net power flowing out of each bus |
$P_{U_{b,y,h}}$ | :plcurt_bus | MW | Hourly avg. power curtailed at each bus |
$P_{G_{b,y,h}}$ | :pgen_bus | MW | Hourly avg. power generated at each bus |
Constraints
Name | Constraint | Symbol | Unit | Description |
---|---|---|---|---|
$C_{PB_{b,y,h}}$ | $P_{G_{b,y,h}} - P_{S_{b,y,h}} \geq P_{F_{b,y,h}}$ | :cons_pbal_geq | MW | Constrain the power flow at each bus |
$C_{PB_{b,y,h}}$ | $P_{G_{b,y,h}} - P_{S_{b,y,h}} \leq P_{F_{b,y,h}}$ | :cons_pbal_leq | MW | Constrain the power flow at each bus |
$C_{PG_{g,y,h}}^{\text{min}}$ | $P_{G_{g,y,h}} \geq P_{C_{b,y}}^{\text{min}}$ | :cons_pgen_min | MW | Constrain the generated power to be above minimum capacity factor, if given. |
$C_{PG_{g,y,h}}^{\text{max}}$ | $P_{G_{g,y,h}} \leq P_{C_{b,y}}^{\text{max}}$ | :cons_pgen_max | MW | Constrain the generated power to be below min(availability factor, max capacity factor) |
$C_{PS_{g,y,h}}^{\text{min}}$ | $P_{S_{b,y,h}} \geq 0$ | :cons_plserv_min | MW | Constrain the served power to be greater than zero |
$C_{PS_{g,y,h}}^{\text{max}}$ | $P_{S_{b,y,h}} \leq P_{D_{b,y,h}}$ | :cons_plserv_max | MW | Constrain the served power to be less than or equal to load power. |
$C_{PC_{g,y}}^{\text{min}}$ | $P_{C_{g,y}} \geq P_{C_{g,y}}^{\text{min}}$ | :cons_pcap_min | MW | Constrain the power generation capacity to be less than or equal to its minimum. |
$C_{PC_{g}}^{\text{max}}$ | $P_{C_{g,y}} \leq P_{C_{g,y}}^{\text{max}}\quad \forall y = y_{S_g}$ | :cons_pcap_max | MW | Constrain the power generation capacity to be less than or equal to its minimum for its starting year. |
$C_{PL_{l,y,h}}^{+}$ | $P_{F_{l,y,h}} \leq P_{L_{l,y,h}}^{\text{max}}$ | :cons_branch_pflow_pos | MW | Constrain the branch power flow to be less than or equal to its maximum. |
$C_{PL_{l,y,h}}^{-}$ | $-P_{F_{l,y,h}} \leq P_{L_{l,y,h}}^{\text{max}}$ | :cons_branch_pflow_neg | MW | Constrain the negative branch power flow to be less than or equal to its maximum. |
$C_{PCGPB_{g,y}}$ | $P_{C_{g,y}} = 0 \quad \forall \left\{ y<y_{S_g} \right\}$ | N/A | MW | Constrain the power generation capacity to be zero before the start year. Implemented by fixing the variable. |
$C_{PCGNA_{g,y}}$ | $P_{C_{g,y+1}} <= P_{C_{g,y}} \quad \forall \left\{ y >= y_{S_g} \right\}$ | :cons_pcap_gen_noadd | MW | Constrain the power generation capacity to be non-increasing after the start year. Generation capacity is only added when building new generators in their start year. |
$C_{PCGE_{g,y}}$ | $P_{C_{g,y}} == P_{C_{0_{g}}} \quad \forall \left\{ first y >= y_{S_g} \right\}$ | :cons_pcap_gen_exog | MW | Constrain unbuilt exogenous generators to be built to pcap0 in the first year after year_on . |
Objective
The objective is a single expression that can be accessed via model[:obj]
. In general, we add things to the objective via: