生成器表达式必须在 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 )
我目前正在 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 )