如何使用NetLogo发送参数?

2024-06-19

我对 NetLogo 还很陌生,这就是我被困在这里几周的原因。

我想做的是让特工分成 2 队 4 人一组。

我的计划是让一个函数保存 4 个海龟 ID,

to assign-groupmates [a1 a2 a3 a4]

并将他们分配到团队 1

assign-groupmates [a1 a2 a3 a4] =team1[]
if team1 > 4
assign-groupmates [a1 a2 a3 a4] =team2[]

我所做的是:

    to assign-groupmates [ f g h i]
      let A who random f
      let B who random g
      let C who random h
      let D who random i

      ifelse f != g, g != h, h != i, i != g
      [ set group-id 1
        separate 
        align
        cohere ]
      [assign-groupmates [W X Y Z]
      set group-id 2]  
    end

如何找到海龟 ID 以及如何通过参数发送它们? 我使用的海龟 ID 是随机的。

谢谢。


有许多不同的方法可以实现您想要的目标,但让我从一条一般性建议开始:

不要使用 who 如果可以避免的话。

它们有一些合法的用途,但这些用途很少。它们很容易出错,会导致代码丑陋,而且往往会让你对要解决的问题产生错误的想法。

NetLogo 允许您存储对代理的直接引用,例如:

ask turtles [ set friend one-of other turtles ]

一般来说,用它来代替。

但就您而言,您可能不应该存储对代理的单独引用。由于您正在处理代理组,因此您应该使用代理集。

这里有一个建议:制作一个名为的全局代理集列表groups。除此之外,让每个代理存储对构成其组的代理集的引用。这是实现这一目标的一种方法:

globals [ groups ]
turtles-own [ my-group ]

to setup
  clear-all

  let number-of-groups 2
  let turtles-per-group 4  
  create-turtles turtles-per-group * number-of-groups 

  set groups [] ; empty list
  repeat number-of-groups [
    let new-group n-of turtles-per-group turtles with [
      not is-agentset? my-group
    ]
    ask new-group [ set my-group new-group ]
    set groups lput new-group groups
  ]

  print (word "First group:  " sort first groups)
  print (word "Second group: " sort last groups)
  ; each turtle can easily access other members of its group:
  ask turtles [ show sort other my-group ]

end

这段代码的优点是非常灵活。如果您想要超过两组,或每组超过四只海龟,这是一个非常容易的更改。

另一条一般建议:如果您发现自己使用多个变量,例如a1, a2, a3等等,你可能做错了什么。您应该改用列表和/或代理集。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用NetLogo发送参数? 的相关文章

  • NETLOGO:使用上一个刻度的变量

    是否有一些原语可以使用前一个刻度的变量值 我尝试计算一个代理的 价格 变量 我的意思是使用包含其他代理的 价格 变量但来自上一个刻度的公式 不 NetLogo 中没有内置方法可以执行此操作 您最好的选择可能是创建一个名为以下内 容的变量va
  • Netlogo 数组需要文字值

    该数组需要一个文字值 set chrom forage min forage rate share min share rate mating treshold print chrom 我该如何处理 我真的不明白 Netlogo 中的数组
  • Netlogo 发芽的海龟间隔不到一处

    我想将海龟放置在每个黑色斑块上 下图 这样海龟之间就没有间隙 我现在使用的代码 ask patches with pcolor black sprout dead turtles wall agents set color red 这给出了
  • 应用栅格 netlogo gis 时扩展异常:1944553

    我正在尝试使用 GIS 扩展中的 apply raster 将 ascii 加载到 Netlogo 中 虽然我之前多次这样做过 尽管不是使用这个特定的 ascii 但 netlogo 现在会抛出以下错误 extension exceptio
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 通过视锥旋转乌龟

    我想写到我有视野的地方锥角对于乌龟 我通过视锥旋转乌龟 因此 首先它朝向视锥的起点 并以 0 05 度的增量变化 直到到达视锥的终点 let max head heading cone angle 2 set heading subtrac
  • 根据区域大小在 NetLogo 中间隔代理

    我正在尝试在 NetLogo 中开发一个模型 其中动物代理将在每次模型启动时随机分布在空间中 然而 动物是有领地意识的 关于如何让动物从一定大小的圆形区域开始 可以与其他动物在一定程度上但不完全重叠 有什么建议吗 下面是我开始的代码片段 但
  • Netlogo HPC CPU 使用百分比增加

    我通过以下方式使用无头 NetLogo 将作业提交到 HPC 服务器code bin bash N r20p q all q pe mpi 24 home abhishekb netlogo netlogo 5 1 0 netlogo he
  • 将 NetLogo 数据导出到带有节点和边的图形

    我在 NetLogo 中创建了代理 海龟 之间的一些链接 该链接将在每个时间步发生变化 我的目标是将这些数据 即海龟和它们之间的链接 导出到带有顶点 海龟 边缘 链接 的图形 这些数据可以作为 Gephi 的输入 是否可以看到图中netlo
  • 在 netlogo 中绘制随机 beta 分布

    我正在尝试生成一个品种拥有的变量 该变量从 Netlogo 中的随机 beta 分布中提取其值 我在网上找到了 bc 代码示例 但正在努力使其适应我的需要 现在 为了方便起见 我已经使用随机正态分布生成了我的分布 create breed
  • 如何解析 Netlogo 中的字符串?

    Context 对于我的模型 我希望有一个输入 用户可以在其中输入一系列值 E g 我希望从上面显示的输入中得到一个由五个数字组成的列表 例如 0 5 0 2 0 0 2 0 5 这样我就可以使用他们输入的数字进行一些计算 问题 不幸的是
  • 如何通过 GitHub 共享 NetLogo 模型

    这个非常有用的问题 和答案 https stackoverflow com questions 37817135 how to share a netlogo model online 37873761 comment67148764 37
  • 从 NetLogo 中的有界正态分布中选择值

    我正在尝试让 Ne tLogo 按照 stackoverflow 中上一个问题中的建议从有界随机正态分布中绘制值 NetLogo 如何确保变量保持在定义的范围内 https stackoverflow com questions 20230
  • MOVE-TO 期望输入是代理,但得到的是 NOBODY

    我的代码所做的是设置一个内部灰色补丁区域和一个外部黑色补丁区域 海龟可以在其中繁殖 每个补丁上有一个 一旦乌龟到达灰色和黑色区域之间的边界 我就会分配可变能量 以将乌龟的繁殖延迟一定的刻度 每个刻度能量增长一个单位 当能量达到一定数量时 我
  • 在 Netlogo 中将函数作为参数传递

    在许多其他编程语言中 您可以将一个函数作为参数传递给另一个函数并从该函数内调用它 无论如何 在 Netlogo 中可以做到这一点吗 比如下面这样 x y z are all ints to report f x y z report x y
  • set patch-size 在我的代码中的放置是否正确,并且 set 是否是正确的命令?

    编译后 我收到一条错误消息 指出在补丁大小 10 之前 set 是错误的命令 我应该使用什么命令来代替 为什么 globals road to setup clear all ask patches set pcolor green end
  • 如何使用 netlogo 生成 0.3 < X < 0.7 范围内的数字

    正如标题所示 希望生成 0 3 我目前使用 while 循环来检查随机浮点数是否在该范围内 我想知道是否有更好的方法来做到这一点 0 3 random float 0 4会给你 0 3 如果你真的不想要 0 3 我想你总是可以循环那个 我不
  • 使用列表与代理集

    代理列表和代理集是 NetLogo 中两种不同的数据类型 并且可以使用以下命令进行转换 turtle set and sort 该文档指出 您可以使用列表来表示代理的有序集合 使用集合来表示无序集合 看来可用于列表的匿名过程使得列表比代理集
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • 如何在NetLogo中创建迷宫墙?

    我正在尝试创建一个有 2 个出口的 5x5 网格 并在其中放置一些墙 换句话说 我想创造一个迷宫或迷宫 我想知道是否有办法使边框线变粗或仅更改补丁一侧的颜色 我想只放一名特工进去 并通过奖励他一些积分让他找到出口 Q 学习算法 有人有想法吗

随机推荐