@@ -41,12 +41,6 @@ investments.
4141 - \\ ( \text{FOM}_ {opt,r} \\ ): Annual fixed Operations & Maintenance costs per unit of capacity for
4242 \\ ( opt \\ ) in \\ ( r \\ ).
4343
44- - \\ ( FinancingInDecomDec_ {ex} \\ ) (binary flag). This user-defined option specifies whether to
45- include estimated financing costs in the economic viability threshold when considering the
46- decommissioning of an existing asset. This can only be used on profit-evaluable assets. Used
47- with \\ ( PercentDebt_ {ex} \\ ). Where financing costs are included, the percentage debt is
48- multiplied by the original capex, and the result is annualised.
49-
5044- For new candidate assets:
5145
5246 - \\ ( \text{CAPEX}_ {ca,r} \\ ): Upfront capital expenditure required per unit of new capacity for
@@ -69,33 +63,48 @@ providing investment and dynamic decommissioning decisions.
6963
7064### Pre-calculation of metrics for each supply option
7165
72- > Note: This section contains a reference to "scopes", a feature that is not yet implemented
73-
7466- Annualised fixed costs per unit of capacity (\\ ( AFC_ {opt,r} \\ )): For new candidates, this is
7567 their annualised CAPEX plus FOM. For existing assets, the relevant fixed cost is its FOM.
7668
77- - Costs per unit of activity in each time slice, calculated as follows:
69+ - Calculate the specific process and commodity flow costs (\\ (\text{SPCF}\_ {t})\\ ):
70+
71+ \\ [
72+ \text{SPCF}\_ {t} = \sum\_ {c} \Big( cost\_ {\text{input}}[ c] \cdot input\_ {\text{coeff}}[ c] +
73+ cost\_ {\text{output}}[ c] \cdot output\_ {\text{coeff}}[ c] \Big)
74+ \\ ]
75+
76+ #### Coefficients of activity
77+
78+ - Calculate net revenue per unit of activity \\ (AC\_ {t}^{NPV} \\ ) (Tool A):
79+ \\ [
80+ \begin{aligned}
81+ AC\_ {t}^{NPV} = &-cost\_ {\text{var}}[ t] \\\\
82+ &- \text{SPCF}\_ {t} \\\\
83+ &+ \sum\_ {c} \Big( output\_ {\text{coeff}}[ c] - input\_ {\text{coeff}}[ c] \Big)
84+ \cdot \lambda\_ {c,r,t} \\\\
85+ &+ \varepsilon \\\\
86+ \end{aligned}
87+ \\ ]
88+ \\ (\varepsilon \approx 1\times 10^{-14}\\ ) is added to
89+ each \\ (AC\_ {t}^{NPV} \\ ) to allow assets which are breakeven (or very close to breakeven) to be
90+ dispatched.
7891
92+ - Calculate cost per unit of activity \\ ( AC\_ {t}^{LCOX} \\ ) (Tool B). Note that the commodity
93+ of interest (primary output \\ ( c\_ {primary} \\ )) is excluded from the price term:
7994 \\ [
8095 \begin{aligned}
81- AC_t = & \quad cost\_ {\text{var}}[ t] \\\\
82- &+ \sum \_ {c} \Big( cost \_ {\text{input}} [ c ] \cdot input \_ {\text{coeff}} [ c ]
83- + cost \_ {\text{output}} [ c ] \cdot output\_ {\text{coeff}}[ c] \Big) \\\\
84- &+ \sum \_ {c} \Big( input \_ {\text{coeff}} [ c ] - output \_ {\text{coeff}} [ c] \Big)
96+ AC \_ {t}^{LCOX} = & \quad cost\_ {\text{var}}[ t] \\\\
97+ &+ \text{SPCF} \_ {t} \\\\
98+ &- \sum \_ {c \neq c \_ {primary}} \Big( output\_ {\text{coeff}}[ c] - input \_ {\text{coeff}}
99+ [ c] \Big)
85100 \cdot \lambda\_ {c,r,t} \\\\
86- &+ \sum\_ {s,c} in\\ _ scope[ s] \cdot \Big\\ { \\\\
87- &\quad \quad (cost\_ {\text{prod}}[ s,c] - \mu\_ {s,c}^{\text{prod}})
88- \cdot output\_ {\text{coeff}}[ c] \\\\
89- &\quad \quad + (cost\_ {\text{cons}}[ s,c] - \mu\_ {s,c}^{\text{cons}})
90- \cdot input\_ {\text{coeff}}[ c] \\\\
91- &\quad \quad + (cost\_ {\text{net}}[ s,c] - \mu\_ {s,c}^{\text{net}})
92- \cdot (output\_ {\text{coeff}}[ c] - input\_ {\text{coeff}}[ c] ) \\\\
93- &\Big\\ }
94101 \end{aligned}
95102 \\ ]
96103
97- When using the LCOX objective, the calculation is adjusted to exclude the commodity of interest
98- (\\ ( \lambda\_ {c,r,t} \\ ) are set to zero).
104+ - The third term in both activity coefficients accounts for commodity price flow costs, which are
105+ the net costs or revenues associated with the commodity flows. In the LCOX case the commodity of
106+ interest is excluded from this term because the cost of production shouldn't depend on the market
107+ price of the commodity being produced.
99108
100109### Initialise demand profiles for commodity of interest
101110
@@ -130,20 +139,19 @@ providing investment and dynamic decommissioning decisions.
130139
131140#### Tool A: NPV
132141
133- This method is used when decision rule is single objective and objective is annualised profit for
134- agents' serving commodity \\ ( c \\ ). This method iteratively builds a supply portfolio by selecting
142+ This method is used when the decision rule is ` single ` and the objective is annualised profit for
143+ agents serving commodity \\ ( c \\ ). It iteratively builds a supply portfolio by selecting
135144options that offer the highest annualised profit for serving the current commodity demand. The
136145economic evaluation uses \\ ( \pi_ {prevMSY} \\ ) prices and takes account of asset-specific
137146operational constraints (e.g., minimum load levels) and the balance level of the target commodity
138147(time slice profile, seasonal or annual). For each asset option:
139148
140149- ** Optimise capacity and dispatch to maximise annualised profit:** Solve a small optimisation
141150 sub-problem to maximise the asset's surplus, subject to its operational rules and the specific
142- demand tranche it is being asked to serve. \\ (\varepsilon \approx 1×10^{-14}\\ ) is added to each
143- \\ (AC_t \\ ) to allow assets which are breakeven (or very close to breakeven) to be dispatched.
151+ demand tranche it is being asked to serve.
144152
145153 \\ [
146- maximise \Big\\ { - \sum_t act_t \* (AC_t + \varepsilon)
154+ maximise \Big\\ {\sum_t act_t AC \_ {t}^{NPV}
147155 \Big\\ }
148156 \\ ]
149157
@@ -155,12 +163,25 @@ operational constraints (e.g., minimum load levels) and the balance level of the
155163 - A demand constraint, where output cannot exceed demand in the tranche, which adapts based on the
156164 commodity's balance level (time slice, season, annual).
157165
158- - Capacity is constrained to \\ ( CapMaxBuild \\ ) for candidates, and to known capacity for
166+ - Capacity is constrained up to \\ ( CapMaxBuild \\ ) for candidates, and to known capacity for
159167 existing assets.
160168
161- - ** Calculate a profitability index:** This is the total annualised surplus (\\ ( - \sum_t
162- act_t \* AC \\ )) divided by the annualised fixed cost (\\ (
163- AFC \* cap \\ )).
169+ - ** Decide on metric:** The type of metric used to compare profitability is dependent on the value of
170+ \\ (\text{AFC}\\ ). If \\ (\text{AFC} = 0\\ ) within the tolerance provided by the ` float_cmp ` crate,
171+ the associated investment option is always prioritised over options with \\ (\text{AFC} > 0\\ ).
172+
173+ - ** If \\ (\text{AFC} > 0\\ ), Use the profitability index \\ (\text{PI}\\ ) metric:** This is the total
174+ annualised surplus divided by the annualised fixed cost.
175+ \\ [
176+ \text{PI} =
177+ \frac{\sum\_ t act\_ t \cdot \text{AC}\_ t^{\text{NPV}}}{\text{AFC} \cdot \text{cap}}
178+ \\ ]
179+
180+ - ** If \\ (\text{AFC} = 0\\ ), Use the total annualised surplus metric \\ (\text{TAS}\\ ):**
181+ \\ [
182+ \text{TAS} =
183+ \sum\_ t act\_ t \cdot \text{AC}\_ t^{\text{NPV}}
184+ \\ ]
164185
165186#### Tool B: LCOX
166187
@@ -175,12 +196,12 @@ commodities are set to zero, and the commodity of interest is assumed to have ze
175196For each asset option:
176197
177198- ** Optimise capacity and dispatch to minimise annualised cost:** Solve a small optimisation
178- sub-problem to maximise the asset's surplus , subject to its operational rules and the specific
199+ sub-problem to minimise the asset's annualised cost , subject to its operational rules and the specific
179200 demand tranche it is being asked to serve.
180201
181202 \\ [
182203 minimise \Big\\ {
183- AF \* cap + \sum_t act_t \* AC_t + VoLL \* UnmetD_t
204+ \text{AFC} \times cap + \sum \_ t act \_ t \times AC \_ {t}^{LCOX} + VoLL \times UnmetD \_ t
184205 \Big\\ }
185206 \\ ]
186207
@@ -193,15 +214,195 @@ For each asset option:
193214 each timeslice of the tranche, which adapts based on the commodity's balance level (time slice,
194215 season, annual).
195216
196- - Capacity is constrained to \\ ( CapMaxBuild \\ ) for candidates, and to known capacity for
217+ - Capacity is constrained up to \\ ( CapMaxBuild \\ ) for candidates, and to known capacity for
197218 existing assets.
198219
199220 - VoLL variables are active to ensure a feasible solution alongside maximum operation of the
200221 asset.
201222
202- - ** Calculate a cost index:** This is the total annualised cost (\\ (
203- AFC \* cap_r + \sum_ {t} act_t \* AC_t \\ )), divided by the annual output
204- \\ ( \sum_t act_t \\ ).
223+ - ** Calculate a Cost Index Metric:** This is the total annualised cost divided by the annual output.
224+ \\ [
225+ \text{Cost Index} = \frac{\text{AFC} \times \text{cap}_ r + \sum_t act_t
226+ \times \text{AC}_ t^{\text{LCOX}}}{\sum_t act_t}
227+ \\ ]
228+
229+ #### Equal-Metric Fallback
230+
231+ If two or more investment options from the same tool have equal metrics, the following tie-breaking
232+ rules are applied in order:
233+
234+ 1 . Assets which are already commissioned are preferred over new candidate assets.
235+ 2 . Newer (commissioned later) assets are preferred over older assets.
236+ 3 . If there is still a tie, the first option in the data structure storing the metrics is selected,
237+ which is an arbitrary choice. A ` debug ` level log message is emitted in this case.
238+
239+ ## Example: Gas Power Plant
240+
241+ The following is an illustrative example of how the NPV and LCOX approaches work, using a simple
242+ gas combined-cycle power plant as the supply option under consideration.
243+ This example demonstrates the evaluation across two time periods
244+ \\ (t\_ 0\\ ) (peak period) and \\ (t\_ 1\\ ) (off-peak period) with variable operating costs
245+ \\ ( cost\_ {var}[ t] \\ ) constant in all time periods.
246+
247+ ### Model Parameters
248+
249+ #### Asset Parameters
250+ <!-- markdownlint-disable MD013 -->
251+ | Parameter | Notation | Value | Description |
252+ | --------------------------------| --------------------------------------| ---------------------------| -----------------------------------|
253+ | Primary output (Electricity) | \\ ( output\_ {coeff}[ c_ {primary}] \\ ) | 1.0 MWh per unit activity | Main commodity produced |
254+ | By-product output (Waste heat) | \\ ( output\_ {coeff}[ c_ {heat}] \\ ) | 0.5 MWh per unit activity | Co-product from generation |
255+ | Input (Natural gas) | \\ ( input\_ {coeff}[ c_ {gas}] \\ ) | 2.5 MWh per unit activity | Fuel consumption |
256+ | Variable operating cost | \\ ( cost\_ {var}[ t] \\ ) | £5/MWh of activity | Operating costs per unit activity |
257+ <!-- markdownlint-enable MD013 -->
258+
259+ All per-flow costs represented in the general formulas as \\ ( cost\_ {input} \\ ) and
260+ \\ ( cost\_ {output} \\ ) are assumed to be zero.
261+
262+ #### Investment Parameters
263+
264+ | Parameter | Notation | Value |
265+ | -----------------------| ----------------------| -----------|
266+ | Annualised fixed cost | \\ ( AFC\_ {opt,r} \\ ) | £1,000/MW |
267+ | Capacity | \\ ( cap \\ ) | 100 MW |
268+
269+ #### Market Prices by Time Period
270+
271+ | Commodity | Notation | \\ (t_0\\ ) (Peak) | \\ (t_1\\ ) (Off-peak) |
272+ | -------------| -------------------------------------| ------------------| ----------------------|
273+ | Electricity | \\ ( \lambda\_ {c\_ {primary},r,t} \\ ) | £90/MWh | £50/MWh |
274+ | Heat | \\ ( \lambda\_ {c\_ {heat},r,t} \\ ) | £25/MWh | £15/MWh |
275+ | Natural gas | \\ ( \lambda\_ {c\_ {gas},r,t} \\ ) | £35/MWh | £25/MWh |
276+
277+ ### NPV Approach (Tool A)
278+
279+ #### Calculate Net Revenue per Unit of Activity
280+
281+ ** For \\ (t\_ 0\\ ) (peak period):**
282+
283+ \\ [
284+ \begin{aligned}
285+ AC_ {t_ {0}}^{NPV} &= (1.0 \times 90) + (0.5 \times 25) + (-2.5 \times 35) - 5 \\\\
286+ &= 90 + 12.5 - 87.5 - 5 \\\\
287+ &= \text{£10/MWh}
288+ \end{aligned}
289+ \\ ]
290+
291+ The asset earns £10 profit for every MWh it operates during peak periods.
292+
293+ ** For \\ (t\_ 1\\ ) (off-peak period):**
294+
295+ \\ [
296+ \begin{aligned}
297+ AC_ {t\_ 1}^{NPV} &= (1.0 \times 50) + (0.5 \times 15) + (-2.5 \times 25) - 5 \\\\
298+ &= 50 + 7.5 - 62.5 - 5 \\\\
299+ &= \text{£} -10 \text{/MWh}
300+ \end{aligned}
301+ \\ ]
302+
303+ The asset loses £10 for every MWh it operates during off-peak periods.
304+
305+ #### Dispatch Optimisation
306+
307+ The optimisation maximises total net revenue across all time periods:
308+
309+ \\ [
310+ \max \sum\_ t act\_ t \cdot AC\_ t^{NPV} = act\_ {t_ {0}} \cdot 10 + act\_ {t\_ 1} \cdot (-10)
311+ \\ ]
312+
313+ where \\ ( act\_ t \\ ) is the activity (operational level) in each time slice, subject to operational
314+ constraints and demand requirements.
315+
316+ In this case, the optimiser will prefer to dispatch the asset during \\ (t\_ 0\\ ) (profitable) and
317+ minimise operation during \\ (t\_ 1\\ ) (unprofitable), subject to technical constraints such as minimum
318+ load requirements.
319+
320+ #### Profitability Index
321+
322+ The profitability index is calculated as:
323+
324+ \\ [
325+ \text{PI} = \frac{\sum\_ t act\_ t \cdot AC\_ t^{NPV}}{AFC \times cap}
326+ \\ ]
327+
328+ Suppose the dispatch optimiser determines \\ ( act\_ {t\_ {0}} = 80 \\ ) MWh and \\ ( act\_ {t\_ 1} = 20 \\ )
329+ MWh are the optimal activity levels:
330+
331+ \\ [
332+ \begin{aligned}
333+ \text{PI} &= \frac{(80 \times 10) + (20 \times (-10))}{1{,}000 \times 100} \\\\
334+ &= \frac{800 - 200}{100{,}000} \\\\
335+ &= \frac{600}{100{,}000} \\\\
336+ &= 0.006
337+ \end{aligned}
338+ \\ ]
339+
340+ The profitability index is then compared against all other options to determine which asset provides
341+ the best return on investment for serving the demand.
342+
343+ ### LCOX Approach (Tool B)
344+
345+ #### Net Cost per Unit of Activity
346+
347+ ** For \\ (t\_ 0\\ ) (peak period):**
348+
349+ \\ [
350+ \begin{aligned}
351+ AC\_ {t\_ {0}}^{LCOX} &= 5 + (2.5 \times 35) - (0.5 \times 25) \\\\
352+ &= 5 + 87.5 - 12.5 \\\\
353+ &= \text{£80/MWh}
354+ \end{aligned}
355+ \\ ]
356+
357+ It costs £80 per MWh to operate during peak periods (net of heat by-product sales).
358+
359+ ** For \\ (t_1\\ ) (off-peak period):**
360+
361+ \\ [
362+ \begin{aligned}
363+ AC\_ {t\_ 1}^{LCOX} &= 5 + (2.5 \times 25) - (0.5 \times 15) \\\\
364+ &= 5 + 62.5 - 7.5 \\\\
365+ &= \text{£60/MWh}
366+ \end{aligned}
367+ \\ ]
368+
369+ It costs £60 per MWh to operate during off-peak periods, reflecting lower gas prices
370+ and lower heat by-product value.
371+
372+ #### Capacity and Dispatch Optimisation
373+
374+ The optimiser determines the most cost-effective capacity and dispatch pattern to meet demand across
375+ both time periods by minimising the total annualised cost with respect to decision variables
376+ \\ ( cap \\ ) and \\ ( act\_ t \\ ):
377+
378+ \\ [
379+ AFC \cdot cap + \sum\_ t act\_ t \cdot AC\_ t^{LCOX} = 1{,}000 \cdot cap + act\_ {t\_ {0}}
380+ \cdot 80 + act\_ {t\_ 1} \cdot 60
381+ \\ ]
382+
383+ #### Cost Index (Levelised Cost of X)
384+
385+ The Cost Index is calculated as:
386+
387+ \\ [
388+ \text{Cost Index} = \frac{AFC \cdot cap + \sum\_ t act\_ t \cdot AC\_ t^{LCOX}}{\sum\_ t act\_ t}
389+ \\ ]
390+
391+ Suppose the optimiser determines \\ ( cap = 100 \\ ) MW, \\ ( act\_ {t\_ {0}} = 150 \\ ) MWh,
392+ and \\ ( act\_ {t\_ 1} = 80 \\ ) MWh are the optimal capacity and activity levels:
393+
394+ \\ [
395+ \begin{aligned}
396+ \text{Cost Index} &= \frac{(1{,}000 \times 100) + (150 \times 80) + (80 \times 60)}{150 + 80} \\\\
397+ &= \frac{100{,}000 + 12{,}000 + 4{,}800}{230} \\\\
398+ &= \frac{116{,}800}{230} \\\\
399+ &= \text{£508/MWh}
400+ \end{aligned}
401+ \\ ]
402+
403+ The Cost Index is £508 per MWh of electricity produced.
404+ This metric is compared across all supply options to identify
405+ the lowest-cost solution for meeting demand.
205406
206407[ framework-overview ] : https://energysystemsmodellinglab.github.io/MUSE2/model/index.html#framework-overview
207408[ Dispatch Optimisation Formulation ] : ./dispatch_optimisation.md
0 commit comments