Capacity Expansion
See original GitHub issueProblem description
We currently only allow investment in capacity at the zeroth timestep. This means that we can’t model capacity expansion, or delayed capacity investment.
Two methods I can think of (will add more as discussion leads to them):
-
Allow setting a timestep for delayed investment, setting all dispatch constraints (e.g.
carrier_prod <= energy_cap
to zero until that timestep. Setting several timesteps could allow expansion to take place at those timesteps. This could also work withdatesteps
(an existing dimension for inter-cluster storage). -
Less flexible than method 1, we could introduce another time dimension:
yearsteps
. This assumes that delayed capacity investment & capacity expansion would take place on an annual basis.
Either way, could we make it work with time aggregation methods?
Steps to introduce functionality
- Decide on method of implementation
- Work out how to combine it with time aggregation methods (particularly time clustering)
Issue Analytics
- State:
- Created 5 years ago
- Comments:6 (5 by maintainers)
Top GitHub Comments
I’d stick with
energy_cap_equals
/max
/min
, instead of justenergy_cap
. That way when it hits one of the points in the file it either has to have its maximum available capacity increased, or it has to be equal to that capacity. I like the idea of having it in a csv file, with multiple options for resolution.For instance, an hourly model could still have:
Which says that although the model is hourly, the capacity expansion information changes annually (assuming first timestep of that year)
Although the subject is somewhat pointed out, I would like to continue here. Unfortunately I don’t have much experience in programming LP problems yet and my knowledge of Pyomo is limited (so far I only worked with calliope).
Since @sjpfenninger asked about the possibilities of capacity expansion, I would like to explain briefly what I think it is:
Perfect Forsight: The time period to be optimized can extend beyond the lifetime of technologies. The result shows how much capacity should be added of which technology at which point in time in the considered period in order to maximize/minimize the target function. The solver has to consider the whole time period.
Considerations: Meaning that time series (such as consumption, capacity factors, etc.) are necessary for the whole time period. If you calculate every year, the calculation time grows quite fast. Allow extensions at any time or only at the beginning of a year? (won’t it then become a MILP?) The remaining lifetime of each capacity would have to be tracked and stored. How compatible with clustering
Extras that could be added later: Starting conditions, such as available capacities and remaining service life Only allow certain amounts of capacity to be built (won’t it then become a MILP?) Premature dismantling
Myopic forsight: Actually you only need everything perfect forsight has and starting conditions. The rest is just a bunch of pre- and post-processing. Or did I miss something.
These are the applications I have in mind for capacity expansion. The next step would be to find out if there are any papers on this kind of capacity expansion and how to implement it. Has anyone ever found anything about this?
I hope that I was able to explain everything in an understandable way.