python分配_确定值的分配Python

以下是您修改后的问题的答案,即如何添加要求每个员工连续工作时间段的约束。在

我建议您添加以下约束(此处以代数方式编写):x[t+1,p] <= x[t,p] + (1 - (1/T) * sum_{s=1}^{t-1} x[s,p]) for all p, for all t < T

其中x是您的staffed变量(这里写为x表示紧凑性),t是时间索引,T是时间段数,p是员工索引。在

约束的逻辑是:如果x[t,p] = 0(该雇员没有在t期间工作)和{}为任何s < t(该雇员在任何以前的期间工作),那么x[t+1,p]必须{}(该雇员不能在t+1期间工作。因此,一旦员工停止工作,他们就不能重新开始工作。注意,如果x[t,p] = 1或x[s,p] = 0每一个{},那么{}可以等于{}。在

下面是我在pulp中实现的这个约束:

^{pr2}$

我运行模型得到:Optimal

Staffed

Timeslot Staffmember

1 C2 1.0

2 C2 1.0

3 C2 1.0

4 C2 1.0

5 C2 1.0

6 C2 1.0

7 C2 1.0

8 C2 1.0

9 C2 1.0

C6 1.0

10 C2 1.0

C6 1.0

11 C2 1.0

C6 1.0

12 C2 1.0

C6 1.0

13 C3 1.0

C6 1.0

14 C3 1.0

C6 1.0

因此,员工在连续的时间段内工作。在

请注意,新的约束会稍微减慢模型的速度。它仍然可以在30秒左右解决问题。但是,如果您要解决更大的实例,您可能需要重新考虑约束。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值