基本信息
- 原书名:System Design, Modeling, and Simulation: Using Ptolemy II

内容简介
计算机书籍
本书是一本系统论述CPS(集成了计算、网络和物理过程的信息物理融合系统)建模问题的专著,以Ptolemy II平台为基础,广泛讨论了分层、异构系统的设计、建模和仿真技术。本书共分为三部分:第一部分包括第1~2章,主要介绍系统的设计、建模与仿真的基础概念;第二部分包括第3~11章,涵盖系统设计、建模和仿真中常用的计算模型,其中每章都包括一个或一小类相关的计算模型,并解释它们如何工作、怎样使用它们建立模型以及哪些种类的模型与计算模型可以更好地匹配;第三部分包括第12~17章,重点介绍由Ptolemy II提供的模型系统的内部组件,讨论Ptolemy II跨模型计算的能力,对于那些想要扩展Ptolemy II或者想用Java写自己的角色的读者来说,可以从中得到具体指导。本书最后列出了大量的参考书目。
本书适合作为高等院校相关专业“嵌入式系统”课程的教材或教学参考书,也可作为专业技术人员在CPS系统建模过程中的参考书。
目录
译者序
前言
第一部分 入门
第1章 异构建模 2
1.1 语法、语义、语用 3
1.2 域和计算模型 4
1.3 模型在设计中的作用 5
1.4 角色模型 6
1.5 层次结构模型 7
1.6 异构建模的方法 7
1.7 时间模型 11
1.7.1 层次化时间 12
1.7.2 超密时间 12
1.7.3 时间的数字表示 14
1.8 域和指示器概述 15
1.9 案例研究 18
1.10 小结 22
第2 图形化建模 23
2.1 开始 23
前言
“我”以前在《The Almagest》(天文大全)中研究行星、太阳、地球和月亮的运动规律,这些运动都是并发交互过程(concurrent interacting process)。并且这些运动都是确定性的(deterministic),并不以神的意志为转移。这些模型的关注点不仅仅是对所观察到的行为进行精确匹配,更重要的是对行为的预测。类似地,Ptolemy项目研究并发交互过程,并重点关注确定性模型。
理想情况下,求知欲推动着人类从迷信和盲目的信仰发展到逻辑和计量。现在所谓的“科学”深深根植于科学方法(scientific method),特别是在自然系统的研究中。利用科学方法,从设想开始,设计实验,并基于实验来对之前的设想下定论。当然,为了能够进行计量,待测量的工件或过程必须以某种形式存在。在“我”早期的研究中,不存在该问题,因为太阳、地球、月亮和行星是已经存在的事物。然而工程学科所关注的是人为的工件和过程,研究的是自然界中本不存在的系统。即便如此,科学方法也可用于并已经应用于工程设计中。工程师构建仿真和原型系统,将设想公式化,然后通过实验来进行设想的测试。
因为针对的是本不存在的工件和过程,所以工程设计不能单单基于科学方法。实验的目的是提高对所设计的工件、过程的认知。但是在进行实验前,必须将这些工件或者过程创造出来。在认识某些事物之前,不得不先把它们创造出来,这点注定了我们的设计会根植于“迷信”和盲目的信仰。
模型构造是与科学方法互补的重要科学部分。模型是物理现实的一种抽象,并且模型提供内视和行为预测的能力可以形成设想的核心思想,该思想核心等待被实验证实或证伪。建模本身更应归于工程学科,而非自然科学。从根本上讲,它并不是对于自然界已存在系统的研究。相反,它是人类主导的、对于自然界本身不存在事物的建造过程。一个模型本身就是一项工程。
好的模型甚至可以减少对计量的需求,因此可以减少对科学方法的依赖。比如,我们一旦有一个行星运动模型,我们就可以精确预测它们的位置,这样就减少了对其位置测量的需要。计量的角色从确定行星位置转变为改善它们的运动模型以及检测模型对运动的影响(工程上称为“故障检测”(fault detection))。
无论在自然科学还是在工程中,模型都可以通过迭代方法来进行优化。“我”提出的以地球为中心的宇宙模型需要很多次迭代来修正,以逼近实验观测到的行星运动情况。最终模型的预测能力让“我”引以为豪。并且,基于这些模型的预测方法可以通过星盘机械化,这点同样让“我”感到自豪。即便这样,不得不承认,令人尊敬的同行哥白尼(Nicolaus Copernicus)为行星运动提出了一个更好的模型(日心学说)。他的模型从概念上讲是更简单的。这是一种概念上的飞跃:我们可观测到的宇宙的中心,即我们所在的大地,并非一定是宇宙模型的中心。更进一步说,相对于物理世界,对于模型我们有更大的自由度,因为模型不需要被自然界所限制。即便如此,“我”所建立的模型在将近1400年的时间里也是一流的。
Ptolemy项目确实是一项关注系统模型的研究。但是,该系统与“我”之前关注的系统有很大的不同。之前的那些系统都是自然界提供的,但是本书中的系统都是人造的。在本书中,建模的目的是优化系统,我们不可能对自然界给予的行星系统做任何的优化。
简而言之,在与科学相反的工程中,模型要在被建模系统的设计阶段发挥作用。与科学一样,工程中的模型是可以被优化的,但是与科学不同的是,工程中的系统还可以被模型化。
更有趣的是,与科学不同的是,在工程中模型的选择对被建模的系统是有影响的。给予相同的目标,两位工程师可能会得出截然不同的系统设计和实现方案,这仅仅是因为他们在开始阶段使用了截然不同的系统模型。进一步说,若两位工程师提出了不同的模型,其原因可能仅仅是他们在开始阶段使用了不同的工具来构建模型。一位用纸和笔建模的工程师与一位用软件工具建模的工程师得出的模型可能很不一样。结果就是,他们很可能得出迥异的系统设计。
针对复杂系统,本书收集了非常丰富的建模工具和技术。它们中的一些毫无疑问在以后会被优化,正如“我”自己提出的本轮(epicycle)模型,其建模的复杂性被哥白尼学派证明为不必要的。即使如此,本书的目的是向工程师提供目前可用的最好的建模技术。可以确信的是,我们将做得更好。
如何使用本书
本书是为需要对各种系统建模的工程师和科学家,以及想了解如何为复杂、异构系统建模的人而编写的。这些系统包括机械系统、电气系统、控制系统、生物系统等,更有趣的是,还包括结合了这些领域或者其他领域元素的异构系统。本书假设读者熟悉仿真和建模工具及其技术,但不要求对这些内容有深厚的背景知识。
本书重点强调Ptolemy II中已实现的建模技术。Ptolemy II是一个开源的仿真和建模工具,用于对系统设计技术进行实验,尤其是那些涉及各种不同模型组合的系统。它是由UC Berkeley的研究人员开发的,并且由于过去20年里世界各地研究者的努力,它逐渐演变成一个复杂而精巧的工具。本书基于Ptolemy II,对分层、异构系统的系统设计、建模和仿真技术进行了广泛的讨论。同时本书使用Ptolemy II来避免这些讨论过于抽象化和理论化。所有这些技术都由精心设计且测试效果良好的软件实现来支持。关于Ptolemy II更详细的底层软件架构以及更为细节的操作和基础理论,可以在知识点、参考文献和网络链接中找到。
本书共分3个部分。第一部分是“入门”。第1章概述了本书所涵盖的建模方式所蕴含的准则,并简要概述了多种计算模型(Model of Computation,MoC)。第2章介绍了怎样通过图形编辑器Vergil使用Ptolemy II。对于那些想直接开始建模的读者,该章是个很好的起点。
第二部分包括第3~11章,涵盖了几乎所有的计算模型。每一章都包括一个或者一小类相关的计算模型,并解释了它们怎样工作、怎样使用它们建立模型以及哪些种类的模型与计算模型可以比较好地匹配。
第三部分讨论了Ptolemy II计算模型的可扩展性。对于那些想要扩展Ptolemy II或者想用Java写自己的角色(actor)的读者来说,第12章或许是最重要的一章,它描述了Ptolemy II软件架构。Ptolemy是开源软件,并有完善的代码文档可供阅读。对于想要阅读代码并在此基础上做些工作的读者来说,该章可以提供很好的指引。第13章描述了用于规格化模型参数值和向角色(actor)中添加自定义函数的表达式语言。第17章描述了Ptolemy II
标准库中包含的信号绘图仪(signal plotter)的功能。第14章讲解了Ptolemy II中的类型系统(type system)。Ptolemy II是一个复杂的类型系统,当提供一个强调类型系统来使安全最大化时,其设计旨在把建模工具的负担最小化(通过强调类型推断而不是类型声明)。第15章讲述本体(ontology)。本体能将单元部件、尺寸和概念与模型中的数值相关联,它增强了类型系统。同样,重点在于推断和安全。最后,第16章描述了Ptolemy II中的Web界面。具体地说,它解释了从模型中导出页面以及在模型中建立Web服务和服务器的功能。
致谢
本书在Ptolemy项目中描述的建模技术,经过了UC Berkeley项目成员的多年开发。根源可追溯到20世纪80年代。雏形来自Messerschmitt(1984)创建的名为Blosim(Block Simulator)的软件框架,用于仿真信号处理系统。Messerchmitt的博士生Edward A. Lee,受Blosim的鼓舞,开发了同步数据流(Synchronous DataFlow,SDF)计算模型(Lee,1986;Lee and Messerschmitt,1987b)和针对该模型的调度方法(Lee and Messerschmitt,1987a)。Lee和他的学生接着完善了一个基于Lisp的软件工具Gabriel(Lee et al.,1989),通过它开发和完善了SDF计算模型。在20世纪90年代初期,Lee和Messerschmitt开发的面向对象的方框图框架开始称为Ptolemy(Buck et al.,1994)(现在称为Ptolemy Classic)。在20世纪90年代后期,Lee和他的小组基于最新的编程语言Java(Eker et al.,2003),开始了一个称为Ptolemy II的全新设计。Ptolemy II发展了面向角色设计(Lee et al.,2003)和分层异构的主要思想。
序言
本书是Ptolemy II项目近20年成果经验的总结,也是项目组成员共同智慧的结晶。Ptolemy II项目是由美国加州大学伯克利分校教授、嵌入式系统领域的著名学者、CPS(Cyber-Physical System)研究的倡导者和引领者Edward Ashford Lee负责的。他长期专注于并发、实时嵌入式系统领域的研究,开发了集系统设计、建模及仿真于一体的Ptolemy II系统平台。
为了避免讨论过于抽象,本书以Ptolemy II为基础,广泛讨论了分层、异构系统的设计、建模和仿真技术。本书共分为三部分。第一部分包括第1~2章,主要介绍系统的设计、建模与仿真的基础概念。第1章首先概述了异构系统规范化建模的指导性原则,从较高的角度对第二部分详细描述的计算模型(Model of Computation,MoC)进行概述。第2章提供了一个通过图形用户界面Vergil使用Ptolemy II的操作指南,使读者可以在系统设计过程中熟练掌握开源的Ptolemy II来进行实验。第二部分包括第3~11章,涵盖了系统设计、建模和仿真中常用的计算模型。每章都包括一个或一小类相关的计算模型,并解释了它们如何工作、怎样使用它们建立模型以及哪些种类的模型与计算模型可以更好地匹配。第三部分包括第12~17章,重点介绍由Ptolemy II提供的模型系统的内部组件,讨论了Ptolemy II跨模型计算的能力。对于那些想要扩展Ptolemy II或者想用Java写自己的角色的读者来说,可以从第三部分得到具体指导。本书最后列出了大量的参考文献。另外,书中提到所有的方法、实例都可以在项目网站(http://ptolemy.org/systems)上下载开源代码。
本书的最初译稿来源于李仁发教授组织的两届“高性能嵌入式计算”研讨班所用教材之一。李仁发教授组织了本书的翻译工作。参加研讨班的全体博士生、硕士生为本书的共同译者,他们是:吴武飞、杜家宜、白洋、谌雨晴、黄雪伦、王娜、胡游、周兰花、黄一智、李坤明、黄晶、屠晓涵、马萌、彭理、何少芳、宋金林、袁娜、邓湘军、周佳、李万里和杨竞。吴迪、吴武飞负责全书的校对。吴迪负责全书的最后校审工作。
不同语言之间的转换是一件困难的事情。看似很直白的一个词,虽然理解其词义,但要换一种语言表达时往往煞费苦心,有的名词还很难给出确切的中文译名。译者力求忠实地表达书中所介绍的技术,保持原作者的行文风格。在本书翻译过程中,发现原书存在少量描述性错误,通过邮件与原作者确认核实后,在译文中直接进行了修订。限于时间以及译者水平和经验的不足,译文中难免存在不当之处,恳请读者批评指正。
本书的翻译工作得到了原书作者Edward Ashford Lee教授本人及Ptolemy项目组其他成员的鼎力支持,同时还得到湖南大学嵌入式与网络计算湖南省重点实验室同仁及机械工业出版社许多人士的帮助。对此,译者深表感谢。
错误反馈
如果你在阅读过程中发现本书中的错误或印刷错误,或者有任何改进的建议,请发送电子邮件到译者邮箱:enchnu@126.com。或者发送到原书作者邮箱:authors@leeseshia.org。
在邮件中,请注明该书的版本号和相关页面,非常感谢!
译者