NetLogo:查找彼此链接的所有海龟并将它们分配给组ID

时间:2014-10-30 23:11:00

标签: netlogo

我已经搜索了上周的所有主题,但仍然无法找到问题的解决方案。方案如下:

  1. 我有各种各样的海龟彼此相连
  2. 我想为每个群组分配一个群组名称或ID
  3. 为了做到这一点,我想我需要一个程序来找出一只乌龟的id,然后告诉我这只乌龟与哪只乌龟相关联。例如,我有一组4只乌龟,彼此相连。他们的ids是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 个答案:

答案 0 :(得分:2)

如果您正在使用定向链接,即使用create-link-to创建的链接,则创建链接,创建链接或创建链接来自外链接邻居是您正在寻找的。它报告了一组与之相关的乌龟。

如果您使用的是非定向链接,使用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