指标约束(类型为“ generator”的对象没有len())

时间:2019-05-31 21:16:56

标签: python docplex

我正在根据教程解决VRP优化问题。 当我添加subtours约束时,出现错误。 我正在按照本教程进行操作: https://www.youtube.com/watch?v= eMsqsmftWOQ&t = 2398s

docplex.mp.model导入模型中的
 
mdl =模型('CVRP')

x = mdl.binary_var_dict(arcos,名称='x')
u = mdl.continuous_var_dict(nodos,ub = Q,name ='u')
mdl.minimize(mdl.sum(arcos中i,j的distancia [i,j] * x [i,j]))
mdl.add_constraints(mdl.sum(如果i!= j,则为nodos中的j的x [i,j] == 1)
mdl.add_constraints(mdl.sum(如果i!= j,则i在nodo中为x [i,j]对于客户端中的j为= 1)
如果i!= 0和j!= 0,则在arcos中为i,j的mdl.add_indicator_constraints(mdl.indicator_constraint(x [i,j],u [i] + q [j] == u [j]))是线
 

上下文:

  clientes = [x表示范围(1,n + 1)中的x]
nodos = [0] +个客户
arcos = {(i,j)对于i在nodo中对于j在nodo中,如果i!= j}
Q = 15
 

错误列表为:

  C:\ Users \ Jose Godoy \ PycharmProjects \ Huevos hermanos \ venv \ lib \ site-packages \ docplex \ mp \ __ init__.py:35:RuntimeWarning:正式不支持docplex的32位。需要您自担风险使用它。
  warnings.warn(“ docplex在32位上不受官方支持。使用它需要您自担风险。”,RuntimeWarning)
追溯(最近一次通话):

 中的文件“ C:/ Users / Jose Godoy / PycharmProjects / Huevos hermanos / VRP.py”,第41行
    mdl.add_indicator_constraints(mdl.indicator_constraint(x [i,j],u [i] + q [j] == u [j])如果i!= 0且j!= 0,则为arcos中的i,j

文件“ C:\ Users \ Jose Godoy \ PycharmProjects \ Huevos hermanos \ venv \ lib \ site-packages \ docplex \ mp \ model.py”,行3014,位于add_indicator_constraints中
    ind_indices = self .__ engine.create_batch_indicator_constraints(indcts)

  在create_batch_indicator_constraints中的第465行,文件“ C:\ Users \ Jose Godoy \ PycharmProjects \ Huevos hermanos \ venv \ lib \ site-packages \ docplex \ mp \ engine.py”
    返回self.create_batch_cts(指标)

  在create_batch_cts中,行449中的文件“ C:\ Users \ Jose Godoy \ PycharmProjects \ Huevos hermanos \ venv \ lib \ site-packages \ docplex \ mp \ engine.py”
    self._increment_cts(len(ct_seq))
TypeError:类型为“ generator”的对象没有len()
 

我认为公式的语法没问题,与教程相同,所以我认为这是一个问题,因为我收到警告消息

  RuntimeWarning:正式不支持docplex的32位。需要您自担风险使用它。
  warnings.warn(“ docplex在32位上不受官方支持。使用它需要您自担风险。”,RuntimeWarning)
 

你知道我该怎么解决吗?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。 我添加了

[]

所以这对我有用:

mdl.add_indicator_constraints(mdl.indicator_constraint([x[i,j],u[i]+q[j]==u[j]) for i,j in arcos if i!=0 and j!= 0]) #This is the line