本节书摘来自华章出版社《信息物理融合系统(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)是不透明的(这意味着它包含了指示器)。它在模型中充当着单个角色,但它内部实现是并行运行的多重角色。

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

图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中模型的执行与它前面的版本类似,除了输出的规模不同外,其输出是平均值而不是总和。

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

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

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

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

  1. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.3 小结...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.3节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  2. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.1节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  3. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第2章 图形化建模 2.1开始...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.1节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

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

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  5. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.2 动态数据流...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  6. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.2 域和计算模型...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  7. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.6 类和继承...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.6节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  8. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.5 如何操作大模型...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.5节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  9. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.9 案例研究...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.9节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

最新文章

  1. 《深入理解Elasticsearch(原书第2版)》——第2章 查询DSL进阶 2.1 Apache Lucene默认评分公式解释...
  2. DNS(二)--正反解析及主从配置
  3. python(1) - 输入和输出
  4. Oracle 在Sqlplus 执行sql脚本文件。
  5. MyEclipse创建struts.xml
  6. 深入理解Solidity 二
  7. Redis夺命连环11问
  8. MUI框架:栅格系统 + grid宫格布局 - 案例篇
  9. 小程序获取openid保存缓存吗_小程序获取openid踩坑
  10. (转)2006年100款最佳安全工具谱
  11. Quartz.NET开源作业调度框架系列(五):AdoJobStore保存job到数据库
  12. Win10下安装MySQL5.6
  13. miui 8.5 android,小米MIUI8.5稳定版
  14. 用JavaScript写的U校园自动答题浏览器分析
  15. IDEA登录LeetCode插件失败
  16. 正确的座机号码格式_电话号码格式怎么输入才是正确
  17. java坦克大战论文_(毕业论文)Java版坦克大战.doc
  18. 教你几招HASH表查找的方法
  19. 计算机算法在生物信息学中的应用,引力场算法及其在生物信息学中的应用
  20. MySQL 事务隔离级别,读现象,MVCC

热门文章

  1. foxmail清除无法清除的未读邮件
  2. 5寸android智能手机,5寸刚入门 六款巨屏安卓智能手机盘点
  3. excel VBA快递查询
  4. 说说 iphone 数据线(充电线) 原装正品和仿制品、假货等的区别
  5. Discuz!门户列表页,文章中无图片时,随机选择一张作为封面
  6. 实体店运营:能提高顾客留存率的店铺陈列方式
  7. “独立站+私域”的DTC直客模式电商,是告别互联网内卷唯一有效方式
  8. 2016年终总结,不慌不忙不急不躁的一年
  9. 三院士漫谈:未来机器人:目标、路径和挑战
  10. 输入学生姓名和学号c语言程序,C语言 从键盘输入10个学生信息(学号,姓名,年龄,性别)...