Netlogo:带有两个列表的“foreach”命令

2024-01-03

我有一个完整的有向图,每个链接都有自己的权重。我已经成功地选择了每只海龟的最大输出链接。但是,有时两只乌龟的最大输出链接彼此相反,导致两个彼此相反的链接被选择。如果发生这种情况,我希望具有较低值的链接消失。 我用这个创建了两个列表:

set max-end1  [[end1] of max-one-of my-out-links [trust]] of turtles
set max-end2  [[end2] of max-one-of my-out-links [trust]] of turtles

并通过设置 x 和 y 参数,如下所示:

ask turtles
[
set x max-one-of my-out-links [label]
set y my-in-links
]

我希望像这样比较两个列表中的每个项目:

if [x] of max-end2 = any? [y] of max-end1
[
ifelse x X y
[ask x [die]]
[ask y [die]]
]

但我不知道如何将 foreach 命令与 if 命令结合起来 有人能帮我吗?


我实际上无法弄清楚你的代码应该如何工作。列表似乎是一种尴尬的方法来解决这个问题以及您使用的方式any?是行不通的。因此,我重新开始并编写了一个独立模型(将其放入空的 NetLogo 会话中)来完成我认为您正在尝试做的事情。

links-own [ weight ]

to testme
  clear-all
  create-turtles 15
  ask turtles
  [ create-links-to other turtles
    [ set weight random 100
    ]
  ]
  layout-circle turtles 10
  kill-lowers
end

to kill-lowers
  ; first remove any that's not a max weight
  ask turtles
  [ let big-link max-one-of my-out-links [weight]
    let dying my-out-links with [not member? self (link-set big-link)]
    ask dying [die]
  ]
  ; find pairs and make lower turn red
  ask links
  [ let opp-links links with [end1 = [end2] of myself and end2 = [end1] of myself ]
    if any? opp-links
    [ ask opp-links [set color red]
    ]
  ]
end

testme 程序只是创建一个完整的网络。然后它调用kill-lowers 过程来删除链接。第一部分让每只海龟识别它的out-link具有最大的权重(或者随机选择一个,如果两个同样高),然后创建link-set所有其他链接并让它们死掉。我认为您的代码中已经发生了这种情况。

所以有趣的部分是开始的部分ask links。它随机地遍历所有链接(将其视为foreach除了对一组链接而不是列表进行操作)。反过来,对于特定链接,代码会检查是否存在相反方向的链接,并将其设置为名为 opp-links 的变量。它检查的方式是简单地查看是否有一个链接end2成为自己的end1还有另一种方式。end1是定向链接的来源,并且end2是目标。

如果有这样的链接,它就会变成红色。这样您就可以检查代码是否正在执行您想要的操作。测试完之后你就拥有了die反而。

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

Netlogo:带有两个列表的“foreach”命令 的相关文章

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

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

    如何在 NetLogo 中定义加法或减法向量 它似乎没有任何与之相关的数据类型 我在这里所说的矢量是指乌龟的速度 netlogo 中是否有支持此功能的扩展 我找不到 我不知道提供矢量的扩展 但在 NetLogo 本身中进行编码所涉及的数学通
  • Netlogo 发芽的海龟间隔不到一处

    我想将海龟放置在每个黑色斑块上 下图 这样海龟之间就没有间隙 我现在使用的代码 ask patches with pcolor black sprout dead turtles wall agents set color red 这给出了
  • 将带有空格的文件行作为列表读取到 NetLogo 中

    如何将由空格分隔的文件内容作为列表读入 NetLogo 例如 对于包含以下数据的文件 2321 23233 2 2321 3223 2 2321 313 1 213 321 1 我想创建如下列表 a 2321 2321 2321 213 b
  • 尝试在集群上无头运行 NetLogo 时出现 Java 错误

    我正在尝试使用 Linux 无头运行 Netlogo 以便将作业发送到集群 我以前从未使用过 Linux 但我正在尝试按照此处的说明进行操作 http netlogo users 18673 x6 nabble com Running Ne
  • 如何在大空间范围内加速最小成本路径模型

    继从如何提高最低成本路径模型的模拟速度 https stackoverflow com questions 21839462 how can i increase speed up simulation of my least cost p
  • 如何在 netlogo 上创建计时器?

    对于我的迷宫项目 我想创建一个监视器按钮来跟踪海龟从开始到结束所需的时间 我该如何为计时器编写代码 查看reset timer and timer并在文档中 在迷宫设置期间 执行reset timer 在迷宫运行过程中 您可以使用以下命令检
  • 在 netlogo 中设置自动排序文件名

    我正在将结果表从 netlogo 导出到 csv 并希望它每次都按顺序更改文件名 例如 会话的第一次运行将是 file 1 csv 第二次运行是 file 2 csv 等 我知道如何手动执行此操作 但是有没有办法自动执行此操作 我猜这与 i
  • 内存:在表中存储多个补丁的补丁变量

    我正在创建特定于海龟的表 在其中存储补丁坐标 模拟年份 全局变量根据刻度数设置为 1 2 或 3 以及表示可用资源的补丁变量 我已经成功地编写了一个表的代码 该表包含当前补丁的这些值 但我一直试图对其进行缩放 以便海龟在每个时间步都为其所有
  • 根据区域大小在 NetLogo 中间隔代理

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

    这是一个后续问题NetLogo 创建固定数量链接的有效方法 https stackoverflow com questions 32967388 netlogo efficient way to create fixed number of
  • 将 NetLogo 数据导出到带有节点和边的图形

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

    非常感谢您帮助编写我的模型 如果您不介意的话 我想问您一些编码中的解释 抱歉我不是数学专家 to move ask turtles with gender male if random float 1 lt 0 025 为什么它是 和百分比
  • NetLogo 以字符列表的形式读入文件

    我是 NetLogo 新手 我有一个包含一行值的文本文件 ABC CDC BBC 我试图读取该文件的第一行作为字符列表 例如 A B C 我一直在尝试使用文件读取行 但它创建了一个字符串 ABC observer gt file open
  • 路径未到达我的 A* 算法中的结束节点

    继从如何在大空间范围内加速最小成本路径模型 https stackoverflow com questions 23202199 how to speed up least cost path model at large spatial
  • 如何存储/计算单个簇大小并在 NetLogo 中绘制它们

    我有一个生成黄色斑块簇的模型 我有兴趣查看簇大小的频率分布 为此 我从 NetLogo 代码库中的 补丁集群示例 中选择了代码 它似乎在查找簇方面起作用 参见下面的照片 尽管我希望它不计算簇中的绿色斑块 但我不知道如何获取大小 或斑块计数
  • 从 NetLogo 中的有界正态分布中选择值

    我正在尝试让 Ne tLogo 按照 stackoverflow 中上一个问题中的建议从有界随机正态分布中绘制值 NetLogo 如何确保变量保持在定义的范围内 https stackoverflow com questions 20230
  • 从 csv 文件创建代理时使用 to-reports

    我的问题有点长 如果您能阅读全部内容 我真的很感激 并且我将非常感谢您的任何建议 我有与 2 位海龟消费者相关的数据 他们对笔记本电脑的功能进行了评级 笔记本电脑有两种特征 屏幕尺寸和电池寿命 每个都有一些级别 例如电池续航时间有5小时 1
  • NetLogo:如何对列表执行多项操作(查找、获取、替换、删除、搜索列表中的元素,......)

    我是 NetLogo 的新手 我想知道是否有对列表进行操作的完整参考 除了 Netlogo 字典之外 我还阅读了这里的大部分帖子 但例如 如果我需要一个数字对列表 例如 1 2 2 2 2 3 当我搜索时 member 3 thislist
  • set patch-size 在我的代码中的放置是否正确,并且 set 是否是正确的命令?

    编译后 我收到一条错误消息 指出在补丁大小 10 之前 set 是错误的命令 我应该使用什么命令来代替 为什么 globals road to setup clear all ask patches set pcolor green end

随机推荐