pommes-public/pommesinvest

Fix minimum loads interaction with emissions limits

Closed this issue · 2 comments

When introducing an emissions limit, this leads to a clash with minimum loads resulting in an infeasible model.

To circumwent this, as a first workaround, minimum loads have been scaled down according to the emissions limit imposed.

The reason for this clash is still not found:

  • First, I assumed it to be a data error, i.e. by using data resulting in high minimum loads. I checked that for both, the aggregated data set to be used in pommesinvest as well as the original data set for pommesdispatch: For all years checked from 2020 to 2030, the emissions resulting solely from imposing minimum load requirements are below the allowed ones, even if only slightly below.
  • Thus, there seems to be something wrong with the way the data is handled within pommesinvest. The precise reason needs to be found and fixed.

I digged into it a little and found out interesting behaviour:

  • It seems that it is not the actual minimum loads themselves that cause trouble, but power plants with higher emissions (need) to operate above their minimum outputs.
  • Still, I don't know why this is the case as I'd expected the model to have some degrees of freedom, i.e.
    • investing into carbon-free generation or flexibility options
    • accepting very costly shortage.

@yannickwerner: Do you have any idea why this behaviour could be observed?

After some time, I was able to reapproach this issue. The reason has been found: It is that the scaling to frequencies other than hourly causes the problems. Thus, for an hourly simulation, it would not be a problem anyways.

But anyways, it should work for other frequencies, too, and here is what happens in detail:

  • The minima and maxima for power plants are scaled up whereas their nominal capacity is kept, in order to simulate e.g. daily minima which would be equal to 24 * hourly minima.
  • The emissions constraint formulation - as any other generic (periodical) integral limit from oemof.solph - includes the optimization model's timeincrement as a multiplier. For a daily frequency, this leads to the factor 24 being considered twice, once for the minima and maxima (as it should be to obtain correct energy amounts) and once for the emission factors (which is unwanted, since this is already taken care of).

(Easy) Fix: Divide the emission factors obtained from file by the respective multiplier before passing them to the emissions limit constraint formulation. 🙂