Lista do Netlogo atualizada a tempo
Estou escrevendo um código no Netlogo que basicamente deve fazer o seguinte:
Entre os links direcionados, interaja e busque seu comportamento cooperativo (coop_b).Armazene coop_b em uma variável de lista junto com o horário da interação (reputação_now)Em cada interação, adicione o nome da reputação a uma lista maior, nome da reputação - h (histórico da reputação)Agora, adicione peso à reputação, para que as interações mais recentes tenham um peso maior na reputação total. Eu faço isso dividindo o tempo de encontro de uma interação pelo tick de tempo atual e multiplicando-o pelo coop_b para recuperar uma reputação ponderada para cada interação. Isso é armazenado na lista reputação_h_w (reputação histórica ponderada). O problema é que essa lista deve ser atualizada toda vez que os membros interagem, para que adições anteriores à lista sejam atualizadas agora para o novo tempo. Meu palpite é que é aqui que o meu código entra na névoa (problemas mostrados abaixo da seção de código).Meu código:
to horizontal_interact
ask members [
;set random example variable for coop_b
set coop_b random-float 5 ; coop-b stands for cooperation behavior
if ticks > 0 [
ask my-out-links [ ;there are directed links between all members
set reputation_now (list [coop_b] of end2 ticks) ;list of coop_b and encounter time
set reputation_h lput reputation_now reputation_h ; history of reputations, a list of all reputation_now recorded
foreach reputation_h [ x ->
let cooperative_behavior item 0 x
let encounter_time item 1 x
let reputation_now_w (list cooperative_behavior encounter_time (encounter_time / ticks ))
]
]
]
]
end
Se eu testar o conteúdo de reputação_h e reputação_h_w com 2 membros, recebo:
reputação_h é a variável coop_b do membro e o tique do encontro
links> show reputation_h
(link 1 0):
[[4.0900840358972825 1]
[0.8885953841506328 2]
[0.47017368072392984 3]]
(link 0 1): [[3.6805257472366164 1]
[3.6805257472366164 2]
[3.4201458793705326 3]]
reputação_h_w (contendo a variável coop_b do membro, o tempo do encontro e o tempo do encontro dividido pelos ticks):
links> show reputation_h_w
(link 0 1): [[3.6805257472366164 1 1]
[3.6805257472366164 1 0.5]
[3.6805257472366164 2 1]
[3.6805257472366164 1 0.3333333333333333]
[3.6805257472366164 2 0.6666666666666666]
[3.4201458793705326 3 1]]
(link 1 0): [[4.0900840358972825 1 1]
[4.0900840358972825 1 0.5]
[0.8885953841506328 2 1]
[4.0900840358972825 1 0.3333333333333333]
[0.8885953841506328 2 0.6666666666666666]
[0.47017368072392984 3 1]]
O problema é que reputação_h_w não faz sentido para mim - primeiro há seis entradas em vez de três e, segundo, o tempo do encontro (item 1) e o tempo do encontro / ticks (item 2) estão desativados.
O que eu estou fazendo errado aqui?