基于iOS的订单配送路径规划App的设计实现

2017-03-17 09:18许静慧
电脑知识与技术 2016年32期
关键词:路径规划电子地图

许静慧

摘要:针对订单配送中多仓库多配送任务的路径规划问题,配送路线具有从仓库取货出发,经过多个配送点完成送货任务后返回出发仓库的特点。鉴于目前移动平台上路径规划应用主要解决已知起点到终点的路线规划,对于经过多个沿途点的规划尚未有较好的应用实现。因此该文将路径规划与iOS平台相结合充分地利用电子地图的应用特点,设计并实现了基于iOS的订单配送路径规划系统以便提供给配送员最优路径结果。重点研究如何利用高德iOS地图SDK实现地图显示与操作、地图定位、标注绘制、路线规划等功能。最后利用进销存管理平台的实际订单数据,测试证明了该系统的有效性与便捷性。

关键词:路径规划;多仓库多配送任务;iOS;电子地图;最优路径

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)32-0190-04

Design and Implementation of Order Routing System Based on iOS

XU Jing-hui

(North China University of Technology, Beijing 100144, China)

Abstract: The routing problem of multi-warehouse and multi-distribution task in order distribution has the characteristics of picking from the warehouse and returning to the starting warehouse after completing the delivery task by multiple distribution points. In view of the current path planning applications on the mobile platform to solve the known starting point to the end of the route planning, after a number of points along the planning has not yet been a good application to achieve. Therefore, this paper combines the path planning and iOS platform to make full use of the characteristics of electronic map application, design and implement the order routing system based on iOS in order to provide the optimal path results. This paper focuses on how to realize the function of map display and operation, map location, mark drawing, route planning and so on. Finally, using the real order data of inventory management platform, the test proves the effectiveness and convenience of the system.

Key words: route plan; multi-warehouse multi-distribution tasks; iOS; digital map; optimal path

在实际订单配送环节中,路径规划要求找出车辆从仓库取货出发依次经过一系列配送点后返回仓库的最短回路路径。目前关于路径规划的研究多数集中在常见路径算法的改进及优化方面[1-3],对于路径规划应用系统的研究还较少。国内iOS平台上有关路径规划的热门应用有高德地图、百度地图等App,但它们也只提供了支持公交、驾车及步行三种出行方式的点到点的路径规划,对于从起点经过多个沿途点到达终点的路线规划并未涉及。鉴于目前尚未有将路径规划与iOS移动平台的应用特点充分相结合的应用,本文就设计开发了iOS平台上基于电子地图的路径规划系统——称之为“易配送系统”。易配送系统可在用户使用期间自动定位用户当前所在位置,同时提供仓库到各配送点的路线规划和导航等主要功能,还通过服务端的接口服务将数据封装成XML编码格式通过网络提供给客户端,保障了订单数据的真实性与实时性。在系统开发过程中利用高德iOS地图SDK进行应用开发,提供了可视化的路径规划人机交互界面。

本文的内容首先对iOS平台开发相关技术进行了简要介绍,然后对订单配送路径规划系统进行分析,设计出了整体的技术方案与系统架构,然后对系统功能进行详细实现,包括仓库、订单查询,地图位置显示、路线规划及导航等功能,最后进行结果分析与总结。

1 iOS开发平台介绍

1.1 iOS系统架构

iOS平台应用的开发语言主要有Objective-C和Swift语言,由于swift作为一门新生语言使用人数较少的原因,本系统采用了主流开发语言Objective-C进行编码开发。Objective-C作為ANSI C的超集[4],不仅扩展了面向对象设计的能力,如类、消息、继承,同时它可以调用C的函数,也可以通过C++对象访问方法,具有对C和C++语言的兼容性。

苹果公司最新推出的iOS 10 SDK (Software Development Kit, 软件开发工具包)增加了新的API (Application Programming Interface, 应用程序编程接口)和服务,能够支持更多新类型的应用程序和功能。目前基于iOS平台开发的应用程序可以扩展到消息、Siri、电话和地图等系统自带服务,拥有了更吸引人的功能。图1为iOS系统架构图:

图中可触摸层主要提供用户交互相关的服务如界面控件、事件管理、通知中心、地图,包含以下框架:UIKit、Notification Center、MapKit等;媒体层主要提供图像引擎、音频引擎及视频引擎框架;核心服务层为程序提供基础的系统服务如网络访问、浏览器引擎、定位、文件访问、数据库访问等。最底层的核心系统层为上层结构提供了最基础的服务包括操作系统内核服务、本地认证、安全、加速等。

1.2 iOS 地图SDK

iOS 地图SDK 是高德提供的一套基于 iOS 6.0.0 及以上版本的地图应用程序开发接口,供开发者在iOS应用中加入地图相关的功能[6]。它提供的四种地图模式包括:标准地图、卫星地图、夜景模式地图和导航模式地图。开发者不仅可以利用其地图计算工具实现坐标转换和距离或面积计算,而且可以调用API完成出行路线规划及点标注、折线、面的绘制等工作。这些实现的提前需要注册并认证成为高德开发者,接着为应用申请APIKey,然后将iOS地图SDK配置到应用工程中,这里可以采用手动和自动化两种配置方式。前者的配置过程简单易操作,但更新操作代价大,后者配置过程稍显负杂,但更新很方便。手动配置的方式则需要手动向工程项目中导入MAMapKit.framework和AMapSearchKit. framework两个包,当框架有更新时需将工程中旧框架删除并添加新框架,其使用稍显麻烦。本系统的实现采用了自动化配置工程的方式,利用第三方库管理工具CocoaPods通过命令:pod ‘AMap3DMap, ‘~>4.0和pod ‘AMapSearch, ‘~>4.0完成自动导入框架的目的,当框架更新时只需执行pod update即可实现项目中框架的更新。

2 整体方案设计

通常App功能复杂的情况下需要有后台服务器的业务处理支持,本文涉及的路径规划功能需要处理的计算量会随着配送点个数的增长呈指数阶上升,因此需要后台服务器的强大计算能力处理路径规划结果,进而减轻客户端内存使用压力。

本系统整体技术方案的设计综合考虑了移动应用端、服务端(包括应用服务器和提供商服务器)以及数据库服务器三部分所涉及的技术及其简要的功能模块划分,如下图2所示:

其中应用服务端是典型的电商进销存管理系统,移动端LBS应用——易配送App的实现需要在进销存Web系统的表示层、业务逻辑层、数据持久层添加相应的订单配送接口,该接口将服务端经过处理的数据结果封装成XML标准的数据格式通过HTTP协议传输给App。

3 基于iOS的路径规划App设计

3.1 App开发模式

易配送App采用Objective-C开发语言,开发工具为Xcode7.0,主要针对iPhone进行设计的。系统的设计模式采用了MVC范型如图3。由于系统所涉及的内容数据均通过网络请求服务器实时更新获取,故采用了iOS App开发模式中的Native App,以保证有较好的网络环境以及节省的带宽,以便利用充分的设备资源来提供良好的交互体验。

该系统平台中的位置信息主要体现在:位置服务和地图。位置服务是由Core Location框架负责,它将用户的位置及方向信息以Objective-C语言能识别的形式罗列出来[4];地图服务通过应用中集成的高德开发平台提供的MAMapKit框架负责,利用它可以展示出地图和图钉标注等信息。易配送App的路径规划模块有效地将Core Location框架和MAMapKit框架结合起来,以实现地图定位、距离测试、路线显示及导航功能。

3.2 重要功能设计及关键技术实现

系统的主界面设计采用了图文结合的布局方式如图4,使用户能够快速便捷的操作系统。对于信息查询类似功能的界面多采用表视图结构,得到了清楚地展示大量内容信息的效果如图5所展示的待配送订单列表。

图4 主界面 图5 待配送列表

图6 路径规划

系统主要的路径规划功能在电子地图的地理信息背景下完成了标注及路线可视化如图6所示,其关键技术的实现如下:

1)初始化地图服务

系统中地图服务的使用首先需要初始化地图控件,这需要在创建MAMapView之前需要先绑定APIKey:[MAMapServices sharedServices].apiKey = APIKey; 和[AMapSearchServices sharedServices].apiKey = APIKey;接着初始化MAMapView地图控件:_mapView = [[MAMapView alloc] initWithFrame: self.view. frame];并給系统添加地图视图:[self.view addSubview:_mapView];

2)分组待配送订单

因为业务要求需要将待配送订单按各自对应的出货仓库进行分组配送,系统中通过自定义实现分组方法:-(void)groupAction:(NSMutableArray *)array; 其中参数array中存储着多个配送单对象XJDeliveryOrder。方法实现中利用可变的集合对象NSMutableSet保存的内容对象不重复的特性,用_warehouseSet记录不同的仓库信息:_warehouseSet = [NSMutableSet set]; [array enumerateObjectsUsing Block: ^( XJDeliveryOrder * _Nonnull order, NSUInteger idx, BOOL * _Nonnull stop) {[_warehouseSet addObject:order.warehouseName]; }]; 同时该方法中利用谓词NSPredicate过滤数组array实现按仓库名称分组:[_warehouseSet enumerateObjectsUsingBlock:^(NSString * _Nonnull warehouseName, BOOL * _Nonnull stop) {NSPredicate *predicate = [NSPredicate predicateWithFormat: @"warehouseName = %@", warehouseName];NSArray *tempArr = [NSArray arrayWithArray:[array filteredArrayUsingPredicate:predicate]]; [groupArr addObject: tempArr];}];

3)添加标注及气泡视图

给地图添加标注需要调用地理编码请求:[self.search AMapGeocodeSearch: geo]; 其中对象geo为AMapGeocodeSearchRequest类对象且其属性值address不为空,该请求会回调AMapSearchDelegate中的方法:- (void)onGeocodeSearchDone: (AMapGeocodeSearchRequest*)request response:(AMapGeocodeSearchResponse *) response;其中response对象中包含了经纬度信息并且该方法中调用了添加标注方法:[_mapView addAnnotation:pointAn];其中对象pointAn为MAPointAnnotation类对象。

实现触摸标注弹出气泡的效果需要实现MAMapViewDelegate委托中-(MAAnnotationView*)mapView:(MAMapView*)mapViewviewForAnnotaion: (id< MAAnotation>)annotation;和-(void)mapView:(MAMapView*)mapView didSelect AnnotationView:(MAAnnotationView *)view;方法。

4)路径规划及绘制路线

iOS地图API提供了按参数顺序进行路径规划的方法:[_search AMapDriving RouteSearch:request];其中request为AMapDrivingRouteSearchRequ -est对象,需要给定request的属性:起点origin、终点destination和沿途点waypoints的值。而对于最优路径的规划只能通过自定义方法:-(void)planBestPaths WithLoaction:(CLLocationCoordinate2D)location wayPoints: (NSArray*) wayPoints;该方法中调用了网络请求服务器方法,并能够获取服务器返回的处理结果,其结果中包含了多个经纬度字符串,需要利用方法- (CLLocationCoordinate2D *)coordinatesForString:(NSString*)string coordinateCount:(NSUInteger *)coordinate Count parseToken:(NSString *)token;来解析经纬度,然后系统利用解析得到的经纬度调用[MAPolyline polylineWithCoordinates:coordinates count:count]来绘制路线。

5)最优路径算法

本系统的服务端路径规划接口实现中采用了适合解决单回路最短路径问题的算法——最近點插入算法。最近插入法是一种启发式算法,它不仅适用于各种复杂的TSP问题,对于中小规模问题同样适用。图7为算法具体流程。算法的实现是在后台服务端通过java语言实现的,这里就不做详细说明了。

4 系统测评与应用实例

为了对系统的功能及路径优化效果进行测试,采用了如下的实验环境:客户端是所有系统为iOS 7.0及以上iPhone手机,安装App后即可使用;服务端为可安装运行在windows平台下的进销存管理系统;数据库为Oracle数据库安装在Linux数据库服务器上。

本系统中路径规划功能的实现采用了将多个仓库多配送点的路径规划分解为多个单仓库多点配送的思想。下面一系列图示说明了多个单仓库出发到多个配送点的路径规划对比结果。

图8中显示当天需要规划路径的所有点,包括三个仓库和八个客户位置。接下来分别对三个仓库进行出货配送安排,如图9为从总仓库出发的配送路线对比,其中上图为按下单顺序依次配送的路线图,下图为根据与出发仓库距离由近到远的依次配送的路线图,从图中可以明显看出两者各自的路程代价,表1为各仓库配送路径的对比结果。

通过实验测试结果表明,当单次规划的配送数量小于等于6时,本系统的最优路径准确且计算处理很快,几乎网络无延迟。当单次规划的配送数量大于6小于17时,优化结果准确但是处理速度变慢,并且处理响应时间虽配送数量呈现指数阶增长。当单次规划的配送数量大于16时,服务端需通过一定路径优化算法处理大规模计算,但其结果往往是最优解的近似值而非最优路径值。

5 结束语

本文是在iOS系统上基于电子地图的应用开发,基本实现了小规模订单配送的路径规划功能。经过优化的路径的确节省了许多里程,真正意义上为企业提高了效益。但是本系统还存在一些不足之处,如适合处理小规模订单配送路径规划的局限性,系统的可扩展性有待加强。在今后的学习和研究中,将进一步深化和扩展该应用的功能,提供更加丰富的视图信息和交互方式,实现更良好的路径规划体验。

参考文献:

[1] WANG Tiejun,WU Kaijun. Study multi-depots vehicle routing based on improve -ed particle swarm optimization[J]. Computer Engineering and Applications,2013, 49(2): 5-8.

[2] 马建华,房勇,袁杰.多车场多车型最快完成车辆路径问题的变异蚁群算法[J].系统工程理论与实践,2011(8).

[3] 李波,邱红艳.基于双层模糊聚类的多车场车辆路径遗传算法[J].计算机工程与应用,2014(5).

[4] 胡杨帆,杨刚,胡颢石.结合LBS和信息推送的博物馆App的设计实现[J].计算机应用与软件,2013, 12(30):108-112.

[5] 百度百科.手机定位技术[EB/OL].http://baike.baidu.com/link?url=FdVsR1eUHO4pXu -1mDnBoar4VvjzDHE03VEw3qj0ZrX NvdqZ4NjURdzUm75kq8pxLjsAThN-8FjBpzdAWdeYnBVKIcwngDEQ6NwR8K9F-Pemfn634NrVYuoNjNbF_leE_sq_lqJotl 5_ZxKi4Eiy5K.

[6] 高德开发平台.高德地图iOS SDK简介[EB/OL]. http://lbs.amap.com/api/ios-sdk/summa ry/.

猜你喜欢
路径规划电子地图
新课标下的高中地理教学中电子地图的应用
基于灵活编组的互联互通车载电子地图设计及动态加载
基于Mapserver的增强现实电子地图的设计与实现
公铁联程运输和售票模式的研究和应用
电子地图在初中地理教学中的应用实践
天地图·驻马店公众版电子地图配图方案
电子地图多尺度显示模型研究