uppaal是由瑞典Uppsala大學的信息技術學院和丹麥Aalborg大學計算科學學院聯合開發的一個集成工具環境,被用來對轉換時間自動機網絡模型的實時系統進行建模、仿真和驗證。與其他模型檢測工具相比,uppaal有很好的高效性和實用性。時間自動機是一個有時鐘變量擴展的有限狀態機,它使用時間變量評估爲實數的密集時間模型,所有時鐘同步進行。在uppaal中,一個系統被模擬成一個並行的幾個這樣的時間自動機網絡。系統的狀態由所有自動機的位置,時鐘值和離散變量的值來定義。每個自動機可能會分別觸發一個邊或與另一個自動機同步,從而導致一個新的狀態。
該博文的模型在uppaal4.0.14上實現,uppaal有三部分組成:編輯器、模擬器、驗證器。這三部分的功能分別是:
- 編輯器對模型進行編輯,並進行系統聲明和模型聲明。編輯器分爲兩部分:訪問不同模板和聲明的樹窗格以及繪圖畫布/文本編輯器。
- 模擬器對建立好的模型進行仿真,若所建立的模型符合語法要求,則模型會成功上傳並仿真出結果;
- 驗證器對模型應該滿足的性質進行驗證。
該模型有四列火車和一個門組成,在一個時間點只能有一輛火車通過門,下面是建模、仿真、模型性質驗證的過程:
建立模型
- 首先建立火車(train)的模型,並分別進行模板聲明和變量聲明,如下圖所示:
- 建立門(gate)的模型,並進行變量聲明,如下圖所示:
- 建立控制器隊列的模型(IntQueue),並分別進行模板聲明和變量聲明,如下圖所示:
圖5 IntQueue模型的局部變量聲明
- 模型聲明和系統聲明,如圖6所示。模型聲明裏列出模板實例,系統聲明裏列出組成系統的一個或多個進程。
- 聲明系統的全局變量,如圖7所示:
模型仿真
如圖8所示,爲仿真出來的四列火車uppaal模型:
圖8 四列火車的uppaal模型
圖9爲四輛火車在行駛過程中的調度過程:
圖9 模型的調度過程
模型的性質驗證
圖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可以過橋,可以用同樣的方法檢測其他火車。