NetLogo多主体建模入门
上QQ阅读APP看书,第一时间看更新

看完刚才的例子,你大概会觉得多主体模拟方法很强大,很好用,于是跃跃欲试想构建自己的多主体模拟模型。但是,一个现实的问题马上就会让你冷静下来:我要怎样构建这样的模型呢?如果要用C语言、Python这样的编程工具构建一个类似于体育场馆人群疏散问题的多主体模型,的确不那么简单。你至少要先熟悉这些编程语言的语法,懂一些面向对象编程的知识,还要学会如何用这些编程语言去画图、做动画、分析统计数据,等等。换言之,这些编程工具无法让你一下子把注意力集中到实现多主体模型的互动规则本身上,而是要先把大量精力放到如何搭建这样的平台等非核心问题上。

所以说,工欲善其事,必先利其器。要想搞多主体模拟,就必须借助专业的多主体模拟平台,这样才会更省力。说到多主体模拟平台,目前已有不少,比如Swarm、Repast,还有比较新的如AnyLogic和NetLogo等。而在所有这些平台中,NetLogo是最适合入门的好工具。

为什么这么说呢?因为NetLogo有如下几大特点,特别适合初学者学习使用。

一、上手简单

这一点对于初学者来说是最关键的因素。笔者(张江)在北京师范大学给一年级本科生开过一门名为“复杂性思维”的课程,在这门课程中,NetLogo是他们的必学工具。事实证明,无论什么专业,哪怕是文科生,所有一年级的本科生都能轻松入门,动手开发出简单的多主体模拟程序。

NetLogo之所以这么友好,首先是因为它的界面异常地简单清晰,连新手都可以很轻松地在上面开发程序。2.1节会讲到,只需要点几下鼠标,写下几行代码,就可以完成一个多主体模拟程序。

其次,从编程语言上来说,NetLogo采用了一种类似于自然语言(英语)的语法,自然且直接,这就使得没有任何编程基础的人反而会比有一定编程基础的人更容易上手。

但不得不承认,这只是对于入门来说的。如果要完成大型项目,甚至成为NetLogo高手,那么,基础的编程知识和基本的逻辑思维训练还是必需的。所以,到了后期,具有编程经验的学生显然会更有优势。

二、范例丰富

互联网时代,我相信即使是最有经验的程序员,也不会亲自敲所有代码,而会到网上借鉴别人的代码或思路。同样,我们学习NetLogo也要借鉴更多的代码范例。

好消息是,安装NetLogo之后就会自动获得一个丰富的范例库,其中包含了上百个不同领域的多主体模型。所以,你完全不需要自己从零开始构建模型,而是应该从这些范例库中找到可以借鉴的,然后加以改造。这样做,你不仅可以学到NetLogo高手是如何写程序的,还能够更加高效地完成自己的任务。

三、功能强大

尽管NetLogo有着“傻瓜式”的界面和语法,但并不意味着它的功能也很简单。事实上,随着使用NetLogo的经验越来越丰富,你会发现这是一个深不见底的巨大宝库。

首先,你既可以按照默认模式把它当作模拟世界中的乐高玩具去搭积木,也可以将面向对象编程、并行计算,甚至是分布式人工智能等高端理念揉进自己的NetLogo程序之中,它都能胜任。总而言之,NetLogo是一个通用的编程工具,理论上,它可以实现任何任务。

其次,NetLogo其实不仅仅是一个编程工具,它还是一个平台,集成了很多其他工具。比如,要想完成系统动力学的模拟,你可以使用它的“System Dynamics Modeler”模块(见第10章);再比如,为了重复实验并分析数据,你可以使用它的“BehaviorSpace”模块(见第8章)。

最后,NetLogo还有很多高级玩法。比如,你可以将NetLogo与C语言或著名的数学软件Mathematica相连,从而动态地调用这些开发工具的强大功能。你甚至可以将NetLogo布局到局域网环境中,实现多台计算机的联动,从而完成一些小型的多人博弈实验。

接下来,我们就来看几个用NetLogo程序实现的多主体模拟的简单例子。