如何通过链接询问一只乌龟?

时间:2017-04-28 19:50:36

标签: netlogo

我有两种龟类:狗和猫,它们是相连的。该链接具有属性(X),其值取决于连接结束时狗的A值(在这种情况下我不关心猫)。

如何询问特定狗的属性值来更改链接属性?

我有类似这样的代码,使用end2,但有时候end2中的乌龟不是我需要的。

ask links [ask end2 
          [
           ifelse A <= 4 [ask myself [set X 1]][ask myself [set X 2]]
          ]]

谢谢!

1 个答案:

答案 0 :(得分:1)

您可能需要查看有关如何生成最低完整可验证示例的asking help - 如果您遵循这些准则,则更有可能获得有用的答案。

执行所需操作的一种方法是使用turtle-set原语将每个链接将其两个节点(cat和dog)合并到一个临时代理集中。假设这个设置:

dogs-own [ A ] 

links-own [ X ]

to setup
  ca
  reset-ticks
  create-cats 10 [
    set color blue
    setxy random 30 - 15 random 30 - 15
  ]
  create-dogs 10 [
    setxy random 30 - 15 random 30 - 15
    set color red
    set A 1 + random 8
  ]
  ask cats [
    create-link-with one-of dogs with [ not any? link-neighbors ] [
      set X 1
    ]
  ]
end

首先,获取链接以创建链接的两个节点中的临时龟,并选择该临时龟集中的代理:

感谢@SethTisue编辑

编辑:不要这样做:

to go

  ask links [
    let my-nodes ( turtle-set end1 end2 ) 
    let my-dog one-of my-nodes with [ member? self dogs ]

修改:改为:

to go

  ask links [
    let my-nodes both-ends 
    let my-dog one-of my-nodes with [ member? self dogs ]

这样,该链接就可以引用其节点中的狗(my-dog),因此可以使用of检查my-dog的属性并执行您需要的操作。

    if ( [A] of my-dog ) <= 4 [   
      set X 2
      ;;; This is just for easy identification
      set color yellow      
    ]
  ]  
  tick
end