前言
“我”上次发表著作是在一千九百年前。“我”很高兴从退休中复出,对以本人名字命名的工程(Ptolemy工程)发表自己的看法。与“我”以往在天文和地理方面的工作相似,该项目也是对复杂系统进行处理。值得一提的是,类似“我”之前的许多著作,本书同样凝结了许多人共同的智慧和努力。
“我”以前在《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服务和服务器的功能。
出版在【华章出版社】 作者:
[美]爱德华·阿什福德·李(Edward Ashford Lee)等
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。