1. 程式人生 > >使用MATLAB模糊資料工具箱和simulink實現單交叉路口交通燈實時配時演算法(一)

使用MATLAB模糊資料工具箱和simulink實現單交叉路口交通燈實時配時演算法(一)

作者的碎碎念

        博主的本職工作是一名白帽子,前段時間由於某些原因研究了一點數學建模,故將自己的一點心得整理成教程,一是自己備忘,二是方便後來者。你問我為什麼研究數學建模?因為我有一顆愛折騰的心,哈哈哈

寫在前面

        本文是一篇針對數學建模初學者的入門性質教程,將分節介紹使用MATLAB模糊資料工具箱和simulink實現單交叉路口交通燈實時配時演算法,但是由於本人水平有限,難免有錯漏之處,歡迎各位大佬批評指正。

軟體版本:MATLAB 2015a

需要用到的資料:





正文

首先啟動MATLAB 2015a,在Command Window裡輸入fuzzy以開啟MATLAB模糊資料工具箱


預設只提供一個輸入,在本示例中需要2個輸入,故選擇Edit-Add Variable-Input來新增一個輸入(注意:為了方便區別這兩個輸入,我們應修改這兩個輸入Current Variable中的Name,這裡命名為L和G,對於output,我們也應重新命名,這裡命名為R)


雙擊任意一個輸入或輸出,彈出Membership Function Editor視窗,


可以看到已經預設提供了三個子函式,但本例中需要七個子函式,為了設定方便,建議先將自帶的子函式刪除,故點選Edit-Remove All MFs 後再點選Edit-Add MFs,設定Number of MFs為7

可以看到,我們的子函式已經新增好了,接下來將設定子函式名稱、論域、引數,L的設定參照表1,G的設定參照表2,R的設定參照表3(子函式名稱按照表中語言值來設定,論域分別按表1中排隊長度、表2中排隊長度差、表3中綠燈延時的取值範圍來設定),那麼引數該如何設定呢?設子函式取值為Y,設排隊長度、排隊長度差或者綠燈延時

為X

仔細觀察表我們會發現,每個語言值(或子函式)取非零值時都對應一個X的範圍,而且可以猜測,函式影象關於Y取1時對應的X對稱,舉個例子:表1中語言值M對應的值如下,params則應設定為[8 12 18],其中的12為M取1時所對應的排隊長度


對L、G、R分別設定好後如下圖所示


點選close,回到Fuzzy Logic Designer視窗,雙擊規則編輯器(輸入和輸出之間的白色方框),開啟Rule Editor介面,根據表4來編輯規則

分別選擇表4中L的各語言值和G的各語言值所對應的R的語言值,點選Add rule,即可新增規則,本例全部新增完後共有49條(注意,Connection 項應保持為and),設定完成後點選Close


至此模糊資料已經全部設定完畢,點選File-Export-To File匯出為檔案備用

        欲知後事如何,請聽下回分解,在下一篇博文中我將介紹如何在simulink中建立用於System Test的Model及System Test的配置