Netlogo 查找包含以下数据之一的最近节点:

Netlogo 查找包含以下数据之一的最近节点:,netlogo,Netlogo,我有两个品种 breed[nodes] breed [messages] nodes-own [data] messages-own [basedata] 我有一个有n个节点的网络。每个节点都有特定的数据。我选择了一个随机的海龟作为接收器。在我的网络中,数据从海龟(首先所有海龟都是节点)分发到接收器。每个拦路的节点都成为一条消息。每条消息也有一个内存空间保留从该消息传递的数据。messages basedata保留原始数据。 我想找到最近的节点,例如“D1” 问题是当你这样做的时候 用[(da

我有两个品种

breed[nodes]
breed [messages]
nodes-own [data]
messages-own [basedata]
我有一个有n个节点的网络。每个节点都有特定的数据。我选择了一个随机的海龟作为接收器。在我的网络中,数据从海龟(首先所有海龟都是节点)分发到接收器。每个拦路的节点都成为一条消息。每条消息也有一个内存空间保留从该消息传递的数据。messages basedata保留原始数据。 我想找到最近的节点,例如“D1”


问题是当你这样做的时候

用[(data=“D1”)或(basedata=“D1”)]询问至少一只海龟。

它可以引用
节点
消息
,而彼此不共享相同的变量

例如:当它在节点上运行时,检查
[(basedata=“D1”)]
时将返回错误,因为它不拥有
basedata
。同样,当它在消息上运行时,在检查
[(data=“D1”)]
时也会返回错误。但是,由于您尚未创建任何
消息
,因此它将始终返回
错误:节点不拥有变量BASEDATA


因此,在引用agentset时,您需要特别注意,因为任何包含所用变量的命令块都会对变量所属的as敏感。

问题是当您这样做时

用[(data=“D1”)或(basedata=“D1”)]询问至少一只海龟。

它可以引用
节点
消息
,而彼此不共享相同的变量

例如:当它在节点上运行时,检查
[(basedata=“D1”)]
时将返回错误,因为它不拥有
basedata
。同样,当它在消息上运行时,在检查
[(data=“D1”)]
时也会返回错误。但是,由于您尚未创建任何
消息
,因此它将始终返回
错误:节点不拥有变量BASEDATA


因此,在引用agentset时,您需要特别注意,因为任何包含所用变量的命令块都会对变量所属的as敏感。

问题是当您这样做时

用[(data=“D1”)或(basedata=“D1”)]询问至少一只海龟。

它可以引用
节点
消息
,而彼此不共享相同的变量

例如:当它在节点上运行时,检查
[(basedata=“D1”)]
时将返回错误,因为它不拥有
basedata
。同样,当它在消息上运行时,在检查
[(data=“D1”)]
时也会返回错误。但是,由于您尚未创建任何
消息
,因此它将始终返回
错误:节点不拥有变量BASEDATA


因此,在引用agentset时,您需要特别注意,因为任何包含所用变量的命令块都会对变量所属的as敏感。

问题是当您这样做时

用[(data=“D1”)或(basedata=“D1”)]询问至少一只海龟。

它可以引用
节点
消息
,而彼此不共享相同的变量

例如:当它在节点上运行时,检查
[(basedata=“D1”)]
时将返回错误,因为它不拥有
basedata
。同样,当它在消息上运行时,在检查
[(data=“D1”)]
时也会返回错误。但是,由于您尚未创建任何
消息
,因此它将始终返回
错误:节点不拥有变量BASEDATA


因此,在引用agentset时需要明确,因为任何包含所用变量的命令块都会对变量所属的as敏感。

问题中所述目标与代码之间存在冲突,这表明您尚未完成对所做操作的思考。(您发布的代码也不完整;例如,它不包括您的
globals
声明或
设置消息
),因此首先要问一个问题:您真的打算在
test1
中使用
turtles
而不是
节点
?如果是,则意味着您允许
消息
成为您的接收器。所以我假设没有,正如你的实际问题所暗示的那样。引入新的全局
接收器

to test1a
  ask one-of nodes [ ;move this to setup!
    set sink self
    set label "sink" set color red
  ]
  ask sink [
    let _choice min-one-of (other nodes with [data = "D1"]) [distance myself]
    ask _choice [] ;do something
  ]
end

这回答了你的问题。如果你真的想从所有海龟中做出选择,正如你发布的代码所建议的那样,你必须问一个新问题。

你在问题中陈述的目标和你的代码之间存在冲突,这表明你还没有完成对你正在做的事情的思考。(您发布的代码也不完整;例如,它不包括您的
globals
声明或
设置消息
),因此首先要问一个问题:您真的打算在
test1
中使用
turtles
而不是
节点
?如果是,则意味着您允许
消息
成为您的接收器。所以我假设没有,正如你的实际问题所暗示的那样。引入新的全局
接收器

to test1a
  ask one-of nodes [ ;move this to setup!
    set sink self
    set label "sink" set color red
  ]
  ask sink [
    let _choice min-one-of (other nodes with [data = "D1"]) [distance myself]
    ask _choice [] ;do something
  ]
end

这回答了你的问题。如果你真的想从所有海龟中做出选择,正如你发布的代码所建议的那样,你必须问一个新问题。

你在问题中陈述的目标和你的代码之间存在冲突,这表明你还没有完成对你正在做的事情的思考。(您发布的代码也不完整;例如,它不包括您的
globals
声明或
设置消息
),因此首先要问一个问题:您真的打算在
test1
中使用
turtles
而不是
节点
?如果是,则意味着您允许
消息
成为您的接收器。所以我假设没有,正如你的实际问题所暗示的那样。引入新的全局
接收器

to test1a
  ask one-of nodes [ ;move this to setup!
    set sink self
    set label "sink" set color red
  ]
  ask sink [
    let _choice min-one-of (other nodes with [data = "D1"]) [distance myself]
    ask _choice [] ;do something
  ]
end
这回答了你的问题