每天轮班次数和护士可用性不同的护士调度

Nurse Scheduling With Varying Number of Shifts Per Day and Varying Nurse Availability

我正在使用 C# 中的 Google OR 工具构建 CP-SAT 模型,以解决护士调度问题的变体,其中每天轮班次数和可用护士数量各不相同在任何一天轮班工作。

按照 ShiftSchedulingSat.cs 中的这个示例,我发现如果知道每天的轮班次数和每天的员工人数,有一种方法可以轻松实现这一点。我如何修改它以满足我的要求?

var model = new CpModel();

IntVar[,,] work = new IntVar[numEmployees, numShifts, numDays];

foreach (int e in Range(numEmployees))
{
    foreach (int s in Range(numShifts))
    {
        foreach (int d in Range(numDays))
        {
            work[e, s, d] = model.NewBoolVar($"work{e}_{s}_{d}");
        }   
    }
}

创建护士的最大数量,并强制下班人数,或强制部分护士下班。