我是 or-tools 的新手,我正在尝试表示约束:
(!A && !B) || (!C && !D) || (!E && !F) || ...
我尝试了以下方法(在我的情况下,A 是 shift_0LM0,B 是 shift_0LT0,C 是 shift_0MM0,D 是 shift_0MT0,...),将 !A && !B 表示为 A + B == 0,即。!(A || B):
for week in range(4):
for employee in range(5):
model.AddBoolOr([
shift[f'{week}{weekday}M{employee}'] + shift[f'{week}{weekday}T{employee}'] == 0
for weekday in 'LMXJVSD'
])
但我得到了错误:
TypeError: NotSupported: model.GetOrMakeBooleanIndex((shift_0LM0 + shift_0LT0) == 0
有没有一种简单的方法来表达这个约束?
料青山看我应如是
相关分类