Skip to content

Release v0.7.0.dev4

Pre-release
Pre-release
Compare
Choose a tag to compare
@sjpfenninger sjpfenninger released this 10 Sep 15:32
· 11 commits to main since this release
dab730d

|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()