DOcplexException:期望iterable错误

我正在处理一个多工作日的车辆路线问题。我想增加一些限制条件,如果一个工作日是6或它的乘数,一个工人必须只工作240分钟。所以我把两个循环工作日(k)和工人(w)和每个k和w我想确保总旅游和服务时间不超过prespesified时间(S)。正如你所看到的代码我如果其他结构用于240和480分钟的日常时间。然而,我得到了“DOcplexException: expected iterable Error”,看到了这个:

OcplexException:期望iterable得到:480 x_0_1_1_1 + 100 x_0_2_1_1 + 480 x_0_3_1_1 + 20 x_0_4_1_1 + 300 x_0_5_1_1 + 100 x_0_6_1_1 + 200 x_0_7_1_1 + 480 x_0_8_1_1 + 80 x_0_9_1_1 + 200 x_0_10_1_1 + 120 x_0_11_1_1 + 260 x_0_12_1_1 + 280 x_0_13_1_1 + 340 x_0_14_1_1 + 400 x_0_15_1_1 + 120 x_0_16_1_1 + 80 x_0_17_1_1 + 50 x_0_18_1_1 + 20 x_0_19_1_1 + 320 x_0_20_1_1 + 180 x_0_21_1_1 + 50 x_0_22_1_1 + 100 x_0_24_1_1 x_0_23_1_1 + 80 + 140……

约束条件如下:

# for w in W:
#     for k in D:
#         if k%6==0:
#             mdl.add_constraints(mdl.sum((distanceList[i][j]*6/7000)*x[i, j, w, k] for i in N for j in N if j != i) + mdl.sum(serviceTime[j-1]*x[i, j, w, k] for i in V for j in N if j != i) <= S*0.5) 
#         else:
#             mdl.add_constraints(mdl.sum((distanceList[i][j]*6/7000)*x[i, j, w, k] for i in N for j in N if j != i) + mdl.sum(serviceTime[j-1]*x[i, j, w, k] for i in V for j in N if j != i) <= S)

非常感谢您的帮助!谢谢。

# # #Model.add_constraints() expec期望列表或综合(都能工作),换句话说,可以在其上进行迭代。基于(非可执行的)代码片段你张贴我有印象的论点add_constraints is a constraint:

是一个约束:

Model.add_constraints( mdl.sum(a[i,w,k]) + mdl.sum(b[i,w,k]) <= S)

这是不被接受的。

您应该将参数转换为add_constraints to a Python comprehension something 到一个类似于Python的理解:

模型。add_constraints (mdl。sum([实现iwk] + mdl。sum(b[iwk] <= S for w in w for k in k)

因此add_constraints收到预期的理解。如果部分约束依赖于指标wk,则在理解中使用辅助函数。让我举一个rhs的例子:

  def my_rhs(wk,k): # rhs of the constraint as a function of w,k
     ... return w+k % 42 # silly example
  Model.add_constraints( mdl.sum(a[i,w,k]+mdl.sum(b[i,w,k] <= my_rhs(w,k) for w in W for k in K)
阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码