1 内容介绍
开放式车辆路径问题(OpenVehicleRoutingProblem,OVRP)是经典车辆路径问题(VehicleRoutingProblem,VRP)的拓展问题.OVRP和VRP最显著的区别在于:VRP中车辆路线是一个哈密尔顿巡回(Hamiltoniantour),而OVRP中,则是一个哈密尔顿路径(Hamiltonianpath).这主要是由于在OVRP中,车辆在服务完最后一个顾客点后,不要求其回到出发车场,若需要回到车场,则必须沿原路返回.OVRP是配送管理中广泛存在的问题,它可以用来对很多实际应用问题来进行建模.比如一个没有自有车队的配送公司,为了完成对顾客的配送任务而将其业务分包给其它雇佣的车辆,上述问题即为一个OVRP,该问题中配送公司并不关心车辆是否回到车场(配送公司),其也不支付车辆从最后一个服务顾客点到配送公司之间的旅行费用.OVRP在现实中有很多应用,特别是在具有外包业务特点的经济活动中具有重要的应用价值,比如报纸配送、牛奶配送、校园班车问题等,在这类问题中,企业没有自己的自有车辆,而是将其配送业务外包给其它的车辆或车队,这些企业并不需要车辆在服务完顾客后回到车场点,因此如何合理的安排车辆路线对于企业提高运营效率、改善顾客服务质量具有重要的价值.尽管文献中对于经典VRP进行了大量富有成效的研究工作,但是关于OVRP算法研究较少.对于OVRP,最早的文献要追溯到1981年Schrage的文章[1].从1981年开始的20多年,OVRP很少引起学者们的注意,也没有关于OVRP求解算法的论文发表.从2000年起部分学者开始研究OVRP的求解算法,并提出了如下一些算法.Sariklis和Powell[2]提出了一个求解OVRP的两阶段启发式算法,即先分组后安排路线.第一阶段分组阶段又分为两个步骤:在考虑车辆装载能力约束,顾客点首先被进行分组,然后在已经形成的分组间重新分配顾客,从而优化分组,即优化车辆路径距离.算法的第二阶段,通过求解一个最小生成树问题来将分组转化为OVRP的车辆路线.
Bra~ndao[3]提出了一个求解OVRP的禁忌搜索算法(TabuSearch,TS).作者通过两种方法来产生初始解:一个是用最近邻居法产生;一个是用K度方法(K表示车辆数的下界).在开始禁忌搜索算法之前,作者首先用两种方法来优化车辆路线距离:最近邻居法(NearestNeighbormethod)和改进的US过程(Theunstringingandstringingprocedure)[4].TS算法中使用了两种邻域结构:插入算子(Insert)和交换算子(Swap)来产生邻居解.在Fu等[5]、符卓[6]提出的求解OVRP的禁忌算法中,作者用两种方法来产生初始解,随机的方法和最远者优先启发式算法
2 仿真代码
<span style="color:#333333"><span style="background-color:rgba(0, 0, 0, 0.03)"><code><span style="color:#afafaf">%%</span> <span style="color:#dd1144">计算所有配送路线的总行驶距离,以及每条配送路线的行驶距离</span></code><code><span style="color:#afafaf">%输入VC:</span> <span style="color:#dd1144">配送方案</span></code><code><span style="color:#afafaf">%输入dist:</span> <span style="color:#dd1144">距离矩阵</span></code><code><span style="color:#afafaf">%输出sumTD:</span> <span style="color:#dd1144">所有配送路线的总行驶距离</span></code><code><span style="color:#afafaf">%输出everyTD:</span> <span style="color:#dd1144">每条配送路线的行驶距离</span></code><code>function <span style="color:#dd1144">[sumTD,everyTD]=travel_distance(VC,dist)</span></code><code>n=<span style="color:#dd1144">size(VC,1); %车辆数</span></code><code>everyTD=<span style="color:#dd1144">zeros(n,1);</span></code><code>for <span style="color:#dd1144">i=1:n</span></code><code> part_seq=<span style="color:#dd1144">VC{i}; %每辆车所经过的顾客</span></code><code> %如果车辆不经过顾客,则该车辆所行使的距离为0</code><code> if <span style="color:#dd1144">~isempty(part_seq)</span></code><code> <span style="color:#afafaf">everyTD(i)</span>=<span style="color:#dd1144">part_length( part_seq,dist );</span></code><code> end</code><code>end</code><code>sumTD=<span style="color:#dd1144">sum(everyTD); %所有车行驶的总距离</span></code><code>end</code></span></span>
3 运行结果
4 参考文献
[1]郭玉洁, 张强, 魏永和. 求解带容量约束车辆路径问题的离散鲸鱼算法[J]. 计算机与数字工程, 2021, 49(8):6.
[2]李相勇, 田澎. 开放式车辆路径问题的蚁群优化算法[J]. 系统工程理论与实践, 2008, 28(6):13.
[3]曹高立. "基于求解车辆路径问题的混合智能优化算法研究." 昆明理工大学(2015).
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。