quintel / merit

A system for calculating hourly electricity and heat loads with a merit order
MIT License
3 stars 2 forks source link

Change the way the hourly electricity price is determined #143

Closed jorisberkhout closed 8 years ago

jorisberkhout commented 8 years ago

This issue is the actionable counterpart of the discussion in https://github.com/quintel/etmodel/issues/2151. As discussed in that issue, the way we determine the hourly electricity price needs to be revisited if we are limiting the instantaneous import capacity to avoid the strange outcomes that are described in that issue.

Once we restrict the import capacity there will be several different cases for which the electricity price has to be determined. I will describe these cases below, but have the strong feeling that these can all be covered by a single method. I will discuss the latter with @antw and @grdw tomorrow.

Case 1: no import needed at any time

There is enough installed dispatchable electricity production capacity to meet the electricity demand at any time; no electricity ever needs to be imported. The hourly electricity price is set by the plant with the highest marginal costs (this has been implemented already by the commit in https://github.com/quintel/merit/pull/140).

Case 2: import needed, but sufficient capacity

There is not enough dispatchable production to meet the demand at any time. Therefore the scenarios relies on imported electricity to avoid blackouts. It is hard to determine the price of this imported electricity as this relies on the scenario(s) for the countries that export the electricity to us. Since we want import to always be the last resort, its price has to be higher than the marginal costs of the most expensive plant in the scenario. In https://github.com/quintel/etmodel/issues/2151, we decided to set the price of the imported electricity to that of the most expensive running plant plus 1 EUR/MWh.

Case 3: import needed, but not enough capacity

Essentially the price needs to be calculated in the same way as in Case 2, i.e. the price of imported electricity is set to the price of the most expensive producer plus 1 EUR/MWh. The fact that there is not sufficient import capacity will result in blackouts which will be shown by the dashboard item explained in https://github.com/quintel/etmodel/issues/2058; these blackouts do not affect the price curve.

Special case

As suggested by @ChaelKruip , we need to decide what to do when there is no dispatchable or must-run plants (i.e. plants with marginal costs) in a scenario. @ChaelKruip suggested to set the price of import set to 1 EUR/MWh in that case. (I have the feeling that this can be covered by the same method as the previous cases, i.e. if there is no plants with marginal costs, the most expensive plant has marginal costs 0 EUR/MWh and imported electricity will cost 0 + 1 = 1 EUR/MWh.

Assigning @grdw to pick this up. Testing this will involve restricting the import capacity, which can be done by reverting https://github.com/quintel/etsource/commit/7f8ab4a5edc27626b9388b8be2a9e7c622bd4f3d. I suggest doing this manually to avoid having a commit that starts with Revert "Revert "Revert"":.

jorisberkhout commented 8 years ago

As discussed with @antw and @grdw, assigning this to @antw .

antw commented 8 years ago

I have pushed this to an ETEngine branch: merit-import-price.

@grdw Do you want to cherry-pick that onto your own changes, or would you prefer a pull request?

grdw commented 8 years ago

I'll cherry-pick the changes, thanks.

grdw commented 8 years ago

Issues is closed by https://github.com/quintel/etengine/pull/852