Skip to content

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