【发布时间】:2021-11-13 00:58:51
【问题描述】:
我正在处理一个需要多个工作日的车辆路线问题。我想添加约束条件,如果工作日是 6 天或其乘数,则工人必须只工作 240 分钟。因此,我为工作日 (k) 和工人 (w) 放置了两个循环,每个 k 和 w,我想确保总旅行和服务时间不超过预定时间 (S)。正如你在我的代码中看到的那样,我每天使用 if else 结构 240 和 480 分钟。但是,我得到了“DOcplexException: Expecting iterable Error”并看到了这个:
OcplexException:期待可迭代,得到:480x_0_1_1_1 + 100x_0_2_1_1 + 480x_0_3_1_1 + 20x_0_4_1_1 + 300x_0_5_1_1 + 100x_0_6_1_1 + 200x_0_7_1_1 + 480x_0_8_1_1 + 80x_0_9_1_1 + 200x_0_10_1_1 + 120x_0_11_1_1 + 260x_0_12_1_1 + 280x_0_13_1_1 + 340x_0_14_1_1 + 400x_0_15_1_1 + 120x_0_16_1_1 + 80x_0_17_1_1 + 50x_0_18_1_1 + 20x_0_19_1_1 + 320x_0_20_1_1 + 180x_0_21_1_1+50x_0_22_1_1+100x_0_23_1_1+80x_0_24_1_1+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)
非常感谢您的帮助!谢谢。
【问题讨论】:
标签: python cplex mixed-integer-programming docplex vehicle-routing