Startup_costs dependent on time since last run

Hey everybody,

I am currently modelling a simple unit commitment problem where I have a single power plant reacting on market prices. I have successfully modelled my power plant with the OffsetTransformer, which now has load-dependend efficiencies and variable costs. So far everything works as expected.

Now I also want to touch the startup_costs. The startup costs should ideally be dependend on how much time passed since the last run. (lower costs if power plant is still hot and vice versa) in the appended plot there is no difference in startupcosts although there are short and long periods of no dispatch.

But I have no clue on how to let the model know to take the respective startup_costs. Is there any possible way of modifying the OffsetTransformer parameters?

Im happy about any suggestions.

Best regards,
Till

Hi @tllsngnzlz,

as the problem has to be linear, also the cost is linear to the time between shutdown and startup. As far as I understand, that would then translate into costs for not running the power plant. Am I right? We do not have those, but there are activity_costs, which is right the opposite. Now, if you implement negative activity_costs and add an offset to your result, everything should be as you wanted it to be. (It would be less confusing to have inactivity_costs. I’ll add those for v0.5 if that helps.)

2 Likes

Hi Patrik,
thanks for your suggestion. I marked it as a solution but in my case it is not really sufficient. Because I already used the activity_costs as an offset together with the variable_costs to model a load dependent variable costs. I had the feeling that offsetting negative acitvity_costs would conflict my variable cost model.

I would love to see the inactivity_costs to become reality. The problem I see with implementing startup_costs as inactivity_costs is that startup_costs are not running into an upper maximum. Sure, starting up a “cold” power plant should be more expensive than starting up a “warm” power plant. But there is a maximum cost to fire up a “cold” power plant. But maybe thats a limitation of linear optimization as far as I understand from your comment.

Thanks anyway and best regards,
Till

Here we go: https://github.com/oemof/oemof-solph/pull/812 (Untested, still need to write the unit tests.)

PS: Now, it’s a part of the v0.5 development branch.

1 Like