Job scheduling 每天不同班次和不同护士可用性的护士排班

Job scheduling 每天不同班次和不同护士可用性的护士排班,job-scheduling,constraint-programming,or-tools,Job Scheduling,Constraint Programming,Or Tools,我正在使用Google或C#中的工具构建一个CP-SAT模型,以解决护士排班问题的一个变体,其中每天有可变的班次,并且在任何给定的一天都有可变数量的护士可以轮班 根据中的这个示例,如果知道每天的班次和员工数量,我发现有一种方法可以轻松实现这一点。我如何修改它以满足我的需求 var model = new CpModel(); IntVar[,,] work = new IntVar[numEmployees, numShifts, numDays]; foreach (int e in Ra

我正在使用Google或C#中的工具构建一个CP-SAT模型,以解决护士排班问题的一个变体,其中每天有可变的班次,并且在任何给定的一天都有可变数量的护士可以轮班

根据中的这个示例,如果知道每天的班次和员工数量,我发现有一种方法可以轻松实现这一点。我如何修改它以满足我的需求

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}");
        }   
    }
}

创建最大数量的护士,并强制轮班,或强制某些护士轮班。

锯齿状3D阵列是否不太理想?适合您的是什么。看看代码,你每天要计算nums。如果您可以限制总和中的布尔变量列表,则可以。