1

我正在实施一个演讲厅的疏散模拟。我有两种类型的学生坐在桌子上和额外的学生在课堂内随机分配。所以我创建了两个滑块以便将学生分配到所需的数量。滑块被命名为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。

有任何想法吗?

4

1 回答 1

2

好吧,如果您有名为和的滑块,那么这两个变量是代表您想要的每种学生数量的数值,而不是学生本身。就像错误消息说的那样,原语与代表“你在问谁”的代理集一起工作。extrastudentsstandarstudentsask

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

breed [ extrastudents extrastudent ]
breed [ standarstudents standarstudent ]

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

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

于 2013-03-03T15:57:00.653 回答