文献来源:

编辑
摘要:新兴的城市物流应用需要解决诸多挑战,包括复杂的交通状况和对时间敏感的需求。本研究在城市物流背景下考虑了一个具有时间依赖行驶时间和时间窗口的车辆路径问题(VRPTW),旨在最小化总广义成本,包括与每辆车相关的运输、等待时间和固定成本。我们采用高维时空网络流模型来构建一个具有丰富准则和约束条件的基础车辆路径问题(VRP)。在解决VRP时,一个困难问题是如何通常迭代地提高原始和对偶解的质量,以及如何打破由许多相同解引起的对称性,特别是对于同质车辆。沿着这条线,许多耦合约束,如跨不同代理人或决策者的共识约束,需要仔细处理,以在中等或大规模实例下找到高质量的最优或接近最优解。目前,交替方向乘子法(ADMM)被广泛应用于凸优化领域,作为增广拉格朗日松弛和块坐标下降方法的整合,用于机器学习和大规模连续系统优化和控制。在这项工作中,我们介绍了使用ADMM解决多车辆路径问题,这是整数线性规划的特殊情况,并展示了一种将ADMM中使用的二次惩罚项简化为简单线性函数的方法。在更广泛的背景下,开发了一个计算可靠的分解框架,以迭代地提高原始和对偶解的质量。基本上,最小成本路径子问题或其他涉及二进制决策的类似子问题可以嵌入到一个顺序解决方案方案中,输出下界估计和上界可行解。我们使用经典的Solomon VRP基准实例来检验所提出方法的性能。还基于一家主要电子商务公司的一个问题解决比赛的真实实例对我们的方法进行评估。

编辑
关键词:城市物流、带时间窗口的车辆路径问题、交替方向乘子法、问题分解
期望送达最早时间窗:0(默认全部车辆从时间0从共同出发点出发)
期望送达最晚时间窗:在时间集合中随机生成
两点间配送时长:随机设置任意两点间时长为1,2,或者3
配送成本比时长:1:1
消费者订单需求量:随机设置集合[25,40]内的正整数

编辑
图1左图为UB和LB随着迭代次数的变化,右图为未服务的顾客数随着迭代次数的变化。从右图可以看出随着迭代轮次的增加,未服务的顾客数从最大值逐渐下降,到约第32轮次时收敛至0,说明程序逐渐从刚迭代时得到的全部顾客都未服务的不可行解,随着迭代轮次的增加,到收敛时可以得到一个全部顾客都满足需求的可行解。由左图可以看出随着迭代轮次的增加,上界逐渐下降,下界逐渐上升,解的质量随着迭代轮次的增加而增加。结合上述结论,随着迭代轮次的增加至程序收敛时,可以得到一个较好的可行解(或未收敛时得到一个近似较优解)。下面通过比较其中两个迭代轮次的解(一个是收敛后,另一个是未收敛时),证明收敛后的解较优,即程序可以通过迭代使得解逐渐变优,直到收敛。
未收敛轮次选取:
选取相对较好计算的第14次迭代结果进行分析,第14次迭代车-路径结果及成本如下表所示(0为共同起点,26为共同终点):
表1:第14次迭代车路径结果及成本
使用车次:9
其中重复服务的顾客:20.25
未服务的顾客:13.14.22
详细讲解见第4部分。

编辑
部分代码:
%parameters lambda1 = 1; lambda2 = 1; T = 10; % Time. R = 4; % Freshness. W = 100; % Car capacity. c = 100; % Customers. s = c+2; % Space node. alpha2 = 2; % Time window penalty for delivery late. rho = 0.1; bestK = 100; iteration = 100; % ADMM iterations.
% The next 3 lines of code is used to generate random time intervals % between random 2 nodes. Writes it in an excel file and then copy it % to 'inputFor100.xlsx' file. %timeRange = [1, 3]; %[ B ] = GenerateRandomTime( c, timeRange ); %xlswrite('randomTimeFor100', B);
node = xlsread('inputFor100.xlsx', 1, 'B2:E101', 'basic'); demand = node(:, 1); %et = node(:, 2); lt = node(:, 3); freshness = node(:, 4); K = ceil(sum(demand)/W)+2; % Set vehicle number. clear node; link = xlsread('inputFor100.xlsx', 2, 'D2:D10405', 'basic');
link = reshape(link, [s, s]); [ UB1 ] = CalculateObject1UB( link ); link = reshape(link, [s, s, 1, 1]); C = zeros(s, s, T+1, T+1); % Arc cost matrix. Vehicles start from t=0.
.....
subplot(1, 2, 1) plot(x, y1, x, y2); xlabel('Iteration') ylabel('UB & LB') legend('UB','LB')
subplot(1, 2, 2) plot(x, unServedNode); xlabel('Iteration') ylabel('The number of unserved Node')
% Suggest to use this function after program has been converged. [ finalSeq, timeSeq ] = FeasibleSolution( visitedSeq, finalRout, serviceTimes, C );
% Generate freshness deviation and freshness choice for each vehicle. [ proposalR_K, freshnessDeviation ] = ... GenerateFreshness( finalSeq, timeSeq, freshness, R );
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1] Y.Yao, X.Zhu, H.Dong, S.Wu, H.Wu, L.C.Tong and X.Zhou, "ADMM-based Problem Decomposition Scheme for Vehicle Routing Problem with Time Windows," Transportation Research Part B:Methodological, vol. 129, no. 19, pp. 156-174, 2019.
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删