Skip to content

Releases: calliope-project/calliope

Release v0.7.0.dev4

10 Sep 15:32
dab730d
Compare
Choose a tag to compare
Release v0.7.0.dev4 Pre-release
Pre-release

|fixed| Decision variable domain in math docs to use $\in$ instead of $\forall$ (#652).

|fixed| Clarity of flow_cap_min description in documentation (#653).

|changed| API/schema documentation is de-ranked in documentation search bar results (#670).

|new| Math component cross-references in both directions ("uses" and "used in") in Markdown math documentation (#643).

|fixed| Duplicated links in math documentation (#651).

|changed| node_groups and tech_groups changed to a general top-level templates key,
accessed via the template key (replacing inherit) in nodes and techs (#600).

|fixed| Contribution of cost_om_annual_investment_fraction to total investment costs, to not apply to depreciated costs (#645).

|fixed| Math for multi-carrier variable export costs (#663).

|new| Piecewise constraints added to the YAML math with its own unique syntax (#107).
These constraints will be added to the optimisation problem using Special Ordered Sets of Type 2 (SOS2) variables.

|new| Direct interface to the Gurobi Python API using !#yaml config.build.backend: gurobi or !#python model.build(backend="gurobi").
Tests show that using the gurobi solver via the Python API reduces peak memory consumption and runtime by at least 30% for the combined model build and solve steps.
This requires the gurobipy package which can be installed with mamba: mamba install gurobi::gurobi.

|fixed| Force a header row in tabular data loaded from CSV to (#596).
Fixes issue where unexpected index levels can end up in the loaded data (#573).

|fixed| Single element lists/sets in the model Dataset attribute dictionary are restored to lists/sets on loading from NetCDF (#614).

|new| Decision variables and global expressions can have a title defined, which will be available in the model results as attributes of those components and can be used for e.g. visualisation (#582).
Parameter titles from the model definition schema will also propagate to the model inputs.

|fixed| Backend parameter updates propagate correctly through global expressions in the order those expressions were defined (#616).

|fixed| If setting model.backend.verbose_strings(), rebuilt model components from making backend parameter updates will automatically have verbose strings (#623).

|fixed| Erroneous use of dimensions: in docs example of an indexed parameter (#612).

|changed| add_dimensions to add_dims in data_sources definition to align with dims in indexed parameter definition (#621).

|new| Allow extracting shadow prices into results by listing constraints in config.solve.shadow_prices, e.g. config.solve.shadow_prices: ["system_balance"] Shadow prices will be added as variables to the model results as shadow_price_{constraintname}, e.g. shadow_price_system_balance.

|new| Model stores key timestamps as attributes:

  • timestamp_model_creation: at the start of Model.__init__()
  • timestamp_build_started: at the start of Model.build()
  • timestamp_build_complete: at the end of Model.build()
  • timestamp_solve_started: at the start of Model.solve()
  • timestamp_solve_complete: at the end of Model.solve()

Release v0.7.0.dev3

15 Feb 10:16
872978d
Compare
Choose a tag to compare
Release v0.7.0.dev3 Pre-release
Pre-release

Minor updates to the v0.7.0 pre-release, mostly to address documentation issues.


|new| mkdocs_tabbed option when writing math documentation to file (calliope.Model.math_documentation.write(...)) which will add YAML snippets to all rendered math as a separate "tab" if writing to Markdown.
Requires the PyMdown tabbed extension to render the tabs correctly in an MkDocs project.

|new| List of pre-defined parameters given in the pre-defined math documentation, with references back to the constraints/variables/global expressions in which they are defined (either in the expression string or the where string).

|new| Units and default values for variables and global expressions added to the math documentation.

|new| Variables and global expressions can have a default value, which is used to fill missing array elements when doing math operations.
These default values ensure that NaN doesn't creep into the built optimisation problem math and are set to values that lead to them having no impact on the optimal solution.

|new| Utility function calliope.util.schema.update_model_schema(...) to add user-defined parameters to the model schema / update existing parameters using YAML schema syntax.
calliope.util.schema.reset() can be used to clean the model schema and return to the original, pre-defined schema.

|fixed| Timeseries clustering file can be a non-ISO standard date format.
Both the index and the values of the timeseries (both being date strings) should be in the user-defined config.init.time_format.

|fixed| the decision variable purchased_units is linked to flow_cap even if neither of the parameters flow_cap_min or flow_cap_max have been defined by the user.

|changed| inbuilt math -> pre-defined math and custom math -> pre-defined math in the documentation.

Release v0.7.0.dev2

26 Jan 22:07
22bbf2d
Compare
Choose a tag to compare
Release v0.7.0.dev2 Pre-release
Pre-release

v0.7 includes a major change to how Calliope internally operates.
Along with this, there are multiple changes to how Calliope models are defined and configured.
This requires adapting models to work with v0.7.

Due to the scale of these changes, we are staging the development with a series of pre-releases for users to test the functionality.

Below is a summary of the changes made in this pre-release. For more detail on the changes in v0.7 compared to v0.6, see our page on migrating between the two in our documentation.


|new| Storage buffers available in all technology base classes.

|new| Multiple carriers and different carriers in/out available in all technology base classes.

|new| node_groups added to match tech_groups.

|new| technology efficiencies split into inflow and outflow efficiencies.

|new| Technology capacities and efficiencies can be differentiated between technology carriers.

|new| Parameters can be defined outside the scope of nodes and techs using the top-level parameters key in YAML.

|new| Any parameters can be indexed over arbitrary dimensions, both core Calliope dimensions and new, user-defined dimensions.

|new| Non-timeseries data can be loaded from CSV files or in-memory Pandas DataFrames using the top-level data_sources key in YAML.

|new| User-defined mathematical formulations using the new Calliope math syntax can be loaded when creating a model.

|new| Shadow prices obtained from a dual LP problem can be read by using model.backend.shadow_prices.get("constraint_name").

|changed| |backwards-incompatible| Updated to support Python versions >= 3.10.

|changed| |backwards-incompatible| Updated to Pandas >= v2.1, Pyomo >= v6.4, Xarray >= v2023.10.

|changed| |backwards-incompatible| Flat technology definitions, removing the distinction between essentials, constraints and costs.

|changed| |backwards-incompatible| Timeseries data is defined under the data_sources top-level key, not with file=/df= at the technology level.

|changed| |backwards-incompatible| Demand and carrier consumption values are strictly positive instead of strictly negative.

|changed| |backwards-incompatible| model.run() method → two-stage model.build() + model.solve() methods.

|changed| |backwards-incompatible| model and run top-level keys → config.init/.build/.solve.

|changed| |backwards-incompatible| locations top-level key and loc data dimensions → nodes.

|changed| |backwards-incompatible| parent technology parameter → base_tech + inherit.

|changed| |backwards-incompatible| Cost parameters are flattened and use the indexed parameter syntax.

|changed| |backwards-incompatible| links top-level key → transmission links defined in techs.

|changed| |backwards-incompatible| Various parameters/decision variables renamed (namely energy_flow_, carrier_prod/_conflow_out/_in, and resourcesource_use/sink_use).

|changed| |backwards-incompatible| Various configuration options renamed.

|changed| |backwards-incompatible| force_resource technology parameter → source_use_equals / sink_use_equals.

|changed| |backwards-incompatible| units + purchased decision variables → purchased_units.

|changed| |backwards-incompatible| Parameters added to explicitly trigger MILP and storage decision variables/constraints.

|changed| |backwards-incompatible| Structure of input and output data within a Calliope model updated to remove concatenated loc::tech::carrier sets and technology subsets (e.g. techs_supply) in favour of sparse arrays indexed over core dimensions only (nodes, techs, carriers, timesteps).

|changed| |backwards-incompatible| coordinates.lat/lon node parameter → latitude/longitude.

|changed| |backwards-incompatible| Distance units default to kilometres and can be reverted to metres with config.init.distance_unit.

|changed| |backwards-incompatible| operate mode input parameters now expected to match plan mode decision variable names (e.g., flow_cap).

|changed| |backwards-incompatible| Cyclic storage is defined per-technology, not as a top-level configuration option.

|changed| Documentation has been overhauled.

|removed| _equals constraints.
Use both _min and _max constraints to the same value.

|removed| x/y coordinates.
Use geographic lat/lon coordinates (in EPSG:4326 projection) instead.

|removed| Comma-separated node definitions.
Inheriting duplicate definitions from node_groups instead.

|removed| supply_plus and conversion_plus technology base classes.
Use supply and conversion technology base classes instead.

|removed| carrier key.
Use carrier_in and carrier_out instead.

|removed| carrier_tiers and carrier_ratios.
Use indexed parameter definitions for flow_out_eff and custom math instead.

|removed| calliope.Model.get_formatted_array.
The Calliope internal representation of data now matches the format achieved by calling this method in v0.6.

|removed| Group constraints.
Use custom math instead.

|removed| Configuration options for features we no longer support.

|removed| Plotting.
See our documentation for example of how to visualise your data with Plotly.

|removed| Clustering.
Cluster your data before creating your Calliope model.
Mapping of timeseries dates to representative days is still possible.

Release v0.6.10

18 Jan 14:11
Compare
Choose a tag to compare

Version 0.6 release compatible with Apple Silicon devices (osx-arm64).

Release v0.6.9

10 Jan 15:08
Compare
Choose a tag to compare

Release v0.6.8

07 Feb 17:28
3c3ca05
Compare
Choose a tag to compare

Release v0.6.7

29 Jul 14:37
Compare
Choose a tag to compare
Update Sphinx and dependency

Release v0.6.6-post1

12 Oct 08:47
Compare
Choose a tag to compare

Release v0.6.5

15 Jan 11:36
Compare
Choose a tag to compare

Release v0.6.4

27 May 13:16
Compare
Choose a tag to compare