news 2026/5/6 20:06:34

社会网络仿真软件: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/5/5 0:42:39

【Python】基础语法入门:顺序、条件与循环

文章目录 一、顺序语句&#xff1a; 从上到下&#xff0c;依次执行二、条件语句&#xff1a;做选择1. 条件语句的三种形式&#xff08;1&#xff09;单条件判断&#xff1a;if语句&#xff08;2&#xff09;双条件判断&#xff1a;if-else语句&#xff08;3&#xff09;多条件判…

作者头像 李华
网站建设 2026/5/5 0:41:41

python---哈夫曼树

关键特性 哈夫曼节点类&#xff08;HuffmanNode&#xff09; 存储字符和频率 支持堆排序的比较操作 哈夫曼树类&#xff08;HuffmanTree&#xff09; 从文本或频率字典构建 自动生成最优编码 支持编码和解码操作 核心功能 build_from_text(): 从文本构建哈夫曼树 encod…

作者头像 李华
网站建设 2026/5/3 6:56:48

set和map

很多新手都会混淆 Set 和 Map&#xff0c;也会疑惑「为什么它们的查询是 O (1)」—— 我先帮你理清「Set vs Map」的关系&#xff0c;再用通俗的方式解释「为什么时间复杂度是 O (1)」&#xff0c;全程结合前端场景&#xff0c;保证你能分清、记牢。一、先搞懂&#xff1a;Set …

作者头像 李华
网站建设 2026/5/3 6:57:29

Prime算法

邻接矩阵版&#xff08;推荐 n≤5000&#xff0c;稠密图&#xff09; 时间复杂度O(n2)&#xff0c;无需预建邻接矩阵&#xff0c;动态计算边权&#xff08;适配圆形 / 坐标类场景&#xff09;&#xff0c;是算法题中最常用的版本。 import java.util.Arrays;/*** Prim算法模板…

作者头像 李华
网站建设 2026/5/3 6:55:15

BOOST升压电路Multisim电路仿真原理分析

目录 1 BOOST升压电路概述 工作过程简述 主要元件作用 电路特点 2 原理分析 纹波电流分析 电感选型:平均电流IL和纹波电流▲IL Multisim仿真分析 摘要 本文分析了三极管型BOOST升压电路的工作原理。该电路通过控制三极管Q1的高频开关,使电感L1周期性地储存和释放能…

作者头像 李华