NetLogo:如何在正确的上下文中使用刻度
NetLogo: how to use tick in correct context
我对 NetLogo 比较陌生,并且已经尝试解决这个问题很长一段时间了。我有一个搜索路径算法,可以确定我模型中每只海龟(船)的最佳路径,并将每条路径存储为单独的补丁列表。目标是让海龟沿着补丁列表遍历,同时让滴答计数器增加海龟每走一步(即每次所有海龟从一个补丁移动到下一个补丁时一个滴答) - 直到它到达目的地。看起来很简单,但出于某种原因,我似乎无法找出使用 'tick' 上下文的正确方法。
这是我的代码示例,对应于移动部分(一旦路径列表已经生成)。
to move
tick
ask-concurrent ships
[
while [length current-path != 0]
[
face first current-path
move-to first current-path
set current-path remove-item 0 current-path
wait 0.08
]
]
end
目前,滴答计数器在整个模拟过程中只滴答一次。任何人都可以帮助我以不同的方式编写代码,以便每次海龟(集体)从一个补丁移动到另一个补丁时增加滴答声吗?
任何帮助将不胜感激。
这是调用 move 的代码部分
to find-shortest-path-to-destination
place-turtles
label-destination
foreach sort ships
[ ask ?
[
set path find-a-path current-waypoint target-waypoint
set optimal-path path
set current-path path
]
]
move
end
我会将您的代码更改为以下内容,并将 move 放在 repeat 块中。本质上,每个人一次移动 1 个路径单元,然后再次调用 move,然后调用下一个 tick-event 发生
to move
tick
ask-concurrent ships with [length current-path != 0]
[
face first current-path
move-to first current-path
set current-path remove-item 0 current-path
wait 0.08
]
end
to go
while [any? ships with [length current-path != 0]] [move]
end
我对 NetLogo 比较陌生,并且已经尝试解决这个问题很长一段时间了。我有一个搜索路径算法,可以确定我模型中每只海龟(船)的最佳路径,并将每条路径存储为单独的补丁列表。目标是让海龟沿着补丁列表遍历,同时让滴答计数器增加海龟每走一步(即每次所有海龟从一个补丁移动到下一个补丁时一个滴答) - 直到它到达目的地。看起来很简单,但出于某种原因,我似乎无法找出使用 'tick' 上下文的正确方法。
这是我的代码示例,对应于移动部分(一旦路径列表已经生成)。
to move
tick
ask-concurrent ships
[
while [length current-path != 0]
[
face first current-path
move-to first current-path
set current-path remove-item 0 current-path
wait 0.08
]
]
end
目前,滴答计数器在整个模拟过程中只滴答一次。任何人都可以帮助我以不同的方式编写代码,以便每次海龟(集体)从一个补丁移动到另一个补丁时增加滴答声吗? 任何帮助将不胜感激。
这是调用 move 的代码部分
to find-shortest-path-to-destination
place-turtles
label-destination
foreach sort ships
[ ask ?
[
set path find-a-path current-waypoint target-waypoint
set optimal-path path
set current-path path
]
]
move
end
我会将您的代码更改为以下内容,并将 move 放在 repeat 块中。本质上,每个人一次移动 1 个路径单元,然后再次调用 move,然后调用下一个 tick-event 发生
to move
tick
ask-concurrent ships with [length current-path != 0]
[
face first current-path
move-to first current-path
set current-path remove-item 0 current-path
wait 0.08
]
end
to go
while [any? ships with [length current-path != 0]] [move]
end