如何管理连续轮班限制?

问题描述 投票:0回答:1

我正在尝试构建一个优化调度程序,但在定义连续午餐时间的限制时遇到了麻烦。很容易定义一个约束设置,即在一天 8 小时的工作时间内,每个工人必须至少有 3 小时的午餐时间。 由于 hrs 是每小时的模型二元选项,因此类似于 Sum(hrs) >= 3

但是为了定义这 3 个小时必须是连续的,我想不出一种方法来设置限制。我开始使用析取等,但我不知道这是否是最好的方法。现在我正在用 pyomo 尝试所有这些。

python optimization pyomo
1个回答
0
投票
 startlunch[t] >= lunch[t]-lunch[t-1]
 sum(startlunch) <= 1
 sum(lunch) >= 3
 lunch, startlunch: binary variables

直觉:

startlunch[t]=1
是我们开始吃午餐的时间。我们从
lunch[t-1]=0
lunch[t]=1

  1. 您可能可以假设
    lunch[-1]=0
  2. 您可以向变量添加工人索引。
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.