NetLogo monitor reporter won出现问题';不显示正确的值
所以我想编程一个监视器,如果任何补丁变成蓝色,它会上升+1 我的班长的记者是:NetLogo monitor reporter won出现问题';不显示正确的值,netlogo,Netlogo,所以我想编程一个监视器,如果任何补丁变成蓝色,它会上升+1 我的班长的记者是: ifelse值是否有?补丁[ [银行]补丁] [0] 代码是: 数贝沃恩巴 询问补丁[ 如果bewohnbar?=真[设置银行+1] ] 但所有显示器显示的是[000233900000…] 所以它只是显示随机的数字串。 我在另一个问题中解决的另一个问题是, 我有另一个带有money变量的监视器,它可以工作,我想以这种方式在两者之间创建链接: ask patches[ let Bank count (patch
ifelse值是否有?补丁[
[银行]补丁]
[0]
代码是:
数贝沃恩巴
询问补丁[
如果bewohnbar?=真[设置银行+1]
]
但所有显示器显示的是[000233900000…]
所以它只是显示随机的数字串。
我在另一个问题中解决的另一个问题是,
我有另一个带有money变量的监视器,它可以工作,我想以这种方式在两者之间创建链接:
ask patches[
let Bank count (patches with [pcolor = blue])
if-else (pcolor = blue) [
if (Bank + 1) [set money money - 100]
]
[ if Bank Bank - 1 [set money money + 50]
]
]
当的
应用于一个代理集时,例如,补丁
,它将在括号中为集合中的每个代理提供变量或报告器的值列表。由于代理是随机查询的,因此列表将按随机顺序排列。因此
ifelse-value any? patches[
[bank] of patches]
[0]
将以随机顺序向您提供每个修补程序报告的bank
值的列表。(因为总是有补丁,any?补丁
总是正确的,所以您所写的与
[bank] of patches]
)。由于您显示的列表对于不同的修补程序具有不同的值,因此我假设bank
是一个patch-only
变量,而不是全局值。(如果是后者,则列表中每个补丁的值都相同。)
那么,问题是bank
应该代表什么。根据您提供的代码,如果bewohnbar?
为真,则每个修补程序都会增加其bank
的值。(顺便说一下,条件if-bewohnbar?=true[
与简单的if-bewohnbar?[
if
需要一个逻辑值或表达式,并且bewohnbar?
已经是一个逻辑值或表达式。)bewohnbar?
与修补程序变蓝有关吗?如果是这样,bank
在每次调用count bewohnbar
时递增,因此它是正值,但对于任何变蓝的修补程序,它可能大于1,这就是为什么列表中的值对于不同的修补程序是不同的。它们代表h补丁变为蓝色的勾号数(如果每个勾号调用一次count bewohnbar
)
如果一个记者计算了有多少个补丁的bewohnbar?
是(或曾经是)真的,那么他将是
count filter [v -> v > 0] [bank] of patches
filter
获取bank
值的列表,只保留大于零的值,并对它们进行计数。但是,一种更简单的方法是计算bewohnbar?
为真的补丁数
count patches with [bewohnbar?]