<!– This file is generated from CHANGELOG.md by docs/scripts/update_changelog.jl. –>
Changelog
All notable changes to MacroEnergy.jl will be documented in this file.
The format is based on Keep a Changelog, and this project follows Julia package versioning through Project.toml releases.
[Unreleased]
[0.2.2] - 2026-08-05
Fixed
- Duplicate asset IDs within a system are now rejected during system generation, preventing ambiguous myopic capacity carry-over and late wide-output failures.
[0.2.1] - 2026-07-15
Changed
- Updated MacroEnergySolvers.jl version to 0.2.2
Fixed
- Fix wacc default preventing fallback to DiscountRate. Omitted
waccwas silently treated as0.0instead of falling back to the case-levelDiscountRate.
Migration guide
- Results change: no public API changed, but any case that omits an asset's
waccwill now produce different results. Previously the missingwaccdefaulted to0.0; it now falls back to the case'sDiscountRate. Cases relying on the old default will see different annualized investment costs after upgrading. To keep the old behavior, setwaccexplicitly to0.0for the affected asset(s).
[0.2.0] - 2026-05-22
Added
- Outputs can now be written to a JSON file using the
write_to_jsonmethod. This method writes to a compressed.json.gzbut also supports regular.jsonoutputs. It is not currently built into any of the run tools. - Improved JSON serialization coverage of commodities, storage, constraints, dual values, time data, solution algorithms, named tuples, JuMP containers, and special numeric values like Inf, -Inf, and NaN
Changed
- CSV asset input files can now have their
TypeandIdcolumns in any position in the file, instead of needing to be in the first two columns. TheTypeandIdcolumns are still required. run_casenow returns(case, solution)as opposed to(systems, solution). Thecaseobject contains thesystemsas well ascase-level settings.
Migration guide
- If you are using the
run_casefunction, update your code to handle the new return signature of(case, solution)instead of(systems, solution).
For example, if you previously had:
(system, solution) = run_case(@__DIR__;
optimizer=HiGHS.Optimizer,
optimizer_attributes=("solver" => "ipm", "run_crossover" => "off", "ipm_optimality_tolerance" => 1e-3)
);You should now use:
(case, solution) = run_case(@__DIR__;
optimizer=HiGHS.Optimizer,
optimizer_attributes=("solver" => "ipm", "run_crossover" => "off", "ipm_optimality_tolerance" => 1e-3)
);If you need to access the systems, you can retrieve them from the case object.
systems = case.systems[0.1.0] - 2026-04-14
Added
- Expanded result writing and postprocessing for non-served demand, storage level, curtailment, time weights, discounted and undiscounted cost outputs, and detailed cost breakdowns.
- Added full time-series reconstruction across Monolithic, Myopic, and Benders workflows through
WriteFullTimeseries. - Added
SyntheticAmmonia,SyntheticMethanol,ThermalAmmonia,ThermalAmmoniaCCS,ThermalMethanol,ThermalMethanolCCS, andOneWayTransmissionLinkassets. - Added
StorageChargeLimitConstraint, long-duration storage feasibility constraints for Benders, and additional storage safety checks. - Added Myopic restart support,
StopAfterPeriod, optional JuMP direct-model generation, optional string names, updated default HiGHS settings, and economic utilities for present-value and cash-flow calculations.
Changed
- Redesigned node supply inputs around named supply dictionaries with per-segment
price,min, andmaxvalues. - Split edge types into explicit unidirectional and bidirectional forms.
- Changed
TransmissionLinkto model bidirectional transfer; useOneWayTransmissionLinkfor one-way transfer. - Cleaned up user extension loading through the
user_additions/layout. - Renamed emissions-tracking assets to
UpstreamEmissionsandDownstreamEmissions, with compatibility aliases for older names. - Expanded documentation and tests for TimeData, timeseries outputs, retrofitting, run workflows, outputs, constraints, assets, transmission links, supply parsing, and user additions.
Removed
- Removed legacy unified output code in favor of the expanded
write_*output suite.
Fixed
- Improved Benders output parity and cost handling by performing a final operational solve for the selected planning solution.
- Fixed and improved transmission, storage, dual, cost, and documentation behavior across the release.
Migration guide
- Update node supply inputs to the named
supplydictionary format. Each supply segment should defineprice,min, andmaxvalues. Legacyprice_supplyandmax_supplyinputs are still handled, andupdate_node_supply_inputs(...)can help convert existing cases. - Review any cases using automatically generated supply segment names. Segment names now use
segment1,segment2, and so on. - Review transmission assets.
TransmissionLinkis now bidirectional by default; useOneWayTransmissionLinkwhen directionality matters. - Update any direct use of edge types to the explicit unidirectional and bidirectional edge forms.
- Update output-processing scripts that relied on the legacy unified output code. Use the expanded
write_*output functions instead. - Review models that assumed nodes did not include balance constraints by default. Nodes now have
BalanceConstraintenabled by default. - Prefer the renamed emissions assets
UpstreamEmissionsandDownstreamEmissions. Compatibility aliases remain for older names, includingFossilFuelsUpstreamandFuelsEndUse.
[0.0.3] - 2025-11-21
Added
- Added iron and steel sector assets and documentation.
- Added heat and steam sector commodities, assets, examples, and documentation.
- Added aluminum sector default real-world parameters.
- Added output support for dual values from
BalanceConstraintandCO2CapConstraint. - Added minimum retired capacity tracking and extended retrofit features to multi-stage models.
- Added Windows coverage to CI.
Changed
- Updated installation instructions, citation metadata, asset library docs, modeler debugging docs, and timeseries documentation.
Fixed
- Fixed several Windows-related path and user-additions issues.
- Fixed retrofit integer decisions, hydropower reservoir efficiency handling, documentation cross references, and Benders dual scaling behavior.
[0.0.2] - 2025-09-25
Added
- Added logging options.
- Added settings output in results.
- Added automatic Mermaid diagrams for assets.
- Added asset retrofits for single-stage cases.
- Added options to free model memory and write myopic outputs during iterations.
Changed
- Refactored output-writing utilities.
Fixed
- Fixed subcommodity loading.
[0.0.1] - 2025-08-20
Added
- Initial registered release of MacroEnergy.jl.
[Unreleased]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.2.1...HEAD [0.2.1]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.2.0...v0.2.1 [0.2.0]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.0.3...v0.1.0 [0.0.3]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.0.2...v0.0.3 [0.0.2]: https://github.com/macroenergy/MacroEnergy.jl/compare/v0.0.1...v0.0.2 [0.0.1]: https://github.com/macroenergy/MacroEnergy.jl/releases/tag/v0.0.1