《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.6 异构建模的方法

简介: 本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.6异构建模的方法 异构建模有很多种方法(Book et al.,2008)。

本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.6 异构建模的方法

异构建模有很多种方法(Book et al.,2008)。在多视图建模(multiview modeling)中,为同一系统构建相互独立且不同的多个模型,用来从不同切面(aspect)对系统进行建模。比如说,一个模型描述的可能是动态行为,但另一个模型描述的可能是物理设计和封装。在无固定结构的异构(amorphous heterogeneity)问题中,同一个模型中任意地组合了不同的建模风格,对结构并无益处。比如,一个模型中的一些组件交互可能要使用会话通信(rendezvous messaging)(即一次通信发生之前发送者和接收者都要做好准备),但是另一些组件交互使用异步通信(即接收者在发送者发送完之后的非确定时间内接收信息)。在层次化的多重建模(hierarchical multimodeling)中,不同建模风格被层次化地组合,以便利用每一种风格独有的功能和表达能力。
补充阅读:关于术语“角色”
面向角色的建模(actor-oriented modeling)概念与“角色”这个术语密不可分。角色这个术语,在20世纪70年代由Hewitt描述自动推理代理(autonomous reasoning agent)时被引出(Hewitt,1977)。在Agha等人关于描述并发机制(concurrency)的形式化模型的工作中,该术语又发生了演变(Agha et al.,1997)。Agha的角色,每一个都具有独立的控制线程,且角色之间的通信使用异步通信。Dennis的离散原子计算的数据流模型(dataflow models of discrete atomic computations)(Dennis,1974)中,也使用了“角色”这个术语,该模型对有效输入的反应是将产生的输出作用到其他角色。
本书中,术语“角色”囊括了一大类并发模型。它们通常比通用的消息传递更具约束性,并且它们不必与数据流语义相一致。这里的“角色”从概念上讲仍是并发性的,但不同于Agha的“角色”,它们不需要具有自己的控制线程。不同于Dennis的“角色”,它们不需要由输入来触发。另外,虽然通信仍是由某种形式的消息传递实现,但其不必是异步的。
角色是系统中的组件,且它们可以类比为对象这种面向对象设计中的软件组件。在流行的面向对象语言(如Java、C++和C#)中,对象的接口主要是方法(method),也就是修改和观察对象状态的程序。相比之下,角色的接口主要是端口,它被用来接收和发送数据。它们与程序所做的顺序控制转移不相同,因此更适合并发模型。
补充阅读:UML、SysML和MARTE中的角色
对象管理组织(Object Management Group,OMG)将角色模型中一些常见的、与框图语法十分相关的符号进行了标准化。本书中的角色模型与UML 2(第2版的统一建模语言(Unified Modeling Language,UML))(Bock,2006;Booch et al.,1998)的组合结构图(composite structure diagram)相关,或者说,与由它衍生的SysML直接相关。SysML的内部模块图(internal block diagram)表示法,尤其是流端口(flow port)的使用,与角色模型密切相关。在SysML中,角色称为“模块”。(“角色”这个词在UML用于另一个目的)。
然而,SysML强调如何表示模型图(可视化表示),但关于模型图的意义以及模型图如何操作的一些细节(语义)还悬而未决。比如说,虽然SysML宣称“流端口用于异步、广播或无反馈交互”(OMG,2008a),但SysML中没有计算模型。虽然不同的SysML工具可能赋予流端口不同的行为,但所有行为仍然符合标准。一个SysML模型可以表示多个设计,且模型的行为依赖于解释模型所用的工具。SysML的重点是进行符号的规范,并不是规范符号的意义。
相比之下,Ptolemy II的语义模型重点在模型的语义,而不是如何表示模型(视觉或其他方面)。视觉符号是次要的,且实际上它并不是Ptolemy II模型的唯一表示方法。Ptolemy II的指示器(director)赋予了模型一个很精确的意义。该具体的意义确保对于不同的观察者来说,模型所代表的意义都相同,并且使异构模型之间的相互操作成为可能。
与SysML相比,MARTE(实时和嵌入式系统建模与分析)更加强调模型的行为(OMG,2008b)。它避免“约束”执行语义,使标准变得灵活,可以对很多流行的实时建模技术进行表述。相比之下,Ptolemy II的重点并不在于介绍现有的设计经验,而更多的是提供精确的、良好定义的系统行为模型。有趣的是,MARTE包括了一个多样时间模型(multiform time model)(Andret et al.,2007),这与Ptolemy II中支持的模型是一样的。
软件工程师熟悉的一个例子是状态图(Statecharts)(Harel,1987),它层次化地结合了同步并发组合(synchronous concurrent composition)与有限状态机。层次化建模的另一个例子就是协同仿真(cosimulation),两个不同的仿真工具通过标准化的接口结合在一起,就像Simulink中的S函数接口或者Modelica协会的功能模型接口(Functional Mockup Interface,FMI)。同样,也可能通过创建十分灵活的或者部分指定的建模框架来支持异构建模。这些框架可以被修改以便重写感兴趣的模型。这种方法的不利之处就是弱语义。Ptolemy II的目标是实现强语义,但要包含异构性质并为异构模型提供并发交互机制。
如图1-4所示,一个复杂模型可以划分为由内嵌子模型组成的层次树。在每一层中,子模型可以联合在一起形成由相互作用的角色组成的网络。Ptolemy II限制层次中的每一层都是同构的,使用一个通用的计算模型。之后,这些同构网络可以被层次化组合起来,形成一个更大的异构的模型。这种方法的好处就是,系统中的每一部分都可以使用与其过程需求最匹配的模型进行建模——尽管每一个计算模型都提供了强语义以确保它相对容易理解、分析和执行。
在Ptolemy II中,一个指示器规定了一个模型的语义。在图1-4中,有两个指示器。位于顶层的指示器规定了角色A、B、C之间的交互。因为C内部没有指示器,所以顶层的指示器管理着它和E的交互。角色C称为透明复合角色(transparent composite actor),它包含的模块对于它的指示器是可见的。
相比之下,角色A内部包含了另一个指示器。该指示器管理子模型之间的角色交互(在这个简单的例子中,只有一个这样的角色,但实际上可以有多个)。角色A称为不透明复合角色(opaque composite actor),它的内容对A的外部指示器来说是不可见的。为了区分这两个指示器,称外部的指示器为执行指示器(executive director)。对于执行指示器来说,角色A看起来是一个原子角色。但实际上A的内部包含了另一个模型。
在层次结构中,位于不同层的指示器不需要实现相同的计算模型。因此,使用不透明复合角色是Ptolemy实现层次化多重建模及协同仿真的方法。
补充阅读:模型的多元化
奥卡姆剃刀定律是科学界和工程界的一条准则,它鼓励选择那些对假设条件、基本条件或实体要求最低的理论和假说来解释一个给定的现象。该定律可表达为“实体的增加不可超出必要的范围”或者“若无需要,勿增实体”( Encyclopedia Britannica,2010)。这条定律归功于14世纪的英国逻辑学家、神学家和方济会修士奥卡姆的威廉(William of Occam)。
即使这条定律的价值令人叹服,但其仍有局限。比如说,Immanuel Kant想要减弱奥卡姆剃刀原则的影响,他声称“生命体的多样性不应被草率地减少”(Smith,1929)。爱因斯坦据此评论,“凡事应力求简单,但不能过于简单”(Shapiro,2006)。
当应用于设计技术时,奥卡姆剃刀定律使我们偏向于使用更少更简单的设计语言和符号。但是,经验表明冗余和多样性也可以是有利的。比如说,即使UML的类图要表达的信息已经编码在一个C++程序里了,但使用UML类图仍然是有益处的。使用UML的用例图也是有价值的,有此概念无法用C++程序编码,也不能(直接)用UML类图表示。这三种表示方法服务于不同的目的,虽然它们表示的是相同的底层进程。
许多不同的符号被用于UML和它的衍生物中,这个事实与奥卡姆剃刀定律背道而驰。具有讽刺意义的是,诞生于20世纪90年代的统一建模语言(UML)正是为了减少用于表示面向对象的软件架构符号的多样性(Booch et al.,1998)。那么,这种违背剃刀定律的做法有哪些好处呢?
软件系统的设计本质上是一种创造性的过程。工程师创建了本不存在的程序。奥卡姆剃刀定律应用于创造性过程时应当谨慎,因为当有多样的、可以达到理想效果的媒介时,创造力会很旺盛。通过提供比C++源码更抽象的符号,UML促进了创造性过程,并且这些符号有利于设计性的实验和设计思想的交流。
补充阅读:关于异构模型
有些作者使用术语多范式建模(multi-paradigm modeling)来描述混合了多种计算模型的方法(Mosterman and Vangheluwe,2004)。Ptolemy II重点在于将角色和多范式建模相结合的技术。这种混合模型的一种早期解决方案在Ptolemy Classic(Buck et al.,1994)中实现,Ptolemy Classic是Ptolemy II的早期版本(Eker et al.,2003)。受到Ptolemy方法的影响,SystemC也能够实现多重计算模型(Patel and Shukla,2004;Herrera and Villar,2006)。ModHel’X(Hardebolle and Boulanger,2007)和 ForSyDe (Jantsch,2003;Sander and Jantsch,2004)也是如此。
另外,还有一种方法支持混合并发和通信机制,而不受层次结构的束缚(Goessler and Sangiovanni-Vincentelli,2002;Basu et al.,2006)。其他一些研究者使用了创造性的方法来解决异构性问题(Burch et al.,2001;Feredj et al.,2009)。
使用工具集成(tool integration)也是可行的,即不同的建模工具通过转换语言或者协同仿真的方式结合起来(Liu et al.,1999;University of Pennsylvania MoBIES team,2002;Gu et al.,2003;Karsai et al.,2005)。但使用这种方式是具有挑战性的,且受制于脆弱的工具链。关于工具如何被扩展、在哪个部分可以扩展以及如何进行工具之间的集成,许多工具也是缺乏相应文档的;实现和维护这样的集成需要极大的努力。面临的挑战包括:API的不兼容、不稳定或无正式文档的API、不清晰的语义、语法不兼容以及不可维护的代码库等问题。事实证明,工具集成要完成异构设计是非常艰巨的。相对于关注工具集成中的软件问题,一种更好的方法则是专注于语义的集成。只有在对语义交互的良好理解的基础上,才有可能出现良好的软件架构。
在Ptolemy中,每一个模型都包括一个指示器。指示器用来指定使用的计算模型并为计算模型提供一个代码生成器(code generator)或计算模型解释器(interpreter for the MoC)(或者两者兼有)。“42”(Maraninchi and Bhouhadiba,2007)给出了另一种替代方法,它在模型中集成了一个定制的计算模型。
补充阅读:支持异构建模的工具
很多被广泛使用的工具都提供了一些计算模型的固定组合。商业工具包括,MathWorks的Simulink/StateFlow(将连续和离散时间角色模型与有限状态机相结合)、美国国家仪器公司的LabVIEW(将数据流角色模型有限状态机和一个时间驱动的计算模型相结合)。Statemate (Harel et al.,1990)和SCADE (Berry,2003)将有限状态机和一个同步/响应体系(synchronous/reactive formalism)进行结合。Giotto(Henzinger et al.,2001)和TDL(Pree and Templ,2006)将有限状态机和时间驱动的计算模型进行结合。有些混合系统建模和仿真工具结合了连续时间动态系统和有限状态机(Carloni et al.,2006)。
Y-chart方法支持异构建模,是一种比较流行的软硬件协同设计方法(Kienhuis et al.,2001)。这种方法将硬件实现的建模与应用程序行为的建模分开,并提供将这两种分离的模型组合起来的机制。这些机制允许开发者在硬件开销和软件设计复杂度之间进行折中。Metropolis是实现此目标的一个简洁工具(Goessler and Sangiovanni-Vincentelli,2002)。它引入一个“质量管理者”(quantity manager)来调节理想功能和实现功能所必需资源之间的一种均衡。
从组件具有并发性并通过端口通信的概念上来说,Modelica(Fritzson,2003;Modelica Association,2009)也有类似于角色的语义。但这里的端口并不是输入或输出,而是端口之间的连接声明了变量间的等式约束。这种方法有明显的好处,尤其是对于基于微分代数方程(Differential-Algebraic Equation,DAE)进行描述的物理模型来说。但是,这种方法在组合不同种类的计算模型上显得吃力。
DESTECS(DEsign Support and Tooling for Embedded Control Software,嵌入式控制的设计支持和工具化软件)是一个由大学和工业界联合支持的工具,该联盟的工作重心是容错嵌入式系统(Fitzgerald et al.,2010)。该工具集成了20-sim(Broenink,1997)的连续时间模型和VDM(Vienna Development Method,维也纳开发方法)的离散事件模型。DESTECS将时间同步化,并在两个工具中进行变量传递。

相关文章
|
存储 缓存 算法
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流
Ptolemy II 能够使异构系统的开发和仿真一同进行,将开发和仿真作为整个系统建模的一部分。正如前两章讨论的那样,不同于其他设计和建模环境,Ptolemy II的一个关键创新在于支持多种计算模型,这些计算模型可被剪裁以适应具体的建模问题。
1610 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.5 层次结构模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.5节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.5层次结构模型 复杂系统的模型通常很复杂。
1878 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——导读
本书是为需要对各种系统建模的工程师和科学家,以及想了解如何为复杂、异构系统建模的人而编写的。这些系统包括机械系统、电气系统、控制系统、生物系统等,更有趣的是,还包括结合了这些领域或者其他领域元素的异构系统。本书假设读者熟悉仿真和建模工具及其技术,但不要求对这些内容有深厚的背景知识。
2492 0
|
容器
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.3 小结
数据流是一个简单和通用的计算模型,其中角色的执行由输入数据的可用性来驱动。它对流(expressing streaming)应用的表示特别有用,其中长数据值序列通过计算选择路径,如常见的信号处理和多媒体应用。
2554 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.4节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 角色模型 Ptolemy II基于一类面向角色的模型(actor-oriented model),或简单称为角色模型(actor model)。
1489 0
|
Java C语言
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.3 模型在设计中的作用
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.3节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.3模型在设计中的作用 本书为在Ptolemy II中理解和建立模型提供了一个框架,更广泛地说,这是理解建模中的关键问题并对复杂异构系统进行仿真的一个框架。
1880 0
|
算法
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第1章 异构建模 1.1语法、语义、语用
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.1节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 第一部分  入门 本书第一部分主要介绍系统的设计、建模与仿真。
2402 0