使用Gurobi中的addVars创建具有三个索引的变量

时间:2020-04-13 15:25:03

标签: python dictionary variables gurobi

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

''' 从gurobipy导入GRB,quicksum,模型 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]用于列表(Crn [r])中的i,如果j!= i则用于列表(Crn [r])中的j 列印(MM) '''

1 个答案:

答案 0 :(得分:0)

似乎您想做这样的事情:

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)

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