For this project we want to improve the electricity price calculation for Merit.
Current situation (IST)
The price of electricity in the Netherlands, P(NL), is at every hour defined by the marginal cost of the first inactive plant. That is: the price-setting plant is the next plant in the merit order.
Envisioned situation (SOLL)
The price of electricity in the Netherlands, P(NL), is at every hour defined by these rules:
Is the current producing plant a dispatchable plant? => the price is equal to the marginal cost function of the plant (see https://github.com/quintel/merit/issues/109). There is one important subtlety here: The const function needs to be evaluated at the total capacity used of the current plant type (say, gas_turbine) plus the capacity of one extra unit of this plant type.
So, instead of treating a whole group of power plants of the same type as one big plant (which we are currently doing), we use a cost-function that mimics the behaviour of treating all individual plants of the same type separately.
Because the price should be set by the marginal cost of the 'next' plant in the merit order, we need to evaluate linear_price_step(used_capacity + typical_capacity) to get the price.
A related subtlety (not a bug!) is that the function is not defined if you are using the 'last' plant of a 'block of plants' of the same type. In that case the price should (still) be set by the next plant in the merit order, which is of a different type (say, diesel engine).
Is the current producing 'plant' an interconnector? => the price is equal to the price curve (at this hour) of the interconnector.
This is an attempt to re-write https://github.com/quintel/merit/issues/107 into a clearer ticket.
For this project we want to improve the electricity price calculation for Merit.
Current situation (IST)
The price of electricity in the Netherlands, P(NL), is at every hour defined by the marginal cost of the first inactive plant. That is: the price-setting plant is the next plant in the merit order.
Envisioned situation (SOLL)
The price of electricity in the Netherlands, P(NL), is at every hour defined by these rules:
So, instead of treating a whole group of power plants of the same type as one big plant (which we are currently doing), we use a cost-function that mimics the behaviour of treating all individual plants of the same type separately.
Because the price should be set by the marginal cost of the 'next' plant in the merit order, we need to evaluate
linear_price_step(used_capacity + typical_capacity)
to get the price.A related subtlety (not a bug!) is that the function is not defined if you are using the 'last' plant of a 'block of plants' of the same type. In that case the price should (still) be set by the next plant in the merit order, which is of a different type (say, diesel engine).