在Netlogo中,如何在“使用这些报告程序的度量运行”空间中的行为空间中度量乌龟或修补自身变量

时间:2019-01-24 01:02:41

标签: netlogo behaviorspace

我正在行为空间中运行Netlogo模型。在我的模型中,我创建了一个乌龟自有的变量,称为消费率。我想导出每次运行时每只海龟的消耗率。根据对行为空间的理解,我会以某种方式将消耗率放在“使用这些报告程序运行度量”框中,以便将其导出,但是每次尝试时,我都会遇到不同的错误。举例来说,我通常会收到一个错误消息:“由于语法错误,实验被中止:预期的报告者”。我还需要导出我在模型中每个滴答处创建的补丁程序拥有的变量,称为质量,它的质量与此相同。在线行为空间的这一部分的所有示例都仅显示“ count turtles”或类似内容。我可以在那里导出乌龟或补丁变量吗?如果是这样,我将使用什么代码?

我大开眼界,尝试使用“显示消耗率”或“报告消耗率”之类的原语。我不确定我什至会开始使用这些代码来导出这些代码。有什么建议或帮助吗?我还尝试仅在“使用这些报告程序进行度量运行”框中键入“消耗率”或“质量”,但是收到一个错误消息,说我不能在观察者上下文中使用turtle或patch变量,我该如何使那些进入观察者的语境?无论如何?

   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

1 个答案:

答案 0 :(得分:3)

您在概念上不匹配。在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问题。