news 2026/9/3 4:54:16

社会网络仿真软件: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/9/2 1:11:37

duckDB C++源代码解析

从 pypi.org下载 duckdb-1.4.4.tar.gz 解析 DuckDB 的 C 源代码&#xff0c;核心是理解其整体架构、核心模块的实现逻辑以及关键代码的设计思路。DuckDB 作为一款高性能的嵌入式分析型数据库&#xff0c;其 C 源码结构清晰且遵循现代 C 最佳实践&#xff0c;下面我会从整体架…

作者头像 李华
网站建设 2026/9/2 20:57:24

李彦宏的春晚赌注:5亿红包能砸出百度AI“第二春”吗?

1月25日&#xff0c;百度APP官宣两大动作。一是成为《2026北京广播电视台春节联欢晚会》首席AI合作伙伴&#xff0c;二是推出为期近两个月的春节现金红包活动——从1月26日持续到3月12日&#xff0c;若用户在百度APP上启用文心助手&#xff0c;则能够参与到瓜分总额达5亿元人民…

作者头像 李华
网站建设 2026/9/2 21:39:11

词向量:AI理解语言的基石

本文作者为 360 奇舞团前端开发工程师一句话总结&#xff1a;词向量不是炫技的数学玩具&#xff0c;而是让机器具备初步“语义直觉”的关键技术&#xff0c;是语义搜索、智能推荐、多模态系统等现代 AI 应用的底层基石。一、为什么需要词向量&#xff1f;—— 传统方法的困境在…

作者头像 李华
网站建设 2026/9/2 21:41:01

大模型推理卡顿?vLLM的PagedAttention三分钟提速

&#x1f493; 博客主页&#xff1a;借口的CSDN主页 ⏩ 文章专栏&#xff1a;《热点资讯》 目录 破局大模型推理瓶颈&#xff1a;PagedAttention如何实现三分钟提速&#xff1f; 一、卡顿之源&#xff1a;KV缓存管理的“内存碎片化”困局 二、破局关键&#xff1a;PagedAttenti…

作者头像 李华
网站建设 2026/9/2 21:41:02

Claude Code 深度指南:理解 Constitution、Claude、Agent 三者关系

文章目录Claude Code 是什么&#xff1f;为什么需要理解三者关系&#xff1f;一、Claude Code 核心概念&#xff1a;三个关键角色的定义1. constitution&#xff08;宪法&#xff09;——Claude Code 的「顶层行为准则」constitution.md 示例&#xff08;Claude Code 项目&…

作者头像 李华