999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

含無人駕駛汽車的交通出行選擇行為實驗平臺設計與實現

2020-06-15 12:04:50李文韜謝小紅孫曉燕
現代計算機 2020年13期
關鍵詞:進程數據庫實驗

李文韜,謝小紅,孫曉燕

(1.南寧師范大學計算機與信息工程學院,南寧 530299;2.廣西財經學院管理科學與工程學院,南寧 530003)

0 引言

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

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

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

1 系統架構設計

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

圖1 系統架構圖

1.1 界面介紹

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

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

1.2 實驗流程

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

圖2 實驗流程圖

2 應用程序層次結構

2.1 Web框架設計

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

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

圖3 MTV框架結構圖

此外,Django 還有一個urls 路由分發器,其作用是將每一個被試者的頁面請求分發給各個不同的View處理,View 再根據需求調用對應的Model 和Template呈現給被試者。

2.2 交互技術

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

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

圖4 平臺交互圖

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

2.3 Nginx+uWSGI的高并發處理

Nginx 是異步框架的網頁服務器,其功能豐富可作為HTTP 服務器和反向代理服務器,負責接被請求,主要特點是并發能力強、內存占用少和處理異步請求等優點,支持高達50000 并發連續響應。在服務器硬件配置同等,并發處理需求較高的情況下,與Apache 相比,Nginx 是本實驗服務器的最佳選擇。

uWSGI 是一種Python 通訊協議,也是對開發人員比較友好的服務器,其主要特點是超快的性能、低內存占用、可多App 管理,與Nginx 搭配使用,其遵循網絡層傳輸協議并對網絡端口進行以及收發HTTP 協議數據。通訊過程是客戶端發送的HTTP 請求被Nginx 服務器接收后將請求轉發給uWSGI,然后uWSGI 再將請求轉發給實現uWSGI 協議的應用程序,即Django。本文使用Nginx+uWSGI 處理高并發,可以大大地擴展實驗被試者的人數,緩解服務器的承載問題。

3 數據處理

3.1 多并發處理

在本實驗平臺我們將采用多并發處理,主要是因為在多個被試者同時發出請求時,會出現資源競爭問題,那么為了解決該問題,平臺使用到了多并發處理,其處理時具有各個進程間相互獨立的特點,多進程也可以充分利用CPU 多核服務對多數據進行處理,這符合被試者之間數據不相通、多并發處理的需求。進程的主要優點是占用資源少、速度快,各進程排隊進行處理,有效地避免了資源競爭問題。多并發處理流程如圖5 所示。

圖5 多并發處理流程圖

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

3.2 多線程處理

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

4 結語

本文采用Django 和Nginx 框架構建了含無人駕駛汽車的交通出行選擇行為實驗平臺,此平臺具有耦合性低、可擴展性強等優點,為實驗研究者提供友好的管理環境,也易于二次開發。經過測驗,未發生異常,表明平臺魯棒性較好,為后續開展實驗提供先決條件。

猜你喜歡
進程數據庫實驗
記一次有趣的實驗
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
做個怪怪長實驗
數據庫
財經(2017年2期)2017-03-10 14:35:35
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
社會進程中的新聞學探尋
民主與科學(2014年3期)2014-02-28 11:23:03
主站蜘蛛池模板: 无码在线激情片| 国产午夜无码专区喷水| 国产老女人精品免费视频| 丰满少妇αⅴ无码区| 日韩视频免费| 国产精品青青| 婷婷亚洲天堂| 蜜桃视频一区二区三区| 亚洲欧州色色免费AV| 日韩精品一区二区三区中文无码 | 国产三级精品三级在线观看| 国产美女主播一级成人毛片| 国产午夜不卡| 日韩精品亚洲精品第一页| 精品国产一区二区三区在线观看 | 亚洲资源站av无码网址| 欧美成一级| 国产成人艳妇AA视频在线| 播五月综合| 农村乱人伦一区二区| 直接黄91麻豆网站| 青青青国产在线播放| 国产精品亚欧美一区二区| 欧美日韩一区二区在线播放| 一级爱做片免费观看久久| 99无码熟妇丰满人妻啪啪| 日韩国产欧美精品在线| 色天天综合久久久久综合片| 在线色综合| 国产精品原创不卡在线| 91人妻日韩人妻无码专区精品| 热久久综合这里只有精品电影| 国产黑人在线| 91毛片网| 99久久亚洲综合精品TS| 久久这里只精品国产99热8| 国产亚洲精品在天天在线麻豆| 91精品久久久久久无码人妻| 成年免费在线观看| 国产SUV精品一区二区6| 99热这里只有免费国产精品| 欧亚日韩Av| 亚洲精品无码专区在线观看 | 日日拍夜夜操| 欧洲高清无码在线| 真人免费一级毛片一区二区| 一本大道香蕉久中文在线播放| 午夜丁香婷婷| 国产十八禁在线观看免费| 中国国产高清免费AV片| 9966国产精品视频| 欧美午夜视频在线| 亚洲精品午夜天堂网页| 高清不卡毛片| 中文字幕在线观| 中文字幕 91| 欧美一级大片在线观看| 日韩色图在线观看| 成人免费网站在线观看| 久久精品中文字幕少妇| 青青青草国产| 中文字幕亚洲另类天堂| 操国产美女| 国精品91人妻无码一区二区三区| 国产丝袜无码精品| 亚洲无线视频| 永久在线播放| 69免费在线视频| 亚洲成人一区二区三区| 欧美视频在线不卡| 无码精品福利一区二区三区| 久久黄色免费电影| 日本高清成本人视频一区| 国产大片喷水在线在线视频| igao国产精品| 国产午夜不卡| 黄色福利在线| 五月六月伊人狠狠丁香网| 亚洲女同一区二区| 在线a网站| 亚洲国产成人精品一二区| 99精品福利视频|