You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python中Gurobi quicksum编写约束?报错求解

Gurobi约束编写报错问题分析与修复

错误原因

你的代码存在两个核心问题:

  1. 约束名称重复:循环中每次调用addConstr都使用固定名称"c2",Gurobi要求所有约束名称唯一,重复命名会直接触发报错。
  2. 循环逻辑错误:原约束意图应该是「对每个城市j,所有频率i对应的x[i,j]之和≤1」,但你嵌套了i的循环,这会为每一组(i,j)单独添加约束(即每个x[i,j]≤1),完全偏离了原约束的逻辑,同时也会生成大量冗余约束。

修正后的代码

for j in city:
    # 对每个城市j,计算所有频率i对应的x[i,j]之和,并添加约束
    c2 = m.addConstr(
        gp.quicksum(x[i,j] for i in frequency) <= 1,
        name=f"c2_{j}"  # 用f-string生成唯一约束名
    )

额外检查点

如果修正后仍报错,需确认:

  • 变量x是否为正确的Gurobi二维变量,比如通过x = m.addVars(frequency, city, vtype=gp.GRB.BINARY)(根据需求选择变量类型)初始化。
  • frequency和city是否为合法的可迭代对象,确保遍历过程中不会出现索引错误。

内容的提问来源于stack exchange,提问作者DJ-coding

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 01:01:01