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

Using addVars in Gurobi to create variables with three indices

我对使用 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(列表(Crn[r]),列表(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 ) 打印(毫米) '''

看来你想做这样的事情:

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)

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