Replies: 3 comments 1 reply
-
After discussion with @Tasqu @datejada , we suspect that indeed, when SpineOpt generates time slices for constraints, it considers all the temporal blocks (even including temporal blocks that are not explicitly used in the model). This makes it difficult to model milestone years, as we wish (i.e., to model investments with consecutive temporal blocks and operations in non-consecutive temporal blocks with different resolutions, respectively), at least in theory. Because some constraints depend on consecutive temporal blocks as they need Case 2 and Case 4 show this issue. In Case 2, for the beginning of the second block, balance constraints look for The solution is either to remedy the temporal structure or to find alternative ways to achieve the goal. Proposal 1: remedy the temporal structureThe problem arises when operational temporal blocks and investment temporal blocks are mixed up while they are not desired to be. We can make sure that this is not the case anymore. One idea is to have three temporal structures, the current one, one for operational temporal blocks, and the other for investment temporal blocks. A switch can be added to only generate those when use multi-year investments. Pro: it fundamentally resolves the problem Note: For each constraint, we need to define whether it is in the operational or investment temporal blocks. For constraints that link operational and investment variables, we must define which one to use (probably the operational one, e.g., unit capacity constraint). Proposal 2: find alternativesProposal 2.1: add an extra time slice before each operational blockTo deal with the problem that the operational constraints are not correctly generated for the beginning of the second block, we can add an extra time slice before each operational block, just to make sure that it exists so that the constraint for the first time slice of the second block can be generated. Pro: easy to do Actions for this proposal:
Proposal 2.2: manually close the gapsFor the case of investments and operation in 2030 and 2035, there is a gap in between that causes issues. We can put the data in 2030 and 2031 to close the gap, and when post-processing change the years back to 2030 and 2035. Pro: easy to do Proposal 2.3 simultaneously run two blocks as stochastic scenariosConsider the milestones as two stochastic scenarios, one for one operation year and the other for the other, so the investments will cover these two years. Pro: milestones can be run in parallel? |
Beta Was this translation helpful? Give feedback.
-
At TNO, we suggest the following:
|
Beta Was this translation helpful? Give feedback.
-
@gnawin After discussion, we will start implementing proposal 2.1 and afterwards see improvements according to the other proposals |
Beta Was this translation helpful? Give feedback.
-
For the multi-year investment feature, we would like to run a single optimization with milestone years both for investment and operation, e.g., investment (once a year) in 2030 and 2035, and operation (hourly within a year) also only in 2030 and 2035. This concerns using different temporal blocks for investment and operation, which are nonconsecutive. We did some tests to see if SpineOpt can do this. The results suggested that SpineOpt can almost do things correctly, but still not completely.
Here are the test cases:
Case 1 (only operation)
Everything works fine.
Case 2 (operation + investment)
The operational blocks are nonconsecutive, and the investment block is consecutive. The model does not break, but the results are not correct. Depending on the resolutions of the investment and temporal blocks, the balance constraints are (partially) not generated.
Case 3 (operation + investment)
Both the operational blocks and the investment block are nonconsecutive, if they are the same resolution, say both daily, then everything works fine.
Case 4 (operation + investment)
Both the operational blocks and the investment block are nonconsecutive, if they are not the same resolution, say daily for investment, hourly for operation, then
units_available_transition
constraints are not correctly generated. In our test of 2 investment blocks, this constraint is not generated for the second block, and so the investment results are wrong.Idea
If either case 2 or case 4 works, the multi-year feature would be almost there. Unfortunately, according to our tests, they do not yet work. I guess that SpineOpt currently does not distinguish
t_before
andt_after
for investment and operational blocks, but only generates them for all the blocks. I think that these cases can work if the temporal structure could be modified slightly to reflect this modeling purpose.@manuelma @Tasqu @datejada
Beta Was this translation helpful? Give feedback.
All reactions