1

我正在尝试在 python 中使用 gurobi 库(gurobi 是一个优化库)我收到了这个错误----Value Error: too many values to unpack

我正在尝试在 python 中定义一个 6 维变量。我将每个维度定义为一个列表,维度是游戏、轮班、小时、坑、order1 和 order2 由于这 6 个维度的某些组合是有效的,因此我将组合定义为元组列表以指定存在哪些组合。然后我想用有效的组合定义变量。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)
4

1 回答 1

1

您的“组合”变量是一个字符串,您无法将其解压缩为多个变量。您的代码也,如果您的代码确实运行,“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)))
于 2014-05-10T19:40:06.857 回答