您好,
在Netlogo v.6中,我正在尝试计算对等方合作行为的时间加权度量。关键是,我无法弄清楚如何在NetLogo中做一个嵌套的foreach。
我目前的做法:
我正在搞乱foreach功能,但我似乎无法弄明白。 如何在Netlogo中编写这种方法?
我当前的代码是(自己设置Reputation_peer来测试它):
to calculate_reputation
set reputation_peer [[8 4][9 2][10 3][11 2][14 1]]
if ticks > 0 [
foreach reputation_peer [x -> set reputation_peer_list list (item 0 x) ((item 1 x) / ticks )
set reputation_peer_list_2 lput reputation_peer_list reputation_peer_list_2]
foreach reputation_peer_list_2 [x -> set reputation_peer_list_list (list (item 0 x * item 1 x))]
foreach reputation_peer_list_list [x -> set reputation_peer_current reputation_peer_current + x]
]
end
我真的不知道我是否正确行事,但主要是这个代码看起来非常笨重,所有list_list事情都在继续。我猜它可能会简单得多。
如果你们有一些提示,那将会对我有很大的帮助。答案 0 :(得分:2)
我不是100%肯定你期望的最终输出,但也许这可以满足您的需求?
to calc-rep-2
set reputation_peer [[8 4][9 2][10 3][11 2][14 1]]
let weighted_rep_list []
if ticks > 0 [
foreach reputation_peer [ x ->
; Pull out the values from reputation_peer for ease of use
let encounter_behavior item 0 x
let encounter_time item 1 x
; Calculate the time fraction for the current item
let time_fraction encounter_time / ticks
; Calculate the weighted reputations
let weighted_rep encounter_behavior * time_fraction
; Add the weighted rep to the list of weighted reps
set weighted_rep_list lput weighted_rep weighted_rep_list
]
; Now, weighted_rep_list is a list of weighted reputations
print weighted_rep_list
; Get the sum of the list
print sum weighted_rep_list
]
tick
end