校园公交车管理系统设计
一、任務(wù)
通過信息網(wǎng)絡(luò)將現(xiàn)實校園的各種信息收集,整理,歸納,存儲,分析和優(yōu)化,進(jìn)而對校園的教學(xué)資源,校園環(huán)境等方面的實體和現(xiàn)象進(jìn)行模擬,仿真,表現(xiàn),分析和深入認(rèn)識。
為了方便大學(xué)生在校內(nèi)的出行,許多學(xué)校都建立了校內(nèi)公交車系統(tǒng),然而該系統(tǒng)的有效管理卻成了一大難題,表現(xiàn)在如何選取行駛路線、乘坐站點(diǎn)以及時間表。為了解決以上難題,改善服務(wù)質(zhì)量以及提高校園公交車的效率,以西安電子科技大學(xué)校內(nèi)公交車為實驗對象,通過采集和分析數(shù)據(jù),實地考察以及綜合分析,借助相關(guān)軟件平臺,設(shè)計出符合西電學(xué)生的校內(nèi)公交車管理系統(tǒng)。
?
二、實驗算法介紹
?
克魯斯卡爾(Kruskal)算法是實現(xiàn)圖的最小生成樹最常用的算法。其基本思想是,先構(gòu)造一個只含 n 個頂點(diǎn)、而邊集為空的子圖,把子圖中各個頂點(diǎn)看成各棵樹上的根結(jié)點(diǎn),之后,從網(wǎng)的邊集 E 中選取一條權(quán)值最小的邊,若該條邊的兩個頂點(diǎn)分屬不同的樹,則將其加入子圖,即把兩棵樹合成一棵樹,反之,若該條邊的兩個頂點(diǎn)已落在同一棵樹上,則不可取,而應(yīng)該取下一條權(quán)值最小的邊再試之。依次類推,直到森林中只有一棵樹,也即子圖中含有 n-1 條邊為止。
時間復(fù)雜度為為O(e^2), 使用并查集優(yōu)化后復(fù)雜度為 O(eloge),與網(wǎng)中的邊數(shù)有關(guān),適用于求邊稀疏的網(wǎng)的最小生成樹。
?
三、詳細(xì)設(shè)計
1、站點(diǎn)設(shè)計
我們先分析出人員分布比較聚集的地方,比如西電海棠,竹園,丁香三個宿舍區(qū)以及教學(xué)樓,家屬區(qū),結(jié)合路線分析,找出最合適的站點(diǎn)。我們選取了校內(nèi)的二十個站點(diǎn),分別為A棟教學(xué)樓、B棟教學(xué)樓、C棟教學(xué)樓、D棟教學(xué)樓、E棟教學(xué)樓、F棟教學(xué)樓、G棟教學(xué)樓、丁香、東門、體育場、信遠(yuǎn)樓、辦公輔樓、醫(yī)院、圖書館、大學(xué)生活動中心、家屬區(qū)A區(qū)、家屬區(qū)E區(qū)、海棠、竹園、遠(yuǎn)望谷體育館。
2、數(shù)據(jù)庫設(shè)計
我們對我校公交車及主要停靠站點(diǎn)進(jìn)行數(shù)據(jù)統(tǒng)計,建立校園數(shù)據(jù)庫。
ER圖:
?
?
一條記錄包含站點(diǎn)名、該站點(diǎn)區(qū)域人數(shù)占所有站點(diǎn)區(qū)域的總?cè)藬?shù)的百分比、 該站點(diǎn)與其它所有站點(diǎn)之間的距離、該站點(diǎn)到其它站點(diǎn)的人流量(從左至右依次)。
?
3、問題解決方案
根據(jù)兩個站點(diǎn)所在區(qū)域的人數(shù)占所有站點(diǎn)區(qū)域人數(shù)的百分比以及兩個站點(diǎn)之間的距離和兩個站點(diǎn)之間的人流量(人流量是雙向的)來確定一個站點(diǎn)到另一個站點(diǎn)的邊上權(quán)值,然后使用最小生成樹的克魯斯卡爾算法,因此,權(quán)值越小的邊越容易被選到,故權(quán)值的大小應(yīng)該和兩個站點(diǎn)所在區(qū)域的人數(shù)占總?cè)藬?shù)的百分比成反比,和兩個站點(diǎn)之間的距離正相關(guān),和兩個站點(diǎn)的人流量負(fù)相關(guān),按這種原則對確定權(quán)值的三個量每個乘以一個因子,然后將這三個量相加確定權(quán)值,構(gòu)造最小生成樹,因為公交線路的選擇應(yīng)該服務(wù)更多人,而且應(yīng)該走的路程還希望盡可能短,因此公交車走的路線應(yīng)該是最小生成樹中最長的那條路。由實驗可以得到的最優(yōu)路線就是:
?
東門→G棟教學(xué)樓→F棟教學(xué)樓→信遠(yuǎn)樓→竹園→海棠→B棟教學(xué)樓→圖書館→丁香→家屬區(qū)A區(qū)→家屬區(qū)E區(qū)→遠(yuǎn)望谷體院館→東門,正好再從遠(yuǎn)望谷體育館開到東門構(gòu)成一個完整的閉環(huán)。
?
四、實驗結(jié)果
由實驗可以得到的最優(yōu)路線是:
東門→G棟教學(xué)樓→F棟教學(xué)樓→信遠(yuǎn)樓→竹園→海棠→B棟教學(xué)樓→圖書館→丁香→家屬區(qū)A區(qū)→家屬區(qū)E區(qū)→遠(yuǎn)望谷體院館→東門
?
五、關(guān)鍵代碼
1 def krusual(): 2 Num_Edge = 0 3 MST_Edge = [] 4 n = 20 5 father.append(0) 6 for i in range(n): 7 father.append(i + 1) 8 # print s 9 10 Edge.sort(key=get_Key) 11 for e in Edge: 12 faU = findFather(e[0]) 13 faV = findFather(e[1]) 14 if faU != faV: 15 father[faU] = faV 16 Num_Edge += 1 17 MST_Edge.append(e) 18 if Num_Edge == n-1: 19 break 20 if Num_Edge != n-1: 21 return [] 22 else: 23 return MST_Edge 24
?
六、實驗總結(jié)
我們對學(xué)校內(nèi)人流量進(jìn)行了統(tǒng)計、站點(diǎn)之間距離進(jìn)行了測量,利用數(shù)據(jù)庫和算法知識,設(shè)計出了校園公交車管理系統(tǒng),選擇出了校園公交車的最優(yōu)行車路線。在解決實際問題時,需求分析是首要任務(wù),人流量和距離是我們進(jìn)行站點(diǎn)設(shè)計的重要指標(biāo)。下來是數(shù)據(jù)庫設(shè)計,在MySQL數(shù)據(jù)庫中建一張bus_station表,儲存站點(diǎn)名、該站點(diǎn)區(qū)域人數(shù)占所有站點(diǎn)區(qū)域的總?cè)藬?shù)的百分比、該站點(diǎn)與其它所有站點(diǎn)之間的距離、該站點(diǎn)到其它站點(diǎn)的人流量信息。將各個站點(diǎn)構(gòu)成的無向圖,利用鄰接矩陣表示,將采集到的數(shù)據(jù)通過計算轉(zhuǎn)化為權(quán)值,用克魯斯卡爾算法,選擇權(quán)值最小的邊,求出最小生成樹,得到我們所需要的最優(yōu)路線。
?
轉(zhuǎn)載于:https://www.cnblogs.com/ku1274755259/p/11108342.html
總結(jié)
以上是生活随笔為你收集整理的校园公交车管理系统设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何从Photoshop中提取笔刷到优动
- 下一篇: 鸿蒙os第一批到第四批要多久,鸿蒙值得期