#netlogo
#netlogo
Вопрос:
Я настроил среду, в которой каждый тик отображается 3 фрагмента информации, и черепахи создают с ними ссылки, что означает, что они интегрируют информацию в свои знания.
Я бы хотел подсчитывать их накопленные знания с каждым тиком.
Но проблема в том, что функция count всегда подсчитывает количество всех существующих ссылок, а не только количество вновь созданных ссылок.
Конечно, я могу правильно считать, когда ссылки умирают, но это не то, чего я хочу.
Что я могу сделать?
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
Ответ №1:
Лучший способ — использовать guys-own
счетчик, который устанавливается на ноль при каждом тике, а затем увеличивается каждый раз, когда создается новая ссылка во время этого тика. Я добавил такой счетчик 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