我目前正在学习NetLogo,我需要帮助。在我的模型中,我有相同大小的10只龟随机移动。当两只或更多只乌龟在同一个斑块上时,它们将结合并组成一只双倍大小的新乌龟。以这种方式,主要规则是max。 5只乌龟可以相互结合。这种形成将持续到将有2只海龟(每只包含5只海龟)留下。
我创造了海龟并使它们随机移动,但我无法将它们组合起来。你能给我一个办法吗?任何帮助赞赏。问候。
编辑:我尝试了“in-radius”命令失败。 5-5龟的分布(从代码中可以看出,它们代表H2O分子)对于系统定义至关重要,并且模型中不允许任何其他分布。
详细地说,当随机移动的2个H2O分子在同一个贴片上相遇时,它们将结合形成一个新的分子(2H2O)。主要规则如前所述,最大值。 5个分子可以结合,其结束形成5H2O。由于最初系统中有10H2O分子,最后会有2个5H2O分子。
我试图实现的代码如下,
breed [h2o-molecules h2o]
to setup
clear-all
reset-ticks
create-h2o-molecules h2o-num [
set color 105
set sIze .5
set shape "circle"
setxy random-xcor random-ycor
set pen-mode "up"
]
end
to setup-patches
ask patches [set pcolor 0]
show count turtles
end
to set-label
ask patches [
ifelse count turtles-here > 0
[set plabel count turtles-here]
[set plabel ""]
]
end
to move-h2o-molecules
ask h2o-molecules [
let dice random 1000
let change (dice - 1)
forward 2
set HEADING (HEADING + change * 2)
]
end
to go
setup-patches
move-h2o-molecules
ask turtles [rt random 1
fd 0.3]
set-label
tick
end
感谢您的时间和耐心。的问候,
答案 0 :(得分:1)
turtles-here
ask patches
不需要turtles-here
(就像设置补丁标签一样)。如果被乌龟调用,该函数也会运行(当有比海龟更多的补丁时效率更高)。但是,如果您不想包含呼叫乌龟,请注意使用other turtles-here
。
如果你宣布 品种宣言后的海龟变量:
h2o-molecules-own [
turtles-inside
]
(在create-h2o-molecules
)
和您的组合限制max-inside
作为全局变量(使用滑块小部件,默认值为5)
然后,合并程序可能如下所示:
to combine ;; turtle procedure
; take one turtle from the same patch as a target
; which has turtles-inside low enough to combine with
let target one-of other h2o-molecules-here with
[turtles-inside <= max-inside - [turtles-inside] of myself]
if target != nobody
[
set turtles-inside turtles-inside +
[turtles-inside] of target ;; increase turtles-inside
ask target [ die ] ;; kill the target
set size sqrt turtles-inside ;; increase size
]
end
您可以通过
停止模拟if not any? h2o-molecules with [turtles-inside < max-inside] [ stop ]
用于选择目标乌龟的条件是使用turtles-here
,other
和最大约束,将其与目标内部的乌龟和乌龟内部的海龟之和进行比较(使用{{1功能)。