如何设置每个刻度的死亡概率
How to set a probability of death for each tick
我想设置我的代码,使每个觅食者(一种海龟)在每一次易受攻击时都有 10% 的几率死亡。我正在构建 Netlogo 模型库中名为 Ants 的代码。
当我使用 use [if random 100 > 98 [ die ]](或任何低于 98 的东西)时,几乎所有的乌龟都会在开始时死亡,并且在经过一百个左右的刻度后存活更多。但是,如果我使用 [if random 100 > 98 [ die ]] 没有海龟会死。很奇怪。
to go ;; forever button
ask foragers
[ if who >= ticks [ stop ]
ifelse color = red
[ look-for-food ]
[ return-to-nest ]
check-death
wiggle
fd 1 ]
to check-death
ask foragers [
if vulnerable?
[if random 100 > 99
[ die ]]]
end
我预计 [if random 100 > 98 [ die ]] 可以让易受伤害的海龟每跳只有 2% 的几率死亡,而不是立即被消灭。
这里的问题是由于嵌套的 ask
语句引起的。您有一个包含 check-death
的 ask foragers [ ...
语句,其中包含另一个 ask foragers
语句。因此,每个采集者都会要求所有采集者(包括它自己)check-death
。所以,如果你有 10 个觅食者,每个觅食者将 运行 check-death
每刻 10 次。
您应该能够从 check-death
程序中删除 ask foragers
块来解决您的问题 - 看看这个玩具模型示例:
turtles-own [ vulnerable? ]
to setup
ca
crt 100 [ set vulnerable? one-of [ true false ] ]
reset-ticks
end
to go
ask turtles [
rt random 61 - 30
fd 1
check-death
]
if not any? turtles with [ vulnerable? ] [
print count turtles
stop
]
tick
end
to check-death
if vulnerable? and random-float 1 > 0.90 [
die
]
end
这将随机分配 vulnerable?
给海龟,然后如果随机生成的浮点值大于 0.90(对于您问题中提到的 10% 的机会),易受伤害的海龟就会死亡。一旦没有更多的海龟,模型将停止。
我想设置我的代码,使每个觅食者(一种海龟)在每一次易受攻击时都有 10% 的几率死亡。我正在构建 Netlogo 模型库中名为 Ants 的代码。
当我使用 use [if random 100 > 98 [ die ]](或任何低于 98 的东西)时,几乎所有的乌龟都会在开始时死亡,并且在经过一百个左右的刻度后存活更多。但是,如果我使用 [if random 100 > 98 [ die ]] 没有海龟会死。很奇怪。
to go ;; forever button
ask foragers
[ if who >= ticks [ stop ]
ifelse color = red
[ look-for-food ]
[ return-to-nest ]
check-death
wiggle
fd 1 ]
to check-death
ask foragers [
if vulnerable?
[if random 100 > 99
[ die ]]]
end
我预计 [if random 100 > 98 [ die ]] 可以让易受伤害的海龟每跳只有 2% 的几率死亡,而不是立即被消灭。
这里的问题是由于嵌套的 ask
语句引起的。您有一个包含 check-death
的 ask foragers [ ...
语句,其中包含另一个 ask foragers
语句。因此,每个采集者都会要求所有采集者(包括它自己)check-death
。所以,如果你有 10 个觅食者,每个觅食者将 运行 check-death
每刻 10 次。
您应该能够从 check-death
程序中删除 ask foragers
块来解决您的问题 - 看看这个玩具模型示例:
turtles-own [ vulnerable? ]
to setup
ca
crt 100 [ set vulnerable? one-of [ true false ] ]
reset-ticks
end
to go
ask turtles [
rt random 61 - 30
fd 1
check-death
]
if not any? turtles with [ vulnerable? ] [
print count turtles
stop
]
tick
end
to check-death
if vulnerable? and random-float 1 > 0.90 [
die
]
end
这将随机分配 vulnerable?
给海龟,然后如果随机生成的浮点值大于 0.90(对于您问题中提到的 10% 的机会),易受伤害的海龟就会死亡。一旦没有更多的海龟,模型将停止。