基于NiosⅡ的單點(diǎn)自適應(yīng)控制器設(shè)計(jì)研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要 為了提高道路交叉口通行能力,設(shè)計(jì)了一種單點(diǎn)交叉口自適應(yīng)控制系統(tǒng)。系統(tǒng)采用SOPC方案,利用具有NiosⅡ軟核的FPGA芯片設(shè)計(jì)了控制器的硬件,井利用遺傳算法建立了信號(hào)配時(shí)優(yōu)化模型、VHDL語(yǔ)言進(jìn)行了遺傳算法的硬件化、C語(yǔ)言編寫(xiě)了單點(diǎn)自適應(yīng)控制器的程序。以成都市溫江區(qū)南熏-光華大道路口的實(shí)測(cè)數(shù)據(jù)為例,進(jìn)行軟硬件系統(tǒng)聯(lián)調(diào)的仿真實(shí)驗(yàn),獲得了交叉路口的信號(hào)配時(shí)優(yōu)化方案。仿真結(jié)果表明,通過(guò)采用優(yōu)化的方案進(jìn)行交叉口信號(hào)配時(shí)后,各進(jìn)口的車(chē)輛排隊(duì)為零。驗(yàn)證了基于NiosⅡ單點(diǎn)在線(xiàn)自適應(yīng)控制器的設(shè)計(jì)是有效的。
目前,解決城市交通擁堵,提高區(qū)域效益的重要手段之一是采用城市交通控制系統(tǒng)。單點(diǎn)交叉口控制是交通信號(hào)控制系統(tǒng)的最小單元,也是干線(xiàn)交叉口交通信息協(xié)調(diào)控制和區(qū)域交通信號(hào)控制系統(tǒng)的基礎(chǔ)。單點(diǎn)交叉口的在線(xiàn)式自適應(yīng)控制能根據(jù)前端檢測(cè)器得到的實(shí)時(shí)交通信息,自動(dòng)對(duì)交通信號(hào)控制的關(guān)鍵參數(shù)進(jìn)行調(diào)整,以達(dá)到改善交通通行狀況的目的,該方式將成為信號(hào)控制研究的主流?,F(xiàn)代電子系統(tǒng)設(shè)計(jì)的主要方向之一是采用SOPC(System on a Programmable Chip)實(shí)現(xiàn),SOPC技術(shù)的實(shí)現(xiàn)方式有3種,其中一種是用含有NiosⅡ軟核的FPGA芯片實(shí)現(xiàn)。因此,本文對(duì)基于NiosⅡ的單點(diǎn)自適應(yīng)控制器設(shè)計(jì)開(kāi)展了研究。
1 單點(diǎn)自適應(yīng)控制研究
單交叉路口信號(hào)配時(shí)方案的基本內(nèi)容是信號(hào)相位方案和信號(hào)基本控制參數(shù),本文側(cè)重于對(duì)信號(hào)相位方案進(jìn)行優(yōu)化。
1.1 自適應(yīng)信號(hào)機(jī)控制策略
本文用交叉口飽和度s作為選擇控制策略的參數(shù),將s分為(0,0.8),[0.8,0.9),[0.9,∞),3個(gè)區(qū)間,制定本自適應(yīng)信號(hào)機(jī)的控制策略。
當(dāng)車(chē)輛檢測(cè)器系統(tǒng)出現(xiàn)故障時(shí)執(zhí)行固定周期信號(hào)控制。若交叉口飽和度s的值為(0,0.8)就執(zhí)行感應(yīng)控制。若交叉口飽和度s的值為[0.8,0.9),就執(zhí)行單點(diǎn)在線(xiàn)的實(shí)時(shí)自適應(yīng)控制。若交叉口飽和度s為[0.9,∞)時(shí),交叉口已處于飽和,應(yīng)改善交叉口幾何條件及交通條件。
1.2 系統(tǒng)功能分析與整體設(shè)計(jì)
設(shè)計(jì)的信號(hào)機(jī)控制器模塊是交叉口信號(hào)燈控制系統(tǒng)的控制核心,其將控制信號(hào)燈控制及驅(qū)動(dòng)模塊、人機(jī)接口模塊、通信模塊、交通數(shù)據(jù)采集模塊和數(shù)據(jù)存儲(chǔ)模塊。
1.3 車(chē)輛檢測(cè)器安裝及作用
設(shè)計(jì)在一個(gè)交叉路口的每個(gè)進(jìn)口車(chē)道安裝基于電磁感應(yīng)原理的車(chē)輛檢測(cè)設(shè)備。當(dāng)有車(chē)經(jīng)過(guò)環(huán)形地感線(xiàn)圈時(shí),線(xiàn)圈的磁通量會(huì)發(fā)生變化,車(chē)輛檢測(cè)器將磁通量變化轉(zhuǎn)化為表示線(xiàn)圈上方有車(chē)存在或通過(guò)的開(kāi)關(guān)信號(hào)。每條進(jìn)口車(chē)道埋設(shè)兩個(gè)線(xiàn)圈,一個(gè)在停車(chē)線(xiàn)后100 m處,稱(chēng)作上游線(xiàn)圈。另一個(gè)在停車(chē)線(xiàn)前面2~4 m處,稱(chēng)作下游線(xiàn)圈。通過(guò)該方式可采集到交通流量、車(chē)輛的平均到達(dá)率和離開(kāi)率等交通數(shù)據(jù)。
由上游車(chē)輛檢測(cè)器得到的車(chē)輛數(shù)可計(jì)算出一個(gè)信號(hào)周期內(nèi)的車(chē)輛平均到達(dá)率,而從下游車(chē)輛檢測(cè)器得到的車(chē)輛數(shù)可計(jì)算出一個(gè)信號(hào)周期內(nèi)的車(chē)輛平均離開(kāi)率。
2 單點(diǎn)實(shí)時(shí)自適應(yīng)控制器設(shè)計(jì)
選用Altera的FPGA器件CycloneⅡ系列EP2C35F672C8芯片為核心進(jìn)行了基于NiosⅡ的單點(diǎn)自適應(yīng)控制器設(shè)計(jì)研究。使用的軟件有Quartus Ⅱ7.2和NiosⅡ7.2IDE,采用VHDL語(yǔ)言來(lái)實(shí)現(xiàn)遺傳算法的各個(gè)模塊,然后將遺傳算法生成一個(gè)Symbol后,結(jié)合Quartus內(nèi)的SOPC Builder來(lái)產(chǎn)生一個(gè)SOPC,隨后在Nios內(nèi)搭建一個(gè)軟件系統(tǒng)來(lái)控制遺傳算法、各交通燈和計(jì)時(shí)數(shù)碼管的工作,并結(jié)合實(shí)驗(yàn)開(kāi)發(fā)板,得到預(yù)期結(jié)果。
2.1 單點(diǎn)自適應(yīng)控制信號(hào)機(jī)硬件構(gòu)成
一套完整的單點(diǎn)自適應(yīng)控制信號(hào)機(jī)應(yīng)具備電源模塊、交通數(shù)據(jù)采集模塊、信號(hào)機(jī)控制器模塊、信號(hào)燈控制及驅(qū)動(dòng)模塊及通信模塊等,其連接關(guān)系如圖1所示。
2.2 遺傳算法優(yōu)化模塊設(shè)計(jì)
本文提出的單點(diǎn)自適應(yīng)控制是以各路口車(chē)輛滯留數(shù)總和最小情況下為各相位配時(shí),基于車(chē)輛檢測(cè)器來(lái)測(cè)量每個(gè)相位在各自周期的到達(dá)車(chē)輛數(shù)和離開(kāi)車(chē)輛數(shù),以此來(lái)計(jì)算出各相位的到達(dá)率和離開(kāi)率,再結(jié)合分配的時(shí)間就可預(yù)測(cè)出下一周期各相位時(shí)間的具體分配,利用遺傳算法來(lái)進(jìn)行配時(shí)方案的最優(yōu)化處理。
2.2.1 遺傳算法配時(shí)優(yōu)化模型
以單個(gè)交叉路口4個(gè)相位配時(shí)時(shí)間t1、t2、t3、t4這4個(gè)變量的優(yōu)化為例,介紹了優(yōu)化模型的建立。
為簡(jiǎn)化問(wèn)題,可將4變量求極小值的問(wèn)題簡(jiǎn)化為3變量求極小值問(wèn)題。即以t1、t2、t3為自變量,將問(wèn)題化為以下3個(gè)變量極小值問(wèn)題
其中,i=1,2,3,4;j=1,2,3,4;k=1,2,3。當(dāng)i=1時(shí),
為第x-1個(gè)周期、第j個(gè)方向、第k個(gè)車(chē)道、第4相位滯留的車(chē)輛數(shù);ti為交叉路口各相位的配時(shí),T=t1+t2+t3+t4;rijk表示第i個(gè)相位、第j個(gè)方向、第k個(gè)車(chē)道的車(chē)輛到達(dá)率;dijk表示在綠燈期間內(nèi),放行車(chē)輛在第i個(gè)相位、第j個(gè)方向、第k個(gè)車(chē)道駛離路口的離開(kāi)率;Pijk表示車(chē)輛通行狀態(tài),Pijk=1表示第i相位、第j方向、第k車(chē)道車(chē)輛放行,Pijk=0表示第i相位、第j方向、第k車(chē)道車(chē)輛禁止放行。
采用遺傳算法做最優(yōu)化求解,需將極小值問(wèn)題轉(zhuǎn)化為極大值問(wèn)題。所以,將目標(biāo)函數(shù)進(jìn)行變換得到適應(yīng)度函數(shù)如下
其中,S是滯留路口車(chē)輛數(shù)。在求解過(guò)程中,需對(duì)每個(gè)個(gè)體進(jìn)行適應(yīng)度計(jì)算,其適應(yīng)度值越高則個(gè)體越優(yōu)。
2.2.2 遺傳算法優(yōu)化配時(shí)程序設(shè)計(jì)
遺傳算法的基本步驟包括編碼、產(chǎn)生初始種群、計(jì)算適應(yīng)度、選擇、單點(diǎn)交叉和基本位變異等;按此設(shè)計(jì)出遺傳算法優(yōu)化配時(shí)程序的流程如圖2所示。
2.2.3 遺傳算法硬件化
雖然遺傳算法具有諸多優(yōu)點(diǎn),且在眾多優(yōu)化問(wèn)題中均有成功應(yīng)用,但基本遺傳算法本身存在著不足。例如局部搜索能力差、存在未成熟收斂和隨機(jī)漫游等現(xiàn)象,導(dǎo)致算法的收斂性能差,需較長(zhǎng)時(shí)間才能找到最優(yōu)解。尤其是在一些對(duì)實(shí)時(shí)性要求較高的場(chǎng)合,遺傳算法的運(yùn)行時(shí)間成為了一個(gè)致命的缺點(diǎn)。遺傳算法的運(yùn)行時(shí)間受到適應(yīng)度函數(shù)和本質(zhì)是串行計(jì)算的計(jì)算機(jī)限制。
所以,本質(zhì)是并行運(yùn)行的FPGA在實(shí)現(xiàn)遺傳算法時(shí)就具有較大優(yōu)勢(shì)。遺傳算法的硬件化和遺傳算法的本質(zhì)思想一致,其包含初始化模塊、適應(yīng)度模塊、隨機(jī)數(shù)模塊、選擇模塊、交叉模塊和變異模塊。此外,還添加了存儲(chǔ)個(gè)體及個(gè)體適應(yīng)度值的存儲(chǔ)模塊,地址產(chǎn)生模塊和控制算法在選擇、交叉、變異循環(huán)執(zhí)行的控制模塊等。利于VHDL語(yǔ)言編寫(xiě)程序?qū)崿F(xiàn)如下模塊:
(1)初始化模塊。在接收到系統(tǒng)復(fù)位信號(hào)結(jié)束后,就初始化個(gè)體,產(chǎn)生個(gè)體及存儲(chǔ)個(gè)體的存儲(chǔ)器地址,本系統(tǒng)里是每次初始化后產(chǎn)生64個(gè)個(gè)體及相應(yīng)的64個(gè)地址。
(2)適應(yīng)度模塊。即計(jì)算每個(gè)個(gè)體的適應(yīng)度值,并輸出到存儲(chǔ)模塊。
(3)存儲(chǔ)模塊。分別為存儲(chǔ)個(gè)體的RAM1和存儲(chǔ)適應(yīng)度值的RAM2,RAM的容量為個(gè)體的一倍,即128,因?yàn)槌跏蓟a(chǎn)生的父代為64個(gè),經(jīng)變異后的子代也會(huì)有64個(gè),然后通過(guò)存儲(chǔ)地址在一定規(guī)律的變化下,新的子代不停替換父代來(lái)求得最優(yōu)解。RAM直接調(diào)用QuartusⅡ內(nèi)的IP核。
(4)選擇模塊。為選擇出輸入到選擇模塊中適應(yīng)度較小的個(gè)體和其適應(yīng)度,輸入的個(gè)體為隨機(jī)產(chǎn)生的地址在RAM中隨機(jī)選擇的個(gè)體,輸出的個(gè)體按適應(yīng)度的大小來(lái)比較后產(chǎn)生并輸出。
(5)交叉模塊。為了將輸入的兩個(gè)個(gè)體按照產(chǎn)生的隨機(jī)數(shù)來(lái)進(jìn)行交叉,如產(chǎn)生的隨機(jī)數(shù)為4,則個(gè)體1和個(gè)體2的后5位互相交叉,以此來(lái)產(chǎn)生新個(gè)體。因?qū)嶋H中最大值限制為31,所以每個(gè)個(gè)體的第7至第5位不進(jìn)行交叉。選擇的概率為0.875,即二進(jìn)制的11100000,當(dāng)小于其就進(jìn)行交叉,否則不交叉。
(6)變異模塊。即將輸入的兩個(gè)個(gè)體按照設(shè)置好的變異準(zhǔn)則變異,本文的變異規(guī)則為,在小于變異概率0.0703,即00010010,個(gè)體的第4位和第1位取反。當(dāng)大于變異概率時(shí)則不變異。
(7)地址產(chǎn)生模塊。主要有兩部分:一部分為選擇個(gè)體時(shí)的地址;另一部分為變異后存儲(chǔ)個(gè)體的地址。
(8)隨機(jī)數(shù)模塊。1)產(chǎn)生選擇個(gè)體時(shí)的隨機(jī)數(shù)地址,隨機(jī)數(shù)模塊;2)產(chǎn)生供選擇模塊、變異模塊的概率及變異位。
(9)輸出模塊。當(dāng)?shù)竭_(dá)進(jìn)化代數(shù)后,輸出最優(yōu)值。
(10)控制模塊。初始化模塊結(jié)束后,產(chǎn)生信號(hào)使選擇模塊開(kāi)始工作,選擇模塊選擇完兩個(gè)個(gè)體后返回信號(hào)至控制模塊,而后選擇模塊停止工作,交叉模塊開(kāi)始運(yùn)行,當(dāng)交叉完兩個(gè)個(gè)體后,返回信號(hào)給控制模塊,并運(yùn)行變異模塊,變異完兩個(gè)個(gè)體后返回信號(hào)給控制模塊,存儲(chǔ)個(gè)體,同時(shí)判斷是否為到達(dá)進(jìn)化代數(shù),若沒(méi)有,則返回到選擇模塊,若到達(dá)進(jìn)化代數(shù)則停止所有模塊的工作。
最終生成的遺傳算法硬件實(shí)時(shí)模塊,如圖3所示。
2.3 信號(hào)機(jī)控制器模塊搭建
利用QuartusⅡ7.2、SOPC Builder進(jìn)行硬件電路開(kāi)發(fā),完成CPU軟核配置、接口電路等的搭建,并進(jìn)行編譯,系統(tǒng)電路如圖4所示。
本控制器的軟件主要采用C語(yǔ)言在NiosⅡIDE下編寫(xiě)和調(diào)試。軟件包括主函數(shù)和11個(gè)自定義函數(shù)。
將設(shè)計(jì)結(jié)果燒寫(xiě)到一個(gè)NiosⅡ開(kāi)發(fā)板上的EP2C35P672C8芯片,成功搭建了信號(hào)機(jī)控制器模塊硬件,并用具有開(kāi)關(guān)、按鍵、LED、數(shù)碼管和接口電路等的模塊電路進(jìn)行信號(hào)控制的軟硬件實(shí)驗(yàn)驗(yàn)證。本文設(shè)計(jì)的信號(hào)機(jī)控制器將遺傳算法硬件化后,完成一次配時(shí)方案優(yōu)化的運(yùn)行時(shí)間由原有的幾百s減少到了ms級(jí)。
3 優(yōu)化效果分析
文中前期對(duì)成都市溫江區(qū)主城區(qū)的主要信號(hào)交叉口進(jìn)行了大量的交通調(diào)查,并進(jìn)行了數(shù)據(jù)整理與分析。利用這些實(shí)測(cè)數(shù)據(jù)對(duì)本設(shè)計(jì)的單點(diǎn)交叉口自適應(yīng)控制器進(jìn)行了仿真模擬運(yùn)行,對(duì)幾個(gè)重要交叉路口進(jìn)行優(yōu)化后均能得到最優(yōu)配時(shí)方案,且可使得這些路口在下一個(gè)周期的車(chē)輛排隊(duì)長(zhǎng)度為零。以南熏-光華路口為例,原配時(shí)方案為:總周期T=130 s;南北方向:直行綠燈47 s。黃燈3 s,左行27 s,黃燈3 s;東西方向:直行綠燈27 s,黃燈3 s,左行綠燈17 s,黃燈3 s。
對(duì)南熏-光華路口高峰時(shí)段測(cè)得的車(chē)流量數(shù)據(jù)和某周期剩余排隊(duì)車(chē)輛長(zhǎng)度的情況結(jié)果統(tǒng)計(jì),如表1所示。
從以上數(shù)據(jù)可得到車(chē)輛的平均到達(dá)率和離開(kāi)率及上一周期滯留車(chē)輛數(shù)等信息,進(jìn)行遺傳算法優(yōu)化后得到結(jié)果。相位配時(shí)方案:總周期T=112 s;南北方向:直行綠燈20 s,黃燈3 s,左行20 s,黃燈3 s;東西方向:直行綠燈20 s,黃燈3 s,左行綠燈40 s,黃燈3 s。
利用該配時(shí)方案進(jìn)行模擬計(jì)算得知,在同樣的車(chē)輛到達(dá)情況下,各相位的車(chē)輛排隊(duì)長(zhǎng)度均為零。上述結(jié)果表明,單交叉口自適應(yīng)控制程序采用遺傳算法進(jìn)行信號(hào)配時(shí)方案優(yōu)化的有效性。
4 結(jié)束語(yǔ)
本文研究結(jié)果表明,基于NiosⅡ的單點(diǎn)自適應(yīng)控制器設(shè)計(jì)的可行性與有效性。此外,文中實(shí)現(xiàn)了SOPC采用基于FPGA的嵌入IP軟核的方式,并利用NiosⅡ?qū)崿F(xiàn)了CPU系統(tǒng)控制VHDL語(yǔ)言的遺傳算法硬件模塊,完成了對(duì)交通信號(hào)燈的控制。