首页 > 解决方案 > 在 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

标签: netlogobehaviorspace

解决方案


你有一个概念上的不匹配。在 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 问题的兔子洞。


推荐阅读