复制下面补丁中的 link breed 变量
Copy the link breed variable in the patch below
我有一个节点网络和 links。这个数字
是对世界的捕捉。该图表示城市的街道。我导入了一个扩展名为 gis 的 shapefile。灰线是 links,黑点是节点,红点代表人。人们移动到下一个节点。在街角,红点通过检查 link.
拥有的变量 popularity
来选择下一条街道
links 品种有一个变量,popularity
,我想在下面的补丁中复制它的值。
例如,如果我尝试访问 links 下的补丁,将产生错误
ask links [show [(list pxcor pycor)] of patch-here]
另一种方法是从补丁中访问 link 变量流行度,但我不知道该怎么做。
我想要这个的原因是因为我想在文件中写入一个流行度值矩阵,它在矩阵中的位置应该与 link 在世界中的位置相对应。因此,links 下面的补丁会给我矩阵形式。我有一个程序,可以为每个补丁将补丁的值写入一个文件。但是,我不知道如何将 popularity
值从 link 传递到它下面的补丁。
有什么方法可以将 link 拥有的变量复制到它的补丁中吗?
此致
如果有人有更好的方法(或可以简化我的代码),请随意。这是一个完整的工作示例。将它复制到一个空的 NetLogo 模型中,然后 运行 看看它是否有效。
setup
过程只是创建一些节点和具有适当测试值的 links,然后调用 transfer-link-values 过程,这就是我认为您想要的。 setup
过程然后将值放入补丁标签中以显示它们并查看结果。
transfer-link-values 过程的工作方式是在 link 的一端创建一只海龟,然后该海龟向 link 的另一端移动,将值传递为它去。当它到达另一端时,乌龟死了。
patches-own [patch-popularity]
links-own [link-popularity]
to setup
clear-all
create-turtles 10 [ setxy random-xcor random-ycor]
while [ any? turtles with [not any? my-links] ]
[ let to-pair turtles with [not any? my-links]
let thisNode one-of to-pair
ask thisNode
[ create-link-with one-of other to-pair
[ set link-popularity 5 + random 5 ]
]
]
transfer-link-values
ask patches [ if patch-popularity != 0 [set plabel patch-popularity ] ]
end
to transfer-link-values
ask links
[ let start-node one-of both-ends
let this-link self
let end-node nobody
ask start-node [ set end-node [other-end] of this-link ]
let transfer-value link-popularity
ask start-node
[ hatch 1
[ face end-node
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
while [ not member? end-node turtles-here ]
[ forward 1
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
]
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
die
]
]
]
end
我有一个节点网络和 links。这个数字
是对世界的捕捉。该图表示城市的街道。我导入了一个扩展名为 gis 的 shapefile。灰线是 links,黑点是节点,红点代表人。人们移动到下一个节点。在街角,红点通过检查 link.
拥有的变量popularity
来选择下一条街道
links 品种有一个变量,popularity
,我想在下面的补丁中复制它的值。
例如,如果我尝试访问 links 下的补丁,将产生错误
ask links [show [(list pxcor pycor)] of patch-here]
另一种方法是从补丁中访问 link 变量流行度,但我不知道该怎么做。
我想要这个的原因是因为我想在文件中写入一个流行度值矩阵,它在矩阵中的位置应该与 link 在世界中的位置相对应。因此,links 下面的补丁会给我矩阵形式。我有一个程序,可以为每个补丁将补丁的值写入一个文件。但是,我不知道如何将 popularity
值从 link 传递到它下面的补丁。
有什么方法可以将 link 拥有的变量复制到它的补丁中吗?
此致
如果有人有更好的方法(或可以简化我的代码),请随意。这是一个完整的工作示例。将它复制到一个空的 NetLogo 模型中,然后 运行 看看它是否有效。
setup
过程只是创建一些节点和具有适当测试值的 links,然后调用 transfer-link-values 过程,这就是我认为您想要的。 setup
过程然后将值放入补丁标签中以显示它们并查看结果。
transfer-link-values 过程的工作方式是在 link 的一端创建一只海龟,然后该海龟向 link 的另一端移动,将值传递为它去。当它到达另一端时,乌龟死了。
patches-own [patch-popularity]
links-own [link-popularity]
to setup
clear-all
create-turtles 10 [ setxy random-xcor random-ycor]
while [ any? turtles with [not any? my-links] ]
[ let to-pair turtles with [not any? my-links]
let thisNode one-of to-pair
ask thisNode
[ create-link-with one-of other to-pair
[ set link-popularity 5 + random 5 ]
]
]
transfer-link-values
ask patches [ if patch-popularity != 0 [set plabel patch-popularity ] ]
end
to transfer-link-values
ask links
[ let start-node one-of both-ends
let this-link self
let end-node nobody
ask start-node [ set end-node [other-end] of this-link ]
let transfer-value link-popularity
ask start-node
[ hatch 1
[ face end-node
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
while [ not member? end-node turtles-here ]
[ forward 1
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
]
if transfer-value > patch-popularity
[ ask patch-here [ set patch-popularity transfer-value ] ]
die
]
]
]
end