2

我需要创建一个算法,其中“车辆”覆盖1262 米x 1262 米的区域,每条“腿”之间有20%的重叠。每条腿的宽度为103 m,根据我的计算得出覆盖该区域所需的16 条“腿”。在每条行程结束时,车辆会进行180 度转弯,并完成下一个搜索行程。车辆以23米/秒的恒定速度行驶

现在我问这个的原因是一些问题:

  1. 处理车辆相对于速度的“位置”的最佳方法是什么?拍摄 1 秒的“快照”并将车辆移动 23 米?(这似乎有点粗糙)..

  2. 我如何处理与速度相关的每条腿末端的转弯?

  3. 我应该预先分配搜索腿参数(即在初始化时找到每条腿的边界)还是在每个搜索腿结束时动态计算这些参数?

  4. 我最终将在 Java 中实现这个算法......哪些 Java 函数/库将帮助我处理时间、数学等问题?

  5. 我还需要考虑什么?

编辑

(回答其中一个回答)

基本上,将在整个搜索区域中随机放置需要找到的“对象”......一旦我让车辆沿着正确的路径行驶并覆盖该区域,我就会解决这个问题。车辆转弯时确实覆盖了区域。最小转弯半径为 12 米。我只是想让它在每个搜索腿的末端转弯,然后排队等待下一个腿

4

2 回答 2

1

您可能会研究为寻找失踪人员、飞机、沉船等的空中或潜水搜索而设计的搜索算法。

另一个想法是研究“空间填充曲线”的使用。可以在这里找到 Bartholdi 的一些作品。

于 2010-02-08T17:09:11.683 回答
0

尽管我没有完全理解您描述背后的主要思想,但我尝试给出一些答案。

  1. 尽可能小地拍摄“快照”。在计算之间停止时间,然后根据时间移动您的车辆。下面的示例代码。

  2. 你的车每秒转多少度?

  3. 如果那些不改变,我会在开始时计算那些。

  4. 纯 Java SE 应该足以满足您的需求。检查 java.lang.Math 和 java.lang.System 的 API。


while(true) {
     final long time = System.currentTimeMillis();
     doSomeCalculations();
     doSomethingMore();
     long passedTime = System.currentTimeMillis() - time;
     vehicle.move(26.0 / 1000.0 * passedTime);
}
于 2010-02-07T19:30:11.647 回答