-1

我尝试了以下方法,但似乎不起作用。有任何想法吗?感谢帮助。

for j in range(anz_current_pruef):
  model.Add(sum(x[i][j] for i in range(anz_current_role)) < 2 if sum(
   planung[(i, j)][t] * x[i][j] for i in range(anz_current_role) for t in
   range(time_step_start, time_step_end + 1)) < 10)
4

1 回答 1

2

您必须了解这sum(...) < 10将创建一个表示底层求解器约束的 python 对象。

在 的上下文中使用时if sum(...) < 10,它总是会评估为True,因为对象不是None

出于同样的原因, usingmin()max()python 构造不起作用,因为它们在传递给模型之前进行了评估。

正如Stradivari所指出的,您需要创建一个中间布尔变量,该变量将为Trueiff sum(...) < 10,然后将其用作等式第一部分的强制文字。

于 2020-08-06T07:40:36.590 回答