【发布时间】:2016-02-23 17:53:10
【问题描述】:
我对 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
【问题讨论】:
-
@mattsap 在确定路径后调用一次移动它。重置滴答声仅在设置过程的开始出现。我在我的问题中添加了更多代码,显示调用 move 的位置。感谢您的帮助
-
通常将
tick放在程序的末尾,而不是开头 — 参见ccl.northwestern.edu/netlogo/docs/programming.html#ticks
标签: netlogo