国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

含無人駕駛汽車的交通出行選擇行為實(shí)驗(yàn)平臺設(shè)計(jì)與實(shí)現(xiàn)

2020-06-15 12:04:50李文韜謝小紅孫曉燕
現(xiàn)代計(jì)算機(jī) 2020年13期
關(guān)鍵詞:被試者無人駕駛進(jìn)程

李文韜,謝小紅,孫曉燕

(1.南寧師范大學(xué)計(jì)算機(jī)與信息工程學(xué)院,南寧 530299;2.廣西財(cái)經(jīng)學(xué)院管理科學(xué)與工程學(xué)院,南寧 530003)

0 引言

隨著5G 時代到來和自動化水平的提高,無人駕駛汽車得到了越來越多的關(guān)注。研究人員認(rèn)為無人駕駛汽車的使用是解決交通擁堵的關(guān)鍵[1]。但是,無人駕駛汽車上路后,交通路網(wǎng)的特性是否有顯著變化?整個路網(wǎng)的交通流量是否會提高?這些問題尚不十分明確,雖然目前已有大量的理論模型討論無人駕駛汽車對交通路網(wǎng)的影響[2],但是僅有少數(shù)的數(shù)據(jù)支持[3]。因?yàn)槟壳盁o人駕駛汽車還處于實(shí)驗(yàn)階段,采集實(shí)際的數(shù)據(jù)是不現(xiàn)實(shí)的,但是可以采用實(shí)驗(yàn)室實(shí)驗(yàn)的方法[4]分析無人駕駛汽車上路后的交通路網(wǎng)特性的改變,為今后出臺更合理的含無人駕駛汽車的交通管理政策提供有力的科學(xué)依據(jù)。

交通出行選擇行為的實(shí)驗(yàn)室實(shí)驗(yàn)經(jīng)常用于驗(yàn)證交通流經(jīng)典理論和悖論[5],評估尚未實(shí)施的交通管理政策[6]。開展實(shí)驗(yàn)前,構(gòu)建穩(wěn)定高效的實(shí)驗(yàn)平臺是必不可少的先決條件。目前已有一些經(jīng)典的選擇行為實(shí)驗(yàn)平臺,例如z-Tree[7],其最大的功能是能夠提供一個免費(fèi)的開放式實(shí)驗(yàn)平臺,在實(shí)驗(yàn)過程中數(shù)據(jù)會自動備份即使主機(jī)崩潰,重新連接服務(wù)器即可繼續(xù)實(shí)驗(yàn),該實(shí)驗(yàn)平臺允許內(nèi)嵌其他編程語言,開發(fā)者可以根據(jù)需求進(jìn)行二次開發(fā)。但是,對于比較復(fù)雜的實(shí)驗(yàn)場景,開發(fā)者需要耗費(fèi)大量的時間對z-Tree 功能模塊進(jìn)行修改且移植性不強(qiáng),因此許多科研人員開始借鑒z-Tree 的功能開發(fā)合適自己實(shí)驗(yàn)的平臺軟件。

本文采用 Web 應(yīng)用框架[8]中的 Django[9]、MySQL 數(shù)據(jù)庫[10]技術(shù)、Nginx 反向代理服務(wù)器[11]以及 AJAX 交互技術(shù)[12]加上多并發(fā)和多線程對前端數(shù)據(jù)的處理構(gòu)建了含無人駕駛汽車的交通出行選擇行為實(shí)驗(yàn)平臺。使用Django 框架無需獨(dú)立SQL 語句,框架本身提供完善ORM 數(shù)據(jù)交互模型,任何計(jì)算機(jī)都可以安裝此實(shí)驗(yàn)平臺作為實(shí)驗(yàn)服務(wù)器。該實(shí)驗(yàn)平臺主要特點(diǎn)是安全系數(shù)高、數(shù)據(jù)高并發(fā)處理、交互友好且易于二次開發(fā),有助于研究者便捷使用并對無人駕駛汽車的交通出行選擇行為做進(jìn)一步的研究。

1 系統(tǒng)架構(gòu)設(shè)計(jì)

系統(tǒng)架構(gòu)如圖1 所示,實(shí)驗(yàn)被試者通過管理員提供的用戶名及密碼在瀏覽器上登錄實(shí)驗(yàn)界面。實(shí)驗(yàn)過程中每一輪實(shí)驗(yàn)被試者提交出行行為選擇后頁面會向服務(wù)器發(fā)送AJAX 請求,后臺通過處理并反饋給被試者上一輪數(shù)據(jù)。由于多名被試者同時進(jìn)行,已完成出行行為選擇的被試者需等待尚未提交選擇的被試者才可進(jìn)行下一輪的選擇,實(shí)驗(yàn)數(shù)據(jù)需以隊(duì)列形式交由服務(wù)器處理,并接收所有被試者處理和請求,計(jì)算數(shù)據(jù)信息反饋給被試者,使其進(jìn)行下一輪的實(shí)驗(yàn)。因此,為了充分利用服務(wù)器應(yīng)用的計(jì)算機(jī)上所有資源,在服務(wù)器部的署上應(yīng)采用多線程并發(fā)服務(wù)器,從而提高執(zhí)行效率和降低資源占用,使服務(wù)器性能得到提高。本文主要借鑒了z-Tree 的優(yōu)點(diǎn)并補(bǔ)足缺點(diǎn),實(shí)現(xiàn)Web 端的無人駕駛汽車的交通出行選擇行為實(shí)驗(yàn)平臺的設(shè)計(jì),主要功能是采集科學(xué)實(shí)驗(yàn)數(shù)據(jù)為今后構(gòu)建數(shù)學(xué)模型提供有利的科學(xué)依據(jù)。

圖1 系統(tǒng)架構(gòu)圖

1.1 界面介紹

管理員界面設(shè)計(jì)使用EasyUI+Jquery,主要是管理前臺數(shù)據(jù)與后臺數(shù)據(jù)庫的交互。界面可以在實(shí)驗(yàn)開始前設(shè)置參數(shù)和被試者人數(shù),并監(jiān)控整個實(shí)驗(yàn)過程,且每3 秒通過AJAX 請求對后臺人員信息、完成輪數(shù)和提交情況更新至前端。管理員界面的實(shí)驗(yàn)狀態(tài)框中有實(shí)驗(yàn)進(jìn)度總覽、登錄情況列表、提交情況列表三個選項(xiàng)卡,分別可以查看實(shí)驗(yàn)的進(jìn)度情況,其中登錄情況列表選項(xiàng)卡和提交情況列表選項(xiàng)卡可以更為詳細(xì)地看到人員信息。實(shí)驗(yàn)結(jié)束后,實(shí)驗(yàn)研究者在實(shí)驗(yàn)數(shù)據(jù)欄中的數(shù)據(jù)導(dǎo)出將本次實(shí)驗(yàn)的數(shù)據(jù)以Excel 形式或文本形式導(dǎo)出。

被試者界面主要是根據(jù)研究者的需求對實(shí)驗(yàn)參數(shù)等進(jìn)行設(shè)置包括出行時間及自動駕駛車輛選擇行為等的交通實(shí)驗(yàn),被試者通過用戶界面可以接受不同的交通實(shí)驗(yàn)。同時,研究者也可以對被試者界面靈活修改選擇內(nèi)容和反饋信息,例如每個被試者上一輪選擇、出行時間以及得分(報(bào)酬);或者顯示所有被試者的選擇結(jié)果等信息。

1.2 實(shí)驗(yàn)流程

后臺框架基于Django,使用MTV 架構(gòu)進(jìn)行平臺搭建,為保證數(shù)據(jù)安全傳輸,使用JSON 數(shù)據(jù)格式對實(shí)驗(yàn)數(shù)據(jù)進(jìn)行傳輸,首先通過Nginx 定位服務(wù)器集群,然后根據(jù)Uwsgi 進(jìn)行地址轉(zhuǎn)發(fā),Django 對收到請求進(jìn)行Urls 匹配找到對應(yīng)視圖函數(shù),視圖函數(shù)調(diào)用無人駕駛出行選擇算法,待數(shù)據(jù)進(jìn)行處理后放入MySQL 數(shù)據(jù)庫。算法執(zhí)行完畢后,視圖會返回模板信息和計(jì)算結(jié)果一并反饋到被試者界面使其查看相關(guān)信息,被試者再根據(jù)反饋的信息進(jìn)行下一輪實(shí)驗(yàn)選擇。實(shí)驗(yàn)流程圖如圖2 所示。

圖2 實(shí)驗(yàn)流程圖

2 應(yīng)用程序?qū)哟谓Y(jié)構(gòu)

2.1 Web框架設(shè)計(jì)

Web 應(yīng)用框架(Web Application Framework)是一種支持多語言相結(jié)合的開發(fā)框架,常用來支持網(wǎng)絡(luò)應(yīng)用程序、動靜態(tài)網(wǎng)站及網(wǎng)絡(luò)服務(wù)等的開發(fā)。實(shí)驗(yàn)平臺之所以采用Web 框架是是為了打破傳統(tǒng)的面對面的數(shù)據(jù)收集,更為方便實(shí)驗(yàn)研究者和被試者。本文采用的Django 框架是由Python 語言編寫而成,其采用了MTV 架構(gòu)模式,即模型M、模板T 以及視圖V,該模式既可以降低應(yīng)用系統(tǒng)各部分之間的耦合程度,也有利于各開發(fā)人員的分工合作,增強(qiáng)應(yīng)用系統(tǒng)的可維護(hù)性及可擴(kuò)展性。MTV 結(jié)構(gòu)如圖3 所示。

其中模型Model:主要負(fù)責(zé)業(yè)務(wù)對象和數(shù)據(jù)庫對象,處理與數(shù)據(jù)相關(guān)的所有事務(wù),包括如何存取以及如何驗(yàn)證有效。Model 是數(shù)據(jù)庫中的唯一標(biāo)識以及最權(quán)威的信息源,并包括實(shí)驗(yàn)中所有需要儲存的數(shù)據(jù)字段。為了創(chuàng)建模型,Djang 會根據(jù)Model 在數(shù)據(jù)庫中創(chuàng)建相對應(yīng)表,通常每個Model 與數(shù)據(jù)庫中的表示一一對應(yīng)的,再通過python manage.py makemigrations 和py?thon manage.py migrate 兩個語句進(jìn)行數(shù)據(jù)遷移,這就實(shí)現(xiàn)了不需要SQL 語言就可以創(chuàng)建數(shù)據(jù)庫的ORM 操作。模版Template:主要負(fù)責(zé)把實(shí)驗(yàn)頁面呈現(xiàn)給被試者,模板的設(shè)計(jì)方式實(shí)現(xiàn)MVT 中VT 的解耦,VT 有著N:M 的關(guān)系,一個V 可以調(diào)用任意T,一個T 可以供任意V 使用,使用Template 方法可以動態(tài)地生成HTML并包含所需HTML 輸出的動靜態(tài)部分內(nèi)容插入的模板特殊語法。視圖View:主要負(fù)責(zé)業(yè)務(wù)邏輯,View 往往可以看作是Model 和Template 之間的橋梁,在需要的時候調(diào)用適當(dāng)Model 和Template 的相關(guān)邏輯,用于封裝請求和響應(yīng)的邏輯,從數(shù)據(jù)庫中將數(shù)據(jù)處理后反饋給前端,也會將用戶的實(shí)驗(yàn)數(shù)據(jù)寫到數(shù)據(jù)庫中。

圖3 MTV框架結(jié)構(gòu)圖

此外,Django 還有一個urls 路由分發(fā)器,其作用是將每一個被試者的頁面請求分發(fā)給各個不同的View處理,View 再根據(jù)需求調(diào)用對應(yīng)的Model 和Template呈現(xiàn)給被試者。

2.2 交互技術(shù)

AJAX 是一種用于快速創(chuàng)建動態(tài)交互網(wǎng)站的異步技術(shù)。其技術(shù)可以使頁面動態(tài)完成異步更新,頁面效果比較友好不會出現(xiàn)卡頓現(xiàn)象,換而言之就是在不刷新頁面情況下,通過后臺與服務(wù)器進(jìn)行少量的數(shù)據(jù)傳輸,從而實(shí)現(xiàn)對網(wǎng)頁的部分?jǐn)?shù)據(jù)異步更新。

在本文中采用AJAX 技術(shù)主要是為了在不刷新整個頁面的同時動態(tài)獲取實(shí)驗(yàn)被試者登錄情況、提交情況以及被試者的實(shí)驗(yàn)界面能夠有良好的交互環(huán)境。當(dāng)所有的被試者在每一個輪中都提交本輪的出行行為選擇后,通過AJAX 的異步技術(shù)向后臺傳輸數(shù)據(jù),后臺計(jì)算完本輪的所有數(shù)據(jù)并存入數(shù)據(jù)庫后才會將上一輪的反饋信息呈現(xiàn)給用戶并進(jìn)行下一輪的出行行為選擇。平臺交互如圖4 所示。

圖4 平臺交互圖

在交互的過程中由于數(shù)據(jù)傳輸格式不同,JSON 數(shù)據(jù)格式在編碼難度、解碼難度、運(yùn)行速度、數(shù)據(jù)體積、描述性等方面優(yōu)于XML 數(shù)據(jù)格式,因此選用JSON 格式作為實(shí)驗(yàn)應(yīng)用平臺與被試者客戶端的數(shù)據(jù)傳輸格式比較合適。

2.3 Nginx+uWSGI的高并發(fā)處理

Nginx 是異步框架的網(wǎng)頁服務(wù)器,其功能豐富可作為HTTP 服務(wù)器和反向代理服務(wù)器,負(fù)責(zé)接被請求,主要特點(diǎn)是并發(fā)能力強(qiáng)、內(nèi)存占用少和處理異步請求等優(yōu)點(diǎn),支持高達(dá)50000 并發(fā)連續(xù)響應(yīng)。在服務(wù)器硬件配置同等,并發(fā)處理需求較高的情況下,與Apache 相比,Nginx 是本實(shí)驗(yàn)服務(wù)器的最佳選擇。

uWSGI 是一種Python 通訊協(xié)議,也是對開發(fā)人員比較友好的服務(wù)器,其主要特點(diǎn)是超快的性能、低內(nèi)存占用、可多App 管理,與Nginx 搭配使用,其遵循網(wǎng)絡(luò)層傳輸協(xié)議并對網(wǎng)絡(luò)端口進(jìn)行以及收發(fā)HTTP 協(xié)議數(shù)據(jù)。通訊過程是客戶端發(fā)送的HTTP 請求被Nginx 服務(wù)器接收后將請求轉(zhuǎn)發(fā)給uWSGI,然后uWSGI 再將請求轉(zhuǎn)發(fā)給實(shí)現(xiàn)uWSGI 協(xié)議的應(yīng)用程序,即Django。本文使用Nginx+uWSGI 處理高并發(fā),可以大大地?cái)U(kuò)展實(shí)驗(yàn)被試者的人數(shù),緩解服務(wù)器的承載問題。

3 數(shù)據(jù)處理

3.1 多并發(fā)處理

在本實(shí)驗(yàn)平臺我們將采用多并發(fā)處理,主要是因?yàn)樵诙鄠€被試者同時發(fā)出請求時,會出現(xiàn)資源競爭問題,那么為了解決該問題,平臺使用到了多并發(fā)處理,其處理時具有各個進(jìn)程間相互獨(dú)立的特點(diǎn),多進(jìn)程也可以充分利用CPU 多核服務(wù)對多數(shù)據(jù)進(jìn)行處理,這符合被試者之間數(shù)據(jù)不相通、多并發(fā)處理的需求。進(jìn)程的主要優(yōu)點(diǎn)是占用資源少、速度快,各進(jìn)程排隊(duì)進(jìn)行處理,有效地避免了資源競爭問題。多并發(fā)處理流程如圖5 所示。

圖5 多并發(fā)處理流程圖

進(jìn)程池可一次性開辟多個,被試者的請求按先后順序進(jìn)入隊(duì)列中排隊(duì)等待處理,由于最優(yōu)處理數(shù)量與硬件相關(guān),所以研究者盡可能使用配置較高的計(jì)算機(jī)。在并發(fā)處理進(jìn)程時,當(dāng)一個被試者的請求處理完成后程序會把相應(yīng)數(shù)據(jù)存入MySQL 數(shù)據(jù)庫內(nèi),同時釋放資源等待處理下一個被試者的數(shù)據(jù)。

3.2 多線程處理

由于在實(shí)驗(yàn)的進(jìn)行過程中,被試者提交請求的順序是亂序,所以平臺采用多線程處理。而線程在程序中是獨(dú)立的、并發(fā)的執(zhí)行流,與分隔的進(jìn)程相比,進(jìn)程中線程之間的隔離程度要小,它們共享內(nèi)存、文件句柄和其他進(jìn)程應(yīng)有的狀態(tài)。其主要特點(diǎn)是進(jìn)程之間是不可以共享內(nèi)存的,但線程之間共享內(nèi)存卻非常容易;在操作系統(tǒng)創(chuàng)建進(jìn)程時,需要為該進(jìn)程重新分配系統(tǒng)資源,但創(chuàng)建線程的代價則小得多;實(shí)現(xiàn)多任務(wù)處理的線程之間資源共享與Python 多線程利用CPU 進(jìn)行數(shù)據(jù)處理,多線程處理I/O 流較為密集的任務(wù)時效率頗高。因此,使用多線程來實(shí)現(xiàn)多任務(wù)并發(fā)執(zhí)行比使用多進(jìn)程的效率要高。Python 語言內(nèi)置了多線程功能支持,而不是單純地作為底層操作系統(tǒng)的調(diào)度方式。而被試者請求會隊(duì)列中進(jìn)行排隊(duì),各個線程的任務(wù)都將源源不斷地從等待處理隊(duì)列中提取請求并進(jìn)行數(shù)據(jù)處理,再將處理的結(jié)果逐個存放到已完成隊(duì)列中,最后從該隊(duì)列提取數(shù)據(jù)一并存入MySQL 數(shù)據(jù)庫中。這樣既提升了實(shí)驗(yàn)整體速率,被試者的等待時間也可以減少,多線程模型如圖6 所示。

4 結(jié)語

本文采用Django 和Nginx 框架構(gòu)建了含無人駕駛汽車的交通出行選擇行為實(shí)驗(yàn)平臺,此平臺具有耦合性低、可擴(kuò)展性強(qiáng)等優(yōu)點(diǎn),為實(shí)驗(yàn)研究者提供友好的管理環(huán)境,也易于二次開發(fā)。經(jīng)過測驗(yàn),未發(fā)生異常,表明平臺魯棒性較好,為后續(xù)開展實(shí)驗(yàn)提供先決條件。

猜你喜歡
被試者無人駕駛進(jìn)程
我們村的無人駕駛公交
無人駕駛車輛
科學(xué)(2020年3期)2020-11-26 08:18:28
無人駕駛公園
債券市場對外開放的進(jìn)程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
德西效應(yīng)
德西效應(yīng)
兒童花生過敏治療取得突破
為什么我們會忍不住發(fā)朋友圈?
奧秘(2016年3期)2016-03-23 21:58:57
社會進(jìn)程中的新聞學(xué)探尋
我國高等教育改革進(jìn)程與反思
陵川县| 金华市| 安仁县| 鲁山县| 亳州市| 甘孜| 成都市| 吉木萨尔县| 平和县| 奉化市| 吉水县| 普定县| 甘德县| 平罗县| 洛隆县| 弥勒县| 博乐市| 白朗县| 苍梧县| 仁寿县| 鄱阳县| 商都县| 博乐市| 昌都县| 平顶山市| 晋江市| 基隆市| 平舆县| 平泉县| 宣恩县| 台北县| 南京市| 雷州市| 灵山县| 南华县| 敦煌市| 辽中县| 汾西县| 南京市| 泊头市| 昭平县|