标签:
杂谈 |
在90年代早期,大部分基于自主体建模系统的开发都采用较底层的开发工具,包括TURBOPASCAL,SAPC,C++,SOAR,Z,DYNAMO (Gilbert,Bankes,2002)。要使用这些底层的计算机开发语言进行系统开发,就必须有相关的技术经验或专业学习,这对于不是计算机相关专业领域的研究人员来说比较困难,软件的发展仍然是许多研究人员使用基于自主体建模的所遇到的障碍。然而随着计算机软件技术的不断进步,从1995年Swarm平台问世以来,各种基于自主体建模的系统开发平台先后被开发出来,这些平台提供了标准化的建模框架和类库,平台使用者可通过简单的函数接口直接调用,节省了人量重复编码的工作,简化了的系统开发过程,使研究人员可以集中精力专注于领域内的问题解决方案以及ABS模刑的设计,从而极大地推动了基于自主体建模在各个研究领域的应用。
按照平台的开发方式,目前国际上广泛应用的基于自主体仿真平台可以分为两大类:
第一类是提供类库的平台,这类平台可被嵌入到与其开发语言相匹配的开发环境中,使用时通过类库中的函数接口来调用类库中封装的函数进行基于自主体模拟开发,具有代表性的平台包括Swarm、REPAST等。通过jar包导入Java开发环境进行开发,相对来说功能强大,但是开发效率较低,对开发人员的编程能力要求较高。
第二类是提供完整的开发环境,这类平台是一个可以独立运行的系统,他们不依赖于其他的底层编程开发环境,只须简单的安装即可方便使用,这类平台主要以LOGO家族的NetLogo、starLogo为代表。
1999年,美国Center for Connected Learning and Computer-Based Modeling的Uri Wilensky首次开发了NetLogo平台,这是一款基于Java(version1.4.1)开发的能独立运行的完整的编程开发环境,能在Mac、windows等系统平台上运行(NetLogo,1999)。实际上,NetLogo是多自主体建模语言特别是starLogo平台的进一步发展(Resnick,Wilensky,1993),自1999年以来,NetLogo平台得到了不断的更新发展,目前,最新的版本为2008年8月6日推出的NetLogo4.0.3(NetLogo,2008)。
NetLogo是继承了Logo语言的一款编程开发平台,但它又改进了Logo语言只能控制单一海龟的不足,它可以在建模中控制成千上万只海龟,因此,NetLogo建模能很好地模拟微观个体的行为和宏观模式的涌现,及其两者之间的联系。NetLogo是用于模拟自然和社会现象的编程语言和建模平台,特别适合于模拟随时间发展的复杂系统。
在NetLogo软件版本的更新替代中,NetLog的建模构架也在进一步得到改进发展。在NetLogo3.I.5及其以前的早期版本中,NetLogo是基于三类自主体的建模,包括:海龟(turtles)、瓦片(Patches)、观察员(observer)。而在2007年推出的NetLogo4.0中,它的建模框架得到了扩展,在原有的三类自主体的基础上添加了第四类自主体,即链接(links)。下面,我们将具体介绍NetLogo中的这四类自主体:
海龟(turtles):海龟用于模拟能够在世界中移动的自主体,他们具有自己的属性和行为特征,海龟可与海龟或瓦片进行交互。在开发过程中,observer或Patches可以创建海龟,用户也可以在代码编写中创建海龟。每个海龟的位置以坐标(xcor,ycor)表示,这里xcor和ycor均为浮点型数值,因此,对海龟来说整个模拟世界是连续的,他们可以位于一个Patch的任何位置,而一个Patch也可以同时包含多个海龟。
瓦片(Patches):在NetLogo中,模拟世界被表征为由众多瓦片组成的二维网格。每个瓦片(patches)是可编程的自主体,他们各自占据一个正方形小块,对应坐标为(pxcor,pycor)。NetLogo的模拟世界并不是简单的水平二维空间,研究人员可以通过对网格水平和垂直边界回绕方式的控制,产生四种不同的拓扑结构,包括:环状(torus)、盒状(box)、垂直柱面(vertical cylinder)、水平柱面(horizontal cylinder)。系统默认的结构是环面(torus),即在水平和垂直方向边界都进行回绕(wrap),形成闭合的有限无界空间,当海龟超越一个边界时则会在对应另一边界上出现。盒子在两个方向都不回绕,因此上下左右均有边界,turtle移动时无法超越边界。柱面只在一个方向回绕,垂直柱面的左右边界连接在一起,而水平柱面的上下边界连接在一起。
观察员(observer):观察员(observer)是一个全局主体,它观察着由海龟(turtles)和瓦片(Patches)构成的世界,能够执行指令获取世界全部或部分的状态,或实现对世界的控制。而观察者(observer)虽然没有在模拟世界中的具体定位,但可以被看成是对海龟和瓦片进行观测的一个实体,类似于Swarm模型中的观察员。
链接(links):链接是连接两个海龟的自主体,通常用两个海龟间的连线来表示,而被连接的两个海龟被称为结点,这类自主体主要用于网络建模、几何学建模等。与观察员自主体一样,链接也没有具体的位置,他们不存在于任何一个瓦片(patche)中,也不能计算一个链接到任意点的距离。Netlogo定了两类链接,包括:有向(directed)链接和无向(undirected)链接。有向链接是从一个结点指向另一个结点的链接,如父与子的关系可用有向链接来表示;而无向链接中,两个结点海龟是对等的,不具指向性,如配偶、兄妹的关系可用无向链接来表示。
2008年4月4日,NetLogo还发布了GIS的扩展模块,该扩展模块能够导入GIS矢量数据以及栅格数据到NetLogo中,并进行相关的处理。模块中包括的地理数据处理函数分为五类,即坐标系函数、数据集函数、矢量数据集处理函数、栅格数据集处理函数以及画图函数。该模块的推出将为NetLogo在地理学中的应用提供更广阔的应用空间,是NetLogo更新发展中的一大进步。
由于最初NetLogo的开发被定位为教学工具,因此,一些研究人员以为它不足以模拟复杂系统的基于自主体建模,但Railsbaek,Lytinen,Jaekson(2006)通过一些列复杂系统建模的测试研究发现,NetLogo有足够的能力完成所有的模拟测试,甚至基于NetLogo的建模过程比其他ABS平台的建模更简单、更轻松,再次证明了NetLogo在简洁的外观下蕴藏着强人的建模能力,被广泛应用于社会科学、经济学、生物学等领域。有学者经比较研究认为NetLogo是最高层次的ABs建模平台,它提供了使用简单,却功能强人的建模语言,内置的图形界面以及全面的解释文档(Gilbert,Bankes,2002)。因此,近几年,NetLogo的用户群得以迅速发展壮人。