计算 netlogo 中的累计链接数
count the accumulated number of links in netlogo
我设置了一个环境,每次滴答显示 3 条信息,海龟与它们建立链接,这意味着它们将信息整合到它们的知识中。
我想用每一个刻度来计算他们积累的知识。
但问题是,计数函数总是计算所有现有链接的数量,而不仅仅是新建链接的数量。
当然,当我让链接死掉时,我可以正确计算,但这不是我想要的。
我能做什么?
directed-link-breed [infolinks infolink]
breed [guys guy]
breed [infobits infobit]
globals [newinfos x]
guy-own [knowledge]
to setup
ca
create-guys 2[
setxy random-xcor random-ycor
set knowledge random 100
set label knowledge
reset-ticks
end
to go
create-infobits 3[
setxy random-xcor random-ycor
ask guys [
set newinfos myself
expose newinfos
]]
ask guys
[update-knowledge]
tick
end
to expose [new]
if random-float 1 < 0.8 [
create-infolink-to new
]
set x count infolink-neighbors
end
to update-knowledge
set knowledge knowledge + x
set label knowledge
end
最好的方法是使用一个 guys-own
计数器,它在每个滴答时设置为零,然后在每次滴答期间产生新的 link 时递增。我在下面的代码中添加了这样一个计数器 new-knowledge
,并删除了 globals
,因为它们在您的代码中没有发挥“全局”作用。
directed-link-breed [infolinks infolink]
breed [guys guy]
breed [infobits infobit]
guys-own [knowledge new-knowledge]
to setup
ca
create-guys 2 [
setxy random-xcor random-ycor
set knowledge random 100
set label knowledge
]
reset-ticks
end
to go
ask guys [set new-knowledge 0]
create-infobits 3 [
setxy random-xcor random-ycor
ask guys [expose myself]
]
ask guys [update-knowledge]
tick
end
to expose [new]
if random-float 1 < 0.8 [
create-infolink-to new
set new-knowledge new-knowledge + 1
]
end
to update-knowledge
set knowledge knowledge + new-knowledge
set label knowledge
end
我设置了一个环境,每次滴答显示 3 条信息,海龟与它们建立链接,这意味着它们将信息整合到它们的知识中。
我想用每一个刻度来计算他们积累的知识。
但问题是,计数函数总是计算所有现有链接的数量,而不仅仅是新建链接的数量。
当然,当我让链接死掉时,我可以正确计算,但这不是我想要的。
我能做什么?
directed-link-breed [infolinks infolink]
breed [guys guy]
breed [infobits infobit]
globals [newinfos x]
guy-own [knowledge]
to setup
ca
create-guys 2[
setxy random-xcor random-ycor
set knowledge random 100
set label knowledge
reset-ticks
end
to go
create-infobits 3[
setxy random-xcor random-ycor
ask guys [
set newinfos myself
expose newinfos
]]
ask guys
[update-knowledge]
tick
end
to expose [new]
if random-float 1 < 0.8 [
create-infolink-to new
]
set x count infolink-neighbors
end
to update-knowledge
set knowledge knowledge + x
set label knowledge
end
最好的方法是使用一个 guys-own
计数器,它在每个滴答时设置为零,然后在每次滴答期间产生新的 link 时递增。我在下面的代码中添加了这样一个计数器 new-knowledge
,并删除了 globals
,因为它们在您的代码中没有发挥“全局”作用。
directed-link-breed [infolinks infolink]
breed [guys guy]
breed [infobits infobit]
guys-own [knowledge new-knowledge]
to setup
ca
create-guys 2 [
setxy random-xcor random-ycor
set knowledge random 100
set label knowledge
]
reset-ticks
end
to go
ask guys [set new-knowledge 0]
create-infobits 3 [
setxy random-xcor random-ycor
ask guys [expose myself]
]
ask guys [update-knowledge]
tick
end
to expose [new]
if random-float 1 < 0.8 [
create-infolink-to new
set new-knowledge new-knowledge + 1
]
end
to update-knowledge
set knowledge knowledge + new-knowledge
set label knowledge
end