2014-10-30 88 views
1

我搜索了上周的所有主题,但仍无法找到解决问题的方法。该方案如下:NetLogo:找出所有相互关联的龟并将它们分配给组ID

  1. 我有链接到海龟的各种团体相互
  2. 我想给一组名称或ID分配给每个组

为了做到上面,我想我需要一个程序来找出一只乌龟的身份证,然后告诉我这只乌龟与哪只其他乌龟有联系。例如,我有一组4只乌龟,所有这些乌龟都相互关联。他们的ID是1,2,3,4。现在我想列出每只乌龟,这也告诉我它与谁联系。这里的一个例子列表:

Turtle 1 -> Linked to Turtle 2, 3 and 4 
Turtle 2 -> Linked to Turtle 1, 3 and 4 
... 
Turtle 4 -> Linked to Turtle 1, 2 and 3 

一旦我现在这(尽管也许有一个更简单的方法)。我可以给这4只海龟分配一个组ID。

任何意见/帮助非常感谢。

下面是部分代码:

to go 
    ask turtles [  
     set neighbours turtle-set turtles in-radius neighbourhood 
     set turtle-dim-similar min-one-of other neighbours [myfunc myself self] 
     create-link-with turtle-dim-similar 
    ] 

    set beasts sort-by [[who] of ?1 < [who] of ?2] turtles 
    foreach beasts [ 
     ask ? [ ;; each agent undertakes the list of commands 
      set closest sort [link-neighbors] of turtle who 
      print (word "id:" who " ; val1:" value1 " ; val2:" value2 " ; closest:" closest) 
     ] 
    ] 
end 
+1

Out-link-neighbors给出了链接到的一组乌龟。 – 2014-10-31 01:02:24

+0

非常感谢您的回复。我曾尝试使用out-link-neighbors和各种变体,但我不断收到“品种”错误。我没有在模型中定义任何品种,因为我不需要它们。稍后会发布一些示例代码... – Tina 2014-10-31 10:53:35

+0

它是“链接是无向品种”吗?如果是这样,请尝试链接邻居或确保您使用“create-link-with”来制作它们。 – 2014-10-31 11:18:54

回答

2

如果您正在使用的有向链路,即与创建链接到,创建链接,从,创建链接到或创建,链接 - 创建的链接从外部链接邻居是你在找什么。它报告了一组与之相关的龟。

如果您正在使用未定向链接,使用create-link-with或create-links-with创建的链接使用链接邻居。

这解决了下半年使用递归问题的第一部分。

Turtles-own[group-id] 
To id [tag] 
    Set group-id tag 
    Ask link-neighbors with[Group-id != tag] 
[Id tag] 
    End 
+0

非常感谢你:)这是非常有帮助的。如果现在已经在我的代码中实现了这一点,并且从我的理解中可以看出,这给每只乌龟分配了一个group-id,现在我需要找到一种缓解它的方法。这是我一直坚持一段时间,(对不起,我确实觉得很愚蠢,我知道这应该是我的一部分) – Tina 2014-10-31 14:33:09

+0

只要问一个乌龟,以此运行id。 Ask turtle 1 [id 1] – 2014-10-31 15:20:36

+0

这真是太棒了,现在正在工作......非常感谢您的帮助,非常感谢:) – Tina 2014-10-31 16:37:14

相关问题