董坤煌,邱雪蓮
(廈門大學(xué) 嘉庚學(xué)院,福建 漳州 363105)
基于北斗的手機(jī)訂餐系統(tǒng)優(yōu)化研究
董坤煌,邱雪蓮
(廈門大學(xué) 嘉庚學(xué)院,福建 漳州 363105)
針對目前市場上主流手機(jī)訂餐應(yīng)用系統(tǒng),文中開發(fā)了一款基于北斗導(dǎo)航的訂餐系統(tǒng),對現(xiàn)有訂餐應(yīng)用系統(tǒng)進(jìn)行優(yōu)化。系統(tǒng)通過在餐車上安裝帶有GPRS和BDS的定位模塊,實現(xiàn)定位和數(shù)據(jù)傳輸,在手機(jī)上安裝Android客戶端進(jìn)行顯示,服務(wù)器端進(jìn)行處理數(shù)據(jù)。通過GPRS將北斗的定位信息發(fā)送到服務(wù)器,服務(wù)器對數(shù)據(jù)進(jìn)行處理實現(xiàn)實時定位、領(lǐng)餐短信提醒和剩余時間顯示等功能。然后服務(wù)器將數(shù)據(jù)處理的結(jié)果發(fā)送到客戶端進(jìn)行顯示,實現(xiàn)路徑規(guī)劃、送餐導(dǎo)航。同時該系統(tǒng)使用A*算法進(jìn)行路徑規(guī)劃,使系統(tǒng)更加快速高效。
北斗定位;訂餐應(yīng)用;GPRS;Android
隨著智能手機(jī)的應(yīng)用,GPS、GPRS技術(shù)的成熟,關(guān)于手機(jī)訂餐系統(tǒng)的需求也在逐漸增加[1],目前有許多的手機(jī)訂外賣、訂餐系統(tǒng),但是大多都不夠完善,有的只有云端服務(wù)或?qū)Ш接布?,如文獻(xiàn)[2]中的方案選用嵌入式作為送餐的硬件支持,功能雖然強(qiáng)大但是成本高,而且沒有設(shè)計云端服務(wù)系統(tǒng)和硬件配套;而文獻(xiàn)[3]雖然有設(shè)計云端服務(wù)系統(tǒng),但是沒有硬件支持。所以本方案將兩者結(jié)合起來并優(yōu)化,使用低成本的單片機(jī)和無線傳輸模塊,并且結(jié)合云端服務(wù)和硬件來設(shè)計訂餐系統(tǒng)。
此外通過在廈門各大餐飲店隨機(jī)發(fā)放問卷,總共發(fā)放問卷150份,有效回收127份。分析報告顯示接近90%的消費者在訂餐后,都有漫長等餐的經(jīng)歷,他們希望訂餐應(yīng)用程序上能顯示送餐員的送餐路線、餐飲的具體位置及準(zhǔn)確的剩余等待時間。因此對于這些市場訴求,本系統(tǒng)對現(xiàn)有訂餐平臺進(jìn)行優(yōu)化,新增了以下功能:(1)通過服務(wù)器對訂餐數(shù)據(jù)的處理,分析最優(yōu)送餐路徑,計算在途配送時間,使顧客了解送達(dá)時間;(2)通過配送人員的實時定位,顧客可以隨時了解送餐的實時位置及剩余等候時間,系統(tǒng)還將在送餐到達(dá)前發(fā)送領(lǐng)餐短信。
優(yōu)化后的應(yīng)用程序可以彌補(bǔ)市場上主流訂餐應(yīng)用程序關(guān)于“正在送餐”而又“無限等候”的不足,還可以縮短送餐員在送餐途中,因路況而額外增加的送餐時間。本系統(tǒng)可為顧客提供優(yōu)越的訂餐體驗,準(zhǔn)確掌握送餐狀態(tài)。
系統(tǒng)的云端服務(wù)平臺作為一個核心樞紐,協(xié)調(diào)客戶端和定位裝置的數(shù)據(jù)流傳輸工作。顧客通過手機(jī)移動數(shù)據(jù)通信網(wǎng)絡(luò)將點餐信息傳輸給云端信息處理平臺,同時平臺與北斗導(dǎo)航系統(tǒng)通信,獲取到定位信息,并把定位信息通百度地圖結(jié)合起來,完成路徑規(guī)劃等功能。整個系統(tǒng)相輔相成、互相協(xié)作,提高送餐效率,方案總體框圖如圖1所示。
圖1 方案總體框圖
系統(tǒng)的最優(yōu)化問題要分為動態(tài)最優(yōu)化的和靜態(tài)最優(yōu)化兩個問題的結(jié)合,靜態(tài)的最優(yōu)化問題相當(dāng)于TSP問題,而動態(tài)的最優(yōu)化問題涉及到實時的交通情況。
2.1 靜態(tài)最優(yōu)化問題
TSP問題被稱為“旅行推銷員問題”。可描述為:一個推銷員要旅行n個城市,且任意兩城市之間的距離已知,求推銷員旅行每個城市一次且僅一次,并回到起點城市的最短路徑[4]。對于這個問題有多種算法可以解決,但是在實際操作中,為了更高效地得到最優(yōu)解,常選取啟發(fā)式搜索算法。目前常用啟發(fā)式搜索算法是*A方式,原理是通過不斷搜索逼近目的地的路點來獲得。*A搜尋法是是一種最佳化的搜尋方法,是當(dāng)前用的最多的算法,能很快找到最短路徑,而且使用*A算法可以很方便地控制搜索規(guī)模以防止程序堵塞[5]。
A*(A-Star)算法是一種靜態(tài)路網(wǎng)中求解最短路最有效的直接搜索方法。以f(n)為從初始點經(jīng)由節(jié)點n到目標(biāo)點的估價函數(shù);g(n)為在狀態(tài)空間中從初始節(jié)點到節(jié)點n的實際代價,h(n)為從節(jié)點n到目標(biāo)節(jié)點最佳路徑的估計代價。保證找到最短路徑(最優(yōu)解的)條件,關(guān)鍵在于估價函數(shù)f(n)的選取。
圖1有如下狀態(tài)空間:起始位置是A;目標(biāo)位置是P,字母后的數(shù)字表示節(jié)點的估價值。
圖2 狀態(tài)空間圖
搜索過程中設(shè)置兩個表:OPEN和CLOSED。OPEN表保存了所有已生成而未考察的節(jié)點,CLOSED 表中記錄已訪問過的節(jié)點。算法中有一步是根據(jù)估價函數(shù)重排OPEN表。這樣循環(huán)中的每一步只考慮OPEN表中狀態(tài)最好的節(jié)點。具體搜索過程如下:初始狀態(tài):OPEN=[A5];CLOSED=[];估算A5,取得所有子節(jié)點,并放入OPEN表中;OPEN=[B4,C4,D6];CLOSED=[A5],估算B4,取得所有子節(jié)點,并放入OPEN表中;OPEN=[C4,E5,F(xiàn)5,D6];CLOSED=[B4,A5],估算C4;取得所有子節(jié)點,并放入OPEN表中;OPEN=[H3,G4,E5,F(xiàn)5,D6];CLOSED=[C4,B4,A5],估算H3,取得所有子節(jié)點,并放入OPEN表中;OPEN=[O2,P3,G4,E5,F(xiàn)5,D6];CLOSED=[H3,C4,B4,A5],估算O2,取得所有子節(jié)點,并放入OPEN表中;OPEN=[P3,G4,E5,F(xiàn)5,D6];CLOSED=[O2,H3,C4,B4,A5],估算P3,已得到解。
2.2 動態(tài)最優(yōu)化問題
交通擁堵是交通運(yùn)行故障的直觀表現(xiàn)形式。所以在做最短時間路徑規(guī)劃時,為了使規(guī)劃出來的路徑更貼近實際情況,必須將這一重要因素考慮在內(nèi),并將其量化[6]。
交通情況涉及到道路寬度、道路長度、轉(zhuǎn)向次數(shù)、紅綠燈等待時間等問題。為了簡化模型的復(fù)雜度和操作的困難度,把所有的因素用時間作為統(tǒng)一衡量標(biāo)準(zhǔn)。設(shè)道路長度為L,道路寬度為W,轉(zhuǎn)向次數(shù)為c、紅綠燈等待時間t,總時間為T,平均速度為V。
定義路阻
(1)
道路通暢時的標(biāo)準(zhǔn)速度為V0,j為擁堵系數(shù)(0 (2) 另外定義延遲等待時間時間=轉(zhuǎn)向次數(shù)×紅綠燈等待時間,即為c×t,其中紅綠燈等待時間0.5 min (3) 將V帶入得 (4) 2.3 最優(yōu)化路線 綜上所述,最優(yōu)化路線的解決方案應(yīng)該把動態(tài)和靜態(tài)的最優(yōu)結(jié)合起來考慮,所以應(yīng)該把靜態(tài)最優(yōu)化的各邊權(quán)值替換為動態(tài)最優(yōu)化的T,再用最近鄰域算法得出T的最小值,所得到的線路方案即為最優(yōu)化路線。 Android是基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱。它允許開發(fā)人員自由獲取、修改源代碼,具有開放性、應(yīng)用程序平等、應(yīng)用程序間無界限和應(yīng)用程序開發(fā)快捷方便等特點[7]。 Eclipse是一個可擴(kuò)展且基于Java語言的平臺。Eclipse是實現(xiàn)Android應(yīng)用開發(fā)的工具,雖然它是由一個框架與一個服務(wù)組成,但是以插件形式的擴(kuò)展方式使其成為一個穩(wěn)定的體系結(jié)構(gòu)[8]。 本系統(tǒng)用Eclipse來開發(fā)客戶端,用XML標(biāo)記語言來開發(fā)Android的前端界面,調(diào)用了百度地圖,來進(jìn)行路徑規(guī)劃和實時定位的顯示,再根據(jù)API文檔的函數(shù)說明來使用構(gòu)造函數(shù),便可使用地圖查詢功能。 地圖查詢的數(shù)據(jù)從服務(wù)器端獲取,通過HTTP協(xié)議傳輸?shù)娇蛻舳耍瑢崟r傳輸,每秒服務(wù)器發(fā)送一次心跳數(shù)據(jù)包給客戶端。為保證數(shù)據(jù)傳輸?shù)陌踩院涂煽啃?,定位模塊每秒都與服務(wù)器建立一次TCP/IP連接,進(jìn)行3次握手應(yīng)答。通過這種方式實現(xiàn)系統(tǒng)的實時通信。針對客戶的使用人群不同,客戶端分為商家版和顧客版;商家版主要是讓送餐人員獲取任務(wù),查看路線的規(guī)劃;顧客版主要是讓顧客查看送餐人員所在位和大概的剩余時間。 阿里云服務(wù)器是一種簡單高效,處理能力可彈性伸縮的計算服務(wù),可以方便地建立數(shù)據(jù)中心,實現(xiàn)數(shù)據(jù)的存儲和靈活訪問[9]。因為阿里云的諸多優(yōu)點,因此本系統(tǒng)選用阿里云作為服務(wù)器端的開發(fā)平臺。 Workerman是一個高性能的PHP Socket服務(wù)器框架,Workerman基于PHP多進(jìn)程以及l(fā)ibevent事件輪詢庫,PHP開發(fā)者只要實現(xiàn)一兩個接口,便可以開發(fā)出自己的網(wǎng)絡(luò)應(yīng)用, Workerman本身是一個PHP多進(jìn)程服務(wù)器框架,具有PHP進(jìn)程管理以及Socket通信的模塊,所以不依賴PHP-FPM、Nginx或者Apache等這些容器便可以獨立運(yùn)行。 Slim是一款基于PHP的Web開發(fā)微框架,幫助 PHP 開發(fā)者快速編寫簡單強(qiáng)大的Web應(yīng)用和API。Slim的接口簡單而符合直覺,文檔也很詳細(xì)。因為Slim的資料詳盡且開發(fā)周期短,所以很適合用其作為手機(jī)客戶端與服務(wù)器的HTTP通信框架。 MySQL是一種開放源代碼的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)。MySQL數(shù)據(jù)庫系統(tǒng)使用的是SQL結(jié)構(gòu)化查詢語言來進(jìn)行數(shù)據(jù)庫的管現(xiàn)的。到目前為止,還新增了許多功能,如對游標(biāo)、存儲過程和對子查詢的支持等[10]。 系統(tǒng)通過在阿里云服務(wù)器端運(yùn)行Workerman的PHP Socket服務(wù)器框架,來進(jìn)行數(shù)據(jù)接收和發(fā)送,用MySQL數(shù)據(jù)庫來存儲接收程序的數(shù)據(jù),把從終端接收到的JSON數(shù)據(jù)進(jìn)行解析,將各個字段的數(shù)據(jù)存入數(shù)據(jù)庫,完成對訂餐信息的接收和存儲。然后再用Slim框架來和手機(jī)客戶端通信,實現(xiàn)數(shù)據(jù)的傳輸,把定位信息發(fā)送到客戶手中。 5.1 主控單片機(jī) 主控單片機(jī)選擇STC12C5A60S2單片機(jī),STC12C5A60S2 使用宏晶科技高密度非易失性存儲器技術(shù)制造,是高速、低功耗超強(qiáng)抗干擾的新一代單片機(jī),指令代碼兼容傳統(tǒng)8051,此款單片機(jī)相比于常用的C51單片機(jī)具有更高的主頻,更大的內(nèi)存,更多的IO口資源,最重要的是有雙串口,正好滿足我們開發(fā)需求。在單芯片上,擁有靈巧的8 位CPU和可編程Flash,使得STC12C5A60S2為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活超有效的解決方案[11]。 5.2 北斗定位模塊 系統(tǒng)中北斗/GPS混合定位模塊選用的是和芯星通科技開發(fā)的GPS/BD-3雙系統(tǒng)高性能GNSS模塊 UM220-Ⅲ,將射頻前端、基帶處理、定位軟件進(jìn)行高度集成,能夠同時支持BD2、B1、GPS、L1兩個頻點,具有低功耗、小體積、高可靠、高性能等特點,可實現(xiàn)北斗/GPS單模、雙模靈活定位模式[12]。為了得到更加精準(zhǔn)的定位信息,所以采用北斗與GPS雙模的工作模式。北斗模塊的輸出消息采用的是Unicore協(xié)議,輸出的都是ASCII碼,消息的基本格式為 $MSGNAME,data1,data2,data3,…[*CC]
其配置信息采用NMEA配置,由于采用雙模定位故以GN開頭,使用它推薦的最少數(shù)據(jù)格式 $GNRMC,Time,Status,Lat,N,Lon,E,…,mode*cs Time為UTC 時間,格式為hhmmss.sss,hh表示小時,mm表示分鐘,ss.sss表示秒,UTC時間和北京時間相差8 h。 Status為位置有效標(biāo)識;V表示無效;A表示有效。 Lat為緯度;格式為ddmm.mmmmmm;dd表示度;mm.mmmmmm表示分。 N為北、南緯指示;N 表示北緯;S表示南緯。 Lon為經(jīng)度,格式為dddmm.mmmmmm;ddd表示度;mm.mmmmmm表示分。 E為東、西經(jīng)指示;E表示東經(jīng);W表示西經(jīng)。 北斗模塊輸出的默認(rèn)配置有GGA、GLL、RMC、GSA、GSV、…等信息,但是需要的只有RMC格式的信息,所以用$CFGMSG指令來禁止和使能輸出信息。 5.3 GPRS傳輸模塊 對于GPRS模塊,選用SIM900A芯片,這是一款專為中國大陸和印度地區(qū)設(shè)計的兩頻的GSM/GPRS模塊,該模塊使用省電設(shè)計技術(shù),最低耗流只有1.0 mA,內(nèi)嵌TCP/IP協(xié)議,實現(xiàn)透明數(shù)據(jù)傳輸。 GPRS模塊使用AT指令來操作和使用,所有的AT指令都以AT或at作為開頭,以回車、換行符作為結(jié)尾[13]。但是一個命令可拓展為4種格式,分別為測試命令、查詢命令、設(shè)置命令、執(zhí)行命令,格式如表1[14]所示。 表1 AT指令格式說明 對于GPRS模塊的使用,分為以下步驟,如圖3所示。 圖3 GPRS程序流程圖 每個步驟的實現(xiàn)的都要用AT指令來編寫,具體對應(yīng)的指令如表2所示。 表2 GPRS初始化指令 此優(yōu)化方案是基于北斗導(dǎo)航系統(tǒng)的創(chuàng)新與應(yīng)用。隨著互聯(lián)網(wǎng)和物聯(lián)網(wǎng)的興起,人們的生活發(fā)生了巨大的改變,其實用性和新穎性不斷的推動著用戶的移動化行為和習(xí)慣的形成[15]。手機(jī)訂餐就是其中的一個,通過問卷調(diào)查及可行性分析,本系統(tǒng)利用北斗導(dǎo)航系統(tǒng),在原有手機(jī)訂餐應(yīng)用系統(tǒng)的基礎(chǔ)上,提出了優(yōu)化方案。該方案通過北斗的定位與導(dǎo)航功能,結(jié)合云端信息處理平臺,能讓顧客可以在地圖上看到餐飲的實時所在位置以及掌握在途等候時間。該方案給顧客帶來更好訂餐體驗的同時節(jié)省了運(yùn)輸時間成本。 [1] 宿營.基于Android手機(jī)訂餐系統(tǒng)的研究與實現(xiàn)[J].科技創(chuàng)新與應(yīng)用,2015(12):69-72. [2] 都文和,徐偉,楊婧翾,等.一種嵌入式智能送餐終端的設(shè)計[J].河南科技大學(xué)學(xué)報:自然科學(xué)版,2015(1):58-61,8. [3] 劉波.在線訂餐管理系統(tǒng)的設(shè)計與開發(fā)[J]. 電腦知識與技術(shù),2015(12):258-260. [4] 饒衛(wèi)振,金淳,黃英藝.求解TSP問題的最近鄰域與插入混合算法[J].系統(tǒng)工程理論與實踐,2011(8):1419-1428. [5] 張前哨.基于A*算法的地圖尋徑的研究[D].武漢:武漢科技大學(xué),2005. [6] 王一松.基于實時交通信息的最優(yōu)路徑規(guī)劃算法的研究與實現(xiàn)[D].上海:東華大學(xué),2013. [7] 甄芳芳.基于Android的無線點餐系統(tǒng)設(shè)計與實現(xiàn)[J].軟件導(dǎo)刊,2014(9):106-108. [8] 秦亞萍.基于LBS的移動訂餐系統(tǒng)的設(shè)計與實現(xiàn)[D].武漢:華中師范大學(xué),2014. [9] 胡亞敏,張建鋒,武珊珊,等.基于阿里云的便攜式多功能農(nóng)田信息采集系統(tǒng)設(shè)計[J].中國農(nóng)機(jī)化學(xué)報,2016(9):146-150. [10] 奚寧.基于Android的智能醫(yī)療信息服務(wù)系統(tǒng)服務(wù)器端設(shè)計與實現(xiàn)[D].長春:吉林大學(xué),2013. [11] 余熾業(yè),宋躍,雷瑞庭.基于STC12C5A60S2的智能循跡小車[J].實驗室研究與探索,2014(11):46-49,121. [12] 鄒海春,任鵬,張良,等.基于UM220-Ⅲ N的軌跡記錄儀設(shè)計[J].科技創(chuàng)新與應(yīng)用,2015(21):27-30. [13] 常敏,陳征.基于無線傳輸?shù)闹悄苈窡艨刂葡到y(tǒng)設(shè)計[J].電子科技,2016,29(9):111-113,117. [14] 耿大威.基于北斗/GPS雙模衛(wèi)星定位系統(tǒng)的車載終端設(shè)計[D].青島:中國海洋大學(xué),2013. [15] 陳永宏.基于LBS的“拼外賣”系統(tǒng)的設(shè)計與實現(xiàn)[D].北京:中國科學(xué)院大學(xué),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-),男,本科。研究方向:無線通信,微型控制系統(tǒng)。邱雪蓮(1983-),女,助理工程師。研究方向:電子信息,自動化。 10.16180/j.cnki.issn1007-7820.2017.09.027 TN967.1;TP315 A 1007-7820(2017)09-097-053 Android客戶端開發(fā)
4 服務(wù)器端
5 硬件模塊原理
6 結(jié)束語