Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 或工具:将连续两天添加到调度问题中_Python_Or Tools - Fatal编程技术网

Python 或工具:将连续两天添加到调度问题中

Python 或工具:将连续两天添加到调度问题中,python,or-tools,Python,Or Tools,我试图增加一个限制,即护士至少要连续工作两天。 代码: 我的想法是:“如果之前没有轮班,那么第二天再加上轮班” 第一步:抛出TypeError:NotSupported:model.getormakebooleandex(shift\u n0d2s0==1) 第二步:抛出:AttributeError:'BoundedLinearExpression'对象没有属性“Index”第二次尝试的正确版本是: model.Add(移位[(n,d+1,s)]==1)。仅强制([移位[(n,d-1,s)]。

我试图增加一个限制,即护士至少要连续工作两天。 代码:

我的想法是:“如果之前没有轮班,那么第二天再加上轮班”

第一步:抛出
TypeError:NotSupported:model.getormakebooleandex(shift\u n0d2s0==1)

第二步:抛出:
AttributeError:'BoundedLinearExpression'对象没有属性“Index”

第二次尝试的正确版本是:

model.Add(移位[(n,d+1,s)]==1)。仅强制([移位[(n,d-1,s)]。Not(),移位[(n,d,s)])
您还可以执行以下操作:

model.AddBoolOr([shift[(n,d-1,s)],shift[(n,d,s)]。Not(),shift[(n,d+1,s)])
将其视为第1节中令人生畏的真理,参见:


此外,您没有考虑边界,现在允许使用[1,0,0,…。

“此外,您没有考虑边界,现在允许使用[1,0,0,…。”我使用了()所以应该禁止使用。对不起,我不明白“我用了()”我用了括号,所以
[(n,d+1,s)]
是一个元组,因此不允许使用[1,0,0,…]。但我想我可能误解了这句话:“另外,你们并没有考虑边界,现在[1,0,0,…]是允许的。”
for n in all_nurses:
    for d in range(1,6): #Because use d-1 and d+1
        for s in all_shifts:
#1-st try            model.AddImplication(shifts[(n, d-1, s)]==0 and shifts[(n, d, s)]==1, shifts[(n, d+1, s)]==1)
#2-nd try:            model.Add(shifts[(n, d+1, s)]==1).OnlyEnforceIf(shifts[(n, d-1, s)]==0 and shifts[(n, d, s)]==1)