MapReduce求解物流配送单源最短路径研究
大数据Hadoop入门第五十三讲 MapReduce案例:最短路径算法
Dijkstra算法推导描述
Dijkstra算法MapReduce实现说明
1. 将节点分为三大类:未处理、处理中、处理完成;每一次迭代都会有处理 中的节点,如果没有处理中的节点,那么算法结束。
2. 每次MR任务中对处理中的顶点进行处理,并将这些顶点设置为处理完成以 及将这些顶点的下一个顶点设置为处理中的顶点。
Dijkstra算法描述
Dijkstra采用路径长度递增的关系进行最短路径的计算。主要算法思想如下: 1. 把顶点集合V分成两组:
1)S:已求出的顶点的集合(初始时只含有源点V0) 2)V-S=T:尚未确定的顶点集合 2. 将T中顶点按递增的次序加入到S中,保证: 1)从源点V0到S中其他各顶点的长度都不大于从V0到T中任何顶点的最短路径长度 2)每个顶点对应一个距离值 S中顶点:从V0到此顶点的长度 T中顶点:从V0到此顶点的只包括S中顶点作中间顶点的最短路径长度
Hadoop快速入门
第五十三讲 MapReduce案例:最短路径算法
最短路径概述
用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心 向外层层扩展,直到扩展到终点为止。最短路径问题分为单源点最短路径和多 源点最短路径;其中单源点最短路径指的是给定一个确定的源点,计算该点到 其 的最短路径。本讲我们主要介绍单源点路径中的Dijkstra算法的mapreduce实现。
3. 在每次的MR迭代任务中,map函数主要提取当前处理顶点的下一个顶点的 内容,reduce函数主要将同一个顶点的数据进行合并计算(取路径最小的值)操 作。
使用MR的思想推导以下上一张ppt的图的执行逻辑。
代码实现
1. 图的边表示形式转换为计算算法的需求形式的数据,并指定我们的源点进行 初步初始化操作 2. 编写计算距离的map函数和reduce函数 3. 编写runner执行入口类 4. 测试如下两种情况
基于云计算求解城市物流配送最短路径研究
t h e e f f i c i e n c y o f d e l i v e r y a n d t r a n s p o r t a t i o n c o s t s . I n o r de r t o s o l v e t h e s h o r t e s t p a t h p r o b l e m o f l o g i s t i c s
求解方法 。在该求解方式 中, 构建 Ma p R e d u c e 并行 化模 型和算法流程 ; 数字化城市路 网 , 借助 于 m a p i n -
f o 分层 管理道路 和配送 点 , 并 对道路 和配送 点进行拓扑化处理 , 生成 MI D文件供 Ma p R e d u c e 使用 ; 通 过
Re s e a c h o n S o l v i n g t h e S h o r t e s t Pa t h o f Ur b a n Lo g i s t i c s Di s t r i b u t i o n Ba s e d o n Cl o u d Co mp u t i n g
Ni u Li ቤተ መጻሕፍቲ ባይዱ n g, Zh an g Ba o y o u
( Co l l e g e o fEc o n o mi c s a n dMa n a g e me n t , Ch i n a J i l i a n gUn i v e r s i t y , Ha ng z h o u 31 0 01 8, Ch i n a )
物流配送系统中大规模最短路径算法的研究
物流配送系统中大规模最短路径算法的研究作者:忻瑞婵来源:《中国管理信息化》2008年第05期[摘要]在物流配送管理系统中,车辆路径优化是一个典型的难题,而最短路径算法是其基础。
传统的最短路径算法,如Dijkstra最短路径算法因性能问题无法适应大规模的拓扑网络和实时计算。
本文在Dijkstra最短路径算法的基础上,在方向优先等改进算法的启发下,设计和开发了基于GIS的大规模最短路径算法。
实验表明,该算法受拓扑网络规模的影响极小,能够快速完成实时最短路径计算。
[关键词]最短路径;车辆路径优化;GIS;物流配送;Dijkstra最短路径算法[中图分类号]F270.7[文献标识码]A[文章编号]1673-0194(2008)05-0067-03一、物流配送路径优化随着物流技术和应用的发展,物流配送过程中的车辆路径优化问题(Vehicle Routing Problem,VRP)[1]成为一个研究的热点。
它是一个NP难题,不能得到解析解,通常只能通过各种启发式算法得到近似解。
物流配送路径优化问题涉及因素众多,各种因素之间关系十分复杂。
车辆路径优化问题的定义依约束和目标的不同而有不同深度的定义。
一般是指从一个配送中心用多辆车向多个需求网点送货。
配送中心和网点之间的位置和距离一定,网点的需求配货量和车辆的容量一定,要求合理安排运输路线,使得总运程最低,即总路径最短,费用最少。
通过调整约束和优化目标,问题的难度可以进一步提高。
但无论如何,优化算法最终都基于网点(包括配送中心)之间的最短路径。
图1是一个典型的物流配送路径优化系统的流程图。
从图1可以看出,配送路径优化系统区分为两部分。
左边流程完成的任务包括:(1)根据GIS地图数据提取道路、对相交道路进行分割、生成路段拓扑网络,网络的节点是路口,弧是节点之间的路段;(2)根据道路拓扑网络计算任意两个节点之间的最短路径。
将最短路径生成过程预先执行的理由是最短路径算法时空复杂度高,并且通常道路信息变更并不频繁。
物流配送中的路径规划算法研究与实现
物流配送中的路径规划算法研究与实现随着电商的兴起,物流配送逐渐成为了人们日常生活中不可或缺的一部分。
而对于物流配送企业来说,如何降低成本、提升效率,依靠优秀的路径规划算法是关键之一。
一、路径规划的基本概念路径规划是指在所规定的条件下,在空间中确定从起点到终点的一条合理路径的过程,其目的是为了在保证最优路径的前提下,降低物流配送的成本,提高配送效率。
与传统的算法相比,在物流配送场景中,需要更多的考虑现实情况方面的因素。
比如,考虑到行车时间、路况、道路限制等实际因素,才能在最短时间内完成配送任务。
二、常见的路径规划算法1. 最短路算法:最短路算法是路径规划算法中最常见的一种方法。
通过建立一个地图,并将地图上的每个节点看作是一个状态,来寻找到达终点最短路径的过程。
在应用时,主要有多种求解方法:Dijkstra算法、Floyd算法、A*算法等。
其中,Dijkstra算法在以查询单源最短路径为主的情况下表现最好。
2. 遗传算法:遗传算法是一种基于自然进化原理的计算方法,主要用于求解复杂的优化问题。
在路径规划中,遗传算法可以通过随机生成一些样本,通过不断交叉变异及选择不断筛选得到最佳路径。
3. 蚁群算法:蚁群算法也是一种随机搜索算法,其灵感来源于蚂蚁找到食物的行为。
在算法中,通过一些信息素的激素作用和加强,在蚂蚁不断寻找过程中,最终实现带有全局搜索能力的路径规划。
以上所述算法,都是传统路径规划算法中比较常用的几种方法。
但是,在实际操作中,这些算法在某些情况下,可能并不能完全适应实际的物流场景,需要根据实际情况进行深化和优化。
三、实现路径规划的相关技术实现路径规划的技术方案,在不同的场景中需要综合考虑多个因素,包括路线规划中所处的行业背景、用户需求、数据方面信息和技术应用等多方面的内容。
1. 地图定位技术:地图定位技术可以快速准确地确定用户或者物品所在的位置。
在物流配送中,这是实现路径规划的基础条件,其准确性直接决定了路径规划的精准程度。
快递员派送货物最短路径的模型研究
快递员派送货物最短路径的模型研究2 河北经贸大学管理科学与工程学院 063210摘要:网上购物的日益普及使消费者们对于快递物流的要求不断提高,这一趋势生出了关于快递配送的路线选择问题,如何规划路线从而使得耗费时间最少、路径最短成为待解决的问题模型。
本文关于配送路径的规划提出了两个解答方法,即Dijkstra方法和Lingo模型。
类似快递配送的路线规划的问题也普遍存在于现实生活中,而使用Dijkstra方法和Lingo模型可以便捷地解决这类问题。
关键词:最短路径;Dijkstra;Lingo;快递配送一、前言伴随着人们物质精神水平的不断提高以及互联网技术应用的飞速发展,在当今社会中,网上购物已经逐渐成为人们日常消费的主要手段之一,人们足不出户就能浏览店家、挑选心仪的商品、货比三家、下单购物。
这种相比传统的实体店购物方式更为便捷的网络购物方式,也催生了一大批相关产业的发展,比如物流、快递。
尤其在前段时期的新冠疫情爆发、扩散、情势严峻的时期,由于所居住的村庄、居民区的全方位封闭隔离,以及对人与人之间的近距离接触的杜绝,人们对于日常生存、生活用品的需求只能通过从网上的渠道购得。
这使大家对物流快递公司的要求也越来越高。
快递公司出于节省时间、提高效率进而节约成本、满足客户要求的迫切需求,不得不面临着优化派送路线的问题。
二、对快递派送路径问题的提出消费者们拍下消费订单后,除了对商家货物质量优劣的关注外,最大的担忧便是快递派送的问题。
这家快递公司的物流配送速度快不快?物流信息的更新及不及时?配送过程的安全保障怎么样?如果因为市场问题而发生货物的损毁灭失谁来向我承担损害赔偿?公司的配送效率高不高?快递工具是火车还是飞机?到达我市后市内的配送路线是什么样的?我的货物会被优先配送吗?消费者与快递公司间的信任关系常常受到一系列类似以上的问题的挑战。
就我本人的真实经历来说,某天上午8点钟物流信息显示包裹到达了我们市里并且正在派送中,按惯例一般1小时左右就能到达快递驿站,而我却一直等到傍晚都依然没有接收到包裹到达的消息通知。
MapReduce下的Dijkstra并行算法研究
MapReduce下的Dijkstra并行算法研究
MapReduce下的Dijkstra并行算法研究*
于方
【摘要】文章对求解单源最短路径的Dijkstra经典实现算法进行了基于MapReduce编程模型的并行化设计,通过分析MapReduce 中的Map过程和Reduce过程,解析该算法的设计思想和执行流程,最后在Hadoop云平台下设计实验,测试并验证了该并行算法的正确性和高效性.
【期刊名称】阴山学刊(自然科学版)
【年(卷),期】2018(032)001
【总页数】6
【关键词】MapReduce;Dijkstra;最短路径;并行算法
0 引言
最短路径问题在很多行业领域中有着广泛的应用,如物流路线规划、交通路径模拟、社交网络以及位置服务等.Dijkstra[1]算法是求解单源最短路径问题的经典算法.由于目前最短路径问题应用领域的数据规模迅速增长、数据结构日益复杂、实时性要求更强等应用需求,利用并行计算提高最短路径问题求解速度和效率的研究正成为重要的研究趋势.其中,基于Hadoop的云计算可以解决数据量过大对于内存的强依赖性和串行算法数据处理效率低下的问题,在Hadoop构建的普通机器集群下,采用MapReduce并行编程模型,实现多机并行,可以有效减少计算时间、提高计算效率.
本文研究在Hadoop云平台下,采用MapReduce编程模型对Dijkstra算法进行并行化分析与设计,实现了并行求解单源最短路径问题.
1 Dijkstra单源最短路径算法。
求解单源最短路径问题的算法
求解单源最短路径问题的算法
求解单源最短路径问题的算法有多种,下面列举了几种常见的算法:
1. Dijkstra算法:通过维护一个距离数组,不断更新起始点到其他节点的最短路径长度。
核心思想是每次选择距离起始点最近的节点,并逐步更新距离数组。
该算法适用于无负权边的情况。
2. Bellman-Ford算法:通过迭代更新距离数组,每次都扫描所有的边,更新路径长度。
该算法适用于存在负权边的情况。
3. Floyd-Warshall算法:通过一个二维矩阵来存储任意两个节点之间的最短路径长度,通过尝试经过不同的中间节点来更新路径长度。
该算法适用于有向图或无向图,且适用于任意权重的情况。
4. A*算法:在Dijkstra算法的基础上引入启发函数,通过启发函数估计从起始点到目标节点的距离,并按照估计值进行优先级队列的排序。
该算法适用于图中存在目标节点的情况。
以上算法适用于不同的情况,具体选择哪个算法要根据问题的特点来决定。
物流配送路线规划中的最短路径研究
收稿日期:2007-03-12作者简介:王俊珺(1981-),女,助教,研究方向:基础教育研究。
1引言[1]配送运输是物流系统中最重要的组成部分之一,正是通过配送运输,配送中心才得以最终完成货物从生产商到用户的转移。
由于配送中心每次配送活动一般都面对多个非固定用户,并且这些用户坐落地点各不相同,所以对于它们的配送时间和配送数量也都不尽相同。
如果配送中心不进行运输路线的合理规划,往往会出现不合理运输现象,不仅造成运输成本上升,而且导致配送服务水平难以提高,因此经常对配送路线进行规划调整是大多数配送中心的一项重要工作。
在配送中心进行运输路线规划时,除了两点之间最短路问题外,多点之间最短路问题也是最常见的问题,如:旅行商问题和中国邮递员问题,但它们的核心算法也都可以是最短路径算法。
2最短路径算法研究最短路径算法是计算机科学与地理信息科学等领域研究的热点,最短路径算法有很多种,目前最具有代表性的有Dijkstra算法、A*算法和Floyd算法。
2.1Dijkstra算法的描述[2]Dijkstra算法是E.W.Dijkstra于1959年提出的一个适用于所有弧的权均为非负的最短路算法,也是目前公认的求解最短路问题高效的经典算法之一。
Dijk-stra算法的基本思路是:假设每个点都有一对标号(dj,pj),其中dj是从起始点s到终点j的最短路径的长度;pj则是从s到j的最短路径中j点的前一点。
求解从起始点s到点j的最短路径算法的基本过程如下:(1)初始化。
起始点设置为:①ds=0,ps,为空;②所有其他点:di=∞,pi=?;③标记起始点s,记k=s,其他所有点设为未标记的。
(2)检验从所有已标记的点到其直接连接的未标记的点的距离,并设置:dj=min[dj,dk+lkj]式中lkj,是从点k到j的直接连接距离。
(3)选取下一个点,从所有未标记的结点中,选取dj中最小的一个i:di=[dj,所有未标记的点j]点i就被选为最短路径中的一点,并设为已标记的。
物流配送最短径路的动态规划方法研究
文章编号:100124098(2007)0420027203物流配送最短径路的动态规划方法研究Ξ蒋琦玮,陈治亚(中南大学交通运输工程学院,湖南长沙 410075)摘 要:确定物流配送的最短径路是提高物品时空价值的重要环节。
在借鉴国内外一些研究成果的基础上,以动态规划理论为指导,选择合理的最优值函数及其自变量,列出递归关系式,并用标号法对实例进行验证。
应用动态规划研究物流配送的最短径路,思路清晰,方法简便。
关键词:动态规划;物流配送;最优值函数;最短径路中图分类号:U491 文献标识码:A1 引言物流配送是现代化物流系统的一个重要环节。
它是指按用户的订货要求,在配送中心进行分货、配货,并将配好的货物及时送交收货人的活动。
在物流配送业务中,合理选择配送径路,对加快配送速度、提高服务质量、降低配送成本及增加经济效益都有较大影响。
物流配送最短径路是指物品由供给地向需求地的移动过程中,所经过的距离最短(或运输的时间最少,或运输费用最低),因此,选定最短径路是提高物品时空价值的重要环节。
经典的D ijk stra算法和F l oyd算法思路清楚,方法简便,但随着配送点数的增加,计算的复杂性以配送点数的平方增加,并具有一定的主观性。
我国学者用模糊偏好解试图改善经典方法[1],取得了较好的效果。
遗憾的是,模糊偏好解本身就不完全是客观的。
文献[2]详细分析了经典方法的利弊之后,提出将邻接矩阵上三角和下三角复制从而使每条边成为双通路径,既适用于有向图也适用于无向图,但复杂性增加了。
为了避免上述方法存在的不足,本文以动态规划法为理论,选择合理的最优值函数与自变量,用于解决物流配送最短径路问题,其优点在于思路清晰,方法简便,理论可靠。
2确定物流最短径路的动态规划方法首先要选定最优值函数。
设a ij表示点i到点j的距离,如果点i和点j之间没有通路,表示i,j间的距离为∞,因而a ij=0。
记Z3i为自点i到终点的最短距离。
物流配送中心的距离最短路径规划算法研究
物流配送中心的距离最短路径规划算法研究随着电子商务和物流行业的发展,物流配送的效率成为关注的焦点。
为了实现最佳化的配送方案,物流企业需要解决的一个重要问题是如何规划最短路径,以减少成本和提高效率。
物流配送中心的距离最短路径规划算法,是一种使用计算机算法来寻找从物流配送中心到目标地点的最短路径的方法。
在物流过程中,通过合理规划路径,可以降低运输成本、提高交付效率、减少配送时间、优化物流资源利用等。
因此,研究物流配送中心的距离最短路径规划算法对于提升物流配送效率具有重要意义。
在研究物流配送中心的距离最短路径规划算法时,常使用的算法包括贪心算法、分支定界法、动态规划算法、遗传算法等。
贪心算法是一种简单但常用的算法。
它通过每一步选择最优解的方式,逐步得到一个全局最优解。
然而,贪心算法在某些情况下可能会导致局部最优解,对于复杂的物流配送中心距离最短路径规划问题可能不够准确。
分支定界法是一种适用于求解优化问题的方法。
它通过分解问题为较小的子问题,并使用界限函数来剪去非最优解,最终得到一个全局最优解。
由于分支定界法采用了逐步剪枝和回溯的策略,因此能够在可接受的时间内得到较为准确的最优解。
动态规划算法是一种基于状态转移的方法,通常用于求解具有重叠子问题和具有最优子结构特征的问题。
在物流配送中心的距离最短路径规划问题中,可以将整个物流过程划分为多个子问题,并通过计算每个子问题的最优解来得到整体的最优解。
动态规划算法的优点是能够在多项式时间内解决问题,但对于复杂的实际物流配送问题,规模可能过大,需要考虑时间和空间复杂度。
遗传算法是一种基于生物进化理论的优化算法。
通过模拟生物遗传的过程,利用交叉、变异等操作来搜索问题的最优解。
遗传算法的优点是适用于求解复杂的多目标规划问题,并且具有良好的鲁棒性和全局搜索能力。
然而,由于遗传算法的搜索过程是基于概率的,因此无法保证能够得到全局最优解。
除了上述算法外,还有其他一些算法可以用于物流配送中心的最短路径规划。
求解单源最短路径问题的算法
求解单源最短路径问题的算法(实用版)目录1.单源最短路径问题的定义2.算法的基本思想3.Dijkstra 算法的实现4.算法的适用范围和优缺点正文一、单源最短路径问题的定义单源最短路径问题是指在有向图或无向图中,从某一指定顶点(源顶点)到其他所有顶点的最短路径问题。
换句话说,就是要找到从源顶点到其他所有顶点的最短路径。
这个问题在计算机科学和网络科学中有着广泛的应用,例如在社交网络分析、路由算法等方面。
二、算法的基本思想求解单源最短路径问题的算法有很多种,但其中最著名且最有效的是Dijkstra 算法。
Dijkstra 算法的基本思想是每次找到当前未被访问过的顶点中距离源顶点最近的顶点,然后更新其他顶点到源顶点的距离。
重复这个过程,直到所有顶点都被访问过为止。
三、Dijkstra 算法的实现Dijkstra 算法的具体实现如下:1.创建一个集合 S,用于存储已访问过的顶点,初始时只包含源顶点。
2.对于每个顶点,计算其到源顶点的距离,并将这个距离与其它已知距离进行比较。
3.如果这个距离比已知的距离更短,那么就更新其他顶点到源顶点的距离,并将这个顶点加入集合 S。
4.重复步骤 2 和 3,直到所有顶点都被访问过。
四、算法的适用范围和优缺点Dijkstra 算法适用于有向图和无向图,并且可以处理负权边。
但是,它有一个明显的缺点,那就是在处理大规模数据时,需要大量的内存来存储中间结果。
此外,Dijkstra 算法的时间复杂度为 O(E*logV),其中 E 为边数,V 为顶点数。
虽然这个时间复杂度在很多情况下是可以接受的,但是在大规模数据下,可能会需要较长的时间来计算。
MapReduce实现单元最短路径算法
1 0|2|2,10,4,5, 2 10|1| 4 5|1| 2 MAX|0|3,1,4,2, 3 MAX|0|5,4, 4 MAX|0|5,2,3,9,2,3, 5 MAX|0|3,6,1,7,
After job_1 Redeuce:
1 0|2|2,10,4,5, 2 10|1|3,1,4,2, 3 MAX|0|5,4, 4 5|1|5,2,3
其中ID代表节点的标识,Edges代表从某一节点出发的所有的边(对于 有向图)Edges又可以用从该节点出发的边的另一端的节点表示。例如 图1.1就可以用邻接表表示。
在求解图的问题时,图中的节点和边往往含有更多的信息,在用标色法 求解单元最短路径时,节点的信息还包括节点的颜色、节点到源点的距 离等,边的信息包括边的权值等。对以上邻接表作稍微改进便可满足要 求。更新后的图文件的每一行的格式如下:
Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new
IntWritable(); public void reduce(Text key,
Iterable<IntWritable> values, Context context ) throws IOException,
InterruptedException { int sum = 0;
for (IntWritable val : values) { sum += val.get();
} result.set(sum); context.write(key, result);
} }
public static void main(String[] args) throws Exception {
物流论文-配送中心车辆最短路径问题的研究
刘孝配:配送中心车辆最短路径问题的研究
参考文献...................................................................................................................... 31 附录 A........................................................................................................................... 32 附录 B........................................................................................................................... 33
II
山东交通学院毕业设计(论文)
目 录
前 言.............................................................................................................................. 1 1 绪论............................................................................................................................ 2 1.1 研究的背景及意义......................................................................................... 2 1.2 论文研究现状................................................................................................. 3 1.3 论文研究的内容.............................................................................................. 4 2 配送中心车辆最短路径问题概述............................................................................ 5 2.1 配送中心概述................................................................................................. 5 2.1.1 配送中心的概念................................................................................... 5 2.1.2 配送中心的功能................................................................................... 5 2.2 最短路径问题介绍......................................................................................... 5 2.3 最短路径问题的相关概念.............................................................................. 6 2.3.1 图论相关定义...................................................................................... 6 2.3.2 最短路径.............................................................................................. 7 2.4 最短路径问题的常用解决方法——Dijkstra 算法................................... 10 2.4.1 介绍..................................................................................................... 10 2.4.2 Dijkstra 算法思想.......................................................................... 10 2.4.3 Dijkstra 算法步骤.......................................................................... 10 2.4.4 Dijkstra 算法缺陷........................................................................... 11 3 配送中心车辆最短路径算法的实现...................................................................... 13 3.1 SPFA 算法解决最短路径问题...................................................................... 13 3.1.1 SPFA 算法介绍................................................................................... 13 3.1.2 SPFA 算法的理论基础....................................................................... 13 3.2 lingo 软件解决最短路径问题.................................................................... 17 3.2.1 软件概述............................................................................................ 17 3.2.2 利用 lingo 软件解决最短路径问题................................................. 18 4 案例分析及其结果分析.......................................................................................... 21 4.1 案例................................................................................................................ 21 4.1.1 案例说明............................................................................................ 22 4.1.2 案例分析............................................................................................ 23 4.2 SPFA 算法计算.............................................................................................. 23 4.3 Lingo 软件运行............................................................................................ 26 结 论............................................................................................................................ 29 致 谢............................................................................................................................ 30
短途物流中最优路径规划算法研究
短途物流中最优路径规划算法研究随着电子商务的发展和城市化进程的加快,短途物流成为一种快速、高效的物流方式。
在短途物流中,最大的挑战之一就是选择最优的路径来配送货物,以提高效率和降低成本。
因此,短途物流中最优路径规划算法研究对于物流行业的发展具有重要意义。
短途物流中最优路径规划的目标是找到一条能够在满足货物配送要求的前提下,使得总的行驶距离最短或时间最短的路径。
这个问题在计算机科学和运筹学领域有着广泛的研究。
针对这一问题,已经提出了多种最优路径规划算法,如Dijkstra算法、A*算法、遗传算法等等。
Dijkstra算法是最早被提出的用于单源最短路径的算法之一,被广泛应用于短途物流中。
该算法通过计算源节点到其他所有节点的最短路径,找到最短路径树,从而得到最短路径。
然而,Dijkstra算法对于大规模网络的运行效率较低。
为了克服这个问题,研究人员提出了A*算法。
A*算法结合了Dijkstra算法和启发式搜索的思想,通过估计目标节点到目标的距离来引导搜索,从而减少了搜索的范围和时间。
在短途物流中,A*算法可以更快地找到最优路径。
除了传统的路径规划算法,遗传算法是一种新颖的优化算法,近年来在短途物流中也得到了广泛应用。
遗传算法通过模拟生物进化的过程,通过选择、交叉和变异等操作,逐步优化路径。
该算法具有较强的全局搜索能力,能够找到全局最优或接近最优的解。
在实际应用中,根据具体问题的特点,可以选择合适的算法来进行短途物流的最优路径规划。
然而,短途物流中最优路径规划仍然面临一些挑战和限制。
首先,短途物流的网络环境通常比较复杂,包含大量的节点和边,需要耗费大量的计算资源来找到最优路径。
其次,短途物流的需求和条件往往是不确定的,包括货物数量、配送点、送货时间等,因此需要灵活的算法来应对不同的情况。
此外,短途物流中还存在多个目标的情况,如同时考虑行驶距离和时间。
因此,如何设计出高效、灵活且具有多目标优化能力的最优路径规划算法是一个值得研究的方向。
物流配送中的路径优化算法研究
物流配送中的路径优化算法研究一、前言随着物流配送的广泛运用和物流领域的智能化升级,如何优化物流配送的路径成为了物流领域的一项研究热点。
本文将介绍物流配送中的路径优化算法,并从算法的优化角度对其进行论述。
二、路径优化算法的意义在物流配送中,每一条路径都包含了订单配送的起点和终点,以及途中所需经过的各种道路。
如何找到最优的路径,可以大幅度地提高物流配送的效率和服务水平。
路径优化算法可以帮助寻找最短路径或某种特定条件的路径,并且能够克服现实生活中无法预知的各种障碍因素,如拥堵、施工、交通事故等。
三、路径优化算法的分类在物流配送中,常用的路径优化算法主要包括以下三种:1.最短路算法最短路算法是求解带权重有向图中从起点到终点的最短路径的算法。
物流配送中,可以将地图建模成为一个带权重有向图,节点为地点,边为两个地勾间的路程和时间等。
最短路算法可以分为Dijkstra算法、Bellman-Ford算法等。
Dijkstra算法实现起来比较简单,是一个贪心算法,每次选择离起点最近的点进行拓展。
但它不能处理带有负权重的边。
Bellman-Ford算法能够处理带有负权的边,但需要进行多次松弛操作,算法时间复杂度较高。
2.遗传算法遗传算法是一种模拟生物进化的随机化优化算法,通过不断运用自然进化过程中的遗传操作,来搜索问题的解。
物流配送中,遗传算法可以模拟优化驾驶路径,时间窗口等问题。
遗传算法有三个主要操作:选择、交叉、变异。
选择:根据适应性函数的值,选择部分个体作为下一代的种群。
交叉:按照一定的概率,对选定的个体进行交叉,产生不同的新个体。
变异:对新个体进行变异,从而产生更多的个体。
3.蚁群算法蚁群算法是一种基于蚂蚁在寻找食物、寻找最短路径等方面观察得出的生物群体智能算法。
物流配送中,蚁群算法可以用来优化多点配送路径问题。
蚁群算法是通过模拟蚂蚁在寻找食物或其它资源时的行为过程,来实现全局最优解的搜索。
四、路径优化算法的优化在路径优化算法中,算法的效率往往是限制算法应用的主要因素。
物流运输系统中最短路径算法及应用
物流运输系统中最短路径算法及应用摘要:根据GIS中网络计算(de)实际情况,根据A算法和Dijkstra算法中快速搜索技术(de)实现入手,采用最短路径算法结合GIS(de)方法,提出了一种解决物流运输中车辆路径问题(de)高效率实现(de)方法.引言:在竞争日益激烈(de)现代商业社会,企业只有以市场为核心去适应不断变化(de)环境并及时对市场做出发应,才能在竞争中立于不败之地.物流管理正是以实现上述要求为目标(de).而物流配送是现代化物流管理中(de)一个重要环节.它是指按用户(de)定货要求,在配送中心进行分货、配货,并将配好(de)货物及时送交收货人(de)活动.在物流配送业务中,存在许多优化决策(de)问题.本文只讨论物流配送路径优化问题.合理选择配送路径,对加快配送速度、提高服务质量、降低配送成本以及增加经济效益都有很大影响. 所谓(de)车辆路径问题(Vehicle Routing Problem)VRP.它也是目前在物流系统中较受关注(de)一个方面.它是指在客户需求位置已知(de)情况下,确定车辆在各个客户间(de)行程路线,使得运输路线最短或运输成本最低.一、系统介绍求解物流配送路径优化问题(de)方法有很多是路径引导(de)功能.本设计主要功能是从给定(de)车辆位置和多个目标点位置,计算车辆遍历所有目标点(de)代价最优值,并给出代价值和路径描述,并在地图上进行路径显示.路径引导模块(de)主要过程:初始化路网->得到车辆信息和目标点信息->求车辆遍历所有目标点(de)代价最优值和遍历次序(仅求遍历次序,而不需求走什么道路)->求每个目标点遍历(de)最优路径(求具体(de)道路)->输出遍历次序和路径描述二、车辆遍历所有目标点(de)代价最优值算法本设计中(de)遍历次序(de)算法采用(de)是等代价搜索法,它是A算法(de)一种简化版本.等代价搜索法也是基于宽度优先搜索上进行了部分优化(de)一种算法,它与A算法(de) 相似之处都是每次只展开某一个结点(不是展开所有结点),不同之处在于:它不需要去另找专门(de)估价函数,而是以该结点到A点(de)距离作为估价值.例如图1,从A点出发,要遍历C,B,D,E四个目标点.具体算法过程如下:图1 起点和遍历目标点图1、从A点开始依次展开得到AB(7)、AC(3)、AD(10)、AE(15)四个新结点, 把第一层结点A标记为已展开,并且每个新结点要Record下其距离(括号中(de)数字);2、把未展开过(de)AB、AC、AD、AE四个结点中距离最小(de)一个展开,即展开AC(3)结点,得到ACB(8)、ACD(16)、ACE(13)三个结点,并把结点AC标记为已展开;3、再从未展开(de)所有结点中找出距离最小(de)一个展开,即展开AB(7)结点,得到 ABC(12)、ABD(20)、ABE(19)三个结点,并把结点AB标记为已展开;4、再次从未展开(de)所有结点中找出距离最小(de)一个展开,即展开ACB(8)结点……(不再展开AD、AE);5、每次展开所有未展开(de)结点中距离最小(de)那个结点,直到展开(de)新结点中出现目标Case(结点含有5个字母)时,即得到了Result.由上可见,A算法和等代价搜索法并没有象宽度优先搜索一样展开所有结点,只是根据某一原则(或某一估价函数值)每次展开距离A点最近(de)那个结点(或是估价函数计算出(de)最可能(de)那个结点),反复下去即可最终得到答案.虽然中途有时也展开了一些并不是答案(de)结点,但这种展开并不是大规模(de),不是全部展开,因而耗时要比宽度优先搜索小得多.三、目标点遍历(de)最优路径(求具体(de)道路迪杰斯特拉算法在计算两个具体目标点间(de)具体道路时,本设计采用了迪杰斯特拉算法.在设计中又对迪杰斯特拉算法进行优化,以实现高速公路优先.Dijkstra算法(de)基本思路是:假设每个点都有一对标号 (dj, pj),其中dj是从起源点s到点j(de)最短路径(de)长度 (从顶点到其本身(de)最短路径是零路(没有弧(de)路),其长度等于零);pj则是从s到j(de)最短路径中j 点(de)前一点.求解从起源点s到点j(de)最短路径算法(de)基本过程如下:1) 初始化.起源点设置为:① ds=0, ps为空;②所有其他点: di=∞,pi=;③标记起源点s,记k=s,其他所有点设为未标记(de).2) 检验从所有已标记(de)点k到其直接连接(de)未标记(de)点j(de)距离,并设置:dj=min[dj, dk+lkj]式中,lkj是从点k到j(de)直接连接距离.3) 选取下一个点.从所有未标记(de)结点中,选取dj 中最小(de)一个i:di=min[dj, 所有未标记(de)点j]点i就被选为最短路径中(de)一点,并设为已标记(de).4) 找到点i(de)前一点.从已标记(de)点中找到直接连接到点i(de)点j,作为前一点,设置:i=j5) 标记点i.如果,则算法完全推出,否则,记k=i,转到2) 再继续.直到所有点已标记.本文提出(de)Dijkstra算法实现GIS中(de)网络一般为各种道路、管网、管线等,这些网络在具有图理论中(de)基本特征(de)同时,更具有自己在实际中(de)一些特点.首先,在GIS中大多数网络都是有向带权图,如道路有单双向问题,电流、水流都有方向(如果是无向图也可归为有向图(de)特例),且不同(de)方向可能有不同(de)权值.更重要(de)一点是,根据最短路径算法(de)特性可以知道,顶点(de)出度是个重要指标,但是其入度在算法里则不必考虑.在具体实现时为了能实现高速优先,如果是高速,在标记两点间距离是按实际距离(de)1/2或1/3来标记,以实现高速优先考虑.在最后算总路程时把它乘上缩小(de)倍数.即保证总路程不变.本系统利用GPS定位系统实现对物流系统(de)相关车辆进行监控、调度、指挥、管理,以提高物流业务(de)效率,有效(de)控制物流成本,保障司机和货物(de)安全,提高管理水平和服务质量.系统(de)主要功能有:GPS定位,地图与路径显示,路径引导、报警求助,通讯与数据交换,其中路径引导是本系统(de)关键.路径引导(de)功能:从给定(de)多个车辆位置和多个目标点位置,计算车辆遍历所有目标点(de)代价最优值,并给出代价值和路径描述,在地图上进行路径显示.。
MapReduce求解物流配送单源最短路径研究
理 改 进 的 极 限) , 串行 算 法 本 身 的 改 进 和 组 合 已 不 能 适 应需求 。 计 算 机 科 学 领 域 出 现 了另 一 类 并 行 最 短 路 径 分 析算法 设计 , 目前 关 于 并 行 最 短 路 径 分 析 算 法 设 计 有 基 于 MP I的主 从 D i j k s t r a并 行 算 法 1 3 1 、 MP I + o p e n— MP 混 合 算 法[ 4 1 、 社 区分 析的最 短路 径 L C一 2 q并 行 算 法 [ 5 1 等。
Ni u L i a n g ,Z h a n g B a o y o u ( C o l l e g e o f E c o n o m i c s a n d Ma n a g e m e n t ,C h i n a J i l i a n g U n i v e r s i t y ,H a n g z h o u 3 1 0 0 1 8 ,C h i n a )
Co mp u t e r Te c hn o l o gy a n d I t s Ap p l i c a t i o n s
Ma p R e d u c e求解物 流配送单 源最短路径研究
钮 亮 ,张 宝 友
( 中 国 计 量 学 院 经 济 与 管 理 学 院,浙 江 杭 州 3 1 0 0 1 8 )
s t r u c t u r e , t h e a l g o i r t h m f l o w a n d t h e p s e u d o c o d e p r o g r a m o f Ma p R e d u c e b r e a d t h f i r s t a l g o r i t h m b a s e d o n c o l o r ma r k i n g me t h o d , a n d a p p l i e s t h e a l g o i r t h m t o t h e a c t u a l d i s t i r b u t i o n o f t h e e x p r e s s c o mp a n y t o v e r i f y i t s f e a s i b i l i t y .
物流配送中的路径规划算法研究与实践
物流配送中的路径规划算法研究与实践物流配送是现代物流管理中的重要环节,而路径规划算法则是保障物流配送高效运转的关键技术之一。
本文将重点探讨物流配送中的路径规划算法研究与实践,探索如何通过优化路径规划算法来提高物流配送的效率。
一、引言物流配送是将商品从生产地点运送到销售点或消费者手中的过程。
在物流运营中,合理的路径规划是保证物流配送效率的重要因素。
路径规划算法的研究与实践对于提高物流配送效率具有重要意义。
二、传统路径规划算法1. 最短路径算法在物流配送中,最短路径算法是最常用的路径规划算法之一。
最短路径算法可以通过计算路径上各个节点之间的距离或时间来确定最佳路径。
常用的最短路径算法包括迪杰斯特拉算法和弗洛伊德算法。
这些算法能够在有向图中找到从出发点到目的地的最短路径。
2. 遗传算法遗传算法是一种模拟达尔文进化论的优化算法。
在物流配送中,可以使用遗传算法来解决多个车辆的路径规划问题。
遗传算法通过不断迭代的方式,将每个个体(代表一个路径)进行遗传变异和选择,逐步优化路径方案。
三、改进的路径规划算法1. 蚁群算法蚁群算法是一种基于蚂蚁觅食行为的启发式算法。
在物流配送中,蚁群算法可以模拟蚂蚁在路径选择中释放信息素的行为,通过优化信息素的分布来确定最佳路径。
蚁群算法能够快速找到全局最优解,并且对于复杂的路径规划问题有很好的鲁棒性。
2. 粒子群算法粒子群算法是一种模拟鸟群寻找食物的行为的优化算法。
在物流配送中,粒子群算法可以模拟粒子在搜索空间中的位置和速度变化,通过合作和信息共享来搜索最优路径。
粒子群算法具有全局搜索能力强、计算速度快的优点,适用于大规模物流配送网络的路径规划问题。
四、实践案例1. 路径规划算法在城市物流配送中的应用在城市物流配送中,路径规划算法可以优化配送路径,减少运输时间和成本。
例如,许多快递公司利用路径规划算法确定最佳的配送路线,提高快递员的工作效率,并减少运输成本。
2. 路径规划算法在冷链物流中的应用冷链物流对温度要求严格,传统的路径规划算法往往无法满足冷链物流的要求。
基于Spark的蚁群算法在物流配送路径优化问题中的应用研究
1 背景介绍
据发改委数据显示,2016 年社会物流总费用包含运输费 用、保管费用、管理费用,共达 11.1 万亿元,比上年增长 2.9%, 呈逐年增长趋势,该费用占 GDP 的 14.9% 左右,而在发达 国家这个比例为 9% 左右 [1]。如何降低物流成本、提高时效 是物流行业面临的主要问题,合理规划物流配送路径是解决 该问题的一种方式。物流配送路由规划问题其实就是一个旅 行商问题(TSP),就是求解经过每个旅行顶点只有一次但 路径总长度最短的封闭回路。当然,物流配送路由规划不仅 需考虑最短的地理位置,还需要考虑配送点的现有状况、实 际的道路线路和用户的要求,需要在这些约束条件之间进行 权衡,最终选择最优的物流路径。可见,物流配送路由规划 问题是 TSP 的延伸。基于蚁群算法的原理,国内外许多学者
提出解决 TSP 问题的方法 [2-5],但在规模较大的 TSP 问题中, 处理数据量较多,处理效率低。究其原因是蚁群算法中存在 迭代过程,求解问题规模越大,迭代次数就越多,处理效率 也越低。随着大数据分布式计算的发展,为充分利用蚁群算 法内在的并行性,有学者提出了基于 MapReduce 编程模式的 并行蚁群算法 , [6-7] 极大提高了蚁群算法在求解大规模 TSP 问题中搜索最短路径的效率,但 MapReduce 计算模型存在表 达能力有限、磁盘 I/O 开销大、延迟过高的缺陷,无法满足 实时、快速计算的需求 [8]。而 Spark 借鉴 Hadoop MapReduce 优点,很好地解决了 MapReduce 所面临的问题。Spark 是在 MapReduce 的基础上发展起来的,与 MapReduce 计算模式 相同,但不只包含 Map 和 Reduce 操作,还提供更多的数据 集操作,编程模型比 MapReduce 更灵活;Spark 提供了内存
基于MapReduce+内容推荐的高校校园快递配送系统的设计与实现
基于MapReduce+内容推荐的高校校园快递配送系统的设计与实现张敏,郭卫江,李川,施羽(内江师范学院计算机科学学院四川内江641199)【摘要】基于MapReduce+内容的推荐算法是对传统内容推荐的延伸与扩展,利用MapReduce并行编程完成用户行为数据与待推荐对象数据的清洗与统计,形成对应的用户偏好属性集与待推荐对象属性集,然后利用传统基于内容推荐算法来计算出相似性,并筛选出最佳匹配对象,完成推荐.【关镀词】内容推荐;MapReduce;配送;物流【中图分类号】TP39【文献标识码】A【文章编号】1009-5624(2019)06-0162-041引言随着电子商务平台的逐渐发展,网购已经成为高校学生生活重要组成部分,高校校园已经成为现代物流快递的重要配送集散地,但由于物流配送不属于高校事业范畴,大多数高校为了避免风险,不参与校园快递配送的运营,所以校园快递配送主要釆用由集中自取、门对门配送两种方式。
集中自取模式,是最常见的配送模式,大多在校园的集中区域划定范围,各个快递公司将物品送达该区域然后师生根据短信自行取件,该模式由于学生的时间零散,无法与配送员的匹配一致,导致部分快件不能及时领取,且取货时间相对固定无法满足所有用户的需求。
门对门配送方式则由配送员将物品由集散地派送到用户楼下,这种模式较上一种模式,减少用户参与环节。
两种模式中配送员派送物品的路线、时间往往都是根据个人经验进行操作。
配送员一般会在出站时通知用户取件,用户收到信息后开始参与配送过程,这一过程会受到用户的路程以及生活习惯不同造成不必要的时间成本浪费。
因而,分析派送中参与者的时间行为数据,并且根据结果为用户提供个性化的时间通知提醒,是物流最后一公里配送环节中值得注意与研究的课题。
当前使用推荐算法来解决用户个性化服务是主流趋势,其中基于内容的推荐算法被广泛采用来构建推荐系统,其核心思想是根据用户选择的内容对象,为其推荐具有最高相似度的对象。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MapReduce求解物流配送单源最短路径研究摘要: 针对物流配送路线优化,提出了将配送路线问题分解成若干可并行操作的子问题的云计算模式。
详细论述了基于标色法的MapReduce广度优先算法并行化模型、节点数据结构、算法流程和伪代码程序,并通过将该算法应用于快递公司的实际配送,验证了该算法的可行性。
关键词: 物流配送; MapReduce;并行计算;最短路径随着电子商务的普及,人们网上购物的习惯逐渐形成。
截止2012年11月30日,阿里巴巴集团旗下淘宝和天猫2012年总交易额已经突破一万亿。
综合淘宝和天猫的交易数据来看,以快递员为主体的中国物流配送业对电子商务发展的促进起到了巨大作用。
同时传统邮政担负的包裹配送业务比重也逐渐地倾斜于第三方物流配送公司。
目前我国物流配送运输成本占整个物流成本的35%~50%左右[1]。
由于网购物品用户分布在城市的不同地方,为了控制配送运输成本,改善配送秩序,需要优化配送路线。
优化配送路线的求解有串行算法和并行算法。
串行算法主要表现在基于算法本身以及其优化组合的方法,例如CLARK G和WRIGHT J的节约算法、GILLETT B E和MILLER L R的扫描算法、Christofides等人的k度中心树和相关算法、Gendrean的禁忌搜索方法、LAWRENCE J 的遗传算法、Dijkstra算法、Nordbeck提出的椭圆限制搜索区域改进算法[2]。
随着计算数据的海量化以及摩尔定律的失效(晶体管电路已经接近了其物理改进的极限),串行算法本身的改进和组合已不能适应需求。
计算机科学领域出现了另一类并行最短路径分析算法设计,目前关于并行最短路径分析算法设计有基于MPI的主从Dijkstra并行算法[3]、MPI+open-MP混合算法[4]、社区分析的最短路径LC-2q并行算法[5]等。
本文针对物流及时配送和成本控制需求,提出基于标色法的MapReduce广度优先算法并行化模型,并应用于配送线路优化问题。
由于MapReduce本身封装了数据分割、负载均衡、容错处理等细节,用户只需要将实际应用问题分解成若干可并行操作的子问题,有效降低了求解难度,为解决物流配送运输路径优化问题提供了技术支持。
1 MapReduce算法描述信息技术和网络技术的发展为云计算的产生提供了条件。
MapReduce并行编程模型是云计算的核心技术之一。
MapReduce是Google 实验室提出的一个分布式并行编程模型或框架, 主要用来处理和产生海量数据的并行编程模式,2004 年DEAN J和GHEMAWAT S第一次发表了这一新型分布式并行编程模型[6]。
用户不必关注MapReduce 如何进行数据分割、负载均衡、容错处理等细节,只需要将实际应用问题分解成若干可并行操作的子问题,这种分解思路遵守主从架构模型。
Mapreduce框架的主要程序分为Master、Map和Reduce。
在Hadoop 中,MapReduce由一个主节点(Jobtracker,属于Master)和从节点(Tasktracker,属于Map和Reduce)组成[7]。
1.1 基于标色法的MapReduce广度优先算法模型给定一个带权有向图,用G=(N,E,W)模型来表示,其中N={ni∣i=1,2,...,m}为完全图的点的集合;E={e(ni,nj)∣i≠j, ni,nj∈N}为弧段集;W={w(ni,nj)∣i≠j,ni,nj∈N}为权值集。
一般向图的权值表示节点与节点之间的几何长度,记为w(ni,nj)=dij,dij表示节点ni到节点nj的距离。
最短路径计算就是计算从起始点ni到终止点nj的最短几何长度之和为最小。
在有向图起始点和终止点的最短路径计算中,MapReduce采用的是广度优先算法。
MapReduce计算最短路径用邻接表来表示图,在邻接表中每一行数据构成Map和Reduce的一个数据内容。
Map和Reduce的(key,value)中key为N,value值为与这个节点邻接的所有节点的 AdjacentList。
在用标色法求解最短路径时,AdjacentList节点的信息包括源点到顶点的距离distance(除到本身的距离为0外,其余初始值皆为无穷大);节点的颜色color(其值可分别取0、1、2,0表示未处理的顶点,1表示等待处理的顶点,2表示已处理的顶点,源点的初始值为1,其余顶点皆为0);被访问顶点和边的权值记为N和W。
顶点的数据结构如表1所示。
1.2 MapReduce求解步骤 (1)Master对输入文件按行(每行代表图中的一个顶点)进行自动切分,并将数据作为输入分发到每个Map任务(keyin,valuein),即输入[(ID,<Distance;color;pnodes and weight>)]; (2)接收(keyin,valuein)对,当valuein中的color的值为1时,则处理当前顶点,产生临时的{(keyout,valueout)│out=1...k}集; (3)MapReduce对Map执行过程输出的临时中间结果进行分组(Shuffle/sort),将相同的key值即ID号合并成同一组(key,list(valuei)│i=1...m),并将其分发给空闲的Reduce;(4)Reduce接收(key,list(valuei)),对相同ID的value进行合并,找到当前的最短路径; (5)如果每次Reduce后,结果收敛,则停止计算;如果未收敛,则继续发给下一轮的Map过程,多次迭代计算直到color值全部为2,得到最终的最短路径,算法结束。
MapReduce算法流程。
1.3 MapReduce算法伪代码(1)MapReduce的第一次迭代伪代码,Map部分为:Map:<k1,v1> → list(<k2,v2>)其中k1为节点的ID;v1为该节点的距离、边、边的权值、颜色;每一个输入的<k1,v1>会输出一批<k2,v2>,它们是计算的中间结果。
Begin If( color(k1) = 1) //如果k1的还需处理,即k1的颜色为灰色 { for ki (<k1,ki>in k1.edges) //对所有k1指向的节点, 只处理所有标记为1的节点 If ( distance(k1) + weight(k1 ,ki) <distance(ki)) { Set distance(distance(ki)) = distance(k1) + weight(k1,ki);Set color(ki) = 1; emit (ki, v1) //将该记录加入到键值对中,将标记为1 的节点所关联的节点加入中间结果。
} Set color(k1) = 2;//标记为1的节点被变更为2,表示处理完毕 } emit (k1, v1) End (2)Mapreduce的第一次迭代伪代码,Reduce部分 Reduce <k2,list(v2)> →<k3,v3> //<k2,list(v2)>输入的中间结果,其中list(v2)表示一批属于同一个K2的value。
<k3,v3>为输出结果 Begin Set color(k2) =0;Set distance(k2) = ∞; vi∈ list(v2); If( vi.color > k2.color) //按照节点对计算中间结果进行合并 { Set color(k2) = vi.color; } If{vi.distance < distance(k2)) //如果中间结果比原有结果小,将节点标记为1 { Set distance(k2) = vi.distance; If(vi.color = 1),Set color(k2)= 1; } If vi.edges != null, Set Edges(k2) = vi.edges; } emit (k2, vi.)End2 案例分析 2.1 基本情况韵达快递浙江杭州西湖区文一路公司是民营韵达快运的子公司,为客户提供快递、物流及电子商务等一系列门到门服务。
企业的配送范围为文一路、文二路、教工路及学院路构成的矩形区域,该区域面积大约20 km2的范围。
随着第三方物流公司的增多,物流配送竞争越来越激烈。
为了压缩成本,按照配送点情况优化线路是节约成本的途径之一,优化后的单源配送线路线可以将途经的配送点一并发送,形成一车多配的节约模式。
2.2 问题提出及求解公司某次接到为4个区域(西湖科技大厦、节能工业园、高新大厦及华门公寓)配送货物的任务,配送员决定分头配送,而如何组织好路线使得路程最短就可以归结为单源最短路径问题。
为了计算方便,设置配送中心点为n1,被配送的4个地方分别设置西湖科技大厦为n2,节能工业园为n3,高新大厦为n4,华门公寓为n5。
4个区域之间及其与配送中心的几何路线长度取整数(km)。
有向图见图2(a),其中几何路线长度d1(n1,n2)=10,d2(n1,n4)=5,d3(n2,n3)=1,d4(n2,n4)= 2,d5(n3,n5)=4,d6(n4,n2)=3,d7(n4,n3)=9,d8(n5,n1)=7,d9(n5,n3)=6。
从配送中心n1出发选取怎样的路线可以满足到达n2、n3、n4、n5的长度是最短的。
采用标色法的MapReduce广度优先算法计算,依照伪代码的计算逻辑计算出源点到其他各点的最短路径。
通过4次迭代顶点到各点的最短路径见图2(f),其中加粗的圆圈表示被访问过的顶点,color值为2,圈内的数值为其与n1的最短路径长度;color值为0,虚线圈为未访问的顶点,圈内值为∞;color值为1,虚线圈为待访问的顶点,圈内值为标注值。
MapReduce第一次迭代验算数据如表2所示,其余几次迭代过程格式与此类似。
如果从配送点n1到节能工业园n3进行配送,配送的最优路线就是配送点n1→高新大厦n4→西湖科技大厦n2→节能工业园n3。
优化后的长度为n1→n4→n2→n3=9。