创建一个新项目并将其添加到我的邻居的列表中

用户名

我想问一下如何将一只乌龟创建的元素添加到自己的列表和邻居的列表中。我创建了一个局部变量neighbours,定义为turtle-set in-link-neighbors with [breed=breed1]然后,我要求邻居添加创建的元素(new_elem),然后遵循该论坛中用户提供的答案。

代码是:

to create_elements
 create-elements 1[
    set person one-of turtles with [breed = breed1 or breed = breed2]
    ifelse [breed = breed1] of person
    [
      set attribute1 random-float 1
      set attribute2 random-float 1

      set function1 (1 + attribute1)
    ]
    [
      set attribute1 random-float 1
      set attribute2 random-float 1

      set function2 (1 - attribute1)
    ]

  let neighbours (turtle-set self in-link-neighbors with [breed = breed1] of person)
      ask neighbours
      [set my-list fput new_elem my-list]
    ]
  ]
end

我知道let neighbours (turtle-set self in-link-neighbors with [breed = breed1] of person)...将元素放入列表中也存在错误,因为我认为新元素已在品种中定义elements实际上,错误消息表明

元素品种不拥有可变的“我的清单”

可以指定品种turtle-set吗?我需要是只考虑breed1breed2,不elements滋生。例如,由于我正在考虑将人作为元素的创建者,因此写作是否正确

let neighbours (turtle-set person in-link-neighbors with [breed = breed1] of person)
          ask neighbours
          [set my-list fput new_elem my-list] 

如果正确的话,我如何考虑到它的属性,将一个新元素作为“新元素”添加到列表中。

例如:)向set my-list fput (list attribute1 attribute2) of elements my-list我返回值列表,例如(0.134531 0.14141) (0.91844 0.42176)...是否有一些建议让您看得更好,但信息却相同?在接下来的步骤中,我将需要跟踪这些值。

希望您能阐明我的错误做法。

谢谢

韦德·舒特

Val,这是一些工作代码,它们创建一个新元素并更新每个人的“我的列表”。

它可能不是您想要的,但是我希望它能提供一些帮助。您没有提供所有有关品种的信息,而是谁拥有什么,所以我挑剔了。

我将更复杂的命令分解为多个较短的命令,以调试正在发生的事情以及发生故障的地方。我添加了一些打印语句。

如果您加载此文件,运行安装程序并单击一次“开始”,则可以看到网络中的座席与他们旁边的“谁”号链接在一起,因此您可以轻松检查所需的座席。my-list的值也会在命令部分中打印出来。

“执行”步骤的另外两次迭代应验证它们是否在输出所需的内容。

我不知道您是否希望new_elem仅位于create_elements部分的本地,或者您是否希望它在全球范围内可用,所以我在两个地方都添加了注释。

我希望这有帮助!代码本身还有更多注释。尤其要注意的是,你必须初始化我的列表为空列表,或默认为数字零,你的fput语句将失败,并期待左右的列表,并找到零评论。

globals [   
     ;;new_elem   ;; might be needed as a global ??
  ]

;; ///////////////////// note that there is no breed required called "people"

breed  [ elements element]
breed  [ breed1 lion ]
breed  [ breed2 tiger ]

;; ///////////////////// i punted on which entity owned "function1 and function2

breed1-own [ attribute function1 function2 my-list]
breed2-own [ attribute function1 function2 my-list]

to setup
  clear-all

  ;; make some turtles with breed = breed1 (say, red lions)
   create-breed1 2 [ set size 2 set shape "circle"   set color red
    setxy random-xcor random-ycor
   ]

  ;; make some turtles with breed = breed2  (say, green tigers)
  create-breed2 2 [ set size 2 set shape "circle"   set color green
    setxy random-xcor random-ycor
   ]

  ;; //////////////////////////////////////////////////////////////////////////
  ;;  NOTE!!!   If you don't initialize my-list to an empty LIST type,
  ;;            fput will generate an error when you try to fput a new element onto it

  ;; this is ugly but fast:
  ask breed1 [create-links-with other breed1
    set my-list [] ]
  ask breed1 [create-links-with breed2
    set my-list [] ]

  ask breed2 [create-links-with other breed2
    set my-list [] ]
  ask breed2 [create-links-with breed1
    set my-list [] ]

  ask turtles [set label who]  ;; ///////////////////////// for debugging

 ;; set new_elem nobody          ;; this could be a global so it can persist 
                                 ;; outside create_element, in which case 
                                 ;; initilize it here

  reset-ticks
end

to go
  create_elements
  tick
end

to create_elements    


  ;; declare the local variables, all agent-sets of some type

  let new_elem nobody  ;; declare this locally if we don't need to persist it
                       ;; outside the create_elements context
                       ;; and remove the declaration in [ globals ]
                       ;; and initializtion in setup

  let personx nobody
  let xx-neighbors nobody

  ;; do just this creation here in order to see what's going on more easily
  ;; than combining multiple operations into a long complex command


  create-elements 1 [ set new_elem self ]
   type "new element is this agentset " show new_elem

  set personx one-of turtles with [breed = breed1 or breed = breed2]

  ifelse [breed = breed1] of personx
     [ ;; if it is breed1
       ask personx [
       set attribute random-float 1
       set function1 (1 + attribute)
       ]
    ]
    [  ;; else, it must be  breed2
       ask personx [
       set attribute random-float 1
       set function2 (1 - attribute)
       ]
     ]

    ;;//////////////////////////////////////// for debugging
    type "the personx we defined above is " print personx

    ask personx [set xx-neighbors (turtle-set self in-link-neighbors  )]

    if-else xx-neighbors != nobody    ;; If it has any members, which should
                                      ;; always be true since we added self to the set
    [
       ask xx-neighbors  
        [
          set my-list fput  new_elem  my-list

          ;; ////////////////////////////////////for debugging
          type "here's the resulting my-list: " show my-list
        ]
    ]
    [ print "ERROR didn't find any neighbors or self" ]

end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中将新项目添加到我的多类型数组中

来自分类Dev

一个文件夹被神秘地添加到我的.gitignore文件中

来自分类Dev

下载javax.enterprise.context.RequestScoped并将其添加到我的项目中

来自分类Dev

使用一个模型中的变量并将其添加到Django中的表单中

来自分类Dev

如何将类添加到列表项并将其从上一个项目中删除

来自分类Dev

仅将第一个Beautiful Soup对象中的项目添加到我的列表中

来自分类Dev

React钩子从数组中删除项目并将其添加到另一个数组

来自分类Dev

可以创建一个对象,将其分配给一个变量,然后将变量添加到一行中的列表中吗?

来自分类Dev

我有一个问题。如何遍历for并将数据添加到列表中?

来自分类Dev

将项目添加到ListBox并将其绑定到另一个Listbox中的项目

来自分类Dev

创建一个新的导航并将其添加到SharePoint 2010中的左侧导航栏中

来自分类Dev

我需要将新项目添加到我的SQL表中并更新旧项目

来自分类Dev

在Eclipse中创建新项目,然后将其添加到Mercurial存储库中

来自分类Dev

为什么我将新项目添加到List <string>并将其添加到列表的底部?

来自分类Dev

在Google App Engine中创建一个lib目录并将其添加到sys.path

来自分类Dev

将新项目添加到我的ComboBox潜在客户中。例外

来自分类Dev

设置cookie后,将一个“隐藏”类添加到我的div中

来自分类Dev

如何制作一个可以让我制作元素并将其添加到数组的函数?

来自分类Dev

创建控制器并将视图添加到另一个项目

来自分类Dev

按键创建一个新对象并将其添加到列表中

来自分类Dev

Symfony 如何创建一个实体并将其添加到另一个?

来自分类Dev

将 5 添加到我的共享偏好中并将其放入文本视图中

来自分类Dev

如何将一个对象添加到另一个对象的列表中并将其保存在 JSF 中?

来自分类Dev

从数据库中绘制一个链接并将其添加到 HTML 中

来自分类Dev

通过最后一个项目以编程方式将新项目添加到 CollectionView

来自分类Dev

我希望创建一个子项目时自动将一个id添加到subProjectIds列表中

来自分类Dev

从方法创建另一个类的实例并将其输出添加到地图

来自分类Dev

Python:如何连续删除列表的最小值并将其添加到另一个列表?

来自分类Dev

如何创建一个函数,从一个 QTreeWidget 中删除一个项目并将其添加到另一个?

Related 相关文章

  1. 1

    如何在Swift中将新项目添加到我的多类型数组中

  2. 2

    一个文件夹被神秘地添加到我的.gitignore文件中

  3. 3

    下载javax.enterprise.context.RequestScoped并将其添加到我的项目中

  4. 4

    使用一个模型中的变量并将其添加到Django中的表单中

  5. 5

    如何将类添加到列表项并将其从上一个项目中删除

  6. 6

    仅将第一个Beautiful Soup对象中的项目添加到我的列表中

  7. 7

    React钩子从数组中删除项目并将其添加到另一个数组

  8. 8

    可以创建一个对象,将其分配给一个变量,然后将变量添加到一行中的列表中吗?

  9. 9

    我有一个问题。如何遍历for并将数据添加到列表中?

  10. 10

    将项目添加到ListBox并将其绑定到另一个Listbox中的项目

  11. 11

    创建一个新的导航并将其添加到SharePoint 2010中的左侧导航栏中

  12. 12

    我需要将新项目添加到我的SQL表中并更新旧项目

  13. 13

    在Eclipse中创建新项目,然后将其添加到Mercurial存储库中

  14. 14

    为什么我将新项目添加到List <string>并将其添加到列表的底部?

  15. 15

    在Google App Engine中创建一个lib目录并将其添加到sys.path

  16. 16

    将新项目添加到我的ComboBox潜在客户中。例外

  17. 17

    设置cookie后,将一个“隐藏”类添加到我的div中

  18. 18

    如何制作一个可以让我制作元素并将其添加到数组的函数?

  19. 19

    创建控制器并将视图添加到另一个项目

  20. 20

    按键创建一个新对象并将其添加到列表中

  21. 21

    Symfony 如何创建一个实体并将其添加到另一个?

  22. 22

    将 5 添加到我的共享偏好中并将其放入文本视图中

  23. 23

    如何将一个对象添加到另一个对象的列表中并将其保存在 JSF 中?

  24. 24

    从数据库中绘制一个链接并将其添加到 HTML 中

  25. 25

    通过最后一个项目以编程方式将新项目添加到 CollectionView

  26. 26

    我希望创建一个子项目时自动将一个id添加到subProjectIds列表中

  27. 27

    从方法创建另一个类的实例并将其输出添加到地图

  28. 28

    Python:如何连续删除列表的最小值并将其添加到另一个列表?

  29. 29

    如何创建一个函数,从一个 QTreeWidget 中删除一个项目并将其添加到另一个?

热门标签

归档