Optimization 在Google CP Sat解算器或工具中添加条件

Optimization 在Google CP Sat解算器或工具中添加条件,optimization,or-tools,Optimization,Or Tools,我尝试了以下方法,但似乎不起作用。有什么想法吗?谢谢你的帮助 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_e

我尝试了以下方法,但似乎不起作用。有什么想法吗?谢谢你的帮助

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)
适用于范围内的j(澳新银行当前政策):
模型.添加(范围内i的总和(x[i][j](澳新银行当前角色))<2如果总和(
计划[(i,j)][t]*x[i][j]针对范围内的i(澳新银行当前的角色)针对范围内的t
范围(时间步进开始,时间步进结束+1))<10)

您必须了解,
sum(…)<10
将创建一个python对象,该对象表示底层解算器的约束

当在
if sum(…)<10
的上下文中使用时,它将始终计算为
True
,因为对象不是
None

出于同样的原因,使用
min()
max()
python构造不起作用,因为它们在传递到模型之前经过了评估


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

请参阅:不以什么方式工作?您是否得到意外的输出?错误?什么都没发生?请添加更多详细信息,以便我们可以帮助您解决问题。