【问题标题】:Generator expression must be parenthesized on a constraint in gurobi生成器表达式必须在 gurobi 中的约束上加括号
【发布时间】:2021-05-07 22:11:19
【问题描述】:

我目前正在从事 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]))

但我总是收到以下错误代码: SyntaxError:生成器表达式必须用括号括起来

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

【问题讨论】:

  • 请使用完整的错误回溯更新您的问题。
  • 删除 ) 中的 due_dates[speed][r, j]) 并将其添加到生成器的末尾,例如(c[r, j] - due_dates[speed][r, j] for j in range(n_machines))

标签: python gurobi


【解决方案1】:

我猜你想用函数 max() 选择最大 num

但是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 )

【讨论】:

    猜你喜欢
    • 2018-12-18
    • 1970-01-01
    • 2018-07-27
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2021-12-01
    相关资源
    最近更新 更多