我的海龟可以通过相关的随机游走跳过/向前移动。我怎样才能简单地测量他们在模拟运行中走过的距离?基元distance
和distancexy
似乎测量2点之间的最短距离,而不是“弯曲”点之间的最短距离。我试图谷歌答案,但我找不到任何可能的解决方案。可能吗?
此外,当我使用“下笔”跟踪乌龟移动时,它从第二个移动开始,而不是从第一个移动开始。有什么想法吗?它不取决于tick
程序中go
的位置。非常感谢你!
答案 0 :(得分:3)
由于您没有提供任何代码,我无法说出您的模型出了什么问题,但我用一个非常简单的配置尝试了您的问题
turtles-own[
dist
]
to setup
clear-all
ask n-of 10 patches [sprout 1]
ask turtles [pen-down set dist 0]
end
to go
ask turtles [
rt random 90
lt random 90
fd 1
set dist dist + 1
set label dist
]
end
每个蜱虫的每只乌龟都会随机向前移动并向前移动。
每只乌龟都有一个名为dist
的自己,它在每一步都会增加,并显示为其标签。 (这样你每时每刻都可以看到海龟走过的总距离,但它总是可以用于其他目的)
每只乌龟都已激活pen-down
以绘制其所有动作。我的怀疑是,在你的模型中,你会在运动阶段之后为所有海龟激活pen-down
,所以在第一步中,海龟不会画任何东西。
答案 1 :(得分:0)
基于@dr_stein建议的另一个答案 - 如果我的海龟走的是随机步数(fd random 4
),而不是稳定的fd 1
。因此,我实现了使用局部变量my_dist
- 生成随机数,这个数字用于dist测量和龟移动。
turtles-own[
dist
]
to setup
clear-all
ask n-of 1 patches [sprout 1]
ask turtles [pen-down set dist 0]
end
to go
ask turtles [
rt random 90 lt random 90 ; rotate turtle heading
let my_dist random 4 ; create local variable my_dist (generated one time)
fd my_dist ; move forward using local variable distance
set dist dist + my_dist ; include this distance into dist calculation
set label dist
]
end