我正在尝试构建一个优化调度程序,但在定义连续午餐时间的限制时遇到了麻烦。很容易定义一个约束设置,即在一天 8 小时的工作时间内,每个工人必须至少有 3 小时的午餐时间。 由于 hrs 是每小时的模型二元选项,因此类似于 Sum(hrs) >= 3
但是为了定义这 3 个小时必须是连续的,我想不出一种方法来设置限制。我开始使用析取等,但我不知道这是否是最好的方法。现在我正在用 pyomo 尝试所有这些。
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
。
lunch[-1]=0
。