错误:您不能在乌龟上下文中使用%,因为%仅是观察者

时间:2019-11-01 20:21:12

标签: netlogo

我知道关于此错误有很多问题(和答案),但是不幸的是,即使按照过去的答案,我也尚未解决代码中的错误。我希望你能在这方面帮助我。我知道某些事情由于要求A而不起作用,但是我不知道如何以不同的方式实现它,以便要求代理创建新对象。 当我在go中调用过程create_object时,会出现错误消息。
品种Aagenda的所有者。 品种objectatt1

的所有者
to go
  ifelse random-float 1 < 0.5
  [ ask one-of A
     [
      ifelse empty? agenda

      [ ifelse random-float 1 < 0.5
        [create_object]  ;; this returns the error message
        [remove_object] 
      ]
     ]
   ]
[...]
end

错误来自create_object。 定义如下

to create_object

  create-object 1[
          hide-turtle
          set att1 random-float 1  
          let this-post myself ; is it the same object that I am creating?
        if (condition1= TRUE)
              [set agenda fput this-post agenda] ; this should add the object in the agent A's list
         ]
end

我不知道您是否需要更多代码。 如果您需要更多信息,请随时发表评论。

谢谢

1 个答案:

答案 0 :(得分:1)

'A'和'object'都是乌龟吗?如果是这样,则您有一只(品种A)的乌龟正在调用一个试图创建(品种对象)乌龟的过程。但是,如果您查看Netlogo词典,您将看到create-turtles(以及其他类似create-object的形式)仅在观察者使用时有效,而在乌龟使用时无效。

如果要让乌龟创建新的乌龟,则需要hatch命令。请注意,新孵化的乌龟与父乌龟具有相同的属性(例如位置)。