Python 试图定义一个6维变量,我得到太多的值来解包错误

Python 试图定义一个6维变量,我得到太多的值来解包错误,python,iterable-unpacking,gurobi,Python,Iterable Unpacking,Gurobi,我正在尝试在python中使用gurobi库(gurobi是一个优化库) 我得到了这个错误--值错误:太多的值无法解包 我试图用python定义一个6维变量。我将每个维度定义为一个列表 这些维度是游戏、轮班、小时、坑、订单1和订单2 因为只有这6个维度的一些组合是有效的,所以我将combo定义为tuplelist来指定存在哪些组合。 然后我想用有效的组合定义变量。tuplelist和addVar等一些对象随gurobipy库提供 python代码是: from gurobipy import*

我正在尝试在python中使用gurobi库(gurobi是一个优化库) 我得到了这个错误--
值错误:太多的值无法解包

我试图用python定义一个6维变量。我将每个维度定义为一个列表 这些维度是游戏、轮班、小时、坑、订单1和订单2 因为只有这6个维度的一些组合是有效的,所以我将combo定义为tuplelist来指定存在哪些组合。 然后我想用有效的组合定义变量。tuplelist和addVar等一些对象随gurobipy库提供
python代码是:

from gurobipy import*
m=Model('mymodel')

combo, oi =multidict( {'(1,1,bj,1,1,1)': 100,
  '(1,1,bj,1,1,2)':200,
  '(1,1,bj,1,1,3)':200,
  '(1,1,bj,1,2,1)':50,
  '(1,1,bj,1,2,2)':70,
  '(1,1,bj,1,2,3)':70,
  '(1,1,cr,1,1,1)':400,
  '(1,1,cr,1,1,2)':450})

combo =tuplelist(['(1,1,bj,1,1,1)',
  '(1,1,bj,1,1,2)',
  '(1,1,bj,1,1,3)',
  '(1,1,bj,1,2,1)',
  '(1,1,bj,1,2,2)',
  '(1,1,bj,1,2,3)',
  '(1,1,cr,1,1,1)',
  '(1,1,cr,1,1,2)'])

x={}
for s,t,i,p,n,m in combo:
    x[s,t,i,p,n,m] = m.addVar(vtype=GRB.BINARY, obj=oi[s,t,i,p,n,m],name=s+","+t+","+i+","+p+","+n+","+m)
您的“combo”变量是一个字符串,您无法将其解压为多个变量。如果您的代码确实运行了,“m”变量用于存储您的模型,那么您的代码也会在for循环中被覆盖

from gurobipy import *
model=Model('mymodel')

combos, oi =multidict( {
    (1,1,'bj',1,1,1):100,
    (1,1,'bj',1,1,2):200,
    (1,1,'bj',1,1,3):200,
    (1,1,'bj',1,2,1):50,
    (1,1,'bj',1,2,2):70,
    (1,1,'bj',1,2,3):70,
    (1,1,'cr',1,1,1):400,
    (1,1,'cr',1,1,2):450})

x={}
for combo in combos:
    x[combo] = model.addVar(vtype=GRB.BINARY, 
                                  obj=oi[combo],
                                  name=".".join(map(str, combo)))

当您运行代码时会发生什么,它与您试图实现的有什么不同?谢谢David。以下也工作了:def标签(c):def标签(c):返回“x”+str(c)翻译(无,“”””)combo,oi=多dididic({(1,1,1,'bj,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1:100):100,(100,(1,1,1,1,1,1,1,1,1,'1,1,1,'bj,1,'bj,1,1,1,1,1,1,1,1,1,1,1,1,1,1,(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1):100):100)100,(100,(100,(100,(100,(100,(100,(组合:#x[s,t,i,p,n,k]=m.addVar(vtype=GRB.BINARY,obj=oi[s,t,i,p,n,k],#name=label((s,t,i,p,n,k)))