以下是 NetLogo 的基本用法 及 典型案例 的详细说明,结合操作步骤和实际建模示例,帮助快速上手:

一、基本用法:从安装到建模

1. 安装与启动
  • 下载:从 NetLogo官网 下载对应系统的安装包(支持Windows、macOS、Linux),安装后启动程序。
  • 界面概览:
    • 视图(View):可视化网格世界,显示海龟(可移动个体)和补丁(网格环境)。
    • 代码编辑区:编写模型逻辑(NetLogo语言,类Lisp语法)。
    • 界面元素:按钮(Buttons)控制仿真开始/停止,滑动条(Sliders)调节参数,监视器(Monitors)显示实时数据。
2. 核心概念快速入门
(1)主体类型
  • 海龟(Turtles):
    • 创建:create-turtles <数量>(如 create-turtles 50 生成50只海龟)。
    • 操作:ask 海龟集合 [ 命令 ](如 ask turtles [ fd 1 ] 让所有海龟前进1步)。
  • 补丁(Patches):
    • 坐标:每个补丁用 (pxcor, pycor) 表示(范围默认-179到179,可在设置中修改)。
    • 操作:ask patches with [ 条件 ] [ 命令 ](如 ask patches with [ pxcor > 0 ] [ set pcolor red ] 将x坐标>0的补丁染红)。
(2)基础语法
  • 命令示例:
    • 移动:fd <距离>(前进)、bk <距离>(后退)、rt <角度>(右转)、lt <角度>(左转)。
    • 条件:if <条件> [ 命令 ] 或 ifelse <条件> [ 命令1 ] [ 命令2 ]。
    • 循环:repeat <次数> [ 命令 ] 或 while <条件> [ 命令 ]。
  • 变量类型:
    • 海龟变量:turtles-own [ age speed ](为每只海龟定义“年龄”和“速度”)。
    • 补丁变量:patches-own [ resource ](为每个补丁定义“资源量”)。
    • 全局变量:globals [ simulation-time ](定义全局时间变量)。
3. 建模步骤(以“随机漫步”为例)
(1)定义主体与初始化
  • 在代码区添加:
(2)编写行为规则(每时间步执行)
  • 定义 go 过程(通常与“运行”按钮绑定):
(3)设置界面元素
  • 在界面编辑器中:
    • 添加“设置”按钮,关联 setup 过程。
    • 添加“运行/停止”按钮,关联 go 过程,设置运行速度(如每秒10步)。
    • 添加监视器 turtle-count 显示当前海龟数量,tick 显示时间步。
(4)运行与调试
  • 点击“设置”初始化模型,点击“运行”观察海龟随机移动,边缘处能量恢复,部分海龟因能量耗尽消失。
  • 调试技巧:用 show <变量> 在控制台打印数据,或用“探针”点击海龟查看其 energy 属性。

二、典型案例:从简单到复杂

案例1:捕食者-猎物模型(经典生态模拟)
目标:模拟捕食者(狼)与猎物(羊)的数量动态,观察种群周期性波动。
核心规则:
  • 羊:随机移动,每吃到1个草补丁(绿色)增加能量并可能繁殖,能量耗尽死亡。
  • 狼:追逐最近的羊,捕获后增加能量并可能繁殖,未捕获时消耗能量直至死亡。
关键代码:
观察结果:
  • 视图中红色代表狼,蓝色代表羊,绿色代表草。
  • 统计图表显示狼和羊的数量呈周期性波动(捕食者-猎物振荡),草的分布影响种群动态。
案例2:交通拥堵模拟(简单路口模型)
目标:模拟车辆在十字路口的行驶规则,观察红绿灯对拥堵的影响。
核心规则:
  • 车辆(海龟)沿道路(补丁标记为灰色)行驶,遇到路口时根据红绿灯转向(红灯停,绿灯行)。
  • 车辆速度固定,间距过近时减速避免碰撞。
关键步骤:
  1. 初始化道路:用补丁绘制十字道路(横向和纵向道路,路口中心补丁标记为路口)。
  2. 车辆生成:在道路两端定期生成车辆,设置初始行驶方向(横向或纵向)。
  3. 红绿灯逻辑:每20步切换红绿灯,控制对应方向车辆通行。
代码片段(简化版):
观察结果:
  • 无红绿灯时路口频繁堵塞,引入红绿灯后车辆有序通过,可通过调整红绿灯时长优化通行效率。
案例3:舆论扩散模型(社会传播模拟)
目标:模拟观点在人群中的传播,假设个体倾向于接受邻居中占多数的观点。
核心规则:
  • 每个个体(海龟)有观点 opinion(0或1),每步观察周围邻居的观点,若多数为1则自己转为1,否则保持0。
  • 初始时随机分布少量观点1的个体,观察观点如何扩散。
关键代码:
观察结果:
  • 初始随机分布的红色个体(观点1)可能逐渐扩大或缩小,最终形成大面积同色区域,体现“从众效应”。

三、进阶技巧与资源

1. 内置模型库
  • NetLogo自带 Model Library(通过菜单 File → Model Library 访问),包含100+预建模型,如:
    • 生物学:Langton’s Ant(兰顿蚂蚁)、森林火灾、细菌觅食。
    • 社会学:隔离模型(Schelling Model)、谣言传播、城市扩张。
    • 物理学:元胞自动机(康威生命游戏)、热扩散。
  • 直接打开模型后,可查看代码、修改参数、运行观察,是学习建模的最佳起点。
2. 数据收集与分析
  • 记录数据:用 file-open 和 file-write 将每时间步的海龟数量、平均属性等写入文件:
  • 可视化分析:使用内置图表(Plots)实时绘制曲线,或导出数据到Excel、Python进一步分析。
3. 连续空间与3D建模
  • NetLogo默认是离散网格,但支持 连续坐标(海龟可在任意实数坐标移动),通过 setxy <x> <y> 实现。
  • 实验性支持 3D视图(需启用扩展),用于模拟立体环境(如空中无人机群)。

四、总结:NetLogo适合谁?怎么用?

  • 适合场景:
    • 快速验证假设(如“个体自私行为是否导致公共资源崩溃”)。
    • 教育演示(向非专业人士展示复杂系统如何由简单规则涌现)。
    • 跨学科研究(生态、社会、交通、工程等领域的多主体模拟)。
  • 学习路径:
    1. 从内置模型库入手,运行并修改示例模型。
    2. 掌握海龟-补丁交互的基础语法(ask、with、条件判断)。
    3. 尝试小型建模项目(如案例1的捕食者-猎物),逐步添加复杂规则。

通过以上步骤,可快速入门NetLogo并构建自己的多主体模型,重点在于通过“微观规则→宏观现象”的映射,理解复杂系统的运行逻辑。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐