使用线性规划对员工调度中的班次类型进行建模

Modeling the shift types in Staff schedulling with linear programming

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

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

您在 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 个二进制决策变量应该没问题。