强化算法学习记录-1

以无人机避障为模拟场景

使用一般算法解决避障问题,需要考虑计算所有可能的状态序列才可能得到最好的解,当状态较多时计算量迅速增长,并且不具备以往路线规划的经验即有可能重复计算。如Dijstra,Bellman-Ford可以将一些节点的计算信息存储起来,减少计算量。在小规模问题中可以表现的很好,在更大的规模问题中,存储量不断增加,搜索起来更加困难。在三维空间中状态增多,行为可能性变多,这些算法不能很好的使用。在寻找不是很精确路径规划的一些问题中使用Q-Learning算法可以解决传统算法的弊端。

1.1 Dijkstra算法

在二维平面中寻找最优路径来避免障碍物,如图2.1所示从出发点到终点每走一步奖励值减一,碰到障碍物奖励值减五并终止此次试验。使用编程试探思想来实现,从出发点开始,随机选取行为来移动,碰到障碍物就回退直到终点。这种寻找路径处在以下问题:虽然最终可以找到终点,但无法确定需要多长时间,寻找的路径中可能存在重复的线路。可以记录每一步来避免重复的线路,有可能出现堵死的情况导致不能移动,如图2.2所示。可以使用递归的思想,如何遇到不能进行下一步选择,则回退到上一步直到终点,记录每一此实验的路线找到比较优的路线,这样不断探测路线的方式存在不同路线可能经过重复的点,增大计算量。

 

                 图2.1 模拟环境示意图

  

 

                                        图2.2 行动示意图

 

还存在这样问题,最优的路线是随机生成的,理论上不能推理得到,存在很大的随机性。有大量的重复路线,是因为此算法不具备上一次实验的经验,可以使用表格记录每一个状态选择不同行为的回报值,如表2.1。

 

2.1 状态值表

状态

(1,1)

-1

-1

(1,2)

-5

-1

-1

(1,3)

(1,4)

-1

-1

(1,5)

-1

-5

(2,1)

-1

-1

-1

……

……

……

……

……

 

有了经验值再一次试验可以借助状态行为值表做出较好的行为,同时也应该尝试未使用的行为去探索其他状态,直至所有状态所有行为都有了对应的值。即使有了行为值表格也不能选取最优的路径。这样的表格可以根据已知的环境自动生成。这种探索的方法是对未知的环境寻找路径有一定的帮助。

Dijkstra是求最短路径的算法,可以得到源点到其他所有点的最短路径,即可以找到到达终点的最优路径。Dijkstra算法可以生成源点到所有点最短路径的值,可以作为状态值,如图2.3所示,下一次试验可以直接利用快速找到路径。

 

                               图2.3 Dijkstra算法生成的状态值

 

 

                               图2.4 Dijkstra算法生成的状态值

 

Dijkstra算法计算的最短路径作为状态还存在一些问题。如在(3,1)位置可能会选择不能使整体最优的的行为,向下走。可以调整源点,把终点作为源点计算得到的状态不会存在这种问题,如图2.4所示。Dijkstra算法一次性计算就可以得到状态表,根据状态表在任何一个位置都可以找到一条到终点的最优路径。Dijkstra算法的优点也是它的缺点,Dijkstra算法使用递归算法一次性得到状态表,Dijkstra算法的复杂度O(n^2),随着状态的增多,计算量极具增大。对于一些可以预处理的问题Dijkstra算法可以使用,对于一些需要快速应用或者状态未知的问题需要算法去探索,Dijkstra算法不再使用,每一次探索到的新状态,Dijkstra算法需要重新计算一遍,计算量消耗大。

在三维空间试验中相对于二维平面,状态增加,行为增多,算法不变。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值