生成器表达式必须在 gurobi 中的约束上加上括号

Generator expression must be parenthesized on a constraint in gurobi

我目前正在 gurobi 进行优化项目。

我试图添加这个约束:

for r in range(1, n_machines):
    for i in range(1, n_jobs):
        m.addConstr(gp.quicksum(max((c[r, j] - due_dates[speed][r, j]) for j in range(n_machines), 0 ) <= total_tardiness[i]))

但我总是得到以下错误代码: 语法错误:生成器表达式必须加括号

你能帮我解决这个问题吗?

我猜你想用函数 max()

选择最大数量

max() 得到像 max([a, b, c, ...])max(a, b, c, ...)

这样的参数

你的参数是max(Generator, other_number)

在列表前使用 * 即可。

正确的代码:

max(*((c[r, j] - due_dates[speed][r, j]) for j in range(n_machines)), 0 )

max(*[(c[r, j] - due_dates[speed][r, j]) for j in range(n_machines)], 0 )