netlogo 中的百分比
Percentage in netlogo
我想在Netlogo中写出一定比例的agent人群有这个属性。我如何在 NetLogo 中做到这一点?
到目前为止,在玩具模型中,我是手动完成的。即:询问 n-of 740 户 [set composition 1] 而实际上我想说:要求 8% 的家庭设置 composition 1.
有两种方法。我将它们称为 ex-ante 和 ex-post.
事前
一种常见的做法是让每个代理都有一定的机会(以百分比值表示)做某事。在这种情况下,您将结合您的百分比值使用 random-float
命令,这是在 NetLogo 中根据特定概率 (see here, or also see just random
if you're working with integers) 使事情发生的标准方法。它可以直接在 create-turtles
命令块中使用:
globals [
the-percentage
]
turtles-own [
my-attribute
]
to setup
clear-all
set the-percentage 0.083 ; In this example we set the percentage to be 8.3%.
create-turtles 500 [
if (random-float 1 < the-percentage) [
set attribute 1
]
]
end
这意味着您不会总是拥有具有该属性的海龟的确切数量。如果您在多次迭代中检查 count turtles with [attribute = 1]
,您会看到数字有所不同。如果您想重现某事发生的概率(在代理群体或一段时间内),这种方法很好,NetLogo 模型的许多用途就是这种情况。
Ex-post
ex-post 方法遵循您或多或少表达的逻辑:首先创建一些海龟,然后为它们分配属性。在这种情况下,您只需像在任何其他数学表达式中一样处理百分比:将它乘以海龟总数即可得到相关海龟:
globals [
the-percentage
]
turtles-own [
my-attribute
]
to setup
clear-all
set the-percentage 0.083
create-turtles 500
ask n-of (count turtles * the-percentage) turtles [
set attribute 1
]
end
使用这种方法,您将始终拥有完全相同数量的具有该属性的海龟。事实上,如果你 运行 count turtles with [attribute = 1]
多次迭代你会看到结果总是 41(500 * 0.083 = 41.5,事实上如果传递给 n-of
的数字是小数, it will be rounded down).
我想在Netlogo中写出一定比例的agent人群有这个属性。我如何在 NetLogo 中做到这一点?
到目前为止,在玩具模型中,我是手动完成的。即:询问 n-of 740 户 [set composition 1] 而实际上我想说:要求 8% 的家庭设置 composition 1.
有两种方法。我将它们称为 ex-ante 和 ex-post.
事前
一种常见的做法是让每个代理都有一定的机会(以百分比值表示)做某事。在这种情况下,您将结合您的百分比值使用 random-float
命令,这是在 NetLogo 中根据特定概率 (see here, or also see just random
if you're working with integers) 使事情发生的标准方法。它可以直接在 create-turtles
命令块中使用:
globals [
the-percentage
]
turtles-own [
my-attribute
]
to setup
clear-all
set the-percentage 0.083 ; In this example we set the percentage to be 8.3%.
create-turtles 500 [
if (random-float 1 < the-percentage) [
set attribute 1
]
]
end
这意味着您不会总是拥有具有该属性的海龟的确切数量。如果您在多次迭代中检查 count turtles with [attribute = 1]
,您会看到数字有所不同。如果您想重现某事发生的概率(在代理群体或一段时间内),这种方法很好,NetLogo 模型的许多用途就是这种情况。
Ex-post
ex-post 方法遵循您或多或少表达的逻辑:首先创建一些海龟,然后为它们分配属性。在这种情况下,您只需像在任何其他数学表达式中一样处理百分比:将它乘以海龟总数即可得到相关海龟:
globals [
the-percentage
]
turtles-own [
my-attribute
]
to setup
clear-all
set the-percentage 0.083
create-turtles 500
ask n-of (count turtles * the-percentage) turtles [
set attribute 1
]
end
使用这种方法,您将始终拥有完全相同数量的具有该属性的海龟。事实上,如果你 运行 count turtles with [attribute = 1]
多次迭代你会看到结果总是 41(500 * 0.083 = 41.5,事实上如果传递给 n-of
的数字是小数, it will be rounded down).