Skip to content
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

Is available_flow_cap correct under various settings? #654

Open
1 of 3 tasks
sstroemer opened this issue Aug 7, 2024 · 1 comment
Open
1 of 3 tasks

Is available_flow_cap correct under various settings? #654

sstroemer opened this issue Aug 7, 2024 · 1 comment
Labels

Comments

@sstroemer
Copy link
Contributor

sstroemer commented Aug 7, 2024

What happened?

Cleaning up a former discussion (see #643), regarding the points around available_flow_cap.

My initial comment

I failed figuring that one out from the docs, so just posting current question:

Assuming flow_cap_max is set, and operating_units exists (so integer_dispatch = true, therefore cap_method = integer must be set, and both operating_units and purchased_units exists), then:

  1. available_flow_cap_continuous sets flow_cap as upper bound.
  2. available_flow_cap_binary enforces the second upper bound as flow_cap_max * operating_units, based on whether or not any units are actually operating.
  3. operating_units is bounded by purchased_units.
  4. flow_cap is already bounded by flow_cap_max * purchased_units.

So (2.) sets a bound on available_flow_cap (using operating_units), that is tighter than the one (1.) constructs, since that in the end comes down to purchased_units. This makes me think, this actually imposes a lower bound on flow_cap, meaning it could be interpreted as caring about flow_cap >= available_flow_cap? Or is that because flow_cap is actually the continuous ("variable") cost associated with sizing the unit? But that would only work for units which have binary investment, which these do not need to have? (and here is where I'm getting lost)

Initial reply by @brynpickering (c.f. comment)

(1) and (2) are part of a 3-part constraint (along with available_flow_cap_max_binary_continuous_switch) that allows you to effectively multiply a binary decision variable with a continuous one. It enables "if operating units == 0, available capacity == 0. If operating units > 0, available capacity == flow capacity". I see now that it likely needs another constraint as it only works if purchased_units has a maximum of 1, i.e. it is a binary decision variable. Because, if purchased_units=2, then when operating_units=1, available capacity<=flow_cap_max * 1 (since this will be lower than flow_cap, which is flow_cap_max * 2 in this example.

Which operating systems have you used?

  • macOS
  • Windows
  • Linux

Version

latest (48148b8)

Relevant log output

No response

@sstroemer sstroemer added the bug label Aug 7, 2024
@brynpickering
Copy link
Member

I've had a think about this some more and think it is fine so long as units_max == 1. Since this constraint allows for flow_cap to be chosen from the range [flow_cap_min,flow_cap_max], there is no reason to set units_max>1.

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

No branches or pull requests

2 participants