快递配送路径的优化研究与软件设计.docx
- 文档编号:26118590
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:9
- 大小:349.78KB
快递配送路径的优化研究与软件设计.docx
《快递配送路径的优化研究与软件设计.docx》由会员分享,可在线阅读,更多相关《快递配送路径的优化研究与软件设计.docx(9页珍藏版)》请在冰豆网上搜索。
快递配送路径的优化研究与软件设计
快递配送路径的优化研究与软件设计
1 引言
随着电商的大力发展,国内快递行业迎来了爆发式增长。
自2011年以来,全国快递行业进入了高速发展时期,业务量每年呈现出50%左右增速。
2017年,全国快递业务量为400.6亿件,同比增长28%,连续4年稳居世界第1。
仅以餐饮外卖为例,2017年中国在线餐饮外卖用户规模较2016年增长19.1%,正式突破3亿人,2018年预计将达到3.55亿人。
据统计,中国2018年快递员的总数量已突破300万人。
庞大的快递业务对于快递行业而言,既是机遇也是挑战。
根据美团点评的统计,2017年美团在餐饮外卖业务上每单骑手的成本约为7.89元,平均每单配送时间约为30min。
2017年双十一狂欢节的前一个月,中通、韵达2家快递公司受运输成本增加等因素的影响,先后对快递价格进行了提价]。
如何降低快递配送环节的运输成本,是快递业面临的一个现实且重要的问题。
近几年来,在全国各大城市穿梭于大街小巷的快递员既是一道新的景观,也是快递业迅猛发展的真实写照。
市民经常会看到这样的情景:
快递员一边骑车一边低头看手机。
究其原因,快递员看手机通常是为了选择下一个配送点,希望用最快的时间完成每单配送任务。
如何有效规划配送路径是降低配送成本的重要途径。
另一方面,如果能事先帮助快递员规划好配送路径,就可以减轻快递员的负担,让他们专注于驾车,避免因注意力不集中而导致的交通事故。
快递员配送路径的规划本质上是旅行商问题TSP(TravelingSalesmanProblem)。
TSP问题是19世纪数学家Kirkman和Hamilton提出的,该问题可以描述为:
一个旅行商要访问n座城市去销售他的货物,从某一个城市出发,要求访问每座城市一次且恰好一次,最后回到出发的城市,且访问的路径总长度最小。
与此类似,快递员从配送站出发,将商品送到每一单客户的地址,最后回到配送站。
显而易见,总长度最短的路径就是最佳的。
TSP是组合优化领域著名的NPHard问题,当城市数量较少时,可以通过枚举法找出总长度最短的路线,但随着城市数量的增长,求解空间呈指数级增长。
目前对于TSP的研究主要是集中于启发式算法。
Skiscim等人将模拟退火算法应用于不同规模网络的旅行商问题的情形,结果表明该算法在求解质量和计算时间上都较优,算法对停止规则和参数的选择较为敏感。
Morikawa等人在不使用交叉的情况下,仅通过突变改进了遗传算法,并利用该算法解决TSP问题,结果显示该算法收敛速度快、解的质量优良。
Dorigo等人提出利用蚁群算法来解决TSP问题,人工蚂蚁通过路径上信息素的浓度指导自己的移动方向,以此找到最优的可行路线。
Hendtlass对比分析了粒子群优化算法和蚁群算法应用于TSP问题的情形,结果表明,粒子群算法的性能不及蚁群算法,但通过在粒子群算法中为每个粒子增加一个内存容量,可以将性能显著提高。
童行行等人应用改进后的基于参考点的最近插入法解决旅行商问题,研究结果验证了该算法的有效性和高效性。
Sheng等人运用C-W节约算法(Clark-Wrightsavingalgorithm)优化了物流配送线路,缩短了运输距离,降低了物流成本。
刘杰将和声搜索算法应用在快递配送路径优化中,得出了快递配送路径优化方案,并与传统的遗传算法进行比较,分析了2算法在解决路径优化中的优缺点。
秦东各等人将改进后的2-opt算法和蚁群算法进行结合,利用2-opt算法对蚂蚁迭代的一半较短路径进行局部搜索,结果表明该算法提高了全局搜索能力。
高文强等人研究了以食品外卖配送为例的物流配送路径的优化问题,并采用改进的烟花算法对其求解,提高了配送效率,降低了配送成本。
综上所述,国内外学者对于TSP问题的研究主要集中于算法的改进,一些应用领域还没有形成普及化的工具软件。
目前国外的配送路径优化系统有美国ESRI公司的Arelogisties系统和IBM的VSPx系统等,国内有云服科技公司开发的物流快递配送系统等。
但是,这些软件系统都要付费使用,使用者需下载相应的系统,操作较为繁琐,难以普及。
面对越来越壮大的快递员队伍,如何让每一位配送员都能够自由、免费、便捷地获取路径规划服务,进而提高配送效率,是一个亟待解决的问题。
本文采用ShinyR技术,开发了基于Internet的快递配送路径优化软件DeliveryHelper。
ShinyR技术是近年来发展起来的网页应用程序开发技术,利用Shiny包结合R语言就可以轻松实现动态交互的网页应用程序开发。
目前国内学者对Shiny的了解偏少,国外应用Shiny技术相对较多。
熊辉等人基于ShinyR技术对体检数据进行分析研究,建立了交互式模型并可视化分析结果,得到了直观的图形展示。
Wojciechowski等人研究了Shiny在药物模型仿真模拟上的应用,Shiny与R在模型可视化中的结合使得模拟种群变异成为可能,改变了药物模型仿真模拟的共享和交流方式。
Lakshmanan等人利用Shiny技术开发了名为SynRio的应用,通过SynRio可对蓝藻基因组进行查看和数据分析,并实现了交互式基因组可视化。
Mcmurdie等人利用Shiny开发了名为Shiny-phyloseq的应用程序,用于对微生物群落数据进行分析和研究,除了拥有探索参数和方法选择效果的动态界面外,Shiny-phyloseq还记录了用户会话的完整用户输入和后续图形结果,允许用户归档和共享。
Williams等人创建了一个Shiny应用程序,借助于美国国家篮球协会提供的图表和数据,利用应用程序演示来帮助学生学习置信区间。
DeliveryHelper采用C-W节约算法,配送点之间的路径信息通过高德地图API接口获得。
用户借助Web浏览器就可以进行配送路径的规划。
该软件有望为广大快递员提供极大的便利,并大大提高配送效率。
本文的第2节讲述了C-W节约算法,并用蒙特卡罗模拟对比了C-W节约算法和最近邻居算法、最近插入法和2-opt算法;第3节讲述了软件的技术框架与实现;最后是总结与展望。
2 算法与分析
Clarke和Wright在1964年提出的C-W节约算法是一种解决TSP问题的启发式算法,应用较为广泛,节约算法简单易行,优化效果佳且运行速度快[22-25]。
C-W节约算法的基本思想是基于3个点之间的关系。
假设有A、B、C 3个地点,从A点出发分别访问B、C点,最后返回A点,如图1所示有2种访问路线:
路线a:
从A点出发,访问B点后再返回A点,接着访问C点,最后返回A点,总路程为2d(AB)+2d(AC);路线b:
从A点出发,访问B点,接着访问C点,最后返回A点,总路程为d(AB)+d(BC)+d(CA)。
一般情况下,路线b比路线a更短,并且节约的里程数为d(AB)+d(AC)-d(BC)。
C-W节约算法就是对每个可能的节约方案进行考察并排序,优先考虑节约值最大的线路,不断对路径进行优化。
Figure1Visitroutes
图1访问路线图
C-W节约算法的步骤如下所示:
步骤1 从n个点中任意选取一个基点B(例如点1),将基点与其它各点相连,构成n-1条子回路1-j-1(j=2,3,…,n)。
步骤2 连接点对(i,j),计算节约值d(Bi)+d(Bj)-d(ij)(i,j不为基点)。
步骤3 将所有的节约值由大到小排序。
步骤4 按照上述顺序,逐个考察端点i和j,若满足下面条件,就把弧(i,j)插入到线路中。
条件:
(1)点i和点j不在一条线路上;
(2)点i和点j均与基点相邻。
步骤5 重复步骤4,直至考察完所有可插入路径(i,j)为止。
C-W节约算法对基点的选取是敏感的,不同的基点最终得到的路线也可能不同。
本文依次将n个点作为基点计算,并选取总路程最短的路径。
现实中,快递员虽然不一定知道TSP问题及其算法,但是他们在配送过程中也在下意识地寻找最佳的路线。
我们认为快递员当前的配送方式可以用最近邻居算法NNH(NearestNeighbourHeuristic)模拟。
快递员从配送站出发,很可能首先选择距离配送站最近的客户地址,送达后又选择下一个离当前位置最近的地址,按照这种方式依次配送,直到所有的地址都配送完毕,最后返回配送站。
本文用蒙特卡罗法模拟了一万次实验,每次随机生成40个点,分别用C-W节约算法和NNH算法求解最佳路径,并对结果进行比较。
由于NNH算法对于起点也是敏感的,本文尝试了以每一个点作为起点,并选出最短的路径,模拟结果如图2a所示。
此外,本文将C-W节约算法与使用较广泛的最近插入法(NearestInsertionAlgorithm)和2-opt算法进行比较。
最近插入法的步骤为:
随机选择一个初始点,在剩余点中选择距离当前点最近的一个点与之构成子路线;接着选择剩余点中距离子路线某一点最近的一个插入子路线,重复该步骤,直至所有点都插入并构成完整路线。
最近插入法同样对初始点敏感,我们尝试了以每一个点作为起点,并选出最短的路线,模拟结果如图2b所示。
2-opt算法设置最大迭代次数maxcount,初始化计数器count为0,对n个点进行有序的n次无放回抽样随机生成一条访问路线,暂定该路线长度为最短路线长度,随机选择路线中不相连的2个节点并将2个节点之间的路径翻转过来获得新路径,若新路径长度比最短路线长度短,则最短路线长度为新路径长度,count置为0,否则count加1,继续该步骤,直至count大于maxcount时算法结束。
由于算法具有随机性,每次实验以不同的初始随机路线运行n次,并选出最短的路线,模拟结果如图2c所示。
Figure2ComparisonbetweentheC-WsavingalgorithmandNNHalgorithm,NearestInsertionAlgorithm,2-optalgorithm
图2C-W节约算法和NNH算法、最近插入法、2-opt算法对比图
图2中的每个点代表一次实验,横坐标记录的是C-W节约算法找到的最佳路径的总长度,纵坐标分别记录的是NNH算法、最近插入法和2-opt算法找到的路径总长度。
如果某个点位于直线y=x的上方,说明C-W节约算法找到的路径长度比其它算法找到的更短;如果该点位于直线的下方,则说明其它算法找到的路径更短。
从图2a中可以看出,绝大多数点(9886个)都位于直线y=x的上方,比例高达98.8%。
C-W节约算法找出的最佳路径比NNH算法的平均缩短了7.8%的里程。
图2b中,9988个点位于直线y=x的上方,占比99.8%,C-W节约算法找出的最佳路径比最近插入法的平均缩短了9.9%的里程。
图2c中,9778个点位于直线y=x的上方,占比97.8%,C-W节约算法比2-opt算法平均缩短了9.3%的里程。
因此,使用C-W节约算法规划配送路径有望大大提高效率。
3 技术框架与实现
本文采用Shiny技术来搭建交互式Web应用。
Shiny是RStudio公司开发的工具包,该包的特点在于不需要了解网页前后端开发语言(如Javascript、Java和PHP等),用R语言就可以搭建动态交互的网页应用程序。
Shiny应用包含2个基本组成部分:
用户界面脚本UI(UserInterfacescript)和服务器脚本(Serverscript)。
用户界面脚本(UI)控制应用的布局与外观,服务器脚本(Server)包含构建应用所需要的业务逻辑代码。
除了2个基本的组成部分外,还包括全局脚本(Global),Global是对Server的补充,可将代码繁琐的函数集合放在Global中,然后统一在Server中调用。
Shiny应用采用的是反应式(Reactivity)设计结构,当反应值发生变化时会自动引发依赖于它的反应表达式重新执行。
反应值是随时间变化的值或者由用户输入的值,最常见的是使用input对象,input对象接收从浏览器页面传来的值并被传递给shinyServer函数,在Server端把反应表达式传递给reactive函数来读取shinyServer的值,shinyServer函数赋值给output对象,由output对象将处理结果返回给浏览器页面。
因此,Shiny应用中输入值的改变会自动引发R代码中相应的部分重新执行,反过来会更新输出结果。
本文中,应用服务器脚本中为反应表达式传递接收值的函数包括reactive和observe、eventReactive和observeEvent,后两者是用于执行响应事件的操作,例如按钮单击事件,只有在点击按钮后才触发表达式的计算。
observe与reactive的不同点在于observe不会产生结果,也不能用作其它反应表达式的输入,此外reactive使用延迟求值,当依赖关系发生变化时不会立即重新执行;而是等待其它反应表达式的调用;而observe一旦依赖关系发生变化,就会立刻重新执行。
Web应用的技术框架如图3所示。
Figure3Technicalframeworkof“DeliveryHelper”
图3DeliveryHelper技术框架
为了获取配送地址之间的最短路径,本文调用了高德地图API。
高德地图是中国领先的电子地图导航和位置服务提供商。
普遍用户可以用交互的方式在浏览器中调用高德地图的路径规划功能,高级用户则可以通过高德地图API调用服务。
高德地图API提供了步行、公交、驾车、骑行和货车5种路径规划。
由于快递配送多为骑行模式,所以本文选择骑行路径规划。
高德地图的Web服务API提供了HTTP/HTTPS接口,开发者可以用各种编程语言,通过这个接口调用服务,返回结果支持JSON和XML格式。
本文用R语言的httr包发起HTTP/HTTPS请求,返回结果用R语言的jsonlite包进行解析,R的png包则用来读取高德地图返回的静态地图数据。
下面的代码说明了调用路径服务与数据解析:
Figure4Softwareinterface
图4软件界面
URL←"http:
∥
Parameters←paste0("origin=",location[i],"&destination=",location[j],"&key=",mykey)
get←GET(paste0(URL,Parameters))#发送HTTP请求
content←content(get,as="text")#获取数据
result←fromJSON(content)#解析JSON格式的数据
distance←result$data$paths$distance#获取路径长度
DeliveryHelper的应用界面如图4所示。
该界面为流体页面,由Shiny中的fluidPage函数创建,流体页面能实时缩放其组件,填充所有可用的浏览器宽度。
fluidPage函数中使用panel面板控件(titlePanel、sidebarPanel和mainPanel)为其它基础组件提供存放容器,提供可识别的分组功能。
其中titlePanel函数中存放页面和浏览器窗口标题,sidebarPanel函数用于创建包含输入控件的侧栏面板,mainPanel函数创建包含输出元素的主面板。
如图4所示,界面上方为标题、logo图标和动态图片,将logo图标和动态图片存放在html文件中,加载html文件路径即可显示。
界面左侧为输入部分,右侧为结果输出部分。
输入部分包括配送地址的输入、修改以及起始点的选择。
单地址和多地址输入框分别由textInput和textAreaInput函数生成。
用户在客户端可单个输入或批量输入地址,对于这2种情况,DeliveryHelper都会对该地址是否真实存在以及是否重复添加进行判断,通过高德地图服务器地理编码服务获取该地址存在的个数,若个数为0则为错误地址,在应用界面会返回相应的判断结果。
地址展示框由textOutput函数创建,展示框中的地址会根据批量地址输入框中地址的修改进行实时更新。
完成地址输入后,在列表选择框中选择起始点序号,列表选择框由selectInput函数创建而成。
开始运行后,Shiny服务器通过高德地图服务器的地理编码服务获取地址的经纬度坐标,通过高德地图服务器的路径规划服务获取2个地址之间的最短路程距离,生成距离矩阵,运用C-W节约算法得到最佳路径。
输出包括5个部分,
(1)输出最佳路径的距离值,单位是米;
(2)最佳路径的编号序列;(3)最佳路径的路线图,该图是利用高德地图返回的路径坐标绘制而成的;(4)路径文字导航,例如“沿莘松路向东北骑行716米左转;沿莘凌路向西北骑行781米到达目的地”;(5)单路径地图输出,整个最佳路线是由若干段路径组成,用户可以在路径列表中选择某一段路径,如地址8到地址5,返回地图图像查看。
输出控件在UI中由verbatimTextOutput、plotOutput和uiOutput函数生成,在Server中相应地由renderText、renderPlot和renderUI函数进行传递输出。
(1)和
(2)部分是由verbatimTextOutput和renderText实现的文本输出,(3)部分是由plotOutput和renderPlot实现的绘图输出,(4)和(5)部分是由uiOutput和renderUI实现的tag对象输出。
整个界面字体通过DIV和CSS进行样式更改。
通过withProgress函数创建了进度显示条,方便用户在应用长时间运行中了解运行进度。
应用程序最终是通过自助服务平台shinyapps.io发布到网页上。
开发者只需在本地R进程中安装rsconnect包,在“www.shinyapps.io”上注册一个云账号,在RStudio中将应用与云账号连接,就可以轻松地把应用软件部署到云服务上。
部署成功后,使用者通过浏览器登录该软件网址(https:
∥llytsp.shinyapps.io/ShinyApp/)就可以使用。
4 结束语
本文将求解TSP问题的C-W节约算法应用于快递配送的路径规划。
利用高德地图API获得配送点间的实际道路距离,成功开发了基于Internet的快递配送路径优化软件DeliveryHelper,该软件可以帮助快递公司或快递员规划配送路线,提高配送效率。
借助于R语言及其工具包,如shiny、httr和jsonlite包,本文也展示了Web应用开发的新模式,即不需要用客户端的JavaScript,或服务器端的PHP、Java等语言,用R语言就可以完成开发。
本应用也有不足之处,首先,在计算2点间的路径时,假设从A点到B点和从B点到A点是一样的,对于单向骑行的道路,计算结果可能有误;其次,没有考虑配送过程中的一些特殊要求,例如某个客户要求快递在几点钟之前必须送到;此外,随着配送地址的增多,该软件运行时间偏长,算法需进一步改进。
为了在快递员中更好地普及该软件,后期可考虑将该软件推广到手机移动端,快递员通过扫描的方式就可以输入配送地址,路径的文字导航可用语音的方式输出。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 快递 配送 路径 优化 研究 软件设计