Least-cost dispatch#
Least-cost dispatch is the smallest specification of an optimisation model
(a spec) with a balance, a bound and a cost.
The home page has the same spec. Wherever a generator has no
capacity, the where: on dispatch
leaves the variable with no row there
(absent).
sum(dispatch, over=generator) sums
over generator and keeps snapshot, which is the one
dimension that
power_balance declares.
description: Least-cost dispatch of a generator fleet against a load in each dispatch period.
dimensions:
snapshot: { dtype: int, description: dispatch periods }
generator: { description: generating units }
parameters:
capacity: { dims: [generator], description: installed capacity }
load: { dims: [snapshot], description: demand to be met }
cost: { dims: [generator], description: marginal cost }
variables:
dispatch:
description: output of a generator in a snapshot
dims: [snapshot, generator]
where: "capacity > 0"
bounds: { lower: 0, upper: capacity }
constraints:
power_balance:
dims: [snapshot]
expression: sum(dispatch, over=generator) == load
objective:
sense: minimize
expression: sum(dispatch * cost)
Least-cost dispatch of a generator fleet against a load in each dispatch period.
Sets#
| Symbol | Meaning |
|---|---|
| \(\mathcal{G}\) | index \(g\) — generator — generating units |
| \(\mathcal{S}\) | index \(s\) — snapshot — dispatch periods |
Parameters#
| Symbol | Meaning |
|---|---|
| \(\bar p\) | capacity over \(\mathcal{G}\) — installed capacity |
| \(c\) | cost over \(\mathcal{G}\) — marginal cost |
| \(\ell\) | load over \(\mathcal{S}\) — demand to be met |
Variables#
| Symbol | Meaning |
|---|---|
| \(\mathit{dispatch}\) | dispatch over \(\mathcal{G} \times \mathcal{S}\) — output of a generator in a snapshot |
Variable domains#
dispatch
\[
0 \le \mathit{dispatch}_{g,s} \le \bar p_{g} \qquad \forall\, g \in \mathcal{G},\ s \in \mathcal{S} \,:\, \bar p_{g} > 0
\]
Objective#
\[
\min \sum_{g \in \mathcal{G},\ s \in \mathcal{S}} \mathit{dispatch}_{g,s} \cdot c_{g}
\]
Subject to#
power_balance
\[
\sum_{g \in \mathcal{G}} \mathit{dispatch}_{g,s} = \ell_{s} \qquad \forall\, s \in \mathcal{S}
\]
See also
- Absence, for what an absent variable does to the expressions that use it
sum, for every form of the call- Unit commitment, for the same dispatch with an on/off decision for each unit