Price Elasticity Module
By default, the load parts are firm. Meaning that they represent a constant demand that is independent of price.
The price elasticity module allows us to model the loads as price elastic loads.
A price elastic load has a nominal value and a demand function, \(W(\pi)\), which gives the proportion of the nominal value that is the actual demand. Here \(\pi\) is the energy price.
The exponential demand function is given by
where \(\pi_n\) is the nominal price, at which the demand is equal to the nominal value, and \(e\) is a negative exponent. It is illustrated in the figure below. Note the upper and lower price variables \(\overline{\pi}\) and \(\underline{\pi}\).
Exponential demand function.
The linear demand function is given as a piece-wise linear curve, consisting of pairs of price and demand. This is illustrated in the figure below, where \(W(\pi)\) is created from three input pairs.
Linear demand function.
Example: The nominal load is 100 GW, the energy price is 10 mu/GWh and \(W(10) = 0.7\). This gives the actual demand \(100 \textrm{ GW} * 0.7 = 70 \textrm{ GWh}\).
See the model documentation for more mathematical details on how the price elasticity is modeled,
Usage
In addition to setting the nominal load value using the firm_load time series, either the property exponential_price_elasticity or piecewise_linear_price_elasticity must be set using
set_exponential_price_elasticity() or set_piecewise_linear_price_elasticity().
See the Python Module API for descriptions of the input time series and configuration parameters.
It is also possible to set a dynamic response to changes in the demand. This is similar to the similar dynamic capacity feature in the thermal module. Setting the response to ASYMPTOTIC or LINEAR models that changes in the demand do not happen instantly.
Example
An example of how to set up and use the price elasticity module can be found in the example notebooks.