如何仅过滤 netlogo 行为中的独特场景 space
How to filter only the unique scenarios in netlogo behavior space
我想 运行 netlogo 中的一组场景使用行为 space 其中 n 只竞争的海龟使用不同的决策规则。我的意思是说我想在抛硬币的场景中测量一个指标,在这个场景中,每个玩家都被编程为在每次滴答时叫正面或反面,即在 2 只乌龟的情况下,玩家 A 总是叫正面,而玩家 B 总是叫反面.
当海龟数量超过3只时,会出现ABC或ACB或BCD叫正面,一个叫反面的情况。 HHTH 本质上与 HHHT 相同。
所以简而言之,我想做的是只过滤唯一出现的事件,而不考虑样本中 H 或 T 的位置 space 即我只想要那些只有 1H 和3T、2H 和 2T、3H 和 1T。
在此先感谢您的帮助。问候。
你问的问题似乎不涉及行为space。要计算列表中的头部,请使用 table
扩展名。 (你举的例子是二进制的,有固定长度的序列,所以头的数量决定了尾的数量,所以你只需要数其中一个即可。)
extensions [table]
to-report nHeads01 [#lst]
let _t table:counts #lst
report ifelse-value (table:has-key? _t "H") [
table:get _t "H" ;case sensitive ...
][
0
]
end
例如,我们可以生成一些长度为 4 的随机序列(来自您的示例)并过滤长度为 2 的序列(或其他任何序列)。
to-report randomHT [#n]
report n-values #n [[?] -> one-of ["H" "T"]]
end
to test
let _xss n-values 20 [[?] -> randomHT 4] ;20 lists to filter
print filter [[?] -> (2 = nHeads01 ?)] _xss ;print those with 2 heads
end
如果您将序列存储为字符串,您可以在使用上述代码之前安装字符串扩展和explode
字符串,或者您可以按照NetLogo read in file as list of characters将字符串转换为字符列表。例如,
to-report nHeads02 [#str]
let _lst map [[?] -> item ? #str] n-values length #str [[?] -> ?]
report nHeads01 _lst
end
我想 运行 netlogo 中的一组场景使用行为 space 其中 n 只竞争的海龟使用不同的决策规则。我的意思是说我想在抛硬币的场景中测量一个指标,在这个场景中,每个玩家都被编程为在每次滴答时叫正面或反面,即在 2 只乌龟的情况下,玩家 A 总是叫正面,而玩家 B 总是叫反面.
当海龟数量超过3只时,会出现ABC或ACB或BCD叫正面,一个叫反面的情况。 HHTH 本质上与 HHHT 相同。
所以简而言之,我想做的是只过滤唯一出现的事件,而不考虑样本中 H 或 T 的位置 space 即我只想要那些只有 1H 和3T、2H 和 2T、3H 和 1T。
在此先感谢您的帮助。问候。
你问的问题似乎不涉及行为space。要计算列表中的头部,请使用 table
扩展名。 (你举的例子是二进制的,有固定长度的序列,所以头的数量决定了尾的数量,所以你只需要数其中一个即可。)
extensions [table]
to-report nHeads01 [#lst]
let _t table:counts #lst
report ifelse-value (table:has-key? _t "H") [
table:get _t "H" ;case sensitive ...
][
0
]
end
例如,我们可以生成一些长度为 4 的随机序列(来自您的示例)并过滤长度为 2 的序列(或其他任何序列)。
to-report randomHT [#n]
report n-values #n [[?] -> one-of ["H" "T"]]
end
to test
let _xss n-values 20 [[?] -> randomHT 4] ;20 lists to filter
print filter [[?] -> (2 = nHeads01 ?)] _xss ;print those with 2 heads
end
如果您将序列存储为字符串,您可以在使用上述代码之前安装字符串扩展和explode
字符串,或者您可以按照NetLogo read in file as list of characters将字符串转换为字符列表。例如,
to-report nHeads02 [#str]
let _lst map [[?] -> item ? #str] n-values length #str [[?] -> ?]
report nHeads01 _lst
end