董坤煌,邱雪莲
(厦门大学 嘉庚学院,福建 漳州 363105)
基于北斗的手机订餐系统优化研究
董坤煌,邱雪莲
(厦门大学 嘉庚学院,福建 漳州 363105)
针对目前市场上主流手机订餐应用系统,文中开发了一款基于北斗导航的订餐系统,对现有订餐应用系统进行优化。系统通过在餐车上安装带有GPRS和BDS的定位模块,实现定位和数据传输,在手机上安装Android客户端进行显示,服务器端进行处理数据。通过GPRS将北斗的定位信息发送到服务器,服务器对数据进行处理实现实时定位、领餐短信提醒和剩余时间显示等功能。然后服务器将数据处理的结果发送到客户端进行显示,实现路径规划、送餐导航。同时该系统使用A*算法进行路径规划,使系统更加快速高效。
北斗定位;订餐应用;GPRS;Android
随着智能手机的应用,GPS、GPRS技术的成熟,关于手机订餐系统的需求也在逐渐增加[1],目前有许多的手机订外卖、订餐系统,但是大多都不够完善,有的只有云端服务或导航硬件,如文献[2]中的方案选用嵌入式作为送餐的硬件支持,功能虽然强大但是成本高,而且没有设计云端服务系统和硬件配套;而文献[3]虽然有设计云端服务系统,但是没有硬件支持。所以本方案将两者结合起来并优化,使用低成本的单片机和无线传输模块,并且结合云端服务和硬件来设计订餐系统。
此外通过在厦门各大餐饮店随机发放问卷,总共发放问卷150份,有效回收127份。分析报告显示接近90%的消费者在订餐后,都有漫长等餐的经历,他们希望订餐应用程序上能显示送餐员的送餐路线、餐饮的具体位置及准确的剩余等待时间。因此对于这些市场诉求,本系统对现有订餐平台进行优化,新增了以下功能:(1)通过服务器对订餐数据的处理,分析最优送餐路径,计算在途配送时间,使顾客了解送达时间;(2)通过配送人员的实时定位,顾客可以随时了解送餐的实时位置及剩余等候时间,系统还将在送餐到达前发送领餐短信。
优化后的应用程序可以弥补市场上主流订餐应用程序关于“正在送餐”而又“无限等候”的不足,还可以缩短送餐员在送餐途中,因路况而额外增加的送餐时间。本系统可为顾客提供优越的订餐体验,准确掌握送餐状态。
系统的云端服务平台作为一个核心枢纽,协调客户端和定位装置的数据流传输工作。顾客通过手机移动数据通信网络将点餐信息传输给云端信息处理平台,同时平台与北斗导航系统通信,获取到定位信息,并把定位信息通百度地图结合起来,完成路径规划等功能。整个系统相辅相成、互相协作,提高送餐效率,方案总体框图如图1所示。
图1 方案总体框图
系统的最优化问题要分为动态最优化的和静态最优化两个问题的结合,静态的最优化问题相当于TSP问题,而动态的最优化问题涉及到实时的交通情况。
2.1 静态最优化问题
TSP问题被称为“旅行推销员问题”。可描述为:一个推销员要旅行n个城市,且任意两城市之间的距离已知,求推销员旅行每个城市一次且仅一次,并回到起点城市的最短路径[4]。对于这个问题有多种算法可以解决,但是在实际操作中,为了更高效地得到最优解,常选取启发式搜索算法。目前常用启发式搜索算法是*A方式,原理是通过不断搜索逼近目的地的路点来获得。*A搜寻法是是一种最佳化的搜寻方法,是当前用的最多的算法,能很快找到最短路径,而且使用*A算法可以很方便地控制搜索规模以防止程序堵塞[5]。
A*(A-Star)算法是一种静态路网中求解最短路最有效的直接搜索方法。以f(n)为从初始点经由节点n到目标点的估价函数;g(n)为在状态空间中从初始节点到节点n的实际代价,h(n)为从节点n到目标节点最佳路径的估计代价。保证找到最短路径(最优解的)条件,关键在于估价函数f(n)的选取。
图1有如下状态空间:起始位置是A;目标位置是P,字母后的数字表示节点的估价值。
图2 状态空间图
搜索过程中设置两个表:OPEN和CLOSED。OPEN表保存了所有已生成而未考察的节点,CLOSED 表中记录已访问过的节点。算法中有一步是根据估价函数重排OPEN表。这样循环中的每一步只考虑OPEN表中状态最好的节点。具体搜索过程如下:初始状态:OPEN=[A5];CLOSED=[];估算A5,取得所有子节点,并放入OPEN表中;OPEN=[B4,C4,D6];CLOSED=[A5],估算B4,取得所有子节点,并放入OPEN表中;OPEN=[C4,E5,F5,D6];CLOSED=[B4,A5],估算C4;取得所有子节点,并放入OPEN表中;OPEN=[H3,G4,E5,F5,D6];CLOSED=[C4,B4,A5],估算H3,取得所有子节点,并放入OPEN表中;OPEN=[O2,P3,G4,E5,F5,D6];CLOSED=[H3,C4,B4,A5],估算O2,取得所有子节点,并放入OPEN表中;OPEN=[P3,G4,E5,F5,D6];CLOSED=[O2,H3,C4,B4,A5],估算P3,已得到解。
2.2 动态最优化问题
交通拥堵是交通运行故障的直观表现形式。所以在做最短时间路径规划时,为了使规划出来的路径更贴近实际情况,必须将这一重要因素考虑在内,并将其量化[6]。
交通情况涉及到道路宽度、道路长度、转向次数、红绿灯等待时间等问题。为了简化模型的复杂度和操作的困难度,把所有的因素用时间作为统一衡量标准。设道路长度为L,道路宽度为W,转向次数为c、红绿灯等待时间t,总时间为T,平均速度为V。
定义路阻
(1)
道路通畅时的标准速度为V0,j为拥堵系数(0 (2) 另外定义延迟等待时间时间=转向次数×红绿灯等待时间,即为c×t,其中红绿灯等待时间0.5 min (3) 将V带入得 (4) 2.3 最优化路线 综上所述,最优化路线的解决方案应该把动态和静态的最优结合起来考虑,所以应该把静态最优化的各边权值替换为动态最优化的T,再用最近邻域算法得出T的最小值,所得到的线路方案即为最优化路线。 Android是基于Linux平台的开源手机操作系统的名称。它允许开发人员自由获取、修改源代码,具有开放性、应用程序平等、应用程序间无界限和应用程序开发快捷方便等特点[7]。 Eclipse是一个可扩展且基于Java语言的平台。Eclipse是实现Android应用开发的工具,虽然它是由一个框架与一个服务组成,但是以插件形式的扩展方式使其成为一个稳定的体系结构[8]。 本系统用Eclipse来开发客户端,用XML标记语言来开发Android的前端界面,调用了百度地图,来进行路径规划和实时定位的显示,再根据API文档的函数说明来使用构造函数,便可使用地图查询功能。 地图查询的数据从服务器端获取,通过HTTP协议传输到客户端,实时传输,每秒服务器发送一次心跳数据包给客户端。为保证数据传输的安全性和可靠性,定位模块每秒都与服务器建立一次TCP/IP连接,进行3次握手应答。通过这种方式实现系统的实时通信。针对客户的使用人群不同,客户端分为商家版和顾客版;商家版主要是让送餐人员获取任务,查看路线的规划;顾客版主要是让顾客查看送餐人员所在位和大概的剩余时间。 阿里云服务器是一种简单高效,处理能力可弹性伸缩的计算服务,可以方便地建立数据中心,实现数据的存储和灵活访问[9]。因为阿里云的诸多优点,因此本系统选用阿里云作为服务器端的开发平台。 Workerman是一个高性能的PHP Socket服务器框架,Workerman基于PHP多进程以及libevent事件轮询库,PHP开发者只要实现一两个接口,便可以开发出自己的网络应用, Workerman本身是一个PHP多进程服务器框架,具有PHP进程管理以及Socket通信的模块,所以不依赖PHP-FPM、Nginx或者Apache等这些容器便可以独立运行。 Slim是一款基于PHP的Web开发微框架,帮助 PHP 开发者快速编写简单强大的Web应用和API。Slim的接口简单而符合直觉,文档也很详细。因为Slim的资料详尽且开发周期短,所以很适合用其作为手机客户端与服务器的HTTP通信框架。 MySQL是一种开放源代码的关系型数据库管理系统。MySQL数据库系统使用的是SQL结构化查询语言来进行数据库的管现的。到目前为止,还新增了许多功能,如对游标、存储过程和对子查询的支持等[10]。 系统通过在阿里云服务器端运行Workerman的PHP Socket服务器框架,来进行数据接收和发送,用MySQL数据库来存储接收程序的数据,把从终端接收到的JSON数据进行解析,将各个字段的数据存入数据库,完成对订餐信息的接收和存储。然后再用Slim框架来和手机客户端通信,实现数据的传输,把定位信息发送到客户手中。 5.1 主控单片机 主控单片机选择STC12C5A60S2单片机,STC12C5A60S2 使用宏晶科技高密度非易失性存储器技术制造,是高速、低功耗超强抗干扰的新一代单片机,指令代码兼容传统8051,此款单片机相比于常用的C51单片机具有更高的主频,更大的内存,更多的IO口资源,最重要的是有双串口,正好满足我们开发需求。在单芯片上,拥有灵巧的8 位CPU和可编程Flash,使得STC12C5A60S2为众多嵌入式控制应用系统提供高灵活超有效的解决方案[11]。 5.2 北斗定位模块 系统中北斗/GPS混合定位模块选用的是和芯星通科技开发的GPS/BD-3双系统高性能GNSS模块 UM220-Ⅲ,将射频前端、基带处理、定位软件进行高度集成,能够同时支持BD2、B1、GPS、L1两个频点,具有低功耗、小体积、高可靠、高性能等特点,可实现北斗/GPS单模、双模灵活定位模式[12]。为了得到更加精准的定位信息,所以采用北斗与GPS双模的工作模式。北斗模块的输出消息采用的是Unicore协议,输出的都是ASCII码,消息的基本格式为 $MSGNAME,data1,data2,data3,…[*CC]
其配置信息采用NMEA配置,由于采用双模定位故以GN开头,使用它推荐的最少数据格式 $GNRMC,Time,Status,Lat,N,Lon,E,…,mode*cs Time为UTC 时间,格式为hhmmss.sss,hh表示小时,mm表示分钟,ss.sss表示秒,UTC时间和北京时间相差8 h。 Status为位置有效标识;V表示无效;A表示有效。 Lat为纬度;格式为ddmm.mmmmmm;dd表示度;mm.mmmmmm表示分。 N为北、南纬指示;N 表示北纬;S表示南纬。 Lon为经度,格式为dddmm.mmmmmm;ddd表示度;mm.mmmmmm表示分。 E为东、西经指示;E表示东经;W表示西经。 北斗模块输出的默认配置有GGA、GLL、RMC、GSA、GSV、…等信息,但是需要的只有RMC格式的信息,所以用$CFGMSG指令来禁止和使能输出信息。 5.3 GPRS传输模块 对于GPRS模块,选用SIM900A芯片,这是一款专为中国大陆和印度地区设计的两频的GSM/GPRS模块,该模块使用省电设计技术,最低耗流只有1.0 mA,内嵌TCP/IP协议,实现透明数据传输。 GPRS模块使用AT指令来操作和使用,所有的AT指令都以AT或at作为开头,以回车、换行符作为结尾[13]。但是一个命令可拓展为4种格式,分别为测试命令、查询命令、设置命令、执行命令,格式如表1[14]所示。 表1 AT指令格式说明 对于GPRS模块的使用,分为以下步骤,如图3所示。 图3 GPRS程序流程图 每个步骤的实现的都要用AT指令来编写,具体对应的指令如表2所示。 表2 GPRS初始化指令 此优化方案是基于北斗导航系统的创新与应用。随着互联网和物联网的兴起,人们的生活发生了巨大的改变,其实用性和新颖性不断的推动着用户的移动化行为和习惯的形成[15]。手机订餐就是其中的一个,通过问卷调查及可行性分析,本系统利用北斗导航系统,在原有手机订餐应用系统的基础上,提出了优化方案。该方案通过北斗的定位与导航功能,结合云端信息处理平台,能让顾客可以在地图上看到餐饮的实时所在位置以及掌握在途等候时间。该方案给顾客带来更好订餐体验的同时节省了运输时间成本。 [1] 宿营.基于Android手机订餐系统的研究与实现[J].科技创新与应用,2015(12):69-72. [2] 都文和,徐伟,杨婧翾,等.一种嵌入式智能送餐终端的设计[J].河南科技大学学报:自然科学版,2015(1):58-61,8. [3] 刘波.在线订餐管理系统的设计与开发[J]. 电脑知识与技术,2015(12):258-260. [4] 饶卫振,金淳,黄英艺.求解TSP问题的最近邻域与插入混合算法[J].系统工程理论与实践,2011(8):1419-1428. [5] 张前哨.基于A*算法的地图寻径的研究[D].武汉:武汉科技大学,2005. [6] 王一松.基于实时交通信息的最优路径规划算法的研究与实现[D].上海:东华大学,2013. [7] 甄芳芳.基于Android的无线点餐系统设计与实现[J].软件导刊,2014(9):106-108. [8] 秦亚萍.基于LBS的移动订餐系统的设计与实现[D].武汉:华中师范大学,2014. [9] 胡亚敏,张建锋,武珊珊,等.基于阿里云的便携式多功能农田信息采集系统设计[J].中国农机化学报,2016(9):146-150. [10] 奚宁.基于Android的智能医疗信息服务系统服务器端设计与实现[D].长春:吉林大学,2013. [11] 余炽业,宋跃,雷瑞庭.基于STC12C5A60S2的智能循迹小车[J].实验室研究与探索,2014(11):46-49,121. [12] 邹海春,任鹏,张良,等.基于UM220-Ⅲ N的轨迹记录仪设计[J].科技创新与应用,2015(21):27-30. [13] 常敏,陈征.基于无线传输的智能路灯控制系统设计[J].电子科技,2016,29(9):111-113,117. [14] 耿大威.基于北斗/GPS双模卫星定位系统的车载终端设计[D].青岛:中国海洋大学,2013. [15] 陈永宏.基于LBS的“拼外卖”系统的设计与实现[D].北京:中国科学院大学,2014. Based on Beidou Navigation System Optimization Meal Ordering Applications DONG Kunhuang,QIU Xuelian (Tan KahKee College,Xiamen University,Zhangzhou 363106,China) Regarding to the popular meal ordering Apps in the market, we have developed a meal ordering system aiming at optimizing the current ordering platform through the Beidou Navigation Satellite System(BDS). The system realizes localization and achieves data transmission through installing GPRS and BDS orientation modules with messages shown on the Android client side in phones and data processing of the server side. In this system, route planning and navigation can be more easily to achieve through a series of procedures, transmitting positioning information of the Beidou Navigation Satellite System to server through GPRS, implementing functions of real-time positioning, SMS reminders and rest-time recording through data processing, as well as showing results on the client side. Apart from this, what makes the system faster and more efficient is the use of A* arithmetic to plan paths. BDS;meal ordering applications;GPRS;Android 2016- 11- 22 董坤煌(1994-),男,本科。研究方向:无线通信,微型控制系统。邱雪莲(1983-),女,助理工程师。研究方向:电子信息,自动化。 10.16180/j.cnki.issn1007-7820.2017.09.027 TN967.1;TP315 A 1007-7820(2017)09-097-053 Android客户端开发
4 服务器端
5 硬件模块原理
6 结束语