带休息和时间间隔的ORTools护士调度问题

2024-05-18 12:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个护士问题,一天只有一个班次分配给一名员工,但另外我有以下限制:

  1. 一名员工必须在两周内休息12至24小时 轮班
  2. 一名员工可以要求在轮班之间休息几天 (此时第一个约束不是强制的)

一天的工作是这样的[开始,结束]:

Shift 0: rest
Shift 1: [8:00, 15:00]
Shift 2: [15:00, 22:00]
Shift 3: [8:00, 22:00]
Shift n: ...

我曾尝试以布尔函数为例对问题进行建模:

shifts = {}
for n in all_nurses:
    for d in all_days:
        for s in all_shifts:
            shifts[(n, d, s)] = model.NewBoolVar('shift_n%id%is%i' % (n, d, s))

但是当我需要添加与时间和间隔相关的约束时,我发现很难表达上面的约束

有什么建议吗?它可以用另一种方式建模吗


Tags: 函数inrestforshift员工all建模