Adding investments
Investment options are added through loading the package EnergyModelsInvestments
. EnergyModelsInvestments
was previously seen as extension package to EnergyModelsBase
, that it was dependent on EnergyModelsBase
and only allowed investment options in EnergyModelsBase
. This approach was reversed from version 0.7 onwards and EnergyModelsInvestments
is now a standalone package and provides an extension to EnergyModelsBase
.
General concept
Investment options are added separately to each individual node through the field data
. Hence, it is possible to use different prices for the same technology in different regions or allow investments only in a limited subset of technologies.
We differentiate between SingleInvData
and StorageInvData
. Both types inlude as fields AbstractInvData
which can be either in the form of StartInvData
or NoStartInvData
. The exact description of the individual investment data and their fields can be found in the public library of EnergyModelsInvestments
.
Investments require the application of an InvestmentModel
instead of an OperationalModel
. This allows us to provide two core functions with new methods, constraints_capacity_installed
(as described on Constraint functions), variables_capex
, a function previously not declaring any variables, and the function objective
for declaring the objective function.
Added variables
Investment options increase the number of variables. The individual variables are described in the documentation of EnergyModelsInvestments
.
All nodes (except Storage
nodes) with investments use the prefix :cap
. Storage
nodes utilize the prefices :stor_level
for level capacity investments, :stor_charge
for storage charging capacity investments, and :stor_discharge
for storage discharge capacity investments. Storage
nodes only include these variables if they have the investment potential for the individual capacities.
Storage nodes have in general the possibility to allow for investments in all individual capacities or only a subset of capacities. However, we do not consider a discharge capacity for a RefStorage
node as it is as simple as possible. Hence, it is possible to discharge a RefStorage
node within an operational period.
Although we include the potential for investments in both the charge and level capacities, we do not enforce that you include investment data for both capacities. Hence, it is entirely up to the user to specify whether he wants to include, e.g., an unlimited charge capacity and only investments in the level capacity, or a fixed level capacity and investments in charge capacities, or any combination.