Netlogo 计算不同链接的数量
在我的代码中,所有海龟都拥有由一个n元组(a1,a2,…,an)表示的n特征。其中每个ai可以取0或1的值。 我在海龟之间建立了一些联系。如果两个海龟共享k-特征(坐标匹配),并且它们之间存在链接,那么我们将该链接称为k-链接Netlogo 计算不同链接的数量,netlogo,Netlogo,在我的代码中,所有海龟都拥有由一个n元组(a1,a2,…,an)表示的n特征。其中每个ai可以取0或1的值。 我在海龟之间建立了一些联系。如果两个海龟共享k-特征(坐标匹配),并且它们之间存在链接,那么我们将该链接称为k-链接 我如何找到每个k(0到n之间)总共有多少个k-link?您没有告诉我们您是如何构造代码的,因此我假设您的n元组是作为列表实现的(这在NetLogo中最有意义) 以下是一个完整的示例: turtles-own [ a ] links-own [ k ] globals [
我如何找到每个k(0到n之间)总共有多少个k-link?您没有告诉我们您是如何构造代码的,因此我假设您的n元组是作为列表实现的(这在NetLogo中最有意义) 以下是一个完整的示例:
turtles-own [ a ]
links-own [ k ]
globals [ n ]
to setup
ca
set n 5
crt 10 [ ; create turtles with random feature lists
set a n-values n [ random 2 ]
]
ask turtles [ ; make a full network
create-links-with other turtles
]
ask links [ ; calculate k for all links
set k k-of-feature-lists ([a] of end1) ([a] of end2)
]
foreach n-values (n + 1) [ ? ] [ ; display number of k-links
show (word ? "-links: " count links with [ k = ? ])
]
end
to-report k-of-feature-lists [ a1 a2 ]
report length filter [?] (map = a1 a2)
end
除了k-of-feature-list
,这是一个相当琐碎的代码。k-of-feature-list
所做的是:
- 如果两个要素列表中的对应元素相等,则将两个要素列表转换为一个布尔值列表,其中包含
值;如果两个要素列表中的对应元素不相等,则将true
值。这是通过使用和forfalse
实现的=
- 布尔值列表,仅保留
值true
- 报告过滤列表的数量,该数量等于在
和a1
中相同的功能的数量a2
有很多其他方法可以做到这一点(有些更有效),但这一种方法很好而且简洁。StackOverflow。您通常可以使用降价和unicode实现一些不错的功能。我已经编辑了你的问题。另外,数学描述很好,但通常还不够:请在有代码时发布代码;让我们看看你试过什么。