《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.7 高阶组件

简介:

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

2.7 高阶组件

Ptolemy II 包含大量的高阶组件(higher-order component)。这些角色对模型的结构进行操作,而不对输入数据进行操作。接下来将介绍几个相应的例子,在这些例子中,5个Channel角色被置于一个模型中。为什么用5个? 也许最好是有一个单独组件可以表示Channel的n个实例,其中n是一个变量,这正是高阶组件所能解决的问题。高阶角色由Lee和Parks(1995)提出,它使得在模型结构不依赖于问题规模时更容易进行大型设计的构建。在本节中,将对这些角色进行描述,并且它们都能在HigherOrderActors库中找到。
2.7.1 MultiInstanceComposite角色
考虑图2-32所示的模型,有5个并行连接的Channel类实例。实例的数量在图中是硬连接的,很难进行数量的改变,特别是如果需要增加它时。这个问题可通过使用MultiInstance Composite(多实例复合)角色来解决,如图2-40所示。MultiInstanceComposite是一个复合角色,我们可以在它里面插入一个单独的Channel实例(通过创建一个Channel实例,将其复制并粘贴到复合角色中)多实例复合角色。(MultiInstanceComposite)是不透明的(这意味着它包含了指示器)。它在模型中充当着单个角色,但它内部实现是并行运行的多重角色。
3

图2-40 一个模型,它相当于图2-32,但是使用了MultiInstanceComposite,它允许仅仅通过改变一个参数值来改变Channel实例的数量
如图2-41所示,MultiInstanceComposite角色有3个参数:nInstances、instance、showClones。
第一个参数指定了要创建的实例数量。运行时,该角色将自我复制,次数由nInstances指定,如第一个(原型)实例那样,将输入和输出连接到相同的源和目的地。在图2-40中,注意MultiInstanceComposite的输入连接到一个关系(黑色菱形),输出直接连接到一个AddSubtract角色的多端口输入。因此,连接多个实例的方式类似于图2-32,其中相同的输入值将传递给所有实例,但是提供给AddSubtract角色的输出值是不同的。
3

图2-41 MultiInstanceComposite的第一个参数指定实例的数量。第二个参数可以使模型的建立者识别单独的实例。第三个参数控制实例是否呈现在屏幕上(当模型运行时)
因为实例的数量可以由一个参数改变,所以使用多实例创建模型比原始方法更好。根据MultiInstanceComposite中的instance参数来表示每个实例中的参数值,每个实例都可以按需定制。比如,令图2-40中InstanceOfChannel 角色的noisePower参数值取决于instance。如将其设置为instance*0.1,然后将nInstance设置为1。当运行模型时,将看到清晰的正弦波。这是因为这个instance的值为0,所以该实例中没有噪声。
2.7.2 IterateOverArray角色
如图2-37所示,Channel类的实现没有包含任何状态,这意味着信道模型的调用不依赖于上次调用的数据计算。因此,没有必要使用Channel类的几个不同实例来实现一个多样化通信系统;一个实例可以对n个数据副本调用n次。这种方法可以通过使用IterateOverArray高阶角色来实现。
IterateOverArray 角色可以用类似于前面章节中的MultiInstanceComposite的方法来使用。也就是说,我们可以在其内填充一个Channel类实例,类似于图2-40。IterateOverArray 角色在模型中也需要一个指示器。
例2.2 考虑图2-42中的例子。在这种情况下,顶层模型使用一个含有信道输入的多副本数组,而不是使用一个关系将输入广播到Channel的多个实例。这是使用Repeat角色(在FlowControl→SequenceControl子库中找到)和SequenceToArray角色(见2.7.3节补充阅读)的结合来完成的。Repeat有一个参数numberOfTimes,在图2-42中将其值设置为等于diversity参数的值。SequenceToArray角色有一个参数arrayLength,其值也可以设置为等于diversity参数的值(这个参数可以通过arrayLength端口来设置,灰色填充表示它既是一个参数又是一个端口)。输出被发送到ArrayAverage角色(见2.8节补充阅读:处理数组的角色)。
图2-42中模型的执行与它前面的版本类似,除了输出的规模不同外,其输出是平均值而不是总和。
3

图2-42 IterateOverArray 角色可以用来完成与图2-40中一样多的信道模型,但是不需要创造信道模型的多个实例。这种方法是可能的,因为信道模型没有状态
不论IterateOverArray包含什么角色,对于输入数组的每个元素,都将进行简单重复的执行动作。如图2-42所示,它包含的角色可以是不透明的复合角色。然而,有趣的是,它也可以作为原子角色。为了使用带有IterateOverArray的原子角色,只要将原子角色拖到IterateOverArray实例中。然后,它将执行输入数组的每一个元素中的原子角色,并产生作为输出的结果数组。该机制将在图2-43中说明。当一个角色从库中拖出并移到IterateOverArray角色时,它的图标将获得白色的边框。这个边框表明,如果角色被放下,它将放在光标下的角色中,而不是模型所包含的角色上。放入的IterateOverArray角色将成为为输入数组的每一个元素执行的角色。为了和 Channel 角色一起使用,定义了如上规则,但是需要将Channel角色转换为一个不透明角色,方式是通过插入一个指示器,因为对于数组元素IterateOverArray只能应用不透明角色。
3

图2-43 IterateOverArray 角色支持在它上面放入一个角色。它变换为模仿放入角色的图标。这里我们使用Channel类,保存到如图2-39所示的UserLibrary(用户库)中
2.7.3 生命周期管理角色
Higher OrderActors中的一些角色调用整个Ptolemy II模型的执行。这些角色通常把端口(用户或者角色创建的)和模型的参数关联在一起。它们可用于创建模型,所创建的模型可通过修改参数值来使得其他模型反复运行。包括RunCompositeActor,其执行所包含的模型。ModelReference 角色执行文件或URL中定义的模型。当VisualModelReference执行模型时,VisualModelReference角色打开模型的Vergil视图。更多细节可以在角色文档和Vergil连接展示中找到。
补充阅读:数组构建与拆分角色
下面是构建和拆分数组的角色:
3

ArrayToElements将输出端口信道中的数组元素输出。
ElementsToArray用输入端口信道中的元素构建一个数组。
ArrayToSequence将输出端口中的数组元素顺序输出。
SequenceToArray用输入端口中的一系列元素构建一个数组。
StringToUnsignedByteArray从字符串构建一个数组。
UnsignedByteArrayToString从数组构建一个字符串。
ArrayToMatrix从数组中构建一个矩阵。
MatrixToArray从矩阵构建一个数组。
此外,很多多态角色,比如说AddSubtract,也能对数组进行操作。

相关文章
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.5 层次结构模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.5节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.5层次结构模型 复杂系统的模型通常很复杂。
1878 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 平台》——导读
本书是为需要对各种系统建模的工程师和科学家,以及想了解如何为复杂、异构系统建模的人而编写的。这些系统包括机械系统、电气系统、控制系统、生物系统等,更有趣的是,还包括结合了这些领域或者其他领域元素的异构系统。本书假设读者熟悉仿真和建模工具及其技术,但不要求对这些内容有深厚的背景知识。
2492 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.4节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 角色模型 Ptolemy II基于一类面向角色的模型(actor-oriented model),或简单称为角色模型(actor model)。
1489 0
|
容器
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.3 小结
数据流是一个简单和通用的计算模型,其中角色的执行由输入数据的可用性来驱动。它对流(expressing streaming)应用的表示特别有用,其中长数据值序列通过计算选择路径,如常见的信号处理和多媒体应用。
2554 0
|
uml C++
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.6 异构建模的方法
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.6异构建模的方法 异构建模有很多种方法(Book et al.,2008)。
2696 0