通过四维数据寻路

时间:2012-03-06 19:02:23

标签: algorithm path-finding a-star

问题是找到一架通过四维风的飞机的最佳路线(不同高度的风和随着行程而变化的风(预测风模型))。

我使用了传统的A *搜索算法并将其破解,使其在3维和风矢量下工作。

它可以在很多情况下工作但速度非常慢(即时处理大量数据节点)并且对某些边缘情况不起作用。

我觉得我已经“很好”地工作了,但它感觉非常黑了。

通过这样的数据(可能是遗传算法或神经网络)或者我甚至没有考虑过的东西,是否有更好的方法来寻找路径?也许流体动力学?我不知道?

编辑:进一步的细节。

数据是风向量(方向,幅度)。 数据在25个不同的高度水平上间隔15x15km。

通过“并不总是工作”我的意思是它会为飞机选择一条愚蠢的路径,因为路径权重与另一条路径相同。它很适合寻找路径,但对于飞机来说是次优的。

我为每个节点更改考虑了很多因素:

  • 降幅升高的成本。
  • 抗风。
  • 忽略具有过高阻力的节点。
  • 对角线锥形与直线等的成本

我使用欧氏距离作为我的启发式或H值。 我使用各种因素来衡量我的体重或G值(上面的清单)。

谢谢!

3 个答案:

答案 0 :(得分:1)

A *并未被宣传为最快的搜索算法;它确实保证了它找到的第一个解决方案是最好的(假设你提供了一个可接受的启发式算法)。如果你的某些案例没有工作,那么你实施的某些方面就有问题(可能是A *的机制,也许是特定领域的东西;如果你没有提供任何细节,不能说更多)。

如果速度太慢,您可能需要重新考虑正在使用的启发式方法。

如果您不需要最佳解决方案,那么其他一些技术可能更合适。再说一次,鉴于你提供的问题很少,很难说更多。

答案 1 :(得分:1)

使用weighted A*可以随时取消时间优化。

加权A * [或A * epsilon],预计会找到比A *更快的路径,但路径不会是最佳的[但是,它会给你一个最佳性的界限,作为你的epsilon的一个参数/重量]。

答案 2 :(得分:0)

您计划离线还是在线?

通常对于这些问题,在实际飞过它们之前,你不知道风是什么。如果这确实是一个在线问题,您可能需要考虑尝试构建近乎最优的策略。在这个领域已经进行了大量的研究,其中最好的是John Wharington的“通过强化学习自主控制飙升飞机”