在NetLogo中,我设置了一个模型,使得雄性捕食者创建一个在某些范围内变化的家庭范围.我以前在stackoverflow上请求了解如何做到这一点. Selecting values from bounded normal distribution in NetLogo 这很
Selecting values from bounded normal distribution in NetLogo
这很有效.当捕食者在景观中移动时,我要求捕食者检查它是否在其特定的原始范围之外(由于随机过程,这些是不同的大小),如果是这样,则面向家庭范围的中心.我可以要求捕食者检查它是否在具有特定半径的圆之外,但是,我无法要求捕食者检测其在设置时创建的特定原始范围.我想我可以将“家庭范围”作为捕食者特征,然后让他们看看他们自己的家庭范围,但我又遇到了麻烦.有什么建议?下面是我的代码片段,其中包含设置和“随机移动”程序.
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)分配自己.一个相关的问题是如何让捕食者根据半径范围内的实际家庭范围内的主要范围补丁来分配自己(((sqrt((随机正常入境54.4 35.8 19 151 * 1000000)/ pi))/ 0)* 0.4 )从随机分布创建?
我想我明白了.首先,我将homerange设置为男性的属性.然后,在设置时,在半径范围内设置homerange补丁(((sqrt((random-normal-in-bounds HomerangeSizeMales 35.8 19 151 * 1000000)/ pi))/ 100)* 0.4).然后,在移动过程中,使用sqrt(count homerange / pi)