Skip to content

Commit 656eb32

Browse files
authored
Merge pull request #1229 from EnergySystemsModellingLab/v2.1.0_release_notes
Release notes for v2.1.0
2 parents 94c37be + 99fcd86 commit 656eb32

11 files changed

Lines changed: 183 additions & 97 deletions

File tree

CITATION.cff

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
cff-version: 1.2.0
22
message: |
3-
If you cite this software, please cite it as below.
3+
If you cite this software, please cite it as below.
44
5-
This work was supported via the Climate Compatible Growth (CCG) programme and the EPSRC-funded
6-
HI-ACT project (EP/X038823/2). CCG is funded by UK Aid from the UK government. However, the views
7-
expressed herein do not necessarily reflect the UK government's official policies.
5+
This work was supported via the Climate Compatible Growth (CCG) programme and the EPSRC-funded
6+
HI-ACT project (EP/X038823/2). CCG is funded by UK Aid from the UK government. However, the views
7+
expressed herein do not necessarily reflect the UK government's official policies.
88
title: MUSE2
9-
version: 2.0.0
10-
date-released: 2025-10-14
9+
version: 2.1.0
10+
date-released: 2026-03-31
1111
authors:
12-
- family-names: Dewar
13-
given-names: Alex
14-
orcid: https://orcid.org/0000-0002-2432-5964
15-
- family-names: Bland
16-
given-names: Tom
17-
orcid: https://orcid.org/0000-0001-6677-8817
18-
- family-names: Raja
19-
given-names: Sahil
20-
- family-names: Alonso Álvarez
21-
given-names: Diego
22-
orcid: https://orcid.org/0000-0002-0060-9495
23-
- family-names: D'Alessandro
24-
given-names: Adrian
25-
orcid: https://orcid.org/0009-0002-9503-5777
26-
- family-names: Smith
27-
given-names: Ryan
28-
orcid: https://orcid.org/0009-0007-7270-6853
29-
- family-names: Scharpf
30-
given-names: Benjamin
31-
- family-names: Karimi
32-
given-names: Aurash
33-
- family-names: Hawkes
34-
given-names: Adam
35-
orcid: https://orcid.org/0000-0001-9720-332X
12+
- family-names: Dewar
13+
given-names: Alex
14+
orcid: https://orcid.org/0000-0002-2432-5964
15+
- family-names: Bland
16+
given-names: Tom
17+
orcid: https://orcid.org/0000-0001-6677-8817
18+
- family-names: Raja
19+
given-names: Sahil
20+
- family-names: Alonso Álvarez
21+
given-names: Diego
22+
orcid: https://orcid.org/0000-0002-0060-9495
23+
- family-names: D'Alessandro
24+
given-names: Adrian
25+
orcid: https://orcid.org/0009-0002-9503-5777
26+
- family-names: Smith
27+
given-names: Ryan
28+
orcid: https://orcid.org/0009-0007-7270-6853
29+
- family-names: Scharpf
30+
given-names: Benjamin
31+
- family-names: Karimi
32+
given-names: Aurash
33+
- family-names: Hawkes
34+
given-names: Adam
35+
orcid: https://orcid.org/0000-0001-9720-332X
3636
license: GPL-3.0-only
3737
repository-code: https://github.com/EnergySystemsModellingLab/MUSE2

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "muse2"
3-
version = "2.0.0"
3+
version = "2.1.0"
44
authors = ["Hawkes Research Group @ Chemical Engineering, Imperial College London <a.hawkes@imperial.ac.uk>", "Imperial College London RSE Team <ict-rse-team@imperial.ac.uk>"]
55
edition = "2024"
66
description = "A tool for running simulations of energy systems"

docs/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@
2222
- [API documentation](./api/muse2/README.md)
2323
- [Release notes](release_notes/README.md)
2424
- [MUSE2 v2.0.0 (October 14, 2025)](release_notes/v2.0.0.md)
25+
- [MUSE2 v2.1.0 (March 31, 2026)](release_notes/v2.1.0.md)
2526
- [Next unreleased version](release_notes/upcoming.md)
2627
- [Other versions of documentation](versions.md)

docs/release_notes/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ To download the latest release for your platform, please see our [GitHub release
77
To see the list of changes for the current, in-progress version of MUSE2, [see here](./upcoming.md).
88

99
- [MUSE2 v2.0.0 (October 14, 2025)](./v2.0.0.md)
10+
- [MUSE2 v2.1.0 (March 31, 2026)](./v2.1.0.md)
1011

1112
[GitHub releases page]: https://github.com/EnergySystemsModellingLab/MUSE2/releases

docs/release_notes/upcoming.md

Lines changed: 0 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -13,62 +13,3 @@ ready to be released, carry out the following steps:
1313
version
1414
1515
-->
16-
17-
## New features
18-
19-
- You can now set both upper and lower bounds for process availabilities ([#1018])
20-
- Default output root path is now configurable in `settings.toml` ([#1003])
21-
- If demand cannot be satisfied by the simulation, we now inform users what the offending
22-
commodities and time slices are ([#767])
23-
- Trim whitespace from fields when reading in CSV files ([#976])
24-
- Assets can now be commissioned after a specified number of years with the `mothball_years`
25-
parameter ([#1022])
26-
- Default to no availability limits if user doesn't provide any for a process ([#1018])
27-
- Allow user to specify ranges of years in input files ([#1017])
28-
- Users can now omit empty CSV files ([#961])
29-
- Users can now optionally specify an explicit decommission year for an asset in `assets.csv` input
30-
file ([#966])
31-
- Allow for adding both a `prod` and `cons` levy to a commodity ([#969])
32-
- Availability limits can now be provided at multiple levels for a process ([#1018])
33-
- Pricing strategy can now vary by commodity ([#1021])
34-
- `marginal` and `full` commodity pricing strategies no longer require enabling
35-
`please_give_me_broken_results` ([#1185])
36-
37-
## Experimental features
38-
39-
- Assets can now be made divisible to represent many individual assets, such as a fleet of gas
40-
boilers (albeit the current implementation is slow; [#1030]). These fleets can be partially
41-
decommissioned.
42-
- Users can now have circular dependencies between commodities, such as a hydrogen power plant that
43-
itself requires electricity (though the current solution likely won't work in every situation;
44-
[#986])
45-
- There are new options for pricing strategy (`full` and `marginal`), which take capital costs into
46-
account ([#1021])
47-
48-
## Bug fixes
49-
50-
- Fix: process availability constraints were wrongly being applied to individual time slices,
51-
regardless of time slice level ([#1018])
52-
- Various fixes to process flows and availabilities input code for non-milestone years ([#868],
53-
[#1000], [#1010])
54-
- Users can now set demand to zero in `demand.csv` ([#871])
55-
- Fix: sign for levies of type `net` was wrong for inputs ([#969])
56-
- Fix `--overwrite` option for `save-graphs` command ([#1001])
57-
58-
[#767]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/767
59-
[#868]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/868
60-
[#871]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/871
61-
[#961]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/961
62-
[#966]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/966
63-
[#969]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/969
64-
[#976]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/976
65-
[#986]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/986
66-
[#1000]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1000
67-
[#1001]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1001
68-
[#1003]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1003
69-
[#1010]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1010
70-
[#1017]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1017
71-
[#1018]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1018
72-
[#1021]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1021
73-
[#1022]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1022
74-
[#1030]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1030

docs/release_notes/v2.1.0.md

Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
# Release notes for MUSE2 v2.1.0 (March 31, 2026)
2+
3+
This release represents over 5 months of development since v2.0.0, adding a number of exciting new
4+
features, as well as some small improvements, bug fixes, and underlying code changes designed to
5+
improve performance and maintainability.
6+
7+
Please be aware that there are some breaking changes in this release, which may require you to
8+
update the input files of any existing models. We have tried to outline these in the "Breaking
9+
changes" section below, but please do get in touch if you have any issues adapting models to the new
10+
version.
11+
12+
Some of the new features in this release are still experimental, and will continue to be worked on
13+
for future releases. In the meantime, any feedback on these features is very welcome.
14+
15+
As always, you can keep track of upcoming changes for the next release in the
16+
[upcoming release notes](upcoming.md).
17+
18+
## New features
19+
20+
### Asset mothballing
21+
22+
Assets can now remain unused for a certain number of years before being decommissioned, via the
23+
global `mothball_years` parameter defined in [`model.toml`] ([#1022]). The default value for this
24+
parameter is 0 years, meaning that assets are decommissioned immediately when they are no longer
25+
used, which is equivalent to the behaviour in previous versions of MUSE2.
26+
27+
### Process investment constraints
28+
29+
Users can now add yearly limits on the maximum amount of investment in each process via the new
30+
[`process_investment_constraints.csv`] file ([#1020] and [#1096]).
31+
32+
### Circular commodity dependencies
33+
34+
Users can now have circular dependencies between commodities, such as a hydrogen power plant that
35+
itself requires electricity ([#999] and [#1004]). This is currently an experimental feature that may
36+
not work in all cases - feedback is appreciated. There are also known limitations such as
37+
incompatibility with the new commodity pricing strategies (see below, [#1168]), which we plan to
38+
address in future releases. The main new parameter to be aware of is the `capacity_margin` parameter
39+
defined in [`model.toml`].
40+
41+
### Divisible assets
42+
43+
Assets can now be made divisible to represent many individual sub-assets, such as a fleet of gas
44+
boilers, which can be partially decommissioned ([#1030]). This is implemented via the new optional
45+
`unit_size` column in [`processes.csv`]. For example, a `unit_size` of 10 means that the smallest
46+
granular unit of asset capacity represents 10 capacity units (e.g. a single gas boiler, or a defined
47+
aggregate of gas boilers, depending on the desired resolution). Omitting this column or leaving
48+
values empty means that assets are indivisible (i.e. must be decommissioned in one go), which is the
49+
default behaviour and the same as in previous versions of MUSE2.
50+
51+
It is worth noting that the current implementation incurs a potentially significant performance cost
52+
when setting `unit_size` very small compared to overall capacity, although we plan to address this
53+
in future releases.
54+
55+
### New commodity pricing strategies
56+
57+
There are four new pricing strategies for commodities: `full`, `marginal`, `full_average` and
58+
`marginal_average` ([#1021] and [#1205]). Unlike previously, where the pricing strategy was set at
59+
the model level, users can now specify the pricing strategy for each commodity individually in the
60+
[`commodities.csv`] file via the new optional `pricing_strategy` column. The new strategies
61+
are in addition to the existing `shadow` and `scarcity` strategies, as well as an `unpriced` option
62+
for `oth` type commodities that should not be priced.
63+
64+
### Other new features
65+
66+
- Users can now optionally specify an explicit decommission year for an asset in [`assets.csv`]
67+
([#966])
68+
- Allow users to specify ranges of years in input files ([#1017])
69+
- You can now set both upper and lower bounds in [`process_availabilities.csv`] ([#1018])
70+
- Availability limits can now be provided at multiple levels for a process ([#1018])
71+
- Allow for adding both a `prod` and `cons` levy to a commodity in [`commodity_levies.csv`] ([#969])
72+
- The default output root path is now configurable in [`settings.toml`] ([#1003])
73+
- If demand cannot be satisfied by the simulation, we now inform users what the offending
74+
commodities and time slices are ([#767])
75+
- Trim whitespace from fields when reading in CSV files ([#976])
76+
- Default to no availability limits if user doesn't provide any for a process ([#1018])
77+
- Users can now omit empty CSV files ([#961])
78+
- Several changes to the NPV agent objective designed to improve results ([#994] and [#997])
79+
80+
## Breaking changes
81+
82+
These changes may require users to update the input files for existing models developed using
83+
previous versions of MUSE2.
84+
85+
- The previously-named `year` column in [`process_flows.csv`], [`process_availabilities.csv`],
86+
[`process_parameters.csv`] and [`process_investment_constraints.csv`] has been renamed to
87+
`commission_years` to better reflect that these parameters refer to the year in which a process
88+
is commissioned as an asset ([#964]).
89+
- The [`process_availabilities.csv`] file follows new syntax that better allows for specifying
90+
availabilities as ranges ([#1018]).
91+
- The [`commodities.csv`] file has a new compulsory `units` column ([#1110]).
92+
- The default value for the `max_ironing_out_iterations` parameter in [`model.toml`] has been
93+
changed from 10 to 1 (i.e. turning the ironing-out loop off by default; [#1170]). If users wish to
94+
use the ironing out loop, they must explicitly set this parameter to a higher value.
95+
- Pricing strategy is now set per commodity, so there is now a `pricing_strategy` column in
96+
[`commodities.csv`] rather than a single parameter in [`model.toml`] ([#1021]).
97+
98+
## Bug fixes
99+
100+
- Fix: process availability constraints were wrongly being applied to individual time slices,
101+
regardless of time slice level ([#1018])
102+
- Various fixes to process flows and availabilities input code for non-milestone years ([#868],
103+
[#1000], [#1010])
104+
- Users can now set demand to zero in [`demand.csv`] ([#871])
105+
- Fix: sign for levies of type `net` was wrong for inputs ([#969])
106+
- Fix `--overwrite` option for `save-graphs` command ([#1001])
107+
108+
[#767]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/767
109+
[#868]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/868
110+
[#871]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/871
111+
[#961]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/961
112+
[#964]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/964
113+
[#966]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/966
114+
[#969]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/969
115+
[#976]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/976
116+
[#994]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/994
117+
[#997]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/997
118+
[#999]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/999
119+
[#1004]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1004
120+
[#1000]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1000
121+
[#1001]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1001
122+
[#1003]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1003
123+
[#1010]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1010
124+
[#1017]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1017
125+
[#1018]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1018
126+
[#1020]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1020
127+
[#1021]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1021
128+
[#1022]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1022
129+
[#1030]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1030
130+
[#1096]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1096
131+
132+
<!-- Use absolute links so they work when we paste into release notes box -->
133+
[`demand.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#demandcsv
134+
[`processes.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#processescsv
135+
[`process_flows.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#process_flowscsv
136+
[`process_availabilities.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#process_availabilitiescsv
137+
[`process_parameters.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#process_parameterscsv
138+
[`process_investment_constraints.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#process_investment_constraintscsv
139+
[`commodities.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#commoditiescsv
140+
[`commodity_levies.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#commodity_leviescsv
141+
[`model.toml`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#model-parameters-modeltoml
142+
[`assets.csv`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/input_files.html#assetscsv
143+
[`settings.toml`]: https://energysystemsmodellinglab.github.io/MUSE2/file_formats/program_settings.html

docs/user_guide.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ the simulation (which should finish very quickly).
7777
The first few lines should look something like:
7878

7979
```txt
80-
[12:24:20 INFO muse2::cli] Starting MUSE2 v2.0.0
80+
[12:24:20 INFO muse2::cli] Starting MUSE2 v2.1.0
8181
[12:24:20 INFO muse2::cli] Loaded model from new_model/
8282
[12:24:20 INFO muse2::cli] Output folder: muse2_results/new_model
8383
...

schemas/input/process_availabilities.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ fields:
1919
type: string
2020
description: The region(s) to which this entry applies
2121
notes: One or more region IDs, separated by semicolons or the string `all`
22-
- name: years
22+
- name: commission_years
2323
type: string
2424
description: The milestone year(s) to which this entry applies
2525
notes:

schemas/input/process_flows.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ description: |
55
notes:
66
- Commodity flows can vary by region and year.
77
- For each process, there must be entries covering all the years and regions in which the process
8-
operates.
8+
can be commissioned.
99

1010
fields:
1111
- name: process_id
@@ -20,7 +20,7 @@ fields:
2020
notes: |
2121
One or more region IDs, separated by semicolons or the string `all`. Must be regions in which
2222
the process operates.
23-
- name: years
23+
- name: commission_years
2424
type: string
2525
description: The year(s) to which this entry applies
2626
notes:

0 commit comments

Comments
 (0)