Should maximumCap and installedCap be decoupled or coupled?
As reported in #825, it should be decided whether maximumCap and installedCap are decoupled or not. This should also be documented well.
[decision wanted]
1) decoupled
- Additional to an
installedCapof an asset itsmaxiumCapcan be installed during optimization (this is the case now, see e.g.D1.source_non_dispatchable_optimize(). - todos in case of decision:
- Adapt check in
C0.process_maximum_cap_constraint(), also adapt docstring. - check definition of maximumCap in Parameters description
- Adapt check in
2) coupled
maximumCapis the maximum capacity in the system, includinginstalledCap- todos in case of decision:
- Adapt
maximumof functions in D1, see e.g.D1.source_non_dispatchable_optimize()to(maximumCap - installedCap) - check definition of maximumCap in Parameters description
- Adapt
Connected to #830
So seems like there actually is a problem when maximumCap < installedCap (checkout errors in E0 of this PR --> #833), which is probably the reason why we first adapted maximumCap * TIMESERIES_PEAK and then did the check maximumCap < installedCap.
Originally posted by @SabineHaas in https://github.com/rl-institut/multi-vector-simulator/pull/833#issuecomment-801733899
Update: I've updated this comment in #833
Puuh, I am not sure which is better.
1) decoupled
* Additional to an `installedCap` of an asset its `maxiumCap` can be installed during optimization (this is the case now, see e.g. [`D1.source_non_dispatchable_optimize()`](https://github.com/rl-institut/multi-vector-simulator/blob/ad6ac80ab48866ed3941fdccbd51d1dce08680f4/src/multi_vector_simulator/D1_model_components.py#L751-L752).
So, when we use Possible additinal Cap = MaximumCap and possible total cap = MaximumCap + InstalledCap, I think it is very intuitive to compare the OptimizedAddCap to the MaximumCap, no calculations necessary for this check.
2) coupled
* `maximumCap` is the maximum capacity in the system, including `installedCap`
So, if we use Possible additinal Cap = MaximumCap - InstalledCap and Possible total cap = MaximumCap the user would only know the MaximumCap that is possible at the location (for example derived from the rooftop area), and would expect the MVS to stay in those bounds.
It is probably more intuitive to say that the values are coupled (this is also what the EPA developers understood). @SabineHaas @Bachibouzouk @TheOneAndra do you agree?
@ciaradunks I think this decision is very essential to the benchmark test you are developing in #835
For me both options seem right, intuitive and okay, as long as the definition of the parameters is documented well.
We will use the coupled definition for MaximumCap, as this may be more intiuitive. So: Possible additinal Cap = MaximumCap - InstalledCap
So I personally understood it as this way when using the MVS for my simulations
- coupled
maximumCapis the maximum capacity in the system, includinginstalledCap
Nevertheless, I am using the installedCap in the way that is explained in issue #828 . I don't use the parameters installedCap and maximumCap together, therefore it shouldn't be a problem for my simulations
A potential solution could be:
Leave the definition of maximumCap as decoupled (to not have to change the way it is used later on), but instead:
- To make it more understandable for the programmers: refactor MAXIMUM_CAP parameter to MAXIMUM_ADD_CAP or POSSIBLE_ADD_CAP
- To make it more understandable for the users: replace 'maximumCap' with 'maximumAddCap'/'possibleAddCap', including the input files
- Create a function e.g. 'depreciated_parameter_names' which searches for any mention of maximumCap e.g. in input files, and replaces it with the new parameter
What do people think about this?
@Piranias also understood the parameter as coupled:
For me it would be more intuitive to use the first oftion
Possible_Add_Cap = MaximumCap-InstalledCap. Because I would think that usually the "maximum area" is known and not the "maximum still available area." But either way I could work with it. If you have a strong preference for the other option I'd be fine with it and calculate my maxCap in advance.
Just as @TheOneAndra @Piranias does not use MaximumCap and InstalledCap together.
2. To make it more understandable for the users: replace 'maximumCap' with 'maximumAddCap'/'possibleAddCap', including the input files
I am wondering why there is a need to change maximumCap. If it is made clear in the RTD that maximumCap is the capacity of an asset to be added in top of its existing installedCap that should be enough no ? For me the confusion came from the current definition which just says "The maximum installable capacity.".
2. To make it more understandable for the users: replace 'maximumCap' with 'maximumAddCap'/'possibleAddCap', including the input filesI am wondering why there is a need to change
maximumCap. If it is made clear in the RTD thatmaximumCapis the capacity of an asset to be added in top of its existinginstalledCapthat should be enough no ? For me the confusion came from the current definition which just says "The maximum installable capacity.".
The definition could just be made clear in RTD that's true - I think that for the code and the inputs to be self explanatory/easy to understand what is happening without confusion it would be better to change the parameter. This is a personal preference though and I'm also happy to leave it if everyone agrees for that.
Okay, so for the uncoupled option (maximumCap=maximumAddCap) I agree that a refactoring both of the constant variable and the string is necessary.
For the coupled version (maximumCap=InstalledCap+PossibleAddCap) I would be fine not to refactor. In that case, the coupled version would only require us to
- Introduce
MaximumAddCap=MaximumCap-InstalledCapinC0.process_maximum_cap_constraint, possibly dissect function into one processing and one validation function - Deactivate optimization when
MaximumCap<=InstalledCapinstead of settingMaximumCap=None - Fix RTD entry
- Replace
MaximumCapinD1withMaximumAddCapcalculated inC0
As both @Piranias and @TheOneAndra do not use InstalledCap and MaximumCap at the same time currently, there should be no issues with this change (As for the pilot sites, I am not so sure). The EPA MaximumCap definition should be changed accordingly.