查看原文
其他

入门复杂性科学,从Netlogo课程开始 | NetLogo多主体建模社群正式启动

The following article is from 集智学园 Author 集智小编


导语


能够用计算机进行多主体仿真,才能说是开始入门了复杂性科学,而 NetLogo 是一个简便的上手工具。


我们启动了NetLogo社群的长期运营计划,交流NetLogo技术问题,分享多主体仿真建模方法,并向所有集智NetLogo课程学员开放。如果你此前已经购买了集智NetLogo课程,请直接在课程页面填表申请入群。


飞鸟如何聚集成群?商贩们如何通过相互竞争形成最终的猪肉价格?股票价格为何会暴涨暴跌?新冠病毒为什么能这么快传播?怎样才是最好的防疫手段?……这些都是复杂性科学研究的问题,解决这些问题的关键方法是多主体仿真。


许多同学为入门复杂性科学而苦恼,其实,最好的入门手段就是自己亲手在计算机中搭建一个复杂系统。而Netlogo就是一个非常好的入门工具,它可以让你通过简单的设置和代码编写就能搭建出一个超酷炫的多主体建模程序。本文插图均由NetLogo代码生成,大家可以体验一下。


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


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


这里特别向你推荐集智学园的「NetLogo多主体建模入门」系列课,由北京师范大学张江教授主讲,课程定价199元,共11讲,总时长超过6小时。


我们同时启动NetLogo社群计划,助教在线解答NetLogo学习问题,凡是集智NetLogo课程学员(包括老学员),均可免费申请入群。


扫描二维码即可购课,购课后将显示社群申请入口




NetLogo课程与社群




课程介绍

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

 

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


课程地址:https://campus.swarma.org/course/1095


张江

北京师范大学系统科学学院教授

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


 

社群福利

社群的目的在于通过NetLogo编程训练多主体建模思维。购买课程后添加助教微信即可加入集智NetLogo社群。


加入Netlogo社群将享有以下福利:

  • 有Netlogo的老师和助教在群里,及时回答在学习Netlogo课程中遇到的技术问题;

  • 助教会不定期在群分享编程技巧和避坑小技巧,分享有趣的练习实战,并与大家讨论关于Netlogo和建模方面的技术问题;

  • 在群内会及时跟进NetLogo最新动态,同时希望可以组织群内的同学共同来对Netlogo文档进行汉化和润色;

  • 表现优秀的学员将有机会参与到集智与Netlogo相关的项目实战中。


 

课程目录

  1. 认识多主体模拟

  2. 认识NetLogo

  3. 用“生命游戏”认识Patch

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

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

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

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

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

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

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

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





课程详情




1.认识多主体模拟


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


课程地址(本节可免费试看)

https://campus.swarma.org/course/1096


课程掠影



2.认识NetLogo


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

课程掠影



3.用“生命游戏”认识Patch


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


课程掠影



4.从Langton的蚂蚁

Turtle与Patch的交互


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


课程掠影



5.从羊-草生态系统

深入Turtle与Plot画图


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


课程掠影



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


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


课程掠影



7.从玩具经济模型学文件

导出与复杂曲线绘制


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


课程掠影



8.从玩具经济模型

学习如何使用行为空间做实验


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


课程掠影



9.透过人工鸟群Boid模型

学习List的使用


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


课程掠影



10.网络上病毒传播的SIR模型

用Links建模网络动力学


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


课程掠影



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


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


课程掠影




(本文插图生成自NetLogo 6.0.4)

集智NetLogo多主体建模群将长期运营,欢迎参加课程的同学随时申请加入。





推荐阅读



点击“阅读原文”,加入集智NetLogo课程

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存