refactor: calculate marginal cost via linearized quadratic #603
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request doc
Purpose
When exporting a
Scenario
/Grid
to a PyPSA Network, calculate the generators' marginal cost using a linearized quadratic (from Pmin to Pmax), rather than just the linear component of the quadratic curve.What the code is doing
For generators where
Pmin != Pmax
, the expression[(a*Pmax^2 + b*Pmax + c) - (a*Pmin^2 + b*Pmin + c)]/(Pmax - Pmin)
simplifies tob + a * (Pmax + Pmin)
, so we build themarginal_cost
column based on this expression. For the edge case wherePmin = Pmax
(e.g. if we've scaled generators down to 0), the existing linear term will still be used (sincepandas.Series.combine_first
only fills null values or values that aren't present in the first Series' index).Testing
Tested manually:
Time estimate
10 minutes.