我知道关于此错误有很多问题(和答案),但是不幸的是,即使按照过去的答案,我也尚未解决代码中的错误。我希望你能在这方面帮助我。我知道某些事情由于要求A而不起作用,但是我不知道如何以不同的方式实现它,以便要求代理创建新对象。
当我在go中调用过程create_object
时,会出现错误消息。
品种A
是agenda
的所有者。
品种object
是att1
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
我不知道您是否需要更多代码。 如果您需要更多信息,请随时发表评论。
谢谢
答案 0 :(得分:1)
'A'和'object'都是乌龟吗?如果是这样,则您有一只(品种A)的乌龟正在调用一个试图创建(品种对象)乌龟的过程。但是,如果您查看Netlogo词典,您将看到create-turtles
(以及其他类似create-object的形式)仅在观察者使用时有效,而在乌龟使用时无效。
如果要让乌龟创建新的乌龟,则需要hatch
命令。请注意,新孵化的乌龟与父乌龟具有相同的属性(例如位置)。