Release v0.7.0.dev8
Pre-releaseUser-facing changes
|changed| Rename definition_matrix input array to active, indexed over only nodes and techs (no longer also carriers), to align with YAML active definition.
|changed| |backwards-incompatible| foreach now restricts components to active node/tech combinations only; it no longer implicitly restricts the carriers dimension. Carrier membership must be stated explicitly in a component's where string (e.g., carrier_out, or a reference to a decision variable that is itself gated on carriers).
|removed| |backwards-incompatible| defined math helper function no longer available. Users should now define a boolean lookup array in their inputs to access the same functionality.
|new| init config key retain_inactive which allows deactivated components to remain in the input array rather than be cleaned out. Enables components to be re-activated after model instantiation but before running the optimisation problem. Defaults to False for backwards compatibility.
|new| Optimisation problems can be built and solved with the open-source HiGHS solver via a new, direct backend interface: config.build.backend: highs (#856). Piecewise constraints are not yet available in this backend.
|removed| link_flow_cap decision variable, for constraining the flow_cap either end of a transmission link to the same value. Instead, rather than via this auxiliary variable, the constraint is applied directly to each flow_cap entry.
|changed| link_from/link_to and one_way transmission technology parameters persist in the inputs array and their handling is deferred to the math.
|new| map_dim math helper function, to map from a string lookup array indexed over dimension(s) != , where entries are references to values of dimension , to a boolean array. |fixed| "Running in Python" docs to load models with calliope.read_yaml instead of the removed calliope.Model(path) instantiation form (#870).
|fixed| Default values on masked array entries entering into math expression summation. In particular, fixes sum(flow_cap, over=carriers) on the constraint source_availability_supply erroneously returning inf (#862).
|fixed| Time clustering method, to handle cases where floating point errors can lead to index mismatches and dropped clusters (#826).
|new| user-defined math example introducing monthly peak charges (#727).
|changed| data table key data → table and parameters → inputs, to avoid confusion with math components (#814).
|fixed| parameters loaded in from multiple data tables indexed over different dimensions broadcast across nodes and techs correctly (#806).
|new| YAML math section for creating data arrays after solving a model, using expressions combining inputs and/or results (#638).
|new| Dimensions can now be referenced in math where and expression strings and arithmetic can be used when making comparisons and using helper functions in where strings (#733).
|removed| Duplication of math attributes in array attributes. For example, model.inputs.flow_cap_max.attrs["default"] is now only available from model.math.build.parameters.flow_cap_max.default.
|changed| Init config can be updated on re-init and on loading a model from NetCDF, e.g. to apply new subsetting, resampling, clustering, math.
|fixed| Reloading a clustered model from file was attempting to re-cluster (#824).
|fixed| Example notebook outputs no longer clutter search results in docs and search result example notebook pages are grouped under the top-level page header (#675).
|fixed| Documentation now clarifies more explicitly that Calliope is unit-agnostic and that capacity and its costs are relative to carrier flow (#775).
|fixed| Documentation explains better how dimensions and broadcasting work (#667).
|fixed| Documentation improvements: Clarify dimension subsetting documentation, always reference calliope.read_yaml(path) rather than calliope.Model(path) (#829)
|changed| Community and help links now point to Zulip (https://calliope-modelblocks.zulipchat.com/) instead of GitHub Discussions.
|fixed| Pre-defined operate mode math is now documented alongside the other built-in math.
|fixed| Built-in math documentation now shows components that an override deactivates (REMOVED) and those it moves to a different component group, e.g. from decision variable to parameter (REDEFINED).
|changed| Math documentation includes math components that have no math expression to show, documenting them by their description alone.
What's Changed
- Add hook to clean notebook pages in docs search index by @brynpickering in #828
- Remove _reentry; add runtime entries for timeseries agg/math updates by @brynpickering in #832
- Remove stderr redirect in pyomo backend by @brynpickering in #837
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #840
- Add cost source use & reorganise annual investment cost expression by @brynpickering in #835
- Simplify math conditionals by @brynpickering in #836
- Update parsing to allow math and dims in where strings by @brynpickering in #834
- Make gurobi warmstart test compatible with gurobi>=13 by @brynpickering in #846
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #841
- Postprocess yaml by @brynpickering in #839
- Add all test math lps by @brynpickering in #845
- Add tests for pre-defined math checks by @brynpickering in #847
- Restructure test directory; remove unused files and fixtures by @brynpickering in #849
- Fix/differing nodes techs in tables by @brynpickering in #848
data→tableandparameters→inputsin data table schema by @brynpickering in #855- Add monthly peak charging example; Fix example math tests by @brynpickering in #850
- Add new clustering approach & tests on long timeseries by @brynpickering in #854
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #857
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #863
- Update array default filling timing by @brynpickering in #864
- docs: load models with calliope.read_yaml in Running in Python guide by @SAY-5 in #871
- Small docstring typo fixes by @marijacveevska in #858
- Docs: restructuring by @sjpfenninger in #865
- Replace AttrDict with pydantic models in model data builder; add tests by @brynpickering in #868
- A few minor fixes for docs by @brynpickering in #872
- [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci[bot] in #875
- Update solver documentation (CPLEX) by @FLomb in #825
- Minor docs fixes by @sjpfenninger in #876
- Minor documentation fixes (part 2) by @sjpfenninger in #877
- Point to Zulip by @sjpfenninger in #878
- Consistent references to Calligraph by @sjpfenninger in #879
- All contributors by @sjpfenninger in #880
- Fix link-check false positives by @irm-codebase in #886
- Add non-code contributors to all-contributors by @sjpfenninger in #887
- pixi dependency management by @brynpickering in #882
- build: bump numpy lower bound to 2.0 by @xyf5432 in #889
- Add highs backend by @brynpickering in #856
- Refactor
activeby @brynpickering in #869 - Minor docs fixes for 0.7.0 by @sjpfenninger in #891
- Add operate mode to the docs ref page by @brynpickering in #893
- Various minor fixes in migration guide by @brynpickering in #894
- Release v0.7.0.dev8 by @irm-codebase in #895
New Contributors
- @SAY-5 made their first contribution in #871
- @marijacveevska made their first contribution in #858
- @xyf5432 made their first contribution in #889
Full Changelog: v0.7.0.dev7...v0.7.0.dev8