【问题标题】:Netlogo Agents errorNetlogo 代理错误
【发布时间】:2013-03-03 11:59:10
【问题描述】:

我正在实施一个演讲厅的疏散模拟。我有两种类型的学生,一种是坐在桌子上,另一种是在课堂内随机分配的额外学生。所以我按顺序创建了 两个滑块将学生分配到所需的人数。滑块被命名为 extrastudentsstandarstudents。当模拟开始时,我希望所有学生(包括桌子和临时学生)都去最近的出口(我有两个出口)。所以我只为坐下的学生实施了这个:

ask standarstudents  [
ifelse pycor > 0
[ set target one-of nexits]
[ set target one-of sexits]
face target
]

Nexits 是北出口。 Sexits 是南出口。

问题是我得到了这个错误,我可以继续:

ASK 期望输入是代理或代理集,但得到了数字 3。 观察者运行 ASK 时出错。(数字 3 来自用户选择的滑块) 由过程 SETUP 调用 由按钮“设置”调用

org.nlogo.nvm.ArgumentTypeException:ASK 预期输入是代理或代理集,但得到了数字 3。

有什么想法吗?

【问题讨论】:

  • 另外,我不知道你是否知道这一点,但是pycor 报告了海龟所在的 patch 的坐标,这将不同于turtle 所在的坐标(如果它不在补丁的中心)。 ycor0.5 的海龟将具有 pycor = 0,因此即使海龟略高于原点,pycor > 0 也会为假,这可能是也可能不是您想要的。
  • @NicolasPayette:ycor 为 0.5 的海龟的 pycor 为 1,而不是 0。
  • @SethTisue 我的错误——感谢您指出。 0.5 被四舍五入,所以这是一个不好的例子。正确的应该是0.49 中的ycor,它给出0 中的pycor(所以一般观点仍然存在......)

标签: netlogo


【解决方案1】:

好吧,如果您有 滑块 名为 extrastudentsstandarstudents,这两个变量是 数字 值,表示您想要的每种学生的数量,不是学生自己。正如错误消息所说,ask 原语与代表“你在问谁”的 agentsets 一起使用。

你真的创造了你的学生吗?将滑块放在界面上本身不会做任何事情。我建议将您的滑块重命名为 num-extrastudentsnum-standarstudents 之类的名称,然后使用这样的代码来初始化您的人口:

breed [ extrastudents extrastudent ]
breed [ standarstudents standarstudent ]

to setup
  create-standarstudents num-standarstudents
  create-extrastudents num-extrastudents
end

然后,您发布的代码将起作用,因为 extrastudentsstandarstudents 将是海龟的品种,因此是代理集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2023-03-13
    • 2020-03-18
    • 1970-01-01
    • 1970-01-01
    • 2016-08-20
    • 1970-01-01
    相关资源
    最近更新 更多