Netlogo Netologo行为空间:让每个代理报告值
我希望在我的模型中运行行为空间扫描,并让每个代理在结果中报告各自拥有的值 下面是我用来要求每个代理报告值的代码Netlogo Netologo行为空间:让每个代理报告值,netlogo,behavior,Netlogo,Behavior,我希望在我的模型中运行行为空间扫描,并让每个代理在结果中报告各自拥有的值 下面是我用来要求每个代理报告值的代码 to-report wrapup ask artcollectors [ type who type " " type num-artcollectors type " " type num-subjectmatters type " " type c-artcollection-size type " "
to-report wrapup
ask artcollectors
[
type who
type " "
type num-artcollectors
type " "
type num-subjectmatters
type " "
type c-artcollection-size
type " "
type c-self-reference-bias
type " "
type c-artdisposal-rate
type " "
type c-random-bias
type " , "
print clist
]
end
当我这样做并向控制台报告时,Netlogo将进行第一次运行并向控制台报告结果,然后Nelogo在第一次运行结束时停止并报告
"Reached end of reporter procedure without REPORT being called.
error while observer running END
called by procedure WRAPUP
called by procedure __EVALUATOR"
因此,我发现我在wrapup过程中没有运行正确的语法。有人能推荐我需要使用的神奇词汇吗?A
to report
过程是一个报告者,因此必须向调用者返回一些值。您的wrapup
过程实际上是一个命令-代理执行某些操作,然后停止。因此,您应该使用命令过程的声明,to wrapup
rahter而不是来报告wrapup
希望这有帮助,
查尔斯谢谢你的建议。它不起作用。NetLogo似乎坚持只将报告用于行为空间。我的挑战是如何将此过程包装成一个报告,以报告每个代理在何处共享其值。您将
wrapup
放在行为空间的何处?在“测量运行…”下,还是在“最终命令”下?前者需要一名记者,后者只是一个命令。如果wrapup
必须是报告者,则只需将report TRUE
放在end
语句之前。您希望在每次运行结束时,还是在每次迭代结束时使用这些值?再往下看,你最终希望这些值进入一个文件吗?天哪!我责备自己没有考虑在最终命令中插入程序。最后,我要寻找一个打印文件,其中每一行都是对我的代理列表(即艺术品标识符)中的一个内容以及参数变量的单个观察。首先,我希望在每次运行结束时报告值,而不是在每次滴答声时报告值。有指针吗?为了清楚起见,您希望每行显示一个代理的所有值,前面是代理的who编号?这似乎就是wrapup
过程发送到控制台的内容。CSV扩展非常适合做这种事情。没错!我已经尽了全力,要求每个代理在最后打印一个文件来记录文件类型值。我目前的绊脚石是,有时Netlogo会提前结束一行,并在新行上按顺序打印出下一组值。如果我不能解决这个问题,我将打开一个新问题。非常感谢您指导我在最终命令中使用此过程,并非常感谢您在促进社区发展中所起的作用。