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

序二

我常把一类知识算作“武器级”的。其划分标准是,你一旦得到它,就会与竞争对手形成不对称的优势。对于研究者来讲,多主体建模方法便是这样一种“武器级”的知识。

当别人苦于数据无从获得时,你可以用多主体建模自动“吐出”许许多多模拟数据,然后欢快地进行分析。别人的研究投入,可能是大量的时间、金钱和精力。而你,只需要编写几行代码。更妙的是,如果有人已经发表了和你类似的研究,那你就可以更方便地站在巨人的肩膀上,对别人的模型加以微调,得到适合自己研究的环境设定与运行结果。

这么好的事儿,听起来不像是真的,对吧?我们都知道,低垂的果实很难长期存在,因为你看到的机会,别人同样能看到。这么好的工具,想必你的竞争者们早就学会了,不是吗?

还真不是,因为这样一种研究方法是有门槛的。这个门槛,就是编程。看到“编程”这两个字,许多人会自动放弃,因为传统观念告诉他们,只有学IT的人,才能学会编程,若你是文科生,便笃定不可能学会。

实际上,随着时代的进步、技术的发展,“编程”的含义和难度也在发生变化。如果你把编程等同于汇编语言或者机器语言,那这个世界上能真正掌握编程的人,必定是少数。甚至连某些高级编程语言,不少人学起来也是困难重重。

但是在多主体建模领域,你却有更好的选择。这个选择,就是NetLogo。

NetLogo非常简单。只需要几行代码,你就能够创造出一个虚拟世界,里面各种小动物在自由自在地觅食。

NetLogo非常易用。它提供了观察工具、绘图工具、统计工具,让你在搭建模型原型时,快捷无比。它还贴心地提供了BehaviorSpace这样的参数“海选”工具,帮助你轻松完成参数搜寻、多轮次模拟,保障实验的可重复性。

NetLogo非常实用。默认安装时,它已经包含了来自各个领域的许许多多的经典模型与前沿模型,让你可以快速地找准自己可以借鉴的基础。通过这些模型的详细代码,你可以快速了解可以刻画的现实问题,以及使用时的注意事项。

简单来说,NetLogo门槛很低,但是天花板极高。毫不夸张地说,掌握了它,你就有了发表高水平论文的保障性条件——当然,充分条件还得靠你的领域知识与研究价值。

然而即便是NetLogo,也让很多人望而却步。为什么?因为缺乏足够好的入门教材。

率先掌握了NetLogo的人,往往已经在学术界的某一领域具有了权威地位。他们写书,往往会聚焦于自己的一系列研究,而对于NetLogo本身,基本一笔带过,生怕介绍多了,占用了介绍自己研究成果的宝贵篇幅。

专家们这么做,并非没有道理。在他们看来,NetLogo简单到了这种地步,难道还需要讲解吗?

但是,这就是“幸存者偏见”了。我更喜欢用“小马过河”来形容这种认知错位。在老水牛的眼里,讨论河水有多深,简直是滑稽和浪费时间;而对于小马来说,这问题很有意义;对于小松鼠,那就是生死存亡的问题了。

确实有人有编程天赋,只需要看NetLogo的文档,就能学会并举一反三,还能运用在自己的研究里。但是,这个世界上大多数人在编程方面并没有这样的超人天赋,而学会NetLogo,以便开展研究,又是他们的刚需。

更要命的是NetLogo的语法,实际上来自于一个古老而有魔力的语言家族——Lisp。许多让人惊艳的划时代产品是用这门语言或其变种做出来的。NetLogo有了这样的基因,才能在简单的外表下拥有这么强大的能力。

如果你之前学过结构化编程或者面向对象编程,那么在学NetLogo时,可能还不如毫无编程基础的新手,因为它奇怪的语法会让你很痛苦。你怎么看,自己写的都对,但是一运行就报错,或是得出让你哭笑不得的离谱结果。

很多已经有一定编程基础的人,兴致勃勃地学完了NetLogo自带的简易入门教程后,尝试用在自己的研究上,但是很快就被劝退了,快速完成了“从入门到放弃”的全过程。

这说明,NetLogo的详细入门教程是必需的。但是很久以来,就是没人做。大部分专家觉得没必要,不愿意做,而强烈感受到必要性也愿意做的人,往往是刚入门的新手,没有这个能力。

2015年,Bill Rand写了一本介绍NetLogo的教材。我当时在美国访学,专门买了这本特别厚重的书,放进行李箱背了回来。但是一来这本书是英文的,二来价格高,没法儿给学生作为教材使用,只能推荐他们去看Bill的慕课课程。他们看了,却一脸懵:老师,它是全英文的……

所以,看到张江老师的这本中文新书,我很欣喜。张江老师在复杂系统领域深耕多年。作为北京师范大学教授和集智学园创始人,他的研究基础、教学能力和社区号召力,使得这本书的权威性、趣味性和易读性都有了充分的保障。

其实,这不是我第一次推荐张江老师的NetLogo教学成果了。早在2020年2月,我看到张老师集智学园网站的NetLogo在线课程时,便欣喜地第一时间在公众号和知乎撰文推荐了。有不少人看到我的推荐后,学完了这门课程,大为受益,通过留言和私信向我表示感谢。

但是,在线课程有一个问题:复习的成本太高,学生容易学习动力不足。例如,在复习时要找到并点开对应的视频,不断快进或拖曳进度条,才能找寻当初模糊的记忆。动力不足,人就容易拖延。拖延久了,便干脆忘了这码事儿。

而一旦有了书,效果就大不一样了。书这种我们从上学起就熟悉的介质,非常便于随手标注、做笔记和复习。结合在线课程使用,你可以自主掌握进度,并且通过更为详细的文字,能对重点和难点知识进行深入学习和揣摩。

本书基本上囊括了入门NetLogo所需掌握的各种模块。只要你真真正正把这11章内容学完,就能成功掌握NetLogo的基础。剩下的,就是灵活运用你的“屠龙宝刀”了。

祝建模愉快,早日做出你自己的优秀研究成果!

王树义

天津师范大学副教授,公众号“玉树芝兰”主理人,少数派网站专栏作者