Model Formulation

E4ST.setup_modelMethod
setup_model(config, data) -> model

Sets up a JuMP Model for E4ST using config and data.

Parameters

NameSymbolLetter
$N_G$:num_genNumber of generators
$N_B$:num_busNumber of buses
$N_L$:num_branchNumber of branches
$G = \{1,2,...,N_G \}$N/ASet of generator indices
$B = \{1,2,...,N_B \}$N/ASet of bus indices
$L = \{1,2,...,N_L \}$N/ASet of branch indices
$g \in G$:gen_idxGenerator index
$b \in B$:bus_idxBus index
$l \in L$:branch_idxBranch index
$y \in Y$:year_idxYear index
$y_{S_g} \in Y$:yearonidxStarting Year index for generator g

Variables

These are the decision variables to be optimized over. Can be accessed by model[symbol]

NameSymbolUnitDescription
$\theta_{b,y,h}$:θ_busRadiansHourly voltage angle of each bus. Reference buses fixed to 0.0
$P_{G_{g,y,h}}$:pgen_genMWHourly avg. power generated by each generator
$P_{C_{g,y}}$:pcap_genMWAnnual power generation capacity of each generator
$P_{S_{b,y,h}}$:plserv_busMWHourly avg. power served to each bus

Expressions

Expressions are calculated as linear combinations of variables. Expressions can be 1D, 2D, or 3D arrays or sparse arrays where 1D is Y, 2D is NxY, and 3D is NxYxH. Can be accessed by model[symbol]

NameSymbolUnitDescription
$P_{F_{l,y,h}}$:pflow_branchMWHourly avg. power flowing through each branch
$P_{F_{b,y,h}}$:pflow_busMWHourly avg. net power flowing out of each bus
$P_{U_{b,y,h}}$:plcurt_busMWHourly avg. power curtailed at each bus
$P_{G_{b,y,h}}$:pgen_busMWHourly avg. power generated at each bus

Constraints

Constraints can be 1D, 2D, 3D, or 4D arrays or sparse arrays where 1D is Y, 2D is NxY, 3D is NxYxH, 4D is NxYxIxH

NameConstraintSymbolUnitDescription
$C_{PB_{b,y,h}}$$P_{G_{b,y,h}} - P_{S_{b,y,h}} \geq P_{F_{b,y,h}}$:cons_pbal_geqMWConstrain 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_leqMWConstrain 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_minMWConstrain 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_maxMWConstrain 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_minMWConstrain 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_maxMWConstrain 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_minMWConstrain 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_maxMWConstrain 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_posMWConstrain 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_negMWConstrain 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/AMWConstrain 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_noaddMWConstrain 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_exogMWConstrain unbuilt exogenous generators (with build_type ∈ (real, exog)) to be built to pcap_max 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:

source