这是我第一次使用Gurobi在python中实现优化模型,但遇到了建立决策变量的问题。
我首先尝试对defaultdict
使用以下方法:
from gurobipy import *
from collections import defaultdict
def make_dict():
return defaultdict(make_dict)
decvary = defaultdict(make_dict)
for k in K:
for d in D:
for i in V_L:
for w in V_D:
if (w != i):
for j in V:
if (w != j) and (i != j):
decvary[k][d][i][w][j] = m.addVar(lb=0,ub=1,obj=0,vtype=GRB.BINARY,name="y.%d.%d.%d.%d.%d" % (k,d,i,w,j))
但是稍后当我尝试在优化模型中添加约束时,变量decvary[k][d][i][w][j]
的类型为<class 'collections.defaultdict'>
,但实际上应为1或0(二进制)。
因此,我尝试了一种古老的愚蠢方法来构建嵌套字典:
for k in K:
decvary[k]={}
for d in D:
decvary[k][d]={}
for i in V_L:
decvary[k][d][i]={}
for w in V_D:
if (w != i):
decvary[k][d][i][w]={}
for j in V:
if (w != j) and (i != j):
decvary[k][d][i][w][j] = m.addVar(lb=0,j))
但是这次,添加约束时出现KeyError,并且KeyError总是发生在最后一个键[j]
有人对发生的事情有任何想法吗?非常感谢!