大家好,所以我正在尝试解决一个netlogo模型,其中有相互链接的节点。这是一个基于搜索和救援的模型,其中有两种类型的智能体-群体智能体和救援智能体,它们被放置在一个节点上。类似于下图,橙色和紫色节点表示具有pop/resc代理的节点。救援智能体需要根据连接距离找到最近的种群智能体,并向它们行进。例如,链接距离是下图中显示的数字。(注意,这个想法不是使用min-one-of - in-radius命令,它会给出关于最近链接距离的最近距离)关于如何找到每个resc-agent最接近的群体agent有什么想法吗?
发布于 2019-06-14 15:54:17
这是网络扩展的任务,它包含用于计算链路上距离的原语nw:turtles-in-radius
和nw:weighted-distance-to
。
发布于 2019-06-14 17:58:36
是的,成功地解决了这个问题。但它涉及到列出许多清单。如果有任何人得到了更好的解决方案或改进了以下代码。请一定要让我知道。谢谢:)
我设法通过创建3个列表来解决它,1.所有人口代理的列表(N-pop- list ) 2.人口代理所在的所有节点的列表(N-pop- node - list ) 3.以及距离列表,其中每个节点将计算从自身到pop-agents所在节点的距离。(N-pop-distance-list)
globals [G-target-agent G-node-target-agent]
breed [pop-agents pop-agent]
breed [resc-agents resc-agent]
breed [nodes node]
pop-agents-own [node-pop (;node the pop agents on)]
resc-agents-own [node-resc (;node resc-agents on) target-agent (;agent they want to
travel to) target-pop-agent-at (;node target-pop-agents on)]
nodes-own [N-pop-list N-pop-node-list N-pop-distance-list]
links-own [dist (pretty much length/distance of the link !)]
...
to setup-lists
ask nodes [
let temp-pop-list []
let temp-pop-node-list []
set N-pop-distance-list []
ask pop-agents[
set temp-pop-list lput self temp-pop-list
set temp-pop-node-list lput node-pop temp-pop-node-list
]
set N-pop-list temp-pop-list
set N-pop-node-list temp-pop-node-list
foreach N-pop-node-list
[[i] ->
let dist-to-node nw:weighted-distance-to i dist
set N-pop-distance-list lput dist-to-node N-pop-distance-list
]
]
end
to search-pop-agent
ask resc-agent[
ask node-resc[
let min-val min N-pop-distance-list
let min-val-pos position min-val N-pop-distance-list
set G-target-agent item min-val-pos N-pop-list
set G-node-pop-agent-at item min-val-pos N-pop-node-list
]
set target-agent G-target-agent
set node-pop-agent-at G-node-pop-agent-at
]
end
https://stackoverflow.com/questions/56591953
复制相似问题