spine-tools / SpineOpt.jl

A highly adaptable modelling framework for multi-energy systems
https://www.tools-for-energy-system-modelling.org/
GNU Lesser General Public License v3.0
53 stars 13 forks source link

Curtailment variable/cost and calculation of units_available #524

Closed lilanger closed 9 months ago

lilanger commented 1 year ago

Hi all, as we discussed in today's meeting, I would like to explicitly model the curtailment of RES in an islanded system. With fixed capacities, I was able to achieve that by fixing the units_on variable by setting fix_units_on to the values I previously had in the unit_availability_factor. When I invest in units, I cannot do that anymore, because that would fix the investments.

We discussed today that it might be possible to add a variable for the curtailed energy, which is calculated during post-processing. (For now, I might actually just add a very small incentive to bring my model to use the curtailment unit.)

In addition, the curtailment costs are calculated as the difference between units_on and (unit_capacity * units_available) for each hour. But since the model can just choose for the 1) PPA/investment RES: units_available <= unit_availability_factor * (num_units + units_invested_available) and unit_capacity = 1, it reduces units_available and no costs are induced.

2) Fixed capacity on-site RES: Here the problem is that with unit_online_variable_type_linear, I would define a unit_capacity, so units_available <= unit_availability_factor * (num_units + units_invested_available) reduces to units_available <= unit_availability_factor. So the RHS needs to be multiplied by the unit_capacity.

image

Maybe it would make sense to reverse this commit https://github.com/spine-tools/SpineOpt.jl/commit/22bff298fda7230a554a4985515e29e14e336874 ? It might be more transparent and prevent "hidden" curtailment.

Thanks for the discussion today!

DillonJ commented 1 year ago

Thanks for posting @lilanger

I think there are two issues here.

  1. The renewable_curtailment_costs calculation does not account for investments - I think the calculation can easily be updated to fix this. For this I have created issue https://github.com/spine-tools/SpineOpt.jl/issues/525
  2. The actual curtailed energy is not reported. I believe the solution to this is a calculated output parameter that mirrors the calculation of renewable_curtailment_costs. I have created issue https://github.com/spine-tools/SpineOpt.jl/issues/526 for this.
clizbe commented 9 months ago

Closing as redundant with new issues.