使用线性规划对员工调度中的班次类型进行建模
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 个二进制决策变量应该没问题。
所以我想解决这个问题,看起来像护士调度问题,不同的是有两种类型的工人,每周至少工作 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 个二进制决策变量应该没问题。