使用线性编程在Staff调度中为班次类型建模

时间:2019-06-13 09:23:04

标签: linear-programming cplex lpsolve

所以我想解决问题,看起来像是护士安排问题,不同之处在于有两种类型的工人每周应至少工作40小时,另一种类型每周应至少工作10小时。 为了用simplex解决这个问题,我必须定义shifts(shift类型)。每天的班次最少应为3个小时,最多为9个小时。  这张照片是我到目前为止尝试过的Shifts

轮班类型的总数为55。如果我将其乘以工人数和工作日数。那将是15000个变量。是否可以解决这样的问题,还是我应该尝试以其他方式解决? 有没有人建议?

1 个答案:

答案 0 :(得分:0)

您在CPLEX_Studio129\opl\examples\opl\nurses有一个护士的例子。

要做您需要做的事情

//global max worked time
 forall(n in Nurses)
   ctNurseMaxTimeConstraints: 
     NurseWorkTime[n] <= MaxWorkTime;

进入

 forall(n in Nurses)
   ctNurseMaxTimeConstraints: 
     NurseWorkTime[n] <= n.MaxWorkTime;

其中maxWorkTime不是全局的,而是每个护士的。 15000个二进制决策变量应该没问题。