前言
记得在我8岁生日的时候,父亲给我买了一台胜天9900型号的游戏机,这是当时任天堂红白机类型的游戏机中最好的一种了。于是,《超级玛丽》《魂斗罗》《恶魔城》《赤色要塞》等一干游戏便成了我假期生活的伴侣。游戏玩多了,我便萌生了自己做游戏的想法。说干就干,我找来很多硬纸板,把游戏中的一个个形象画在纸板上,然后把它们剪下来,再用线头或是铁丝把这些零部件串起来——我当时居然想用这些纸板和铁丝来制作一款游戏!结果可想而知,我很快便发现要通过铁丝和纸板搭建游戏是多么荒诞可笑的想法……但是,自己亲手制作游戏这颗种子从那时便埋在了心里。
30多年过去了,在我女儿8岁生日的时候,我终于让她玩上了我自己制作的游戏。这是一个简单而粗糙的《愤怒的小鸟》游戏,但女儿玩得异常开心。制作这个游戏的工具自然不是纸板和铁丝,而是NetLogo。
NetLogo是一款专门用于搭建模拟世界的软件,可以在任何计算机上运行,非常简单易用。我一接触到它,便爱不释手。我可以很快地用NetLogo实现那些酷炫的复杂系统模型和人工智能算法,并通过酷炫的动画来展示这些深奥而复杂的概念。我甚至在北京师范大学开设了“复杂性思维”的课程,专门教本科生掌握复杂性科学的最新知识以及NetLogo的使用方法。
学生们的反馈很好。他们发现,我所讲授的那些概念,如多主体模拟、元胞自动机、动力系统,等等,在NetLogo的演示下都变得异常简单而直观。于是,我在“复杂性思维”课程中增加了越来越多NetLogo的内容。但很快出现了另一个问题,就是我很难平衡复杂性科学和NetLogo这两部分教学内容的比重。有学生向我反馈,要么多讲一些NetLogo的内容,要么多讲一些复杂性科学的内容,每个都讲一点儿,会导致哪个都没有讲透。
于是,在2020年,我开发了一套全新的线上课程,叫作“NetLogo多主体建模入门”,专注于NetLogo的各种操作和语法等技术细节。同时,我的“复杂性思维”课程也变得纯粹了,抛开了NetLogo之后,我便可以增加更多复杂性科学的内容。但这苦了选修这门课的学生,他们选了这门2学分的课,还必须在线修“NetLogo多主体建模入门”,课程内容翻了一倍,相当于选修了一门至少值3学分的课。但我收到的反馈令我诧异,他们很享受这样的安排,并没有抱怨要学那么多东西。绝大多数学生认为,学习NetLogo这样的实操技能让他们收获满满。
与此同时,“NetLogo多主体建模入门”这门课程在集智学园的网站上线之后便受到了广大粉丝的欢迎。我甚至看到有人自发地在知乎等平台为这门课写笔记,推广给更多人。这也难怪,介绍NetLogo的中文学习资料实在太少了。那么,我们该如何进一步扩大这门课程的影响力呢?
2021年伊始,在张爱华、张倩等集智俱乐部小伙伴们的支持下,我们有机会将“NetLogo多主体建模入门”这门线上课程的内容转化为文字,这便有了你手上的这本书。但是,文字与线上课程在表现形式上毕竟有非常大的不同。很多口语化的表达要变成规范的白纸黑字,很多内容和案例需要重写。多亏了张爱华的辛勤努力,以及人民邮电出版社图灵公司编辑张霞的修改建议,本书才得以成型。
本书分成上篇和下篇两个部分。上篇包括第1章到第5章,这一部分的内容非常简单,容易上手,以介绍NetLogo的基本语法和基本概念为主。从第6章开始,便进入了下篇。相比上篇,下篇内容在难度上会有较大的提升。最主要的不同是,下篇除了一如既往地介绍NetLogo的基本操作和语法,还引入了复杂性科学、数学、物理学等领域的大量内容,其中包括概率分布、数值积分、基尼系数、洛伦兹曲线等概念。但是,读者大可不必被这些复杂的概念吓住,因为它们都能落实到一行行NetLogo代码上。从NetLogo层面来看,再高深的概念也仍然不过是区区几行代码而已。然而,一旦跨越下篇的难度障碍,你在NetLogo方面的修为便会有巨大的飞跃。你会发现,有了下篇的功夫,你真的可以随心所欲地搭建自己想要的模型了。
然而,由于成书时间仓促,错误和遗漏在所难免,还望各位读者海涵。
张江
北京西城区
2021年5月23日