Skip to content

Implement time variable MarketBidCost for thermals (only incremental) #1303

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 22 commits into
base: psy5
Choose a base branch
from

Conversation

GabrielKS
Copy link
Contributor

@GabrielKS GabrielKS commented Apr 23, 2025

In this sequel to #1284, I add the remaining MarketBidCost time variability for thermal generators: the "min gen cost" OnVariable coefficient and piecewise incremental variable costs. Extension to non-thermal generators, and implementation of time variable decremental costs for loads, are left to a future PR, as is the writing of greater-than-two-dimensional parameters to the results (#1304).

@GabrielKS GabrielKS changed the base branch from main to psy5 April 23, 2025 18:15
@GabrielKS
Copy link
Contributor Author

Draft for now as I have only handled the min gen cost so far.

@GabrielKS
Copy link
Contributor Author

GabrielKS commented Jun 5, 2025

Progress update: I've successfully validated time-varying min gen cost, breakpoints, and slopes for incremental thermal MarketBidCost!

Remaining TODOs in this PR:

  • Solve bug Bug: MarketBidCost power constraint does not account for min gen power #1318 for real. There is a stopgap in there right now, but it's not great
  • Verify the rest of the formulation, e.g., should the generator's active power limits play a role at all?
  • Rebase (or more realistically at this point, merge) to eliminate merge conflicts with psy5
  • Some code cleanup in the implementation. I don't think we need that bespoke subtype of FunctionData after all, there's some incremental vs. decremental stuff that could be done more cleanly, some lingering TODOs, etc.
  • A few more tests that I doubt will catch anything huge
  • Some test refactoring and cleanup

Things I propose to do in subsequent PR(s):

Miscellaneous notes:

  • It seems like sometimes, rather than reporting an infeasibility, HiGHS will solve a relaxation of the problem and silently give you that. For instance, I was getting fractional OnVariable values. Might be worth digging into and reproducing more minimally

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
1 participant