在NetLogo中,我设置了一个模型,使得雄性捕食者创建一个在某些范围内变化的家庭范围。我以前在stackoverflow上请求了解如何做到这一点。
Selecting values from bounded normal distribution in NetLogo
这很有效。当捕食者在景观中移动时,我要求捕食者检查它是否在其特定的家庭范围之外(由于随机过程,这些是不同的大小),如果是,则面向家庭范围的中心my-base
。我可以要求捕食者检查它是否在具有特定半径的圆之外,但是,我无法要求捕食者检测其在设置时创建的特定原始范围。我想我可以拥有"家庭范围"成为一个捕食者的特征,然后让他们看看他们自己的家庭范围,但我再次遇到麻烦。有什么建议?我的代码片段与设置和"随机移动"程序如下。
to setup
ca
clear-all-plots
clear-output
clear-turtles
create-males 20
[
move-to one-of patches with [is-park?] ;inside a National Park
if any? males in-radius (((sqrt ((54.4 * 1000000)/ pi))/ 100) * 0.4) ;avoid other males
[move-to one-of patches with [is-park?] ]
set size 4
set shape "harimau"
set my-base patch-here
set homerange patches in-radius (((sqrt ((random-normal-in-bounds 54.4 35.8 19 151 * 1000000)/ pi))/ 100) * 0.4)
set numberofAdultMale ( numberofAdultMale + 1)
]
reset-ticks
end
to-report random-normal-in-bounds [mid dev mmin mmax]
let result random-normal mid dev
if result < mmin or result > mmax
[report random-normal-in-bounds mid dev mmin mmax]
report result
end
to random-movement
if-else my-base != no-patches[if distance my-base > (((sqrt ((54.4 * 1000000)/ pi))/ 100) * 0.4) ;this checks within a certain radius but not within the specific home range of the male
[ face my-base]
]
[ ]
rt random 180
lt random 180
fd time-step * random-gamma((meansRandomMove * meansRandomMove)/((deltaRandomMove)^ 2)) (1 / (((deltaRandomMove)^ 2) / meansRandomMove))
end
在上面的代码中,我有捕食者根据预定义的家庭范围大小(((sqrt ((54.4 * 1000000)/ pi))/ 100) * 0.4)
分配自己。一个相关的问题是如何让捕食者根据随机分布创建的实际归属范围homerange patches in-radius (((sqrt ((random-normal-in-bounds 54.4 35.8 19 151 * 1000000)/ pi))/ 100) * 0.4)
来分配自己?
答案 0 :(得分:1)
我想我明白了。首先,我将homerange设置为男性的属性。然后,在设置时,set homerange patches in-radius (((sqrt ((random-normal-in-bounds HomerangeSizeMales 35.8 19 151 * 1000000)/ pi))/ 100) * 0.4)
。然后,在移动过程中,使用sqrt (count homerange / pi)