Netlogo 使用嵌套列表处理特定项目
Netlogo working with specific items using nested lists
全部
我正在尝试模拟 100 个用户(品种),每个用户都具有用户自己的属性,这些属性在不同的两次滴答运行中被跟踪,比如 0 和 1。我将这些值存储为列表中的列表,并且对它们进行排序。它们看起来像这样 [[tick 0, user 2, attrib 1 ... attrib 9] [tick 1, user 2, attrib 1 ... attrib 9] [tick 0, user 3, attrib 1 ... attrib 9] [勾选 1,用户 3,属性 1 ... 属性 9] ... [勾选 0,用户 99,属性 1 ... 属性 9] [勾选 1,用户 99,属性 1 ... 属性 9]]
由于我随机 'ask users' 重新分配某些属性,我如何获得与 'who' 引用的当前用户匹配的匹配值子集?例如,如果上下文中的当前用户是 'user 3',我如何从列表列表中获取匹配条目的子列表?
一旦我获得匹配的子列表'user 3'[tick 0, user 3, attrib 1 ... attrib 9] [tick 1, user 3, attrib 1 ... attrib 9 ], 如何获取每一行的索引以及该列表中的项目?例如,如果我需要访问子列表中的最后一项(对应于 tick 1),以便我可以获得属性 9 的值以进一步处理它?
在此先感谢您的帮助!
如果您的列表是结构化的:[ [ TICK# TURTLE# ATT1 ... ATT9 ] ... ]
[
[ 0 0 1 .. 9 ]
[ 0 1 1 .. 9 ]
[ 0 2 1 .. 9 ]
...
[ 0 99 1 .. 9 ]
[ 1 0 1 .. 9 ]
[ 1 1 1 .. 0 ]
... and so on ...
并且海龟的数量总是恒定的
然后您可以计算出您需要的项目的索引。
;; attribute data is in list "data"
LET total-turtles COUNT TURTLES
LET desired-tick 1 ;; number of the tick
LET desired-turtle 7 ;; WHO of turtle
LET desired-attribute 4
;; calculate the sublist index
LET sublist-index desired-tick * total-turtles + desired-turtle
;; get the sublist
LET attribute-sublist ITEM sublist-index data
;; get the value from the sublist
LET attribute-value ITEM (desired-attribute + 2) attribute-sublist
如果您将 desired-turtle
设置为 [WHO] OF ONE-OF TURTLES
,您将使用随机的海龟。或者你可以 ASK
一只随机的乌龟来做上面的事情,它可以只使用它自己的 WHO
.
如果严格按顺序添加信息到列表中,则不需要存储 tick# 或 who#,也不需要对其进行排序。
如果让海龟存储它自己的优先属性列表,它可能更容易存储和访问,具体取决于您的应用程序。
现在您拥有随机海龟访问历史列表并从它自己的历史或其他海龟的历史中获取值所需的片段。
全部
我正在尝试模拟 100 个用户(品种),每个用户都具有用户自己的属性,这些属性在不同的两次滴答运行中被跟踪,比如 0 和 1。我将这些值存储为列表中的列表,并且对它们进行排序。它们看起来像这样 [[tick 0, user 2, attrib 1 ... attrib 9] [tick 1, user 2, attrib 1 ... attrib 9] [tick 0, user 3, attrib 1 ... attrib 9] [勾选 1,用户 3,属性 1 ... 属性 9] ... [勾选 0,用户 99,属性 1 ... 属性 9] [勾选 1,用户 99,属性 1 ... 属性 9]]
由于我随机 'ask users' 重新分配某些属性,我如何获得与 'who' 引用的当前用户匹配的匹配值子集?例如,如果上下文中的当前用户是 'user 3',我如何从列表列表中获取匹配条目的子列表?
一旦我获得匹配的子列表'user 3'[tick 0, user 3, attrib 1 ... attrib 9] [tick 1, user 3, attrib 1 ... attrib 9 ], 如何获取每一行的索引以及该列表中的项目?例如,如果我需要访问子列表中的最后一项(对应于 tick 1),以便我可以获得属性 9 的值以进一步处理它?
在此先感谢您的帮助!
如果您的列表是结构化的:[ [ TICK# TURTLE# ATT1 ... ATT9 ] ... ]
[
[ 0 0 1 .. 9 ]
[ 0 1 1 .. 9 ]
[ 0 2 1 .. 9 ]
...
[ 0 99 1 .. 9 ]
[ 1 0 1 .. 9 ]
[ 1 1 1 .. 0 ]
... and so on ...
并且海龟的数量总是恒定的
然后您可以计算出您需要的项目的索引。
;; attribute data is in list "data"
LET total-turtles COUNT TURTLES
LET desired-tick 1 ;; number of the tick
LET desired-turtle 7 ;; WHO of turtle
LET desired-attribute 4
;; calculate the sublist index
LET sublist-index desired-tick * total-turtles + desired-turtle
;; get the sublist
LET attribute-sublist ITEM sublist-index data
;; get the value from the sublist
LET attribute-value ITEM (desired-attribute + 2) attribute-sublist
如果您将 desired-turtle
设置为 [WHO] OF ONE-OF TURTLES
,您将使用随机的海龟。或者你可以 ASK
一只随机的乌龟来做上面的事情,它可以只使用它自己的 WHO
.
如果严格按顺序添加信息到列表中,则不需要存储 tick# 或 who#,也不需要对其进行排序。
如果让海龟存储它自己的优先属性列表,它可能更容易存储和访问,具体取决于您的应用程序。
现在您拥有随机海龟访问历史列表并从它自己的历史或其他海龟的历史中获取值所需的片段。