导语

能够用计算机进行多主体仿真,才能说是开始入门了复杂性科学,而 NetLogo 是一个简便的上手工具。值此非常时期,集智的 NetLogo 课程及其他复杂性科学系列课程,将免费开放给所有感兴趣的朋友,希望所有大家能有一个充实的 2 月。


你还在为如何入门复杂性科学而苦恼吗?其实,最好的入门手段就是自己亲手在计算机中搭建一个复杂系统。Netlogo就是一个非常好的入门工具,它可以让你通过简单的设置和代码编写就能搭建出一个超酷炫的多主体仿真(模拟)程序。


多主体仿真(模拟)是什么鬼?所谓的主体(Agent)就是指计算机中的一个智能”小机器人“,别误解,它可没那么复杂,它可以是一个懂得花钱买东西的小人儿,可以是一只鸟儿,也可以是一块笨笨的方格。总之,一个主体就是你可以用Netlogo的几行代码指挥的任何一个独立的单元。而所谓的多主体仿真(模拟)就是把一大堆这样的简单的玩意儿凑到一起,而实现一个有趣的功能,可以是一个人工市场,可以是一个活灵活现的鸟群,也可以是一个超级好玩的游戏。总之,多主体仿真(模拟)就是一个利用简单的玩意儿们搭建出来的复杂系统。


什么?你觉得这些太高大上,而你是一个编程菜鸟?没关系,NetLogo就是专门为你这种菜鸟设计的。NetLogo的前身是为乐高机器人开发的Logo语言,其特点就是简单易学,上手飞快。特别是对于没有任何编程经验的初学者来说,NetLogo的语法更像是自然语言(英语)一样,欢快流畅。另外,该软件绿色环保,甚至最新版本可以无需安装而在网页环境下运行。


课程概况


 课程介绍

《NetLogo多主体建模入门》这个课程就是通过数个案例教会大家如何去动手搭建一个多主体仿真模型,以及如何利用Netlogo软件实现这些模型,是一门既有理论又有实操的入门课程。它将会循序渐进地给你介绍如何使用NetLogo软件,如何通过算法来理解数值微分、数值积分,甚至求解微分方程、动力系统。通过学习,你就能搭建一个人工生命的世界,一个人工经济系统,以及一个人工生态系统。通过计算模拟,你还能理解到什么叫做捕食与被捕食的依存关系,病毒如何沿着网络进行传播甚至大爆发,你还能对人类财富不平等的起源拥有全新的洞察。其实,所有这一切真没有那么复杂,无非就是几行NetLogo的代码而已。而所有这些不同领域的知识都可以从玩弄这些代码得到。


 

《NetLogo 多主体建模入门》课程介绍


课程地址:https://campus.swarma.org/play/coursedetail?id=429


 张江 


北京师范大学


系统科学学院教授、博士生导师


集智俱乐部、集智学园创始人



课程详情


一、认识多主体模拟

这是一个开场白,我们将通过三个案例为大家介绍什么是计算机模拟,什么是多主体模拟,以及为什么计算机模拟能够如此强大。

 课程地址

认识多主体模拟

https://campus.swarma.org/play/coursedetail?id=11117

←左滑获取更多

↑ 上滑查看课程掠影 ↑


二、认识 NetLogo

通过搭建一个最简单的多主体系统:一个多体撞球世界,带领着大家学习如何搭建一个NetLogo程序。在这一课程中,我们将能认识NetLogo的界面,如何添加按钮,如何设置模拟环境。我们也能学会NetLogo的基本语法等内容。

 课程地址

认识 NetLogo

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


三、用“生命游戏”认识Patch

“生命游戏”是展现简单规则创造复杂性和涌现行为规律的经典案例。它通过三条有关出生和死亡的规则就能够衍生出一个变化万千的复杂系统。这节课将带领大家利用NetLogo搭建出“生命游戏”这个虚拟宇宙,学会如何与NetLogo中的Patch(即方格)对象打交道,以及if,ifelse,随机数发生器random-float等最基本的语法。

 课程地址

用“生命游戏”认识Patch

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


四、从Langton的蚂蚁看Turtle与Patch的交互

Langton的蚂蚁是由“人工生命之父”Christopher Langton提出来的一个经典模型,这是一个二维平面上的“图灵机”(即蚂蚁),规则简单。但是到达1万多个周期步以后,这只蚂蚁开始“神灵附体”,发了疯一样要在它的虚拟小世界中搭建出一条高速公路。它为什么会有如此奇怪的行为?只有你自己亲手把它搭建出来,你才能体会涌现的神奇魅力。

 课程地址

从Langton的蚂蚁看Turtle与Patch的交互

https://campus.swarma.org/play/coursedetail?id=11124

←左滑获取更多

↑ 上滑查看课程掠影 ↑


五、从羊-草生态系统深入Turtle与Plot画图

这是一个你能想象到的最简单的生态系统,系统中只有两个种群:羊和草,羊悠闲吃草,并获得能量不断繁殖;然而,当羊的数量超过极限,草的供给远远跟不上的时候,羊开始大规模灭绝;好在,环境对草的补给也会慢慢跟上,于是羊儿再次繁衍起来,这一次,它们不再盲目扩张,而是学会了与草和谐相处。在这个例子中,我们将继续熟悉NetLogo,内容包括自定义子函数(模块)的编写,绘图框(Plot)的使用,秒表(Tick)的使用等功能。

 课程地址

从羊-草生态系统深入Turtle与Plot画图

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


六、玩具经济模型与 Turtles间的互动

早在19世纪,著名经济学家帕累托就发现,人类社会的财富或收入的分布是极其不平等的,服从幂律分布(帕累托分布)——即“二八准则”。为什么会有这种不平等呢?这节课我们将通过构建一个最简单的人工经济模型来尝试回答这一问题——在一个假想的人工经济系统中,任意两个人发生着完全随机的交易,这样简单的规则就足以带来财富的不平等吗?

 课程地址

玩具经济模型与 Turtles间的互动

https://campus.swarma.org/play/coursedetail?id=11126

←左滑获取更多

↑ 上滑查看课程掠影 ↑


七、从玩具经济模型学文件导出与复杂曲线绘制

我们将继续探索上一节提出的玩具经济模型。为了分析随机交换模型所得出的财富分布曲线,我们将学会如何将NetLogo中的文件导出,用其它软件进行进一步分析,以及如何绘制洛伦兹曲线曲线这样的复杂图形,还包括如何操纵字符串等技能。

 课程地址

从玩具经济模型学文件导出与复杂曲线绘制

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


八、从玩具经济模型学习如何使用行为空间做实验

我们将继续前面的玩具经济模型,只不过,我们要做一个小小的改动,以使得模型真正能够复现出幂律形式的财富分布,以及“二八准则”。为了计算该经济系统中的GINI系数(经济学中一个经典的衡量财富不平等性的指标),我们将重点学会如何用数值计算的方法来计算一个曲线所围的面积(即数值积分方法),以及如何使用NetLogo提供的另一重要的工具行为控件(Behavior Space)来做大规模的重复性实验。

 课程地址

从玩具经济模型学习如何使用行为空间做实验

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


九、透过人工鸟群Boid模型学习List的使用

著名的人工鸟群模型Boid可以通过三条简单的规则:靠近、对齐、分离来实现逼真的鸟群飞行模拟,该模型早已经被广泛应用在各种好莱坞大片的计算机动画制作以及大型3D计算机游戏之中了。然而,实现这样一个Boid模型并没有想象中的那么简单,我们必须懂得如何在计算机上实现矢量的运算和基本的微积分等概念。在这节课中,我们为了实现一个力学版本的Boid模型,将重点学会如何用NetLogo中的List实现二维矢量的基本运算,以及如何用欧拉法(即数值求解微分方程的方法)求解鸟群的运动轨迹。

 课程地址

透过人工鸟群Boid模型学习List的使用

https://campus.swarma.org/play/coursedetail?id=11129

←左滑获取更多

↑ 上滑查看课程掠影 ↑


十、网络上病毒传播的SIR模型 用Links建模网络动力学

正值新型冠状病毒在中国肆虐期间,我们制作了这一节课。该课程将给大家讲解如何用NetLogo实现最简单的病毒传播模型,即SIR模型。我们将网络上的节点分成三种状态,即易感态(S)、感染态(I)以及康复态(R),并制定出它们相互转换的规则。在这节课中,我们将重点学习如何用NetLogo搭建一个网络,如何用Link对象来建立连边和网络,以及如何用更简单的方式来实现偏好依附规则,从而近似得到一个无标度的网络。

 课程地址

网络上病毒传播的SIR模型 用Links建模网络动力学

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑


十一、重访羊-草模型与系统动力学建模

多主体建模在主体数量非常大,主体属性不太重要的时候并不是最好的建模方法。此时,我们考虑使用系统动力学方法建模更加合适。我们只需要抓住系统中重要的总体变量,并写下它变化的动力学方程,就可以自动运用差分方程的方法来求解了。本课程运用系统动力学重新对羊草模型进行了建模,并利用NetLogo自带的另一个重要工具System Dynamics Modeler对其进行模拟。

 课程地址

重访羊-草模型与系统动力学建模

https://campus.swarma.org/play/coursedetail?id=429

←左滑获取更多

↑ 上滑查看课程掠影 ↑



推荐阅读


非常时期,集智开放超过100小时的系统科学课程

从复杂网络小世界、无标度、高聚类特性看新型冠状病毒肺炎

扩散信息、交通管制、自我隔离,哪个更能遏制病毒传播?

防控力度多大才能遏制疫情发展?网络动力学推演给你答案

加入集智,一起复杂!




集智俱乐部QQ群|877391004

商务合作及投稿转载|swarma@swarma.org

_

搜索公众号:集智俱乐部


加入“没有围墙的研究所”

让苹果砸得更猛烈些吧!


👇点击“阅读原文”,获取更多系统科学入门课程