Release v0.7.0.dev4
Pre-release|fixed| Decision variable domain in math docs to use
|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 ofModel.__init__()timestamp_build_started: at the start ofModel.build()timestamp_build_complete: at the end ofModel.build()timestamp_solve_started: at the start ofModel.solve()timestamp_solve_complete: at the end ofModel.solve()