我对使用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) '''
答案 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实例,以使用它们。