подсчитайте накопленное количество ссылок в netlogo

#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