将项目添加到邻居的列表中:为什么所有列表仅包含一项?

时间:2019-11-10 11:59:02

标签: netlogo

一旦我选择了一只乌龟并检查了它的品种,就创建了一个具有要添加到所选乌龟列表和其邻居列表中的属性的物品。 为此,我编写了以下代码:

to add-items

  ;; (1) EMPTY list

  let creator nobody
  let my-neighb nobody

  set creator one-of turtles with [breed = breed1 or breed = breed2]
  ifelse empty? [my-list] of creator [
  ifelse [breed = breed1] of creator[
    ;; Breed1
        ask creator [
          set attribute1 random-float 1
          set attribute2 random-float 1
       ]
        create-items 1[
          hide-turtle
          set new_item self
          set attribute1 [attribute1] of creator
          set attribute2 [attribute2] of creator
       ]
    ]
   ;; Breed2
    [ ask creator [
        set attribute1 0
        set attribute2 random-float 1
      ]
        create-items 1[
        hide-turtle
        set new_item self
        set attribute1 [attribute1] of creator
        set attribute2 [attribute2] of creator
      ]
    ]

    ;;;; Add new item to the list ;;;;
    ask creator [
          set my-list fput (list attribute1 attribute2) my-list
          set my-neighb link-neighbors
          ask my-neighb [set newsfeed fput (list quality fitness) newsfeed]
       show newsfeed 
    ]
   ] 
   ;; (2) NOT EMPTY LIST
   [ ... ]

其中的品种和变量定义如下:

breed[breed1 breed_1]
breed[breed2 breed_2]
breed[items item_1]

breed1-own [
  my-list
  attribute1
  attribute2
]

breed2-own [
  my-list
  attribute1
  attribute2
]

items-own[
  attribute1
  attribute2
]

我应该期望可以将创建的项目添加到所选乌龟的列表及其邻居的列表中:

(breed1 1): [[0.35 0.54] [0.64 0.43]] ;; if breed 1 is linked with breed1 43
(breed1 43): [[0.64 0.43] [0.35 0.54]] ;; same above
(breed1 4): [[]] ;; no items as it was not selected
(breed 1 43): [[0.32 0.31]] ;; only one item created by itself
(breed2 7): [[0 0.23]]

但是,我仅获得以下值:

(breed1 1): [[0.35 0.54]]
(breed1 43): [[0.64 0.43]]
(breed1 4): [[]]
(breed 1 43): [[0.32 0.31]]
(breed2 7): [[0 0.23]]

...

即每只乌龟一件。

当然,我的代码没有很好地实现。由于我在每个步骤都创建一个项目,因此所选乌龟的列表仅显示该项目。并且这不允许我检查列表的长度是否大于阈值以从中删除项目。

我想要的是列出选定乌龟创建的所有项目并将其添加到其自己的列表和其邻居列表中的东西。

毫无疑问,查看每只选定的海龟有多少个(和哪个)邻居,以检查所创建的物品是否有效地添加到其网络列表中,将很有用。

希望您能帮助我解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:0)

我认为,如果您使用许多打印语句并对视图进行颜色编码以观察代码的实际作用,您可能会发现问题。

请参阅我对最近一个问题的回答:从列表中拉出元素时如何评分?