netlogo - 在 Netlogo 中,如何在“使用这些报告者进行测量”空间中的行为空间中测量海龟或修补自己的变量
问题描述
我在行为空间中运行我的 Netlogo 模型。在我的模型中,我创建了一个海龟自己的变量,称为消费率。我想为我运行的每一个刻度导出每只海龟的消耗率。根据我对行为空间的理解,我会以某种方式将消费率放在“使用这些报告器进行测量”的框中,以便将其导出,但每次尝试时我都会遇到不同的错误。例如,我通常会收到一条错误消息,上面写着“由于语法错误而中止实验:预期的报告者”。我还需要导出一个我为模型中的每个补丁在每个刻度上创建的名为 quality 的补丁自己的变量,我也遇到了同样的问题。网上这部分行为空间的所有例子都只是显示“count turtles”或类似的东西。我可以在那里导出海龟或补丁变量吗?如果是这样,
我大吃一惊,并尝试使用诸如“显示消费率”或“报告消费率”之类的原语。我不确定我什至会开始使用哪些代码格式来给我这些导出。有什么建议或帮助吗?我还尝试在“使用这些报告器测量运行”框中输入“消耗率”或“质量”,但出现错误说我不能在观察者上下文中使用海龟或补丁变量,我该怎么做那些进入观察者上下文?反正围绕那个?
patches-own [ quality ]
turtles-own [ consumption-rate ]
to setup-patches
ask patches
[set quality (2 + random 8)
set pcolor scale-color green quality 1 10 ]
end
to Go
ask turtles
[ calculate-consumption ]
end
to calculate-consumption
set consumption-rate ( [ quality ] of patch-here ) / ( strength-of-competition * count turtles-here )
end
解决方案
你有一个概念上的不匹配。在 BehaviorSpace 中导出海龟或补丁变量没有问题,但是您还没有告诉 NetLogo 导出哪个变量。您需要指定它是所有海龟的那个变量,还是只有一些海龟或其他什么。
这是您的代码的修改版本,因此它是完整且独立的。
globals [strength-of-competition]
patches-own [ quality ]
turtles-own [ consumption-rate ]
to setup
set strength-of-competition 0.4
ask patches
[ set quality (2 + random 8)
set pcolor scale-color green quality 1 10
]
create-turtles 300 [setxy random-xcor random-ycor]
end
to go
ask turtles
[ calculate-consumption ]
end
to calculate-consumption
set consumption-rate quality / ( strength-of-competition * count turtles-here )
end
[consumption-rate] of turtles
使用作为记者的 BehaviourSpace 设置运行此操作。还要在时限内放 2。你会得到你要求的输出。
当您不熟悉 BehaviorSpace 时,使用 BehaviorSpace 的一个好技巧是在您的界面上为您想要保存在输出中的每个值设置一个监视器。让监视器显示您要导出的内容,然后只需将您最终得到的代码放入报告框中。执行监控步骤的优势在于,它可以迫使您正确思考,而无需陷入是否是 BehaviorSpace 问题的兔子洞。
推荐阅读
- visual-studio - 在预构建事件上更新 nuget 包
- python - 将属性添加到数据集的对象
- python - 如何在 lambda 函数中声明一个全局变量?
- python - LXML 在 Windows 10 中既不下载也不绑定
- python - 如何查看/打印保存在变量中但已删除代码的函数?
- json - 无法识别在 csv 文件中存储和使用的 json 请求正文的正确格式,以便在空手道场景中使用
- jquery - 如何在 jQuery 日期选择器中为禁用日期添加工具提示?
- vb.net - Vb.Net 2019 Windows 窗体应用程序无法在表单加载事件中连接到 Openoffice
- javascript - 使用 QuaggaJS 停止后如何启动相机
- d3.js - 在另一个过渡正在进行时开始一个过渡