-
Notifications
You must be signed in to change notification settings - Fork 21
Description
This relates to #1237
@aporrasc is trying to set up an investment planning model. He is trying to create a model that consists of multiple snapshot years in a single optimisation. He is trying to do this with temporal blocks representing each snapshot year. One for investments, and one for operations, for each snapshot year. E.g:
TB_Ops_2030: block_start = 01/01/2030, block_end = 01/01/2031, resolution: 12h
TB_Ops_2040: block_start = 01/01/2040, block_end = 01/01/2041, resolution: 12h
TB_Investments_2030: block_start = 01/01/2030, block_end = 01/01/2031, resolution: 1Y
TB_Investments_2040: block_start = 01/01/2040, block_end = 01/01/2041, resolution: 1Y
[@aporrasc I'm leaving out the 10Y thing as I think it's a bit of a complication, doing it as above reduces the problem to the single issue of operational variable continuity]
The problem is that we need to free up the node state variables between the two operational temporal blocks. In this case, we don't want continuity between the last timeslice of 2030 and the first of 2040. We wants a free history timeslice just before 2040 to free up the node state variables (and other variables) so the 2040 operational variables have a "fresh start". Because we are solving this as a single optimisation, we only have free variables preceding 2030 but not before 2040. We don't want the model to roll because we want the investment decisions to see all the snapshot years at once.
For example, the cyclic condition constraint for the 2030 TB will constrain the node_state in the last timeslice of 2030 relative to the last history timeslice (timslice immediately preceding 2030). But for the 2040 TB, cyclic condition will constrain the node_state of last timeslice of 2040 relative to the last timeslice of 2030 creating a constraint that will overly constraint investments and operations. We effectively want a free variable in between the end of 2030 and the beginning of 2040 to free up the operational variables so there is no continuity between the 2030 operational variables and the 2040 operational variables (but we do want continuity for the investment variables).
An idea I had was to have a couple of TB parameter like "operational_variables_free" and "investment_variables_free" or something like that. Then you can insert such a TB in between 2030 and 2040 and it would create a sort of middle history window. You would just need to deactivate constraints and bounds, just like the history variables... but only for operational variables.
This is just an idea, maybe someone can think of a better way? If there was an easy way to create some timeslices in the intervening period and include them in the history timeslices collection, would that do it? Does anyone have other ideas how this could be done relatively easily?