Dispatch Limits¶
Each Generator has a dispatch variable \(g_{n,s,t}\) where \(n\) labels the bus, \(s\) labels the particular generator at the bus and \(t\) labels the snapshot. Each Link has a dispatch variable \(f_{l,t}\) where \(l\) labels the link and \(t\) labels the snapshot. Each Process has an internal dispatch variable \(r_{m,t}\) where \(m\) labels the process and \(t\) labels the snapshot. Each Line and Transformer has a dispatch variable \(p_{l,t}\) where \(l\) labels the line/transformer and \(t\) labels the snapshot.
Dispatch limits of Store and StorageUnit
Dispatch limits of stores and storage units are described together with their storage consistency equations in the Storage section.
Non-extendable Components¶
For non-extendable components ({p,s}_nom_extendable=False), the dispatch is limited by:
| Constraint | Dual Variable | Name | |
|---|---|---|---|
| \(g_{n,s,t} \geq \underline{g}_{n,s,t} \cdot \hat{g}_{n,s}\) | \(w_t^o \underline{\mu}_{n,s,t}\) | n.generators_t.mu_lower |
Generator-fix-p-lower |
| \(g_{n,s,t} \leq \bar{g}_{n,s,t} \cdot \hat{g}_{n,s}\) | \(w_t^o \bar{\mu}_{n,s,t}\) | n.generators_t.mu_upper |
Generator-fix-p-upper |
| \(f_{l,t} \geq \underline{f}_{l,t} \cdot \hat{f}_{l}\) | \(w_t^o \underline{\mu}_{l,t}\) | n.links_t.mu_lower |
Link-fix-p-lower |
| \(f_{l,t} \leq \bar{f}_{l,t} \cdot \hat{f}_{l}\) | \(w_t^o \bar{\mu}_{l,t}\) | n.links_t.mu_upper |
Link-fix-p-upper |
| \(r_{m,t} \geq \underline{r}_{m,t} \cdot \hat{r}_{m}\) | \(w_t^o \underline{\mu}_{m,t}\) | n.processes_t.mu_lower |
Process-fix-p-lower |
| \(r_{m,t} \leq \bar{r}_{m,t} \cdot \hat{r}_{m}\) | \(w_t^o \bar{\mu}_{m,t}\) | n.processes_t.mu_upper |
Process-fix-p-upper |
| \(p_{l,t} \geq - \bar{p}_{l,t} \cdot \hat{p}_{l}\) | \(w_t^o \underline{\mu}_{l,t}\) | n.{lines,transformers}_t.mu_lower |
Line-fix-p-lower |
| \(p_{l,t} \leq \bar{p}_{l,t} \cdot \hat{p}_{l}\) | \(w_t^o \bar{\mu}_{l,t}\) | n.{lines,transformers}_t.mu_upper |
Line-fix-p-upper |
where \(\hat{g}_{n,s}\), \(\hat{f}_{l}\), \(\hat{r}_{m}\), and \(\hat{p}_{l}\) are the nominal capacities; \(\underline{g}_{n,s,t}\), \(\underline{f}_{l,t}\), \(\underline{r}_{m,t}\), \(\bar{g}_{n,s,t}\), \(\bar{f}_{l,t}\), \(\bar{r}_{m,t}\) and \(\bar{p}_{l,t}\) are time-dependent restrictions on the dispatch given per unit of nominal capacity (e.g. due to wind availability for generators or dynamic line rating and security margins for lines).
These constraints are set in the function define_operational_constraints_for_non_extendables().
Extendable Components¶
For extendable components ({p,s}_nom_extendable=True), the dispatch is limited by:
| Constraint | Dual Variable | Name | |
|---|---|---|---|
| \(g_{n,s,t} \geq \underline{g}_{n,s,t} \cdot G_{n,s}\) | \(w_t^o \underline{\mu}_{n,s,t}\) | n.generators_t.mu_lower |
Generator-ext-p-lower |
| \(g_{n,s,t} \leq \bar{g}_{n,s,t} \cdot G_{n,s}\) | \(w_t^o \bar{\mu}_{n,s,t}\) | n.generators_t.mu_upper |
Generator-ext-p-upper |
| \(f_{l,t} \geq \underline{f}_{l,t} \cdot F_{l}\) | \(w_t^o \underline{\mu}_{l,t}\) | n.links_t.mu_lower |
Link-ext-p-lower |
| \(f_{l,t} \leq \bar{f}_{l,t} \cdot F_{l}\) | \(w_t^o \bar{\mu}_{l,t}\) | n.links_t.mu_upper |
Link-ext-p-upper |
| \(r_{m,t} \geq \underline{r}_{m,t} \cdot R_{m}\) | \(w_t^o \underline{\mu}_{m,t}\) | n.processes_t.mu_lower |
Process-ext-p-lower |
| \(r_{m,t} \leq \bar{r}_{m,t} \cdot R_{m}\) | \(w_t^o \bar{\mu}_{m,t}\) | n.processes_t.mu_upper |
Process-ext-p-upper |
| \(p_{l,t} \geq - \bar{p}_{l,t} \cdot P_{l}\) | \(w_t^o \underline{\mu}_{l,t}\) | n.{lines,transformers}_t.mu_lower |
Line-ext-p-lower |
| \(p_{l,t} \leq \bar{p}_{l,t} \cdot P_{l}\) | \(w_t^o \bar{\mu}_{l,t}\) | n.{lines,transformers}_t.mu_upper |
Line-ext-p-upper |
where \(G_{n,s}\), \(F_{l}\), \(R_{m}\), and \(P_{l}\) are the nominal capacities to be optimised.
These constraints are set in the function define_operational_constraints_for_extendables().
Fixed Dispatch¶
Additionally, the dispatch can be fixed to a certain value \(\tilde{g}_{n,s,t}\) for generators, \(\tilde{f}_{l,t}\) for links and \(\tilde{r}_{m,t}\) for processes. In this case, the dispatch is given by:
| Constraint | Dual Variable | Name | |
|---|---|---|---|
| \(g_{n,s,t} = \tilde{g}_{n,s,t}\) | \(w_t^o \tilde{\mu}_{n,s,t}\) | n.generators_t.mu_p_set |
Generator-p_set |
| \(f_{l,t} = \tilde{f}_{l,t}\) | \(w_t^o \tilde{\mu}_{l,t}\) | n.links_t.mu_p_set |
Link-p_set |
| \(r_{m,t} = \tilde{r}_{m,t}\) | \(w_t^o \tilde{\mu}_{m,t}\) | n.processes_t.mu_p_set |
Process-p_set |
These constraints are set in the function define_fixed_operation_constraints().
Volume Limits¶
Generators, links and processes can also have volume limits, i.e. the total dispatch over all snapshots must be above a minimum \(\underline{e}_{*}\) or below a maximum \(\bar{e}_{*}\).
| Constraint | Dual Variable | Name |
|---|---|---|
| \(\sum_t w_t^g g_{n,s,t} \geq \underline{e}_{n,s} \quad \forall n,s\) | only in n.model |
Generator-e_sum_min |
| \(\sum_t w_t^g g_{n,s,t} \leq \bar{e}_{n,s} \quad \forall n,s\) | only in n.model |
Generator-e_sum_max |
| \(\sum_t w_t^g f_{l,t} \geq \underline{e}_{l} \quad \forall l\) | only in n.model |
Link-e_sum_min |
| \(\sum_t w_t^g f_{l,t} \leq \bar{e}_{l} \quad \forall l\) | only in n.model |
Link-e_sum_max |
| \(\sum_t w_t^g r_{m,t} \geq \underline{e}_{m} \quad \forall m\) | only in n.model |
Process-e_sum_min |
| \(\sum_t w_t^g r_{m,t} \leq \bar{e}_{m} \quad \forall m\) | only in n.model |
Process-e_sum_max |
These constraints are set in the function define_total_supply_constraints().
Mapping of symbols to attributes
| Symbol | Attribute | Type |
|---|---|---|
| \(g_{n,s,t}\) | n.generators_t.p |
Decision variable |
| \(G_{n,s}\) | n.generators.p_nom_opt |
Decision variable |
| \(\hat{g}_{n,s}\) | n.generators.p_nom |
Parameter |
| \(\underline{g}_{n,s,t}\) | n.generators_t.p_min_pu |
Parameter |
| \(\bar{g}_{n,s,t}\) | n.generators_t.p_max_pu |
Parameter |
| \(\tilde{g}_{n,s,t}\) | n.generators_t.p_set |
Parameter |
| \(\underline{e}_{n,s}\) | n.generators.e_sum_min |
Parameter |
| \(\bar{e}_{n,s}\) | n.generators.e_sum_max |
Parameter |
| \(w_t^g\) | n.snapshots.weightings.generators |
Parameter |
| \(w_t^o\) | n.snapshots.weightings.objective |
Parameter |
| Symbol | Attribute | Type |
|---|---|---|
| \(f_{l,t}\) | n.links_t.p |
Decision variable |
| \(F_{l}\) | n.links.p_nom_opt |
Decision variable |
| \(\hat{f}_{l}\) | n.links.p_nom |
Parameter |
| \(\underline{f}_{l,t}\) | n.links_t.p_min_pu |
Parameter |
| \(\bar{f}_{l,t}\) | n.links_t.p_max_pu |
Parameter |
| \(\tilde{f}_{l,t}\) | n.links_t.p_set |
Parameter |
| \(\underline{e}_{l}\) | n.links.e_sum_min |
Parameter |
| \(\bar{e}_{l}\) | n.links.e_sum_max |
Parameter |
| \(w_t^g\) | n.snapshots.weightings.generators |
Parameter |
| \(w_t^o\) | n.snapshots.weightings.objective |
Parameter |
| Symbol | Attribute | Type |
|---|---|---|
| \(r_{m,t}\) | n.processes_t.p |
Decision variable |
| \(R_{m}\) | n.processes.p_nom_opt |
Decision variable |
| \(\hat{r}_{m}\) | n.processes.p_nom |
Parameter |
| \(\underline{r}_{m,t}\) | n.processes_t.p_min_pu |
Parameter |
| \(\bar{r}_{m,t}\) | n.processes_t.p_max_pu |
Parameter |
| \(\tilde{r}_{m,t}\) | n.processes_t.p_set |
Parameter |
| \(\underline{e}_{m}\) | n.processes.e_sum_min |
Parameter |
| \(\bar{e}_{m}\) | n.processes.e_sum_max |
Parameter |
| \(w_t^g\) | n.snapshots.weightings.generators |
Parameter |
| \(w_t^o\) | n.snapshots.weightings.objective |
Parameter |
| Symbol | Attribute | Type |
|---|---|---|
| \(p_{l,t}\) | n.{lines,transformers}_t.p0 |
Decision variable |
| \(P_{l}\) | n.{lines,transformers}.s_nom_opt |
Decision variable |
| \(\hat{p}_l\) | n.{lines,transformers}.s_nom |
Parameter |
| \(\bar{p}_{l,t}\) | n.{lines,transformers}_t.s_max_pu |
Parameter |
| \(w_t^g\) | n.snapshots.weightings.generators |
Parameter |
| \(w_t^o\) | n.snapshots.weightings.objective |
Parameter |