首先,具备最优性的算法并不会陷入局部最优。例如A*算法,基于广度优先算法并结合启发式,能找到最优路线,显然不会陷入局部最优。
那么,针对非最优算法,如何避免陷入局部最优呢?其中一个重要思想就是,增加算法的随机性。比如RRT算法,随机性非常强,搜索树随机扩散(或在某些实际的运动约束下随机扩散)直到找到目标点。我认为并不需要担心RRT算法陷入局部最优解,更需要担心的是它与最优解之间的误差太大。为了对RRT的扩散进行引导,可以加入人工势场,但是在某些复杂的势场环境下,规划算法又可能陷入局部最优。所以,确定性和随机性是一个需要权衡的问题。
假如陷入局部最优,该怎么办呢?再拿RRT+人工势场法举例。当陷入局部最优,一是可以再叠加一个势场,把点引导出来;二是可以暂时取消原势场,暂时用RRT随机搜索跳出局部最优;三是使用预先设置的前进规则,比如顺时针绕行……