You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In line 305-306 in model_library/unit_commitment/generation_limits.py, the coef is set as max((Pmax - SD - SD_time_limit * RD) - (Pmax - SU - (SU_time_limit+1) * RU), 0). However, I think there is a mistake in its order and it should be reversed. The correct one should be max((Pmax - SU - (SU_time_limit + 1) * RU) - (Pmax - SD - SD_time_limit * RD), 0).
Consider that UnitOn(t) = 1, UnitStart(t - SU_time_limit - 1) = 1 and meanwhile UnitStop(t + 1 + SD_time_limit) = 1, then the maximum power of Pg(t) should be min((SU + (SU_time_limit+1) * RU), (SD + SD_time_limit * RD)). However, in the current program, if UnitOn(t) = 1, UnitStart(t - SU_time_limit - 1) = 1 and meanwhile UnitStop(t + 1 + SD_time_limit) = 1 and (SU + (SU_time_limit+1) * RU) > (SD + SD_time_limit * RD), then the upper bound will be (SD + SD_time_limit * RD) - ((SU + (SU_time_limit+1) * RU) - (SD + SD_time_limit * RD)) instead of the true value (SD + SD_time_limit * RD), which is invalid.
I also check the generation limits in KOW_production_costs_super_tight in production_cost.py and find the order is right. Since we already subtract sd_step[SD_time_limit]*m.UnitStop[g,t+1+SD_time_limit] in line 276, then it is correct to subtract max(su_step[j]-sd_step[SD_time_limit],0)*m.UnitStart[g,t-j] in line 280. I also find that at first the order in KOW_production_costs_super_tight was also wrong and get fixed in d21d5d7. Unfortunately, it seems that the bugs in generation_limits.py are not considered in this code.
Is it a bug? I already submit my code at #312. Many thanks! @bknueven
The text was updated successfully, but these errors were encountered:
In line 305-306 in
model_library/unit_commitment/generation_limits.py
, the coef is set asmax((Pmax - SD - SD_time_limit * RD) - (Pmax - SU - (SU_time_limit+1) * RU), 0)
. However, I think there is a mistake in its order and it should be reversed. The correct one should bemax((Pmax - SU - (SU_time_limit + 1) * RU) - (Pmax - SD - SD_time_limit * RD), 0)
.Consider that
UnitOn(t) = 1
,UnitStart(t - SU_time_limit - 1) = 1
and meanwhileUnitStop(t + 1 + SD_time_limit) = 1
, then the maximum power ofPg(t)
should bemin((SU + (SU_time_limit+1) * RU), (SD + SD_time_limit * RD))
. However, in the current program, ifUnitOn(t) = 1
,UnitStart(t - SU_time_limit - 1) = 1
and meanwhileUnitStop(t + 1 + SD_time_limit) = 1
and(SU + (SU_time_limit+1) * RU) > (SD + SD_time_limit * RD)
, then the upper bound will be(SD + SD_time_limit * RD) - ((SU + (SU_time_limit+1) * RU) - (SD + SD_time_limit * RD))
instead of the true value(SD + SD_time_limit * RD)
, which is invalid.I also check the generation limits in
KOW_production_costs_super_tight
inproduction_cost.py
and find the order is right. Since we already subtractsd_step[SD_time_limit]*m.UnitStop[g,t+1+SD_time_limit]
in line 276, then it is correct to subtractmax(su_step[j]-sd_step[SD_time_limit],0)*m.UnitStart[g,t-j]
in line 280. I also find that at first the order inKOW_production_costs_super_tight
was also wrong and get fixed in d21d5d7. Unfortunately, it seems that the bugs ingeneration_limits.py
are not considered in this code.Is it a bug? I already submit my code at #312. Many thanks! @bknueven
The text was updated successfully, but these errors were encountered: