SpineOpt.jl
SpineOpt.jl copied to clipboard
Start Up Trajectories: Expand start_up_ramp constraints with start_up_duration
Hi all, It would be nice to expand the start_up_ramp constraints (min, max) with a new parameter start_up_duration. This way, start_up_ramping could be restricted from the start_up period t to t+start_up_duration-1. This would help to consider the flexibility of different technologies.
Or is there a better way to do that? I am not sure how big a change that is... (Sorry, should have added this in discussions I guess.)
Hi @lilanger
Yes, it looks like the max start up ramp can only constrain the output in the following timestep and I gather you probaly want to capture a start time that covers multiple timesteps. One way of capturing this would be via the minimum up and down time. The minimum down time could be interpreted as a start up duration - but perhaps not if you have a stochastic model and you want to model the non-anticaptivity of starts - i.e. once you know you need to start a unit, there is a start duration, regardless of how long it has already been offline - a notice time, if you will.
If we understood more about your use-case, perhaps we could explore it more?
Hi @DillonJ That is a good idea, minimum down time will be a good workaround for my case. I currently have a full-information model of an energy hub with synthesizers for hydrogen, ammonia, and methanol. Cold start-up time for an electrolyzer is about 2h whereas the others can take up to 48h to start (and should be run continuously).
Maybe we can include start-up trajectories in V1.0 - I'll rename the issue and put this in Milestone TB 1.0
Was discussed in Amsterdam meeting. German has a tight formulation for this. Implementation is not a high priority at the moment.
@gnawin Do you know if this is addressed with the new ramps stuff?
@clizbe I think it is not addressed with the new ramp design (https://github.com/spine-tools/SpineOpt.jl/discussions/788). As far as I'm concerned, the formulation does not consider start-up trajectories, i.e., we assume start_up_duration = 1
. But maybe there are other workarounds to account for start-up duration. @datejada @g-moralesespana