基于Hadoop环境中MapReduce智能水滴算法的智能物流运输系统设计
摘要
设计一个能够有效向各个平价商店配送货物的智慧系统,是智慧城市建设中的主要目标之一。本文将智慧城市环境视为一个分布式环境,用于在城市的不同区域之间运输货物。因此,广泛使用的智能水滴算法在Hadoop环境中以MapReduce模型实现,以计算最短路径,实现货物的快速配送。设计了一个前端系统用于执行州际和州内物品的运输。仿真中采用了包含50、100、150⋯⋯500个城市的距离矩阵。实验结果表明,在MapReduce模型中实现的智能水滴算法能够以最短时间将物资送达正确的目的地,实现了预期目标。所提出的MapReduce智能水滴算法的性能与其他常用算法(如贝尔曼‐福特算法、索鲁普算法、戈博算法和迪杰斯特拉算法)进行了比较。结果表明,该算法在任意源城市和目的城市之间能够提供可靠的最短路径,且所需的CPU时间少于其他算法。
关键词 :智慧城市;运输系统;智能水滴算法;MapReduce;Hadoop环境。
1 引言
智慧城市(SC)发展的理念是通过信息与通信技术(ICT)提升日常服务的效率,从而实现高质量生活,构建更优质的服务质量和性能,使市民更加积极高效。ICT使得城市官员能够直接与社会协作,并利用实时传感器监控城市基础设施,了解城市中发生的状况。智慧城市的使命在于增强市民与政府之间城市服务的互动性,降低资源消耗成本,并促进更高质量的生活。智慧城市的愿景是改善城市管理、城市工作流程,并能够应对实时挑战。
2014年9月,印度总理纳伦德拉·莫迪宣布在城市发展部下建设印度100个最智慧的城市。目标是与印度各邦政府合作,改造印度现有的城市和城镇。在发展印度智慧城市的五个主要要素中,由印度城市发展部大力推广的关键要素之一是为公众实施健全的物流与运输系统。物流是调度、实施和控制货物与服务从起始点到消费点以较低成本进行有效高效流动的过程,以满足客户需求。
物流可以定义为在正确的时间将正确的物品送到正确的地点。物流和运输由公共部门和私营部门共同承担。印度中央和地方政府共同负责监管向公众的物流运输。中央政府负责粮食的采购、储存、运输和大宗分配,而各邦政府则负责通过平价商店进行分发。
任何物流公司的目标都是通过降低运营成本来满足客户,并提升国家的全球经济。在日常生活中,物流公司面临的最重要挑战因素是在货物从源点到交付点的转运过程中的安全性和可靠性。印度是全球第二大公路网络国家。印度各地的不同州和城市通过公路相互连接。但在印度国内货物运输中仍存在一些尚未被人们发现的未开发路径。识别这些城市之间的隐蔽连通路径将有助于提前到达目的地,并降低运输成本。全球定位系统(GPS)是一种天基导航系统,它利用卫星通信提供从任意源点到目的地的可能路径。通常情况下,从任意源点到目的地之间存在许多隐蔽或未探索的路径,从这些可能路径中找到最短路径是一项具有挑战性的任务。本工作的主要目标是设计一种智能物流运输系统(SLTS),通过最短路径将货物运送到印度各地的平价商店。
通常,许多最短路径算法被用来查找从任意源到目的地的最短路径。本文的目标是为州内(intrastate)的平价商店列表以及两州之间(interstate)寻找最短路径。在本文中,作者采用了一种生物启发优化算法,即智能水滴(IWD)算法,用于查找城市内部和城市之间运输配给物资时的最短路径,以确保无延迟传输。该IWD算法根据河流中水滴流动的自然特性来选择最短路径。为了找到最短路径,将IWD的属性(如速度、土壤)与所提出应用中的速度和距离进行匹配。
使用IWD算法寻找最优路径的这种方法在各种实时应用中更为成功。因此,作者对该算法印象深刻,并选择将其应用于该系统。城市之间的距离数据来自谷歌地图,并存储在Hadoop分布式文件系统中。许多对比算法,如迪杰斯特拉算法、索鲁普算法、贝尔曼‐福特算法、戈博算法,均通过MapReduce编程模型,针对不同数量的城市进行执行。一旦给定源点,IWD算法便会自动计算从源点到目的地的所有最短路径。这类计算对于印度民用物资供应公司(ICSC)在印度境内以更少的时间和更少的燃料运输食品物资非常有用。
在印度,智慧城市(SC)发展正日益兴起。在智慧城市发展的五个关键要素中,强调公共交通系统的强大运输系统是促使作者提出在印度建立智能物流运输系统的理念,以连接各个平价商店进行货物配送的要素。作者提出的一种构想(原型模型)是利用最短路径算法,寻找在全国范围内分配配给食品物资的最短路径。本研究中开发的IWD算法专注于将货物运送到各个目的地。因此,这种公共分布式运输应用将更有助于印度中央采购公司(ICSC)以更少的燃料在合适的时间运输货物。因此,作者建议采用此类强大的运输系统,以促进印度的智慧城市(SC)发展。
最短路径问题(SPP)的解决方案是寻找图中两个顶点之间的路径,使得其构成边的权重之和最小化。本研究旨在找到道路地图上两个交叉路口之间的最短路径,该地图可表示为有向图或无向图。从数学上讲,SPP定义为 $ p = (v_1, v_2, …, v_n) \in V \times V \times … \times V $,其中 $ v_i $ 与 $ v_{i+1} $ 相邻,$ i \in N $,这样的路径P称为一条长度为n–1的路径,从 $ v_1 $ 到 $ v_n $。从地理上看,通过路径优化算法,在将地理位置视为图的情况下实现最短距离,其中加权边表示道路路段,顶点表示位置,从而在最短时间内达到最短距离。
处理最短路径有多种方式,即:单源最短路径问题——计算从给定源顶点到图中所有其他顶点的最短路径。单目标最短路径问题——探索从所有顶点到图中单一目标顶点的最短路径,该问题可通过反转图中的边转化为单源问题。所有点对最短路径问题——找出给定图中每一对顶点之间的最短路径。最短路径算法被应用于实时应用中,例如网络地图和谷歌地图搜索。在计算机网络和通信领域,该最短路径问题被称为最小延迟问题。该最短路径问题广泛应用于机器人技术和交通运输等领域。
在相关文献中,福特(1956)提出了一种用于解决有向图最短路径问题的方法,其时间复杂度为O(V²EL)。尽管贝尔曼‐福特算法在计算最短路径时能够得到最小成本,但它未考虑权重因素。此外,由于更新信息从RIP路由器传递到下一节点的速度较慢,贝尔曼‐福特算法在性能上存在不足。同时,该算法对网络拓扑变化的响应较慢。加博(1983)推荐了一种使用有向图解决最短路径问题的算法,其时间复杂度为O(ElogEIV L)。索鲁普(2004)设计了一种利用有向图求解最短路径问题的算法,其时间复杂度为O(E + VloglogV)。该算法节省了构造未访问节点的时间和成本,并提高了最短路径计算的处理时间。
莱佐雷克等人(1957)开发了多种算法,即使用二叉堆和斐波那契堆的迪杰斯特拉算法,用于求解有向图中的最短路径问题,其时间复杂度分别为O(V²)、O((E + V) log V) 和 O(E + VlogV)。元启发式方法(巴格洛伊等人,2013年)试图解决诸如计算类的问题,例如在没有令人满意或适用的数学替代方法的ND问题中,通过高效地混合使用遗传算法和蚁群算法等启发式搜索技术,旨在为问题求解过程引入一定程度的智能。通常情况下,最短路径问题是在弧的权重被精确指定的前提下进行求解的,即在精确环境中求解(Ebrahimnejad 等,2015)。然而,在许多情况下,决策者对属于最短路径问题的系数并没有明确的信息。
在这些情况下,使用模糊数来表述问题非常合适,模糊最短路径问题也因此自然产生。各种信息与通信技术被用于提升交通网络的性能。“智能车辆”和“智能交通”(Mirzabeiki,2013年)等术语由产业界和学术研究提出,用于指代未来在物流、运输和物料搬运操作管理中所使用的先进信息与通信技术。
通常,随机最短路径问题(stochastic SPPs)通过弧概率的期望值来处理(Olya,2014),但在所提出的方法中,利用分布,将观测到的历史数据作为弧长,使用综合值作为最短路径长度。Wei 和 Tanaka(2014)改进的索鲁普算法在实践中表现出优于原始索鲁普算法和基于斐波那契的Dijkstra算法的结果。如今,发展具有高质量生活水平的智慧城市(SC)正成为一个亟需解决的重要挑战(Agarana 等,2016)。
主要研究发现,为了有效管理物流障碍(Sternad 等,2016),关键在于通过缩短物流提前期并延长客户订单周期来缩小交货周期差距,这一更有效的理念已随着时间的推移而成熟,即通过需求预测和识别影响总订单时间的物流障碍。
供应链管理理念经过一段时间的发展已趋于成熟,许多研究人员(Singh 等,2014)提出了见解,以使供应链管理系统更加稳健灵活,并适应各类组织的需求。研究表明,有效管理供应链对于提升企业盈利能力(Wang 等,2014)至关重要。整体成功往往是快速响应客户需求以及保持良好企业声誉的结果。当前的智能交通系统收集了大量关于运输系统运行的数据,并以不同形式将数据传输给交通网络中的主管部门承运商(Mirzabeiki,2013)。
本文的其余部分组织如下。在第2节中,介绍了所提出的物流运输系统在供应链发展中的架构;第3节通过图表说明了Hadoop框架及其各种生态系统的概述;第4节提供了IWD算法在Hadoop框架中的实现流程;第5节给出了实验设置和仿真结果;最后,第6节讨论了结论以及未来扩展的方向。
2 智能物流运输系统
2.1 数据准备
所提出的物流运输系统的数据准备需要一张地图,如图所示,覆盖印度的主要城市、城镇和村庄。在Hadoop环境中通过谷歌地图读取所提出系统的地图。地图加载完成后,用户需选择运输区域(ROT),即货物运输所需覆盖的区域。将ROT内包含的城市、城镇和村庄标记为节点,并根据地图中的连接关系生成图。然后为每个节点之间的连接赋予表示地点间距离的权重。由该图生成邻接矩阵,并将其作为距离矩阵存储在分布式文件系统中。
| 0 | 8 | 6 | 7 | 4 | 3 |
| 8 | 0 | 2 | 9 | 1 | 8 |
| 6 | 2 | 0 | 9 | 4 | 5 |
| 7 | 9 | 9 | 0 | 2 | 1 |
| 4 | 1 | 4 | 2 | 0 | 6 |
| 3 | 8 | 5 | 1 | 6 | 0 |
2.2 MapReduce IWD算法
当使用IWD算法解决问题时,第一步是用完全连通加权图表示该问题,即G(V,E),其中顶点用V={Vi | i = 1,....., N}和用E=((i,j)|(i,j)∈ V × V, i ≠ j.i,j = 1,....., N}表示的弧。其中,N 是决策变量的数量。决策变量的可行排列由包含顶点和弧的有限组件集表示。∏={ak | k = 1, …, D},其中 D < N 是解的维度,ak ∈ A,这里 A 是包含顶点和边的所有可能组件的集合。
第一步是用图的节点表示城市,图中的链接表示连接任意两个城市的路径。每条路径都有一定的土壤量。IWD可以通过这些链接在城市之间移动,并改变其土壤量。因此,图中的每个节点都包含各城市基于二维坐标的物理位置,而图的链接则表示城市之间的路径。为了克服任何IWD不会访问同一城市两次的限制,我们为IWD设置了一个已访问城市列表,该列表包含IWD迄今为止已访问过的所有城市。因此,IWD对下一城市的选择是从尚未进入已访问列表的城市中选择一个。接下来,我们提出用于SFP‐STS的IWD算法。Shan‐Hosseini (2007)提出的IWD算法如下所示。
步骤1 参数初始化
- 概率(i,j)是智能水滴从节点i移动到节点j的概率。
- 时间(i,j)是智能水滴从节点i移动到节点j所花费的时间。
- ∆土壤(i,j,iwd)是智能水滴在节点i和节点j之间链路上侵蚀的土壤量。
- 速度(i,j,iwd)是智能水滴从节点i移动到节点j时的速度。
- 速度更新参数为 av, bv, cv。此处,针对给定问题取值为:av=1, bv=0.1, cv=1。这些是用户定义的配置参数,其取值根据问题需求确定,即适用于参数更新计算(土壤和速度)。
- 土壤更新参数为 as, bs, cs。此处,针对给定问题取值为:as=1, bs=0.1, cs=1。
- 局部土壤更新参数为 ρ。此处 ρ=0.1 被选择以获得更好的实验结果。ρ的取值范围为0到1,具体取决于链路(节点)上的土壤量。
- 图中每条边上的初始土壤通过适应度函数和配置参数计算得出。
- 每个IWD的初始速度设置为500。
- 每个IWD都有一个已访问路径列表 Vc(IWD),初始为空,即 Vc(IWD) = {}。
步骤2 参数值更新
2.1 当(图非空)
2.2 概率计算
对于在节点i处的智能水滴,下一个节点j(不在已访问节点列表 Vc(IWD) 中)基于概率 pi_IWD(j) 进行选择。智能水滴从当前节点i移动到节点j的概率使用以下公式计算:
$$
\text{概率}(i,j) = \frac{\text{土壤}(i,j)}{\sum_{k \neq vc} \text{土壤}(i,k)}
$$
其中,土壤(i,j) 是指两个节点之间的土壤,Σk ≠ vc 土壤(i,k) 表示从当前节点i可遍历的所有路径的土壤总和。(原始算法中,IWD 会移动到土壤较少的位置)。
2.3 时间计算
在计算概率后,IWD选择下一个要移动的节点。选择相应节点后,首先计算从节点i移动到节点j所需的时间,计算公式为:
$$
\text{时间}(i,j) = \frac{\text{节点}(i) - \text{节点}(j)}{\text{IWD之前的速度}}
$$
其中节点(i) – 节点(j)对应节点之间的距离,以及速度(iwd)是智能水滴的初始速度。
2.4 IWD的土壤计算
然后计算IWD携带的土壤及其速度(i,j)。利用时间我们计算得出,IWD携带的土壤为:
$$
\Delta \text{土壤}(i,j,\text{iwd}) = \frac{a_s}{b_s + c_s \times \text{时间}(i,j)}
$$
其中,bs, cs 是如前所述的正参数。
2.5 智能水滴的速度的计算
智能水滴从节点i移动到节点j后的速度计算如下:
$$
\text{vel}(i,j,\text{iwd}) = \text{vel}(\text{iwd}) + \frac{a_v}{b_v + c_v \times \text{土壤}(i,j)}
$$
其中 soil(i,j) 是 IWD 遍历所需路径之前该路径上的土壤。av,bv、cv 是如前所述的正参数,而 vel(IWD) 是 IWD 之前的智能水滴的速度。
2.6 链接的土壤更新
由于IWD携带了一定量的土壤,因此路径上的土壤量减少。因此,链路上的土壤被更新为:
$$
\text{土壤}(i,j) = (1 - \rho) \times \text{soil}(i,j) - \rho \times \Delta \text{土壤}(i,j,\text{iwd})
$$
其中ρ为正参数,∆土壤(i,j,iwd)为IWD携带的土壤从节点i和j移动。
2.7 现在,当前节点被更新,并重复执行步骤2.2中的相同过程直到到达最后一个节点,或找到一条完整路径。
2.8 水滴完成一条可能的路径后,已访问路径列表将被更新。IWD再次从新一轮迭代开始,所有参数都被重新初始化,再次从步骤1开始。如果图变为空,则意味着所有路径都已被遍历,我们必须退出循环,否则将执行从2.1开始的所有步骤。
3 Hadoop框架概述
Apache Hadoop 是一个开源软件框架,用于以分布式方式存储数据,并通过在集群上进行分布式处理来处理大型数据集。我们提出的智能物流运输系统(SLTS)可用于在印度全境以分布式方式将货物从源地运送到目的地。货物运输车辆产生的数据量也非常庞大,且以分布式方式存在。为了更高效地在不同集群之间存储和处理大规模的分布式数据,建议使用Hadoop分布式框架。Hadoop框架利用使用Java编程的MapReduce编程模型为所提出的智能物流运输系统提供解决方案。
3.1 MapReduce编程模型
MapReduce 是一种执行两种操作(即映射和归约)的程序模型,如图4所示。映射器部分通过将各个元素分解为元组(键/值)来工作。归约器部分接收来自映射器的输出,并将其合并为数据元组以显示信息。在MapReduce过程中,Hadoop 将任务发送到适当的服务器集群进行处理,并将数据存储在Cloudera Hadoop分布式文件系统(HDFS)中。
3.2 Hadoop框架和生态系统
Hadoop框架使用Java编程语言编写,分为六大类型。这是一个通用处理框架,使用MapReduce、Spark等不同编程语言处理底层API。借助 Pig 等编程语言处理高级 API 的抽象框架,以及支持 Hive、Impala 等不同语言的 SQL 框架,用于实现查询数据处理。
通过不同语言处理图的图处理框架,即Giraph、GraphLab等。在Hadoop上使用MLlib、Oryx进行机器学习算法分析的数据分析机器学习框架等。在 Hadoop 生态系统中用于处理流数据的实时/流式处理框架,可将延迟从数百毫秒降低到几秒。Hadoop 生态系统的组件如图5所示,其详细信息如下所述。
Sqoop 在 Hadoop 和关系型数据库服务器之间传输数据。ZooKeeper 以集中式方式存储配置信息、组服务和命名服务。Pig 借助高级语言对大规模数据集进行数据分析。Flume 以分布式方式分析流数据和日志数据。Hive 用作分布式存储,并通过结构化查询语言实现数据检索。Mahout 使用 Scala、Spark 和 Flink 构建算法。HBase 是一个分布式且可扩展的数据库,用于存储大表。Yarn 将作业调度和资源管理的功能拆分为独立守护进程。Hadoop 分布式文件系统在商用硬件上运行。
为了开发智能物流运输系统,需要创新地处理由谷歌地图生成的邻接矩阵(距离矩阵)形式的大数据。在这方面,Hadoop框架及其生态系统结合 MapReduce编程模型,将成为以分布式方式处理数据的有效工具。因此,作者推荐该系统用于分布式实现IWD算法,以在全国多个区域范围内寻找最短路径,实现高效物流运输。
4 MapReduce IWD 算法的实现
由 Apache 基金会提供的 HDFS 用于以分布式方式存储谷歌地图的距离矩阵。安装 Cloudera 时使用了 Oracle 虚拟机和 Ubuntu 13.0。根据作业的处理需求,将内存大小分配给虚拟机。以下是用于在 MapReduce框架中执行IWD算法的步骤。
- 加载不同大小的距离矩阵“m × n”,例如(50 × 50)、(100 × 100)、(150 × 150)⋯⋯(500 × 500),并存储每个距离。
- 矩阵作为.csv文件。每个距离矩阵的Java类文件被创建为jar文件,并存储在HDFS中,如表1所示。
表1 HDFS中的数据存储
| File Type | 副本 | 块大小 | 权限 | 所有者 | 组 |
|---|---|---|---|---|---|
| 50.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 50.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 100.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 100.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 150.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 150.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 200.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 200.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 250.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 250.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 300.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 350.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 400.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 450.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 500.csv | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
| 500.jar | 3 | 128兆字节 | 读-写-执行 | Cloudera | Cloudera |
- 每次距离矩阵执行时创建一个输出文件 50 (.txt),用于存储以下结果:
- 从源到目的地的路径
- 总距离
-
时间
-
执行从.csv文件接收输入的jar文件,并将结果显示在.txt文件中。
- 打开输出文件(.txt)以读取输出文件的结果(下面给出了50.txt)
- 源:金奈,目的地:塞勒姆(金奈 → 维卢普拉姆 → 廷迪瓦纳姆 → 塞勒姆)
- 总距离:347
- 时间:14毫秒
5 仿真结果
5.1 用户界面设计
在本节中,讨论了使用Java编程语言为所提出的智能物流运输系统设计的用户界面。应用程序开发包含三个表单,即
1. 用户登录表单
2. 城际
3. 市内运输
所开发的智能物流运输系统的表单详情在图6中进行了讨论。
与往常一样,我们的应用程序也提供了进入模块的功能,允许现有用户输入用户名和密码进行登录,而新用户则需要先注册,然后使用其用户名和密码登录。
图7给出了市内运输表单。该表单包含多种输入选项,如加载地图、运输方式选择、源城市、目的城市、距离计算和打印地图选项。在市内运输中,货物在所选州内进行运输。一旦用户填写完输入信息,SLTS应用程序将使用MapReduce IWD算法找到源城市与目的城市之间的最短路径。
图8给出了城际运输表单。该表单包含多种输入选项,如加载地图、运输方式选择、源城市、目的城市、距离计算和打印地图选项。在城际运输过程中,货物在两个所选州之间进行运输。一旦用户填写完输入信息,SLTS应用程序将使用 MapReduce IWD算法在两个州之间的源城市与目的城市之间找到最短路径。
5.2 结果
本节报告了所提出的智能物流运输系统中开发的MapReduce IWD算法的结果。表2和表3 给出了所开发的IWD算法在省内和省际运输中从任意源到任意目的地寻找最短路径的结果。
在表2中,ROT、源和目的地由用户选择。在寻找从金奈到哥印拜陀的最短路径的情况下,存在许多可能的路径,例如金奈 → 蒂鲁吉拉伯利 → 卡鲁尔 → 哥印拜陀,金奈 → 塞勒姆 → 埃罗德 → 哥印拜陀, 金奈 → 维卢普拉姆 → 塞勒姆 → 哥印拜陀, 金奈 → 维卢普拉姆 → 娴拉库鲁奇 → 塞勒姆 → 婆瓦尼 → 哥印拜陀, 金奈 → 维卢普拉姆 → 佩拉姆布拉 → 纳马卡尔 → 埃罗德 → 哥印拜陀。在所有可能的路径中,选择最短距离路径,并显示其MapReduce处理时间。
在表3中,ROT、源和目的地以及其他州由用户选择。在查找从金奈到班加罗尔的最短路径时,存在多条可能的路径,例如金奈 → 蒂鲁吉拉伯利 → 卡鲁尔 → 塞勒姆 → 班加罗尔,金奈 → 塞勒姆 → 达摩普里 → 班加罗尔,金奈 → 安布尔 → 克里希纳吉里 → 霍苏尔 → 班加罗尔。在所有可能的路径中,选择最短距离路径,并显示其MapReduce处理时间。
表2 MapReduce IWD(州内)性能
| ROT | 源city | 目的地 | Path | 距公里 | MapReduce 时间 MS |
|---|---|---|---|---|---|
| 泰米尔 Nadu | 金奈 | 哥印拜陀 | 金奈 → 维卢普拉姆- 塞勒姆 → 哥印拜陀 | 510 | 458 |
| 泰米尔 Nadu | 金奈 | 塞勒姆 | 金奈 → 维卢普拉姆 → 阿图尔 → 塞勒姆 | 346 | 276 |
| 泰米尔 Nadu | 金奈 | 霍苏尔 | 金奈 → 安布尔 → 克里希纳吉里 → 霍苏尔 | 313 | 252 |
| 泰米尔 Nadu | 金奈 | 卡鲁尔 | 金奈 → 维卢普拉姆 → 蒂鲁吉拉伯利 → 卡鲁尔 | 435 | 356 |
| 泰米尔 Nadu | 金奈 | 蒂鲁吉拉伯利 | 金奈 → 维卢普拉姆- 蒂鲁吉拉伯利 | 360 | 293 |
表3 MapReduce IWD算法(州际)性能
| ROT | 源city | 目的地city | Path | 距公里 | MapReduce 时间(毫秒) |
|---|---|---|---|---|---|
| 源状态:泰米尔纳德邦 目标状态:马哈拉施特拉邦 | 霍苏尔 | 塔那 | 霍苏尔 → 胡布利 → 科拉普尔 → 浦那 → 塔那 | 1,037 | 1,267 |
| 源状态:泰米尔纳德邦 目标状态:马哈拉施特拉邦 | 金奈 | 达达尔 | 金奈→班加罗尔 →科拉普尔→浦那→达达尔 | 1,348 | 1,305 |
| 源状态:泰米尔纳德邦 目标状态:喀拉拉邦 | 金奈 | 科拉姆 | 金奈 → 埃罗德 → 埃纳库拉姆 → 科拉姆 | 852 | 1,004 |
| 源状态:泰米尔纳德邦 目标状态:喀拉拉邦 | 金奈 | 阿勒皮 | 金奈 → 埃罗德 → 哥印拜陀 → 阿勒皮 | 867 | 1012 |
| 源状态:泰米尔纳德邦 目标状态:卡纳塔克邦 | 金奈 | 班加罗尔 | 金奈 → 安布尔 → 克里希纳吉里 → 霍苏尔 | 348 | 367 |
在表4中,使用基于时间复杂度公式O(V²)的IWD算法计算了不同城市之间的距离。在选择50个城市的情况下,顶点总数为50,边为1,225,长度假设为120。在执行 MapReduce过程期间,映射器花费的时间少于归约器,因为任务的声明部分分配给映射器,而任务的处理部分分配给归约器。图9显示了映射器、归约器以及所提出的智能物流运输系统消耗的总处理时间。
图中报告的时间是所提出的系统对相应城市矩阵进行完整执行的平均时间。在实验过程中,允许用户输入任意源和目的地以转移货物。观察发现,当用户选择的源城市和目的城市较近时,处理时间较短;另一方面,如果用户选择的城市较遥远,则显然消耗的时间更多。由此可知,开发的算法完全符合预期,运行良好。
实验是迭代进行的,每次迭代都记录消耗的CPU时间。图10显示了在不同迭代下不同城市所消耗的CPU时间。
表4 不同城市的距离计算
| 序号 | 城市数量 | 顶点 | 边 | 长度 | IWD算法 |
|---|---|---|---|---|---|
| 1 | 50 | 50 | 1,225 | 120 | 154.40 |
| 2 | 100 | 100 | 2,450 | 240 | 338.91 |
| 3 | 150 | 150 | 11,175 | 480 | 607.23 |
| 4 | 200 | 200 | 19,900 | 960 | 859.77 |
| 5 | 250 | 250 | 31,125 | 1,920 | 1,123.27 |
| 6 | 300 | 300 | 44,850 | 3,840 | 1,395.52 |
| 7 | 350 | 350 | 61,075 | 7,680 | 1,675.05 |
| 8 | 400 | 400 | 79,800 | 15,360 | 1,960.80 |
| 9 | 450 | 450 | 101,025 | 30,720 | 2,251.99 |
| 10 | 500 | 500 | 124,750 | 61,440 | 2,548.02 |
在图10中,y轴表示CPU处理时间,x轴表示迭代次数。从观察可知,当城市数量增加时,CPU处理时间也随之增加。
5.3 性能计算
将MapReduce IWD算法的性能与其它类似的最短路径算法(如贝尔曼‐福特算法、索鲁普算法、戈博算法和迪杰斯特拉算法)进行了比较。表5展示了通过选择有向图中的顶点、边和长度所分析的不同算法的时间复杂度。在所有算法中,IWD算法具有最小时间复杂度。
表5 不同最短路径算法的比较
| Exp. no. | 城市数量 | BF算法 | 索鲁普算法 | 戈博算法 | 迪杰斯特拉算法 | IWD算法 |
|---|---|---|---|---|---|---|
| 1 | 50 | 4,247.42 | 1,236.508 | 1,227.07 | 154.40 | 149.34 |
| 2 | 100 | 20,000.00 | 73,752.34 | 2,452.38 | 338.91 | 304.67 |
| 3 | 150 | 48,962.05 | 11,225.65 | 11,177.68 | 607.23 | 598.74 |
| 4 | 200 | 92,041.19 | 19,972.38 | 19,902.98 | 859.77 | 839.95 |
| 5 | 250 | 149,871.25 | 31,219.95 | 31,128.28 | 1,123.27 | 1,100.33 |
| 6 | 300 | 222,940.91 | 44,968.18 | 44,853.58 | 1,395.52 | 1,304.55 |
| 7 | 350 | 311,648.33 | 61,216.93 | 61,078.88 | 1,675.05 | 1,634.22 |
| 8 | 400 | 416,329.59 | 79,966.12 | 79,804.18 | 1,960.80 | 1,899.12 |
| 9 | 450 | 537,275.53 | 101,215.69 | 101,029.48 | 2,251.99 | 2,145.88 |
| 10 | 500 | 674,742.50 | 124,965.60 | 124,754.78 | 2,548.02 | 2,489.90 |
表5展示了通过选择有向图中的顶点、边和长度来分析的不同算法的时间复杂度。在所有算法中,IWD算法具有最小时间复杂度。图11显示了不同最短路径算法的时间复杂度对比图。该工作的目标是通过IWD算法将货物从源运输到目的地所需时间最短,如图11所示。
6 结论与未来改进
设计了一种用于计算智能物流运输系统(SLTS)最短路径的应用。该应用基于 Hadoop分布式框架实现MapReduce IWD算法。城市之间的距离数据来自谷歌地图,并存储在Hadoop分布式文件系统中。利用MapReduce IWD算法计算SLTS 的最短路径。一旦给定源节点,该算法会自动计算从该源节点出发的所有州际和州内最短路径。本文中,作者选用了仿生优化算法中的IWD算法,并在500个不同城市(州际和州内)进行了测试。本研究的局限性在于城市数量(500个),未来将把城市规模扩展至2,000个(州际和州内),并将IWD算法的性能与其他多种生物启发优化算法进行比较。未来还计划以分层方式实现IWD算法,包括区级、塔卢克级和平价商店级。此类计算对于印度中央采购公司(ICSC)在全国范围内以更少的时间和更少的燃料将食品运送到各个平价商店具有重要意义。

被折叠的 条评论
为什么被折叠?



