-
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
Weird investment results caused by temporal block settings #496
Comments
I think the model is sort of working as intended, maybe it is more of a question on how to realize the desired functionality. I think for your use case this could easily be fixed by having the investment temporal block start at the beginning of the optimization, but defining a TimeSeries |
Thanks! The approach works to realise the need to model units that are supposed to be available for investment later than the beginning of the model horizon. As per the need for "history" investment, does it also mean a temporal block starting simultaneously as the model is necessary for investment? |
I'm not entirely following what you mean by that. Could you clarify? |
To make the |
I guess the answer is yes, and no. To explain that maybe a quick word on "history" in SpineOpt. History time slices are generated for time slices before the However, when a temporal block starts disjoint from the model start, the historical values are not created. I believe the reason for this is amongst other things that if you were to use representative days, each day will be bridged to its previous, adjacent temporal_block (i.e., no separate history variables are created). It is, however, still possible to create temporal blocks with the history that you desire, without the temporal block starting at the model start: You could for example have your temporal_block start one timestep before your desired start of investments, and again fix the units invested (or units_invested_available) for this "pre-timestep"(i.e., your history timestep). I hope this helps :) |
I'll close this issue (feel free to reopen it if questions remain). |
@mihlema Many thanks for the explanation! I've got the main idea. I suppose this function is the one to fix |
By the way, this relates to issue #455 where we discuss creating new parameters to define explicit initial values rather than using |
The issue can be seen in the result of this SpineOpt sample. There are two scenarios, with the only difference in the start time of the temporal block for investment decisions (
inv
): one begins at the same time as the operational temporal block (opt
); the other begins one hour later. Investment inunitA
is needed from the 2nd hour on.Investment results under the synchronised investment temporal block look okay. But under the shorter investment temporal block, the output of
unit_invested
becomes constantly 0, despite new capacity being actually invested (seeunit_available
in output). And the de facto investment decisions in two scenarios are slightly different (seeunit_invested_available
in output).The text was updated successfully, but these errors were encountered: