-
Notifications
You must be signed in to change notification settings - Fork 13
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
No investment optimization of stratified thermal storage without non-zero investment.minimum possible #174
Comments
@oemof-developer, anyone want to take on this exciting challenge? :) |
The problem is as follows: The only solution would be to introduce a binary variable: This way, the losses can be considered only if the storage has a non-zero size. |
Thank you for your answer and the explanation, @p-snft! This is also what @jnnr mentioned as a solution. Unfortunately I couldn't figure out where I should place this binary variable and decided also due to time constraints to work with |
The binary investment variable should be already there, if you set If you apply the |
Thanks for your answer, @joroeder! Oh wow, I was not aware of So, did you had something like this in mind in regard to my problem?
The good news is, my simulation runs through with this adjustment. The bad news is, the invested capacity of the storage is still not equal to zero (but much smaller than the result without |
I recently discovered working on a simulation of a sector-coupled energy system with a stratified thermal storage in pvcompare, that it is not possible to run an investment optimization without passing a non-zero value either with
investment.existing
(installed capacity) orinvestment.minimum
(minimal capacity). I would like to do an investment optimization in which it is possible to not invest into a stratified thermal storage at all in case it is too expansive and hence to model the storage for example like this:The reason I have to pass a non-zero value either with
investment.existing
orinvestment.minimum
is thise3 RaiseAttributeError
inoemof.solph
's components.py. Talking about it to @jnnr, he explained to me that the parameterfixed_losses_absolute
is not dependent on the storage's capacity and hence enter theenergysystem
even if no storage is installed (in case it is too expensive). This I could validate with the simulations in pvcompare developed in this PR.The idea behind the
e3 RaiseAttributeError
, he further explained, is to avoidfixed_losses_absolute
in case of a too expensive stratified thermal storage, which were incorrectly passed to theenergysystem
by forcing the user to install the storage. However, so far I couldn't find a reference value or an explanation how to chooseinvestment.existing
orinvestment.minimum
in this case. I also wonder if the value ofminimum=1
does not cause a larger error than withminimum=0
.An other observation, I have made, is that the
e3 RaiseAttributeError
seems not to work if afloat
is passed. The passed data offixed_losses_relative
andfixed_losses_absolute
require a time series so thate3 RaiseAttributeError
takes effect. You can observe this running theoemof.thermal
examples 03_investment_fixed_ratio_generic_storage.py and 05_investment_independent_generic_storage.py if you deleteminimum=1
. Passing a time series however withfixed_losses_relative
andfixed_losses_absolute
leads toe3 RaiseAttributeError
.The two parameters
fixed_losses_relative
andfixed_losses_absolute
were implemented in oemof.solph with this PRRelated PRs are:
greco-project/pvcompare#148
rl-institut/multi-vector-simulator#718
The text was updated successfully, but these errors were encountered: