最小转弯的A星优化

时间:2018-07-19 13:12:03

标签: algorithm a-star

我正在研究A星优化技术,该技术可以避免过度的转弯弯角并找到最小转弯的方法,因为谈论机器人,如果不停不断地前进并计算进一步的步骤,效率会更高。

我已经开发了自己的方法,但是缺少了一些东西。这种方法是基于预先计算自由线和列交叉处的交叉像元,但是存在一个问题:我要从考虑包含不可通过像元的线和列中进行遍历。

要解决此问题,我还需要在障碍物之间添加子线。 依此类推。

也许有更好的注册算法可以更好地满足我的需求。

此图显示了如何使用最小转弯来构建路径

这是相同的长度,但考虑到没有转弯,这是最佳选择

Sample

1 个答案:

答案 0 :(得分:0)

在寻找解决方案时,我发现最佳搜索可以满足我的需求,它与我的需求非常接近,但动作却不正确。

// This pseudocode is adapted from below 
// source:
// https://courses.cs.washington.edu/
Best-First-Search(Grah g, Node start)
    1) Create an empty PriorityQueue
       PriorityQueue pq;
    2) Insert "start" in pq.
       pq.insert(start)
    3) Until PriorityQueue is empty
          u = PriorityQueue.DeleteMin
          If u is the goal
             Exit
          Else
             Foreach neighbor v of u
                If v "Unvisited"
                    Mark v "Visited"                    
                    pq.insert(v)
             Mark v "Examined"                    
End procedure

我想出的最佳方法是在自由行和自由列上找到所有十字架,并找到从十字架到最接近目标的最近邻居的最接近像元。

因此,我已经完成了从Grid类更新Neighbor属性实现的操作,而没有更新A *算法。