天天看点

《信息物理融合系统(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章讨论的震颤芝诺行为的模型来消除。