I just stumbled over oemof and I really like it! At the moment am doing my first steps and have a little problem and couldn’t find a solution.
I am trying to set up a minimum / maximum runtime for a heat pump to avoid pulsing. But the optimizer seems to ignore it. The heat pump is still shut on and off just for one time step. The min and max parameter is working. Can you please check if I am doing something wrong?
Just be aware that the simultaneous usage of up- and downtimes might lead to conflicts (e.g. infeasible problems) in some situtations, especially in the “border regions” meaning the first and last time steps.
Another way to soften pulsing is to define gradient costs. It is not as strict as a minimum time but may have similar effects. In contrast to minimum times the problem is still linear (faster) instead of mixed integer. You could try that alternatively.
I noticed that the thread is old. But I have a relevant question. I see that the minimum up and downtime parameters are to be included inside the NonConvex flow. In the example above it is dione for dispatch optimization and it seems fine. Now, in my usecase, I want to use the min and max runtime parameters with Investment flow. How could I achieve this?
I see that in v 0.5, there is a InvestNonConvex flow defined. I have not tested this yet. But is there any possibility to do so in older versions?