天天看點

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.7 時間模型

本節書摘來自華章出版社《資訊實體融合系統(cps)設計、模組化與仿真——基于 ptolemy ii 平台》一書中的第1章,第1.7節,作者:[美]愛德華·阿什福德·李(edward ashford lee),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

有些計算模型有時間(time)概念。具體來說,這意味着角色間的通信和角色所執行的計算是在一個邏輯時間軸上的。更具體地說,這意味着将有這樣一個概念:兩個動作(通信和計算)要麼按時間順序發生(一個發生在另一個之前),要麼同時發生(并發)。另外時間概念也可能有個度量工具,這意味着兩個動作之間的時間間隔可以被測量。

ptolemy ii為互操作性提供的一種很關鍵的機制就是時間概念的一緻性。甚至當我們将不涉及時間概念的模型(比如資料流模型和有限狀态機模型)和對時間概念有很強依賴的模型(比如離散事件模型和連續時間模型)進行結合時,該機制仍然有效。本節将概述這種機制的關鍵特征。

1.7.1 階層化時間

在1.5節和1.6節讨論的層次結構模型是時間管理的核心。通常,隻有頂層訓示器進行時間的推進。模型中的其他訓示器從閉合訓示器(enclosing director)中擷取目前的模型時間。如果頂層訓示器沒有實作一個計時模型,那麼時間不會被推進。是以,計時模型通常包含了一個已實作計時模型的訓示器。

計時和不計時的計算模型可能在層次結構中是交叉的。然而,在稍後的讨論中确實有些不合理又特别有用的組合,特别是第8章中讨論的模态模型。

在一個模型中,時間的推進可能是不同的。在第8章的模态模型中,時間的推進可以在子模型中臨時暫停(lee and tripakis,2010)。更為普遍的是,按照第10章的解釋,在層次結構的不同層中時間會按不同速率推進。該特征在分布式系統的模組化中特别有用,說明在分布式系統中要保持完全一緻的統一時間在實體上是不可能的。因為存在時間多樣性(multiform time),是以模型隻能高度逼近真實,即明确承認時間隻能被不完美地測量。

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.7 時間模型
《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.7 時間模型

圖1-6 彙總計算模型之間的關系(本書詳細介紹了加粗框内的模型)

1.7.2 超密時間

除了提供多樣時間(multiform time)模型外,ptolemy ii還提供了一種稱為超密時間

(superdensetime)的時間模型(manna and pnueli,1993;maler et al.,1992;lee and zheng,2005;cataldo et al,2006)。超密時間的值是一值對(t, n),稱為時間戳(timestamp),t是模型時間,n是微步(microstep,也稱為索引(index))。模型時間代表事件發生的時間,微步代表在相同模型時間上發生事件的順序。即使n1≠n2,兩個時間戳(t, n1)和(t, n2)也能解讀為同時(simultaneous)(在很弱的意義下)。較強意義的同時性(simultaneity)需要時間戳完全相等(模型時間和微步都相等)。通過下例來闡述超密時間如何取值。

例1.3 為了了解微步的作用,首先來考慮牛頓擺,如圖1-5所示,有一個在細繩上懸挂5個鋼球的玩具。如果擡起第一個球并釋放它,它會撞擊第二個球,但第二個球不會動而第五個球會上升。

考慮第二個球的動量p,将其視為時間的函數。第二個球不會移動,是以它的動量必須處處為零。

但是第一個球的動量是通過第二個球轉移到第五個球,是以動量不可能總是零。令r代表實數。令p:r→r代表第二個球的動量函數,令τ表示撞擊發生的時間。于是

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.7 時間模型

(1-1)

對一些常量p和所有的t∈r。在時間τ的瞬間前後,球的動量都為零,但是時間τ上,球的動量和速度成正比,是以

《資訊實體融合系統(CPS)設計、模組化與仿真——基于 Ptolemy II 平台》——1.7 時間模型

其中x(0)是初始位移。在任意時刻t式(1-2)給出的函數的積分都為零,是以球不會移動,盡管那個瞬間球的動量不為零。

上述實體模型的主要工作是描述實體現象,但是有兩個缺陷。首先,它違反了動量守恒定律的基本實體原理。在碰撞的瞬間,中間的三個球都會同時獲得非零動量,是以看起來總動量是神奇地增加了。第二,該模型不能直接轉換為一種離散的表示。

對于一個信号來說,它的離散表示是指其值按照時間順序分散排列。(數學細節請參看9.2.1節的補充閱讀)。任何如式(1-1)的動量表示和式(1-2)的速度表示都是模棱兩可的。如果序列不包含碰撞時間上的值,那麼這種表示就無法捕捉到動量是通過球來轉移這一事實。如果序列包含碰撞時間上的值,那麼這種表示就不能與在某段時間間隔上有非零動量的信号表示相區分,由此會建立移動球的模型。在這樣的離散表示下,沒有語義能區分瞬時事件和迅速變化的連續事件。

超密時間能解決這兩個問題。具體來說,第二個球的動量可以明确地表示為一系列的樣本,其中p(τ,0)=0,p(τ,1) =p,p(τ,2)=0,τ表示碰撞的時間,第三個球隻有在超密時間(τ,2)才有非零動量。在碰撞時,每個球最初動量為零,然後為非零,然後又變成零,所有狀态瞬間完成。對于中間的三個球來說,有非零動量的事件是弱同時性的,但不是強同時性的(strongly simultaneous)。這樣動量是守恒的,模型是明确、無歧義和離散的。

有人會說實體系統實際上不是離散的。即使做工精良的鋼球也會發生形變,是以碰撞實際上是連續的過程,而不是離散事件。雖然該話是正确的,但是在模組化時,并不希望進行形式主義的模組化來強行建立一個“詳細的模型”而非“适當的模型”。這樣一個“詳細的”牛頓擺模型将會非常複雜,并産生非常難以分析的非線性動态力學分析。這樣,模型的保真度(fidelity)會提高,但是它的可了解性和可分析性卻相當低。

上面的例子表明,一個包含瞬時事件的實體過程最好采用p:r×n→r的形式來模組化,而不是更為傳統的p:r→r來模組化,其中n是自然數。後者用于對連續過程模組化是足夠的,但對離散事件模組化就有所不足。在任意時間t∈r,信号都有一個值序列,該序列是根據微步來排序的。這個信号不能被了解為一個迅速變化的連續信号。

如果t1=t2,也就是說兩個時間戳(t1,n1)和(t2,n2)是弱同時性的(weaklysimu ltaneous),此外,如果還有n1=n2,那就是強同時性的(stronglysimultaneous)。

這樣就可以對因果相關,但具有弱同時性事件進行表示在時間戳(t,n1)和(t,n2)上其中n1≠n2,信号可能包含兩種不同的事件。信号可能是以包含了具有弱同時性但又彼此不同的事件。兩個不同信号可能包含強同時性的事件,但一個單獨信号不可能包含兩個不同的強同時性的事件。這個時間模型明确無歧義地表示了離散事件、連續時間中的非連續信号以及離散信号中的瞬時事件(zero-time event)序列。

超密時間是按字典序(lexicographically)排列的(如同字典),這意味着如果t11.7.3 時間的數字表示

計算機不能完美地表示實數,是以(t,n)∈r×n形式的時間戳無法實作。許多軟體系統利用雙精度浮點數來近似表示時間t。但是這種表示方式有兩個嚴重的弊端。第一,數字的精度(precision)(可表示的兩個數字之間的最小距離)取決于其自身的數量級。是以,在這樣的系統中,随着時間的增加,表示時間的精度會下降。第二,在這種表示方法中,加法和減法會引入量化誤差,是以(t1+t2)+ t3=t1+(t2+t3)不一定是對的。這會極大削弱同時性(simultaneity)概念的語義,因為兩個事件是否可以認為是“同時的”(無論是弱同時還是強同時),這依賴于時間戳的計算方式。

ptolemy ii通過将時間分辨率(time resolution)變為單一的全局常數解決了這個問題。給出模型時間為t=mr,其中m是任意的大整數,時間分辨率r是雙精度浮點數。倍數m是一個java的大整數(任意的大整數),是以它永遠不會溢出。時間分辨率r是模型所有訓示器的共享參數。是以,一個模型不論有多大的時間規模,它的整個分層結構和執行過程都會有相同的時間分辨率。此外,加法和減法的時間值不會受到量化誤差的影響。在預設情況下,時間分辨率r=10-10,它代表1/10納秒。比如,倍數m=1011,那麼時間t就是10秒。

在ptolemy ii中,時間戳(t,n)中的微步n由一個32位的整數表示。是以微步很容易溢出。該溢出可以通過在第7章讨論的震顫芝諾行為的模型來消除。