【问题标题】:Using addVars in Gurobi to create variables with three indices在 Gurobi 中使用 addVars 创建具有三个索引的变量
【发布时间】:2020-04-13 15:25:03
【问题描述】:

我对使用 Gurobi/python 界面进行建模非常陌生。我想用两个索引 i、j 创建一些 z 变量。我尝试了几种方法,但每次都会出错。我希望任何人与我联系并与我讨论这段代码以获得我想要的变量。

''' 从 gurobipy 导入 GRB,quicksum,Model m = 模型('DARP')

R = [i for i in range(1,6)] # 请求数

Crn = {1: [12,13,14], 2: [15,16,17], 3: [18,19,20], 4: [21,22,23], 5:[24 ,25,26] }

对于 R 中的 r: z = m.addVars(list(Crn[r]),list(Crn[r]),vtype=GRB.BINARY)

对于 R 中的 r : MM= quicksum(z [i,j] for i in list(Crn[r]) for j in list(Crn[r]) if j!=i) 打印(毫米) '''

【问题讨论】:

    标签: python dictionary variables gurobi


    【解决方案1】:

    看来你想做这样的事情:

    import gurobipy as grb
    
    m = grb.Model()
    R = list(range(1,6)) # Requests
    Crn = {1: [12,13,14], 2: [15,16,17], 3: [18,19,20], 4: [21,22,23], 5:[24,25,26] }
    
    for r in R:
        # Adding variables
        z = m.addVars(list(Crn[r]),list(Crn[r]),vtype=grb.GRB.BINARY)
        m.update()
    
        # Constructing linear expression
        MM = grb.quicksum([z [i,j] for i in list(Crn[r]) for j in list(Crn[r]) if j!=i])
        print (MM)
    

    请注意,添加变量后必须更新模型实例才能使用它们。

    【讨论】:

    • 根据你的代码我得到下一个输出,我想了解一下
    • 对于 R 中的每个元素,创建一个 linear expression,存储在 MM 中并打印。函数 addVars 的参数名称为 None,因此 gurobi 使用变量的默认名称:C1、C2 等。请说明您的主要目标是什么,以便我提供更多帮助。
    • 非常感谢您的考虑。我已经为车辆路线问题、Dial-a-ride 问题建立了一个完整的模型。我用python创建了随机数据。不幸的是,代码的特定部分进展不顺利。我如何与您讨论更多“+201027690618”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多