四列火車的uppaal模型的實現實例和性質驗證

uppaal是由瑞典Uppsala大學的信息技術學院和丹麥Aalborg大學計算科學學院聯合開發的一個集成工具環境,被用來對轉換時間自動機網絡模型的實時系統進行建模、仿真和驗證。與其他模型檢測工具相比,uppaal有很好的高效性和實用性。時間自動機是一個有時鐘變量擴展的有限狀態機,它使用時間變量評估爲實數的密集時間模型,所有時鐘同步進行。在uppaal中,一個系統被模擬成一個並行的幾個這樣的時間自動機網絡。系統的狀態由所有自動機的位置,時鐘值和離散變量的值來定義。每個自動機可能會分別觸發一個邊或與另一個自動機同步,從而導致一個新的狀態。

     該博文的模型在uppaal4.0.14上實現,uppaal有三部分組成:編輯器、模擬器、驗證器。這三部分的功能分別是:

  1. 編輯器對模型進行編輯,並進行系統聲明和模型聲明。編輯器分爲兩部分:訪問不同模板和聲明的樹窗格以及繪圖畫布/文本編輯器。
  2. 模擬器對建立好的模型進行仿真,若所建立的模型符合語法要求,則模型會成功上傳並仿真出結果;         
  3. 驗證器對模型應該滿足的性質進行驗證。

  該模型有四列火車和一個門組成,在一個時間點只能有一輛火車通過門,下面是建模、仿真、模型性質驗證的過程:

  建立模型
  • 首先建立火車(train)的模型,並分別進行模板聲明和變量聲明,如下圖所示:
   
   圖1  train模型和模型中的變量聲明

圖2  train模型的局部變量聲明

  •  建立門(gate)的模型,並進行變量聲明,如下圖所示:
 
圖3  gate模型和模型中的變量聲明
  • 建立控制器隊列的模型(IntQueue),並分別進行模板聲明和變量聲明,如下圖所示:
     圖4  IntQueue模型和模型中的變量聲明


                                                               圖5   IntQueue模型的局部變量聲明                                                

  •  模型聲明和系統聲明,如圖6所示。模型聲明裏列出模板實例,系統聲明裏列出組成系統的一個或多個進程。
              
                                                                      圖6   模型聲明和系統聲明
  •  聲明系統的全局變量,如圖7所示:
              
                                                                       圖7  系統的全局變量聲明   
模型仿真

如圖8所示,爲仿真出來的四列火車uppaal模型:


圖8  四列火車的uppaal模型

圖9爲四輛火車在行駛過程中的調度過程:


圖9  模型的調度過程

模型的性質驗證

圖10中分別對模型應該滿足標準和性質進行驗證:

              
                                                                        圖10  對模型的性質進行驗證     
  • 性質A[] Queue.list[N-1]== 0  表示隊列中不可能有N個元素,即數組永遠不會溢出。實際上,模型定義了N作爲火車的數量+ 1來檢查這個屬性。可以使用與列車數量匹配的隊列長度來檢查此屬性,易知,模型應該滿足這個性質。
  • 性質A[] Train1.Cross+Train2.Cross+Train3.Cross+Train4.Cross<=1表示在任何時候只有一列火車通過橋。 該表達式使用Train1.Cross來評估結果的真或假,即1或0。易知,模型應該滿足這個性質。
  • 性質E<>Train1.Cross and Train2.Stop and Train3.Stop and Train4.Stop表示火車1可以過橋,火車2、3、4正在等待過橋,其他火車具有相似的性質。
  • 性質E<>Train1.Cross and Train2.Stop表示列車1可以過橋,而火車2正在等待過橋,其他火車具有相似的性質。
  • 性質E<>Train1.Cross表示火車1可以過橋,可以用同樣的方法檢測其他火車。
發佈了9 篇原創文章 · 獲贊 5 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章