# Upcoming release of MUSE2 ## New features - Users can now optionally pass [custom options][highs-opts-docs] to the HiGHS solver ([#1276]) - Input files are now copied to the output folder for reference ([#1282], [#1303]) - Implement a new appraisal approach for the LCOX objective type ([#1319]) - Circular commodity markets can now use cost-based pricing strategies ([#1322]) - The `max_decommission_year` column in `assets.csv` is now optional, defaulting to `commission_year` plus the process's lifetime if not provided ([#1354]) - Investment/commodity graphs (as generated by `muse2 save-graphs`) now include secondary (non-primary) edges ([#1361]) - Implement a new appraisal approach for the NPV objective type ([#1379]) - Added a configurable `commodity_balance_epsilon` model parameter to help candidate assets dispatch during investment appraisal ([#1387], [#1445]) - New tranching approach for investment appraisal, sizing candidate asset capacities based on annual demand rather than demand limiting capacity ([#1391], [#1395]) - Added a fallback price to investment appraisal to reduce the risk of failed dispatch runs ([#1420]) - The execution time of key simulation steps (e.g. dispatch, agent investment) is now logged ([#1421]) - The `addition_limit` column in `process_investment_constraints.csv` is now optional ([#1427]) - Memory usage and performance has been drastically improved for divisible assets with many units ([#1464]) - `asset_capacities.csv` now reports total and mothballed capacity and unit counts ([#1461]) ## Breaking changes - Changed the default `pricing_strategy` for SED/SVD commodities from "shadow" to "full_average" ([#1281]) - The individual units of divisible assets are no longer treated as separate assets and are instead grouped under a single larger asset, affecting a number of output files. The `group_id` column has been removed from all files. ([#1286], [#1302], [#1455]) - The `agent_search_space.csv` input file has been renamed to `agent_search_spaces.csv` for consistency ([#1293]) - Due to an internal change, some options in CSV files are now case sensitive (e.g. you must put `lcox` rather than `LCOX`). The error message you see if it does not match will now be more informative, however. ([#1376]) - Stricter input validation: `capacity_to_activity` must now be greater than zero. Previously, `capacity_to_activity = 0` was permitted ([#1391]) ## Bug fixes - Fix misleading warning message for assets decommissioned before simulation start ([#1259]) - Avoid installing excessive candidate capacity during investment when there is little demand remaining ([#1271]) - Fix parsing and validation of agent search space file ([#1293]) - Fix a bug in asset selection for circular commodity markets when agents in the same cycle have different commodity shares ([#1323]) - Fix demand limiting capacity calculations to account for seasonal/annual activity limits ([#1326]) - Prevent commodities of type `OTH` from being specified in `agent_commodity_portions.csv` ([#1327]) - Use shadow prices rather than market prices for appraisal optimisations and dispatch runs during investment ([#1349]) - Asset selection can now continue even if it runs out of options, giving dispatch a chance to still meet demand, rather than failing immediately ([#1365]) - Calculate commodity prices using the dispatch solution without candidate assets, so that they are consistent with the flows reported in `commodity_flows.csv` ([#1389]) - Fix price calculations to prioritise active assets over inactive ones when determining commodity prices ([#1392]) - The `unmet_demand.csv` output file is no longer created unless it is needed ([#1405]) - Mothballed assets are now excluded from the main dispatch run ([#1458]) [highs-opts-docs]: ../developer_guide/custom_highs_options.md [#1259]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1259 [#1271]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1271 [#1276]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1276 [#1281]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1281 [#1282]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1282 [#1286]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1286 [#1293]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1293 [#1302]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1302 [#1303]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1303 [#1319]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1319 [#1322]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1322 [#1323]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1323 [#1326]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1326 [#1327]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1327 [#1349]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1349 [#1354]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1354 [#1361]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1361 [#1365]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1365 [#1376]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1376 [#1379]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1379 [#1387]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1387 [#1389]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1389 [#1391]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1391 [#1392]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1392 [#1395]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1395 [#1405]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1405 [#1420]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1420 [#1421]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1421 [#1427]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1427 [#1445]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1445 [#1455]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1455 [#1458]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1458 [#1464]: https://github.com/EnergySystemsModellingLab/MUSE2/pull/1464