Release notes

Version 0.6.8 (2024-04-18)

  • Added potential for negative emissions. This change requires the user to always constrain the variable emissions_node, if it is defined by the user. By default, this is achieved in the developed packages through EmissionsData or the addition of additional bounds on the variable :emissions_node through the JuMP function set_lower_bound.
  • Provided a contribution section in the documentation.
  • Minor changes in the naming convention in the documentation.
  • Removed \texttt{} from docstrings.

Version 0.6.7 (2024-03-21)

  • Allow for deactivation of timeprofile checks while printing a warning in this case.
  • Fixed a bug for a too short StrategicProfile in the checks.
  • Added checks for the case dictionary.
  • Extended checks for the modeltype.
  • Added functions that can be used to check whether a TimeProfile can be indexed over StrategicPeriods, RepresentativePeriods, or OperationalScenarios.

Version 0.6.6 (2024-03-04)


  • Fixed a bug when running the examples from a non-cloned version of EnergyModelsBase.
  • This is achieved through a separate Project.toml in the examples folder.


  • Fixed the bug preventing the time profile checks to run.
  • Included checks of the input data and for all nodes.
  • Included tests for checks.

Minor updates

  • Added functions inputs, outputs, and data_nodes for Availability and outputs for Source nodes.
  • Allow availability to not require all resources in the the input and output field.
  • Moved all files declaring structures to a separate folder for improved readability.
  • Reworked the structure of the test folder.

Version 0.6.5 (2024-01-31)

  • Updated the restrictions on the fields of individual types to be consistent.

Version 0.6.4 (2024-01-18)

  • Minor modification to the EmissionsData allowing now also time dependent process emissions.
  • This is achieved through switching to a parametric type.

Version 0.6.3 (2024-01-17)

  • Changed name of constraints_level to constraints_level_sp when the time input is given as a StrategicPeriod to improve understandability.
  • Add modeltype::EnergyModel as an argument to the methods constraints_level_sp (see above) and constraints_level_aux.

Version 0.6.2 (2024-01-17)

  • When variables are created with the method variables_nodes, it will lead to an ErrorException when the method tries to create a variable that has already been created. This is ok, and this error should be ignored. This change specifies exactly what error should be ignored, to avoid that other types of errors are also ignored.

Version 0.6.1 (2024-01-11)

  • Fix: add missing parenthesis in the objective function.

Version 0.6.0 (2023-12-14)

  • Switched fields Input and Output of Availability nodes from Dict{Resource, Real} to Array{<:Resource}. The former is still available as a constructor, while a new constructor is introduced which requires the input only once.
  • All fields in composite types are now lower case.
  • Renamed Network to NetworkNode. NetworkNode can be considered to be replaced in a later iterations as it is not really needed.
  • Added functions for extracting the fields of Nodes, Resources, and EnergyModels to allow for extensions.
  • Added export of functions that are frequently used in other packages.
  • Moved the emissions to a Data type on which we can dispatch, depending on the chosen approach for capture and process emissions.
  • Redesigned storage as parametric type to dispatch on the level balance. This includes as well the introduction of a new variable.
  • Included potential for different durations of operational periods.
  • Included representative periods. These do only affect a Storage node as these are the only time dependent nodes.
  • Added emission prices to OperationalModel.

Version 0.5.2 (2023-11-06)

  • Introduced method create_model that can take a JuMP.Model as input to simplify potential use of other type of models
  • Fixed the documentation to avoid errors

Version 0.5.1 (2023-06-16)

  • Updated the documentation based on the new format

Version 0.5.0 (2023-06-01)

Switch to TimeStruct.jl

  • Switched the time structure representation to TimeStruct.jl
  • TimeStruct.jl is implemented with only the basis features that were available in TimesStructures.jl. This implies that neither operational nor strategic uncertainty is included in the model

Version 0.4.0 (2023-05-30)

Additional input data changes

  • Changed the structure in which the extra field Data is included in the nodes
  • It is changed from Dict{String, Data} to Array{Data}

Version 0.3.3 (2023-04-26)

  • Changed where storage variables are declared to avoid potential method ambiguity through new storage variables when using EnergyModelsInvestments

Version 0.3.2 (2023-02-07)

  • Generalized the function names for identifying and sorting the individual introduced types.

Version 0.3.1 (2023-02-03)

  • Take the examples out to the directory examples

Version 0.3.0 (2023-02-02)

Fields of reference types and new types

  • Removal of all process emissions and CO₂ capture from reference types to avoid having to include them as well

in all subtypes defined later to keep the fallback option. This requires in the future to***remove*** CO₂ as output when using CO₂ capture as it was previously the case. The original types are retained so that they can still be used

  • Introduction of a type RefStorageEmissions to account for a storage unit that can be used for storing ResourceEmit

Introduction of functions for constraints generation

  • Substitution of variable and fixed OPEX calculations as well as capacity and flow constraints through functions which utilize dispatching on node types

Redefinition of introduction of global data

  • Removal of the type AbstractGlobalData and all subtypes and substitution through EnergyModel and the corresponding subtypes
  • Addition of the field CO2_instance in the type OperationalModel
  • Addition of ModelType to the function create_node to be able to use different ids for the CO₂ resource

Additional changes

  • Redefining CO2Int in fields of type Resource to CO2_int to be consistent with the other types
  • Minor changes in constraint description that do not break previous code
  • Changed the input to the function variables_node to simplify the generation of variables for a specific node type

Version 0.2.7 (2022-12-12)

Internal release

  • Renamed packages to use common prefix
  • Updated README

Version 0.2.4 (2022-09-07)

Feature update and changes in export

  • Inclusion of time dependent profiles for surplus and deficit of sinks
  • Inclusion of parameter checks for surplus and deficit of sinks
  • Export of all reference nodes for easier identification of the nodes
  • Changes in the test structure with improved testing of variables
  • Changes in doc strings for individual functions/types

Version 0.2.3 (2021-09-07)

Changes in naming

  • Major changes in both variable and parameter naming, check the commit message for an overview

Version 0.2.2 (2021-08-20)

Feature updates

  • Change of Availability to abstract type and introduction of GenAvailability as composite type to be able to use multiple dispatch on the availability nodes
  • Inclusion of the entry fixed OPEX to the node composite types
  • Inclusion of the entry data to the node composite types to provide input required for certain additional packages like investments
  • New function for checks of node data so that we have an a priori check of all model data

Changes in naming

  • Introduce the optimization variables storlevel and stormax for storages, and use these instead of capusage and capmax for the constraints on Storage.
  • Use the new variable cap_storage in Storage nodes for the installed storage capacity.

Version 0.2.1 (2021-04-22)

Feature updates

  • Reduction in variables through introduction of input/output (#2)

dictionaries for all nodes that only include necessary components

  • Improvement related to emissions to avoid wrong accounting when other emission carriers than CO₂ are present (#2)
  • Link resources generated automatically from input (#2)

Changes in naming

  • Removal of prefix "create" before "constraints" and "variables"
  • "createmodule" switched to "createnode"

Version 0.2.0 (2021-04-19)

  • Inclusion of abstract type and structures for both resources and (#1)

differentiation in nodes

  • Development of new functions for the given data structures to obtain (#1)

subsets of the system

  • Development of the core structure in model.jl for allowing variations (#1)

in the different nodes

  • Implementation of fallback solutions for source, network, storage,

and sink (#1)

  • Inclusion of availability node for easier distribution of energy in a

single geographical node and transfer from one geographical node to the next (#1)

  • Providing a test case that can be used for playing around with the simple

system (#1)

Version 0.1.0 (2021-03-19)

  • Initial (skeleton) version