The cost#
One of the base fragments of Calliope in fragments. How Calliope prices a technology: investment, annualised; variable operation; fixed operation. It declares cost_investment and cost_operation_variable empty, and cost_operation_fixed with a body of its own, and each capacity or flow adds its cost.
dimensions:
nodes:
description: Calliope's `nodes` — the places technologies stand at
techs:
description: Calliope's `techs` — technologies
costs:
description: Calliope's `costs` — cost classes, such as monetary and CO2
timesteps:
description: Calliope's `timesteps` — time steps, in order
dtype: datetime
parameters:
cost_om_annual_investment_fraction:
description: "`cost_om_annual_investment_fraction` — the annual cost of operation, as a share of the investment cost"
dims: [nodes, techs, costs]
cost_depreciation_rate:
description: >-
`cost_depreciation_rate` — the share of the investment cost a year
carries; given only where set, and derived from the lifetime and the
interest rate elsewhere
dims: [nodes, techs, costs]
cost_interest_rate:
description: "`cost_interest_rate` — the interest rate an investment is annualised at"
dims: [nodes, techs, costs]
lifetime:
description: >-
`lifetime` — the years a technology lasts. Calliope's default is
`.inf`, and data prep fills it
dims: [nodes, techs]
given:
parameters:
timestep_resolution: { dims: [timesteps] }
timestep_weights: { dims: [timesteps] }
objective_cost_weights: { dims: [costs] }
expressions:
system_cost: { dims: [], term: cost_of_techs }
expressions:
cost_investment:
description: >-
`cost_investment` — the investment cost of a technology: flow, storage
and source capacity, and area use. Each file that builds a capacity
adds its own cost
dims: [nodes, techs, costs]
empty: true
cost_operation_variable:
description: >-
`cost_operation_variable` — the operating cost of a technology in a
time step. Each file that builds a flow adds its own cost
dims: [nodes, techs, costs, timesteps]
empty: true
cost_operation_fixed:
description: >-
`cost_operation_fixed` — the fixed annual operating cost of a
technology: its share of the investment cost here, and what each file
adds per unit of capacity
dims: [nodes, techs, costs]
expression: annualisation_weight * cost_investment * cost_om_annual_investment_fraction
annualisation_weight:
description: "`$annualisation_weight` — the share of a year the modelled time steps stand for"
expression: sum(timestep_resolution * timestep_weights, over=timesteps) / 8760
depreciation_rate:
description: >-
`$depreciation_rate` of `cost_investment_annualised` — the share of the
investment cost a year carries: as given, one over the lifetime with
no interest, and the annuity factor with some
dims: [nodes, techs, costs]
cases:
given:
when: cost_depreciation_rate
expression: cost_depreciation_rate
no_interest:
when: NOT cost_depreciation_rate AND (NOT cost_interest_rate OR cost_interest_rate == 0)
expression: 1 / lifetime
otherwise: >-
cost_interest_rate * (1 + cost_interest_rate) ** lifetime
/ ((1 + cost_interest_rate) ** lifetime - 1)
cost_investment_annualised:
description: "`cost_investment_annualised` — the investment cost, as a year's share scaled to the modelled time"
expression: annualisation_weight * depreciation_rate * cost_investment
cost:
description: "`cost` — the total cost of a technology: investment, variable and fixed operation"
expression: cost_investment_annualised + sum(cost_operation_variable, over=timesteps) + cost_operation_fixed
cost_of_techs:
description: "`sum(sum(cost, over=[nodes, techs]) * objective_cost_weights, over=costs)` of `min_cost_optimisation`"
expression: sum(sum(cost, over=[nodes, techs]) * objective_cost_weights)
Sets#
| Symbol | Meaning |
|---|---|
| \(\mathcal{N}\) | index \(n\) — nodes — Calliope's nodes — the places technologies stand at |
| \(\mathcal{I}\) | index \(i\) — techs — Calliope's techs — technologies |
| \(\mathcal{K}\) | index \(k\) — costs — Calliope's costs — cost classes, such as monetary and CO2 |
| \(\mathcal{T}\) | index \(t\) — timesteps — Calliope's timesteps — time steps, in order |
Parameters#
| Symbol | Meaning |
|---|---|
| \(\mathrm{cost}^{\mathrm{om,annual,investment,fraction}}\) | cost_om_annual_investment_fraction over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_om_annual_investment_fraction — the annual cost of operation, as a share of the investment cost |
| \(\mathrm{cost}^{\mathrm{depreciation,rate}}\) | cost_depreciation_rate over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_depreciation_rate — the share of the investment cost a year carries; given only where set, and derived from the lifetime and the interest rate elsewhere |
| \(\mathrm{cost}^{\mathrm{interest,rate}}\) | cost_interest_rate over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_interest_rate — the interest rate an investment is annualised at |
| \(\mathrm{lifetime}\) | lifetime over \(\mathcal{N} \times \mathcal{I}\) — lifetime — the years a technology lasts. Calliope's default is .inf, and data prep fills it |
Given#
| Symbol | Meaning |
|---|---|
| \(\mathrm{timestep\_resolution}\) | timestep_resolution over \(\mathcal{T}\), data another file declares |
| \(\mathrm{timestep\_weights}\) | timestep_weights over \(\mathcal{T}\), data another file declares |
| \(\mathrm{objective\_cost\_weights}\) | objective_cost_weights over \(\mathcal{K}\), data another file declares |
| \(\mathit{system\_cost}\) | system_cost (scalar), an expression this file adds cost_of_techs to |
Definitions#
| Symbol | Meaning |
|---|---|
| \(\mathit{cost}^{\mathrm{operation,fixed}}\) | cost_operation_fixed over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_operation_fixed — the fixed annual operating cost of a technology: its share of the investment cost here, and what each file adds per unit of capacity |
| \(\mathrm{annualisation\_weight}\) | annualisation_weight (scalar) — $annualisation_weight — the share of a year the modelled time steps stand for |
| \(\mathrm{depreciation\_rate}\) | depreciation_rate over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — $depreciation_rate of cost_investment_annualised — the share of the investment cost a year carries: as given, one over the lifetime with no interest, and the annuity factor with some |
| \(\mathit{cost}^{\mathrm{investment,annualised}}\) | cost_investment_annualised over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_investment_annualised — the investment cost, as a year's share scaled to the modelled time |
| \(\mathit{cost}\) | cost over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost — the total cost of a technology: investment, variable and fixed operation |
| \(\mathit{cost}^{\mathrm{of,techs}}\) | cost_of_techs (scalar) — sum(sum(cost, over=[nodes, techs]) * objective_cost_weights, over=costs) of min_cost_optimisation |
| \(\mathit{cost}^{\mathrm{investment}}\) | cost_investment over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K}\) — cost_investment — the investment cost of a technology: flow, storage and source capacity, and area use. Each file that builds a capacity adds its own cost |
| \(\mathit{cost}^{\mathrm{operation,variable}}\) | cost_operation_variable over \(\mathcal{N} \times \mathcal{I} \times \mathcal{K} \times \mathcal{T}\) — cost_operation_variable — the operating cost of a technology in a time step. Each file that builds a flow adds its own cost |
Definitions#
cost_operation_fixed
\[
\mathit{cost}^{\mathrm{operation,fixed}}_{n,i,k} = \mathrm{annualisation\_weight} \cdot \mathit{cost}^{\mathrm{investment}}_{n,i,k} \cdot \mathrm{cost}^{\mathrm{om,annual,investment,fraction}}_{n,i,k} \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K}
\]
annualisation_weight
\[
\mathrm{annualisation\_weight} = \frac{\sum_{t \in \mathcal{T}} \mathrm{timestep\_resolution}_{t} \cdot \mathrm{timestep\_weights}_{t}}{8760}
\]
depreciation_rate
\[
\mathrm{depreciation\_rate}_{n,i,k} = \begin{cases} \mathrm{cost}^{\mathrm{depreciation,rate}}_{n,i,k} & \text{if } \mathrm{cost}^{\mathrm{depreciation,rate}}_{n,i,k} \text{ is defined} \\ \frac{1}{\mathrm{lifetime}_{n,i}} & \text{if } \neg \left( \mathrm{cost}^{\mathrm{depreciation,rate}}_{n,i,k} \text{ is defined} \right) \wedge \left( \neg \left( \mathrm{cost}^{\mathrm{interest,rate}}_{n,i,k} \text{ is defined} \right) \vee \mathrm{cost}^{\mathrm{interest,rate}}_{n,i,k} = 0 \right) \\ \frac{\mathrm{cost}^{\mathrm{interest,rate}}_{n,i,k} \cdot \left( 1 + \mathrm{cost}^{\mathrm{interest,rate}}_{n,i,k} \right)^{\mathrm{lifetime}_{n,i}}}{\left( 1 + \mathrm{cost}^{\mathrm{interest,rate}}_{n,i,k} \right)^{\mathrm{lifetime}_{n,i}} - 1} & \text{otherwise} \end{cases} \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K}
\]
cost_investment_annualised
\[
\mathit{cost}^{\mathrm{investment,annualised}}_{n,i,k} = \mathrm{annualisation\_weight} \cdot \mathrm{depreciation\_rate}_{n,i,k} \cdot \mathit{cost}^{\mathrm{investment}}_{n,i,k} \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K}
\]
cost
\[
\mathit{cost}_{n,i,k} = \mathit{cost}^{\mathrm{investment,annualised}}_{n,i,k} + \sum_{t \in \mathcal{T}} \mathit{cost}^{\mathrm{operation,variable}}_{n,i,k,t} + \mathit{cost}^{\mathrm{operation,fixed}}_{n,i,k} \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K}
\]
cost_of_techs
\[
\mathit{cost}^{\mathrm{of,techs}} = \sum_{k \in \mathcal{K}} \left( \sum_{n \in \mathcal{N},\ i \in \mathcal{I}} \mathit{cost}_{n,i,k} \right) \cdot \mathrm{objective\_cost\_weights}_{k}
\]
cost_investment
\[
\mathit{cost}^{\mathrm{investment}}_{n,i,k} = \cdots \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K}
\]
cost_operation_variable
\[
\mathit{cost}^{\mathrm{operation,variable}}_{n,i,k,t} = \cdots \qquad \forall\, n \in \mathcal{N},\ i \in \mathcal{I},\ k \in \mathcal{K},\ t \in \mathcal{T}
\]