news 2026/3/8 9:27:37

社会网络仿真软件:NetLogo_(2).NetLogo基础操作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
社会网络仿真软件:NetLogo_(2).NetLogo基础操作

NetLogo基础操作

在这一节中,我们将详细介绍NetLogo的基础操作,包括如何安装和启动NetLogo,如何创建和编辑模型,以及如何运行和观察仿真结果。这些基础操作是使用NetLogo进行社会网络仿真的前提,掌握这些操作将帮助您更好地理解和使用NetLogo。

安装和启动NetLogo

安装NetLogo

  1. 下载NetLogo

    • 访问NetLogo的官方网站:https://ccl.northwestern.edu/netlogo/

    • 选择适合您操作系统的版本(Windows、MacOS、Linux)进行下载。

  2. 安装NetLogo

    • 对于Windows用户,下载的文件是一个安装程序(.exe文件)。双击安装程序,按照提示完成安装。

    • 对于MacOS用户,下载的文件是一个.dmg文件。双击.dmg文件,将NetLogo拖动到Applications文件夹中。

    • 对于Linux用户,下载的是一个压缩包(.tar.gz文件)。解压后,进入解压目录,运行./netlogo.sh启动NetLogo。

启动NetLogo

  • Windows:安装完成后,在开始菜单中找到NetLogo并点击启动。

  • MacOS:在Applications文件夹中找到NetLogo并双击启动。

  • Linux:在终端中进入NetLogo的安装目录,运行./netLogo.sh启动NetLogo。

创建和编辑模型

创建新模型

  1. 打开NetLogo

    • 启动NetLogo后,您将看到NetLogo的主界面。
  2. 新建模型

    • 在NetLogo主界面中,点击“文件”菜单,选择“新建”选项,即可创建一个新的模型。
  3. 模型界面

    • 界面区域:在主界面中,您可以看到一个空白的界面区域,这是您放置模型元素(如按钮、滑块、图表等)的地方。

    • 代码区域:在主界面下方,您可以看到一个代码区域,这是编写模型代码的地方。

编辑模型

  1. 界面编辑

    • 按钮:在界面区域中,点击工具栏上的“按钮”图标,然后在界面区域中拖动鼠标创建按钮。在弹出的对话框中,输入按钮的标签和要执行的代码。

    • 滑块:点击工具栏上的“滑块”图标,然后在界面区域中拖动鼠标创建滑块。在弹出的对话框中,设置滑块的最小值、最大值、初始值和步长。

    • 图表:点击工具栏上的“图表”图标,然后在界面区域中拖动鼠标创建图表。在弹出的对话框中,设置图表的标题、X轴和Y轴的标签,以及要绘制的数据。

  2. 代码编辑

    • 全局变量:在代码区域中,使用globals关键字定义全局变量。例如:

      globals [ population-size ; 人口规模 average-degree ; 平均度 ]
    • 代理集:使用turtlespatches关键字定义代理集。例如:

      turtles-own [ age ; 年龄 connections ; 连接数 ] patches-own [ resource ; 资源 ]
    • 设置过程:使用to setup关键字定义模型的初始化过程。例如:

      to setup clear-all create-turtles population-size [ setxy random-xcor random-ycor ; 随机放置乌龟 set age random 100 ; 随机设置年龄 set connections 0 ; 初始化连接数 ] reset-ticks end
    • 仿真过程:使用to go关键字定义模型的仿真过程。例如:

      to go ask turtles [ ; 每个乌龟的行动 move-turtles form-connections update-connections ] tick end

示例模型:简单的人口动态模型

模型描述

我们将创建一个简单的模型,模拟一个社会网络中的人口动态。在这个模型中,我们假设每个人(乌龟)在每个时间步中随机移动,并且根据一定的规则形成和断开连接。

模型代码
; 定义全局变量 globals [ population-size ; 人口规模 average-degree ; 平均度 ] ; 定义乌龟的属性 turtles-own [ age ; 年龄 connections ; 连接数 ] ; 定义初始化过程 to setup clear-all set population-size 100 ; 设置人口规模 set average-degree 10 ; 设置平均度 create-turtles population-size [ setxy random-xcor random-ycor ; 随机放置乌龟 set age random 100 ; 随机设置年龄 set connections 0 ; 初始化连接数 ] form-connections ; 形成初始连接 reset-ticks end ; 定义仿真过程 to go ask turtles [ move-turtles ; 每个乌龟随机移动 form-connections ; 形成新的连接 update-connections ; 更新连接数 ] tick end ; 乌龟的移动过程 to move-turtles rt random 360 ; 随机旋转 fd 1 ; 向前移动 end ; 形成连接的过程 to form-connections let potential-friends other turtles in-radius 3 ; 找到附近的乌龟 if any? potential-friends [ let new-friend one-of potential-friends create-link-with new-friend ; 创建连接 set connections connections + 1 ; 增加连接数 ] end ; 更新连接数的过程 to update-connections set connections count my-links ; 重新计算连接数 end
模型界面
  1. 按钮

    • 创建一个名为“Setup”的按钮,设置其命令为setup

    • 创建一个名为“Go”的按钮,设置其命令为go

  2. 滑块

    • 创建一个名为“Population Size”的滑块,设置其最小值为10,最大值为200,初始值为100,步长为10。

    • 创建一个名为“Average Degree”的滑块,设置其最小值为1,最大值为20,初始值为10,步长为1。

  3. 图表

    • 创建一个名为“Connections Over Time”的图表,设置X轴标签为“Ticks”,Y轴标签为“Connections”,并添加一个数据列,设置其命令为mean [connections] of turtles

运行和观察仿真结果

  1. 设置模型参数

    • 在界面区域中,使用滑块调整人口规模和平均度的值。
  2. 初始化模型

    • 点击“Setup”按钮,初始化模型。此时,界面区域中将随机生成指定数量的乌龟,并按照平均度形成初始连接。
  3. 运行仿真

    • 点击“Go”按钮,开始仿真。乌龟将在每个时间步中随机移动,并根据规则形成和断开连接。
  4. 观察结果

    • 观察乌龟的移动和连接变化。

    • 观察图表中的连接数变化,了解人口动态的规律。

示例模型:复杂的社会网络模型

模型描述

我们将创建一个更复杂的社会网络模型,模拟一个社区中的人际关系。在这个模型中,每个人(乌龟)根据年龄和兴趣形成连接,并且随着时间的推移,这些连接会动态变化。

模型代码
; 定义全局变量 globals [ population-size ; 人口规模 average-degree ; 平均度 max-age ; 最大年龄 max-interest ; 最大兴趣值 ] ; 定义乌龟的属性 turtles-own [ age ; 年龄 interest ; 兴趣值 connections ; 连接数 friends ; 朋友列表 ] ; 定义初始化过程 to setup clear-all set population-size 100 ; 设置人口规模 set average-degree 10 ; 设置平均度 set max-age 100 ; 设置最大年龄 set max-interest 100 ; 设置最大兴趣值 create-turtles population-size [ setxy random-xcor random-ycor ; 随机放置乌龟 set age random max-age ; 随机设置年龄 set interest random max-interest ; 随机设置兴趣值 set connections 0 ; 初始化连接数 set friends [] ; 初始化朋友列表 ] form-connections ; 形成初始连接 reset-ticks end ; 定义仿真过程 to go ask turtles [ move-turtles ; 每个乌龟随机移动 form-connections ; 形成新的连接 break-connections ; 断开连接 update-connections ; 更新连接数 ] tick end ; 乌龟的移动过程 to move-turtles rt random 360 ; 随机旋转 fd 1 ; 向前移动 end ; 形成连接的过程 to form-connections let potential-friends other turtles in-radius 3 with [ interest > [interest] of myself - 20 and interest < [interest] of myself + 20 ] ; 找到兴趣相似的乌龟 if any? potential-friends [ let new-friend one-of potential-friends if not member? new-friend friends [ create-link-with new-friend ; 创建连接 set friends lput new-friend friends ; 添加到朋友列表 set connections connections + 1 ; 增加连接数 ] ] end ; 断开连接的过程 to break-connections let current-friends friends if length current-friends > 0 [ let friend-to-break one-of current-friends ask friend-to-break [ set friends remove self friends ; 从朋友列表中移除 set connections connections - 1 ; 减少连接数 ] set friends remove friend-to-break friends ; 从自己的朋友列表中移除 set connections connections - 1 ; 减少连接数 ] end ; 更新连接数的过程 to update-connections set connections count my-links ; 重新计算连接数 end
模型界面
  1. 按钮

    • 创建一个名为“Setup”的按钮,设置其命令为setup

    • 创建一个名为“Go”的按钮,设置其命令为go

  2. 滑块

    • 创建一个名为“Population Size”的滑块,设置其最小值为10,最大值为200,初始值为100,步长为10。

    • 创建一个名为“Average Degree”的滑块,设置其最小值为1,最大值为20,初始值为10,步长为1。

    • 创建一个名为“Max Age”的滑块,设置其最小值为50,最大值为150,初始值为100,步长为10。

    • 创建一个名为“Max Interest”的滑块,设置其最小值为50,最大值为150,初始值为100,步长为10。

  3. 图表

    • 创建一个名为“Connections Over Time”的图表,设置X轴标签为“Ticks”,Y轴标签为“Connections”,并添加一个数据列,设置其命令为mean [connections] of turtles

    • 创建一个名为“Interest Distribution”的图表,设置X轴标签为“Interest”,Y轴标签为“Number of Turtles”,并添加一个数据列,设置其命令为histogram [interest] of turtles

运行和观察复杂模型

  1. 设置模型参数

    • 在界面区域中,使用滑块调整人口规模、平均度、最大年龄和最大兴趣值的值。
  2. 初始化模型

    • 点击“Setup”按钮,初始化模型。此时,界面区域中将随机生成指定数量的乌龟,并根据兴趣值形成初始连接。
  3. 运行仿真

    • 点击“Go”按钮,开始仿真。乌龟将在每个时间步中随机移动,并根据兴趣值形成和断开连接。
  4. 观察结果

    • 观察乌龟的移动和连接变化。

    • 观察“Connections Over Time”图表中的连接数变化,了解社交网络的动态规律。

    • 观察“Interest Distribution”图表中的兴趣值分布,了解社区中兴趣值的变化趋势。

通过以上基础操作的学习,您现在已经掌握了如何在NetLogo中创建和编辑简单的社会网络模型。接下来,我们将进一步探讨如何使用NetLogo进行更复杂的社会网络仿真。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/3 14:32:46

LeetCode 3650.边反转的最小路径总成本:Dijkstra算法

【LetMeFly】3650.边反转的最小路径总成本&#xff1a;Dijkstra算法 力扣题目链接&#xff1a;https://leetcode.cn/problems/minimum-cost-path-with-edge-reversals/ 给你一个包含 n 个节点的有向带权图&#xff0c;节点编号从 0 到 n - 1。同时给你一个数组 edges&#xf…

作者头像 李华
网站建设 2026/3/4 21:43:58

实测缩短70%课件制作时间:这款AIPPT工具就是老师的大救星

实测缩短70%课件制作时间&#xff1a;ChatPPT引领教学效率革命 实测数据显示&#xff0c;使用ChatPPT制作课件&#xff0c;基础构建时间可缩短70%以上&#xff0c;这不是夸张&#xff0c;而是众多教育工作者的真实反馈。在2026年的今天&#xff0c;课件制作正经历着一场由AI驱动…

作者头像 李华
网站建设 2026/3/3 15:35:09

CoDeSys入门实战一起学习(二十):布尔、整型、实数、字符串、时间5大类标准数据类型详解(附实战案例)

写CoDeSys程序的第一步&#xff0c;必然是声明变量/常量&#xff0c;而所有声明都离不开数据类型。CoDeSys的标准数据类型完全遵循IEC61131-3标准&#xff0c;共分为布尔、整型、实数、字符串、时间5大类&#xff0c;是所有PLC程序的“基础积木”。很多新手容易踩坑&#xff1a…

作者头像 李华
网站建设 2026/3/2 6:18:08

KingbaseES数据库瓶颈排查实战指南:从实例到语句的全维度解析

在高并发、海量数据的业务场景下&#xff0c;数据库性能直接决定了应用系统的响应速度和稳定性&#xff0c;而瓶颈排查则是性能调优的核心前提——只有精准定位问题根源&#xff0c;才能避免盲目调参、优化无效的内耗。KingbaseES作为国产数据库中的优秀代表&#xff0c;在政务…

作者头像 李华
网站建设 2026/2/26 12:18:16

巡防勤务可视化管理

巡防勤务可视化管理 巡防勤务管理可视化系统&#xff0c;基于大数据平台的警务地理信息系统&#xff0c;可以实时查看警力在岗状态、警力分布、应急资源等。系统支持快速定位警员、车辆的位置&#xff0c;查看警力详细信息&#xff0c;调取监控视频画面&#xff0c;并进行单方…

作者头像 李华
网站建设 2026/3/8 5:14:43

想把网页保存成PDF文件,快速删掉侧边栏广告再打印

想要把网页保存成PDF文件的时候经常会有右侧左侧侧边栏挡住主要内容。怎么办呢&#xff1f; 打开 开发者模式 在 console 里粘贴以下&#xff0c;回车&#xff0c;就好了&#xff01; // 隐藏所有可能包含侧边栏的常见元素 var style document.createElement(style); style.in…

作者头像 李华