小生境遗传算法的移动机器人路径优化技术
移动机器人路径规划是机器人学的一个重要研究领域,也是人工智能与机器人学的一个结合点。不论是哪种类别的移动机器人,都要求根据某一准则(如行走路线总长度最短,能量消耗最少等),在工作空间中沿一条最优(或次优)的路径行走。
路径规划的典型方法有图搜索法、栅格法、人工势场法等,这些算法都有一定局限性,易陷入局部最优解,而遗传算法在解决非线性问题上具有良好的适用性,已成为路径规划中使用较多的一种方法。但是标准的遗传算法本身也存在着早熟,易陷入局部最优解等缺陷,不能保证对路径规划上计算效率和可靠性的要求。为了提高路径规划的求解质量和求解效率,提出一种基于预选择机制小生境技术的改进遗传算法,并将其应用于移动机器人的路径规划,采用化复杂的二维坐标为一维坐标的编码方式,有效降低了遗传算法的搜索空间;根据移动机器人的行走特点,设计了自适应交叉算子、自适应变异算子、插入算子、删除算子、扰动算子和倒位算子。通过计算机仿真证明了改进后的遗传算法明显提高了搜索效率和收敛速度,并能保证收敛到全局最优解,克服了标准遗传算法的缺点,为机器人快速寻求一条无碰的最优路径。
1 基于遗传算法的机器人路径规划算法的改进与应用
本文的移动机器人路径规划,目标是在一幅已知障碍物分布的二维地图上寻找一条最优路径,使其到达目标点的距离最短,同时尽可能地使其与障碍物的距离最大化。为了简化讨论,将移动机器考虑为一个质点,而障碍物的边界向外扩张,这是移动机器人的最大安全距离。
1.1 基于预选择机制技术的小生境遗传算法机理
由于简单遗传算法是一种随机的方法,旨在对多个不同的个体进行隐并行寻优,其运行过程和实现方法在本质上仍是串行的,这样的进化运算过程相对缓慢;同时,基本遗传算法常在各个个体未达到最优解之前就收敛于一个局部最优点,从而导致染色体趋于一致,即产生“早熟”现象。为了克服这些不足,引入了小生境遗传机理,用基于预选择机制技术的小生境方法维持群体的多样性,避免群体内个别个体的大量增加,实现解空间内对局部最优解和全局最优解的寻优。
小生境技术就是将每一代个体划分为若干类,每个类中选出若干适应度较大的个体作为一个类的优秀代表组成一个种群,再在种群中以及不同种群之间,通过杂交、变异产生新一代个体群,同时采用预选择机制完成选择 *** 作。基于这种小生境技术的遗传算法,可以更好地保持解的多样性,同时具有很高的全局寻优能力和收敛速度。
在预选择机制中,只有在子串的适应度超过其父串的情况下,子串才能替换其父串,进入下一代群体。这种方式趋向于替换与其本身相似的个体(父与子之间的性状遗传),因而能够较好地维持群体的分布特性,即使在群体规模相对较小的情况下,仍可维持较高的群体分布特性。具体算法的实现步骤如下:
(1)初始化(建立初始群体,确定遗传参数);
(2)计算个体的适应度;
(3)遗传 *** 作(选择、交叉、变异);
(4)比较子串和父串的适应度大小,如果子串的适应度高于父串的适应度,就替换父串;否则维持父串不变;
(5)如果没有满足算法的终止条件,则返回第(2)步;否则,算法终止。
1.2 路径编码
基因的编码方式确定了问题在遗传算法中的表现形式,也决定了所采用的遗传进化 *** 作。每个染色体表示为给定符号集中的字符组成基因串。在早期的遗传算法中,符号集仅限于二进制数,因此遗传基因型是一个二进制符号串,其优点在于编码、解码的 *** 作简单,交叉、变异等的遗传 *** 作便于实现;缺点是不便反映所求问题的特定知识,以及对一些连续函数的优化问题等。由于遗传算法的随机特性使得其局部搜索能力较差,对于一些要求多维、高精度的连续函数优化,二进制编码存在连续函数离散化时的映射误差,当个体编码串较短时,可能达不到精度要求;当个体编码串较长时,虽然能提高精度,但却会使算法的搜索空间急剧增大。
实数编码适用于表示范围大、精度高的数,能有效地克服二进制编码的海明悬崖缺点,且可直接采用真值编码,便于与问题相关的启发知识,可以提高算法的搜索效率。移动机器人的路径可以视为一系列坐标点连接而成的线段,对移动机器人的路径规划也就是对这些坐标点做各种 *** 作,以使它们符合移动机器人行走的需要。考虑到移动机器人自身的特点(不仅需要避开障碍物,还要保证路径的平滑性),以及移动机器人路径中转向点个数的不确定性,采用可变长染色体的实数编码方式,用实数直接对路径坐标点进行编码,以便于对路径点的灵活 *** 作,从而避免在使用二进制编码时,二进制位串与直角坐标点之间互相转换的繁琐 *** 作,且易于进行遗传算子 *** 作。
1.3 种群初始化
执行遗传算法的最优路径设计是必须对种群进行初始化,由于初始路径随机产生,各转向点坐标可能分布在整个规划区域范围内,包括可行的和不可行的,这样便增加了搜索范围。这里在可行区域内限制初始转向点,以加快遗传算法的收敛速度。具体做法为:判断该转向点是否在可行区域内,如果不是,则重新选取,直到坐标点符合条件为止。
根据规划环境的复杂度不同,最优路径中转向点的个数也是不确定的,一般来说,环境越复杂,转向点就越多,因此算法采用变长编码技术,通过对染色体进行删除、插入等 *** 作,能够确定合适的转向点个数,使路径达到最优。但是,转向点数目太多,占用资源也就会太大,它将使运算速度变慢。因此,在运算过程中,设定最大转向点为Nmax,种群中每个个体的长度n满足2≤n≤Nmax。
采用小生境原理,将每一代个体划分为若干类,每个类中选出若干适应度较大的个体,作为一个类的优秀代表组成一个种群。
1.4 适应度函数
所谓移动机器人的路径规划,指在起点和终点之间找出一条最短的可行路径,其约束条件是不与障碍物相交,同时移动机器人在行走中的转角不宜太大。该算法以两个条件作为规划路径的可行性评价函数,即路径总长度和各转向点拐角的平均大小,对于不可行的路径,对其适应度进行惩罚,使它的适应度差于可行路径。
(1)路径总长度。为了防止移动机器人与障碍物碰撞,应尽量使其与障碍物保持一定的安全距离。假设移动机器人的安全半径为r;移动机器人与障碍物的距离为d,则路径总长度Len由式(1)计算:
式中:d(pi-1,pi)为转向点pi-1与pi之间的长度。如果pi-1与pi之间的路径不可行,则使用惩罚函数法对其适应度进行惩罚。惩罚函数定义如下:
式中:ε为惩罚因子。路径的评价函数可以写为:
判断两点之间的路径是否可行,只需判断这两点的连线与障碍物的各边是否相交即可。根据几何学原理,判断两条线段是否相交可由以下两个步骤进行确定:快速排斥试验;跨立试验。鉴于文章篇幅,在此不再对这两个试验进行详细阐述。
评价路径是求路径长度最短的问题,通过惩罚因子,可以使不可行路径变长,从而降低它的适应值。
(2)路径平滑度。移动机器人的特点决定了它在行走过程中不宜以过大拐角进行转向,因此整条行走路径应趋于平缓而光滑,即每一转向点处的拐角值应尽可能小。这里假设拐角最大值不能超过π/2,平滑度可以使用路径的平均拐角值来计算:
式中:ξ为一个趋于零的常数(ξ>0);αi(0≤αi≤π,i=2,3,…,n-1)表示两向量AC,CB之间的夹角,B,C点的坐标分别为(xi-2,yi-1),(xi,yi),(xi-1,yi-1);k为αi中大于或等于π/2的个数,即当某一夹角大于或等于π/2时,对适应度进行惩罚。当n=2时,路径为起始点与终止点的连线。若其可行,则M值趋于0。可以看出,M值越小,路径的平滑度越好。
得到了以上两个条件的评价函数,就可以获得整条路径的适应度函数。采用各项评价函数加权求和是常用的确定适应度函数的方法。因为各个加权系数不是恒定不变的,而是随路径和障碍物的情况变化而变化的,所以这种情况下各个加权系数就很难调整和确定。因此,在确定适应度函数时,尽量使适应度函数的项数最少,但又必须把路径规划的两个条件融合在遗传优化过程中。这里采用评价函数相乘的形式,如式(6)所示。
f=1/(ML) (6)
以f作为选择 *** 作的依据,则路径的长度和平均拐角越小,其适应度越好。
1.5 遗传算子
(1)选择算子。使用锦标赛选择法和精英保留法相结合的选择策略。采用在锦标赛选择法选择时,先随机在群体中选择K个个体进行比较,适应度最好的个体将被选择作为生成下一代的父体,参数K称为竞赛规模。这种选择方式能使种群中适应度好的个体具有较大的“生存”机会。同时,由于它只使用适应度的相对值作为选择的标准,而与适应度的数值大小不成直接比例,从而避免了超级个体的影响,在一定程度上避免了过早收敛和停滞现象的发生。精英保留法是当前种群中适应度最好的个体,它不参加遗传 *** 作,可直接复制到下一代,替换经交叉和变异 *** 作产生的子种群中适应度最差的个体,其优点是在搜索过程中可以使某一代最优个体不被遗传 *** 作所破坏,这样可保证遗传算法以概率收敛到最优解。经验证明,保留占种群总体2%~5%数量的个体,效果最为理想。
(2)交叉算子。采用单点交叉法,在两个父体上分别随机选取一个交叉点(起点和终点除外),交换两个个体在各自交叉点之后的染色体。考虑到规划路径的长度是可变的,为了防止交叉 *** 作后出现过于繁琐或简单的路径,对生成的新个体长度进行限制,即最大长度不能超过Nmax,并且不能产生回路,若不符合要求,重新获取两个父个体的交叉点。
(3)插入算子。设计了两种插入算子。第一种是有针对性的,即在连线穿过障碍物的两个转向点之间插入一个或多个转向点,使产生的路径避开障碍物,如图1(a)所示;第二种是一般意义上的插入,以一定概率插入一个随机产生的转向点,如图1(b)所示。
(4)扰动算子。同样设计了两种扰动算子,第一种只选取路径不可行的转向点来进行小范围的调整,使其路径可行,如图1(c)所示;第二种是不管路径是否可行,任意选取一个位置,以概率pm对其转向点坐标进行调整。在进化初期,不可行的解数量较多,调整的范围大一些。在进化后期调整范围逐渐缩小,如图1(d)所示。
(5)删除算子。建立一个存储空间REC,在一条路径中,如果点(xi-1,yi-1)与点(xi,yi)的连线经过障碍物,但(xi-1,yi-1)与(xi+1,yi-1)的连线不经过障碍物,则将点(xi,yi)添加到REC中。如果REC不为空,则从中随机选取一点删除(见图1(e));否则,在路径中任意选取一个路径点,以概率pd进行删除,如图1(f)所示。
(6)平滑算子。平滑算子只对可行路径中最大的拐角进行 *** 作,如图1(g)所示。删除拐角α的顶点pj,依次连接点pj-1,p1,p2,pj+1构成可行路径段序列pj-1p1→p1p2→p2pj+1。
(7)倒位算子。随机选取路径中两个中间转向点,颠倒之间的转向点。倒位算子可使路径发生急剧变化,对于转向点较多的路径会有积极的意义。通常的交叉和变异算子不易取得此种效果,而且倒位算子能修正遗传进化过程中可能出现的基因误差,如图1(h)所示。
1.6 遗传算子概率选择
选择合适的遗传算子执行概率是遗传算法能否收敛到最优解的关键之一。在进化过程的前期,群体中存在大量的不可行解,因而交叉算子、扰动算子的概率应该取得较大些,而平滑算子取较小的概率;随着进化过程的推进,可行解增多,应适当提高平滑算子的概率,以提高可行解的平滑性能。同时,为了防止交叉算子和扰动算子对可行解的破坏,需降低其执行概率,并取较小的扰动概率对可行解的形状进行微调。其中,扰动算子(1)和插入算子(1)是对路径转向点的启发式 *** 作,都是针对不可行路径的优化调整,对于这些算子应当始终选择较高的概率。插入算子(2)会使路径的转向点数量增加,应当取较小的概率。
1.7 终止条件
一般在对问题无知的情况下,可以在目标函数达到一个可以承受的范围内之后,即终止算法。另外,还可设置最大进化代数,在给定的进化代数之内强行终止算法,从而保证运算时间的要求。为了实用起见,在此采取最大进化代数终止准则,并选取适应度最好的可行路径。
1.8 算法流程
改进后的基于小生境遗传算法流程如图2所示。具体算法描述如下:
(1)初始化种群,沿起点和终点连线方向等距离选取N个点,在这些点的垂直线上随机选取转向点的纵坐标,并且使这些转向点不在障碍物内;
(2)将每一代个体划分为n个类,每个类中选出若干适应度较大的个体,作为一个类的优秀代表,组成一个种群。种群规模Gi(i=1,2,…,n+1);
(3)计算种群中所有个体的适应度,将其最好的个体保留,然后采用锦标赛选择法,挑选父个体,以执行交叉 *** 作,并且检查获得的子代个体染色体长度是否超过N,如果没有超过,则保留,否则丢弃。
(4)以设定的概率对新产生的子代个体进行变异、插入、扰动、删除、平滑的 *** 作。此过程中,采取预选择机制,比较子串和父串适应度的大小,如果子串的适应度高于父串的适应度,就替换父串;否则维持父串不变;
(5)重复第(3)和第(4)步直到获得的新个体数量与父代群体数量相等;
(6)用保留的上一代最优个体替换新种群中适应度最差的个体;
(7)检查算法停止条件。符合则中止,否则跳转至第(3)步,算法继续进行。
2 仿真
移动机器人最优路径规划设计的环境信息主要包括移动机器人活动区域内的各种障碍物信息识别。本文视各种障碍物都为不可行区域,并以任意形状的多边形来表示。在VC 2005环境中,对以上算法进行仿真。选取算法参数为路径最大转向点数30,初始转向点数20,种群大小100,锦标赛规模取5,最大进化代数G=80。在算法的前20代中,交叉概率pc=0.6,扰动概率pm=0.6,插入算子2pi=0.6,平滑算子概率ps=0.1;在20代以后pc=0.1,pm=0.2,pi=0.01,ps=0.7。
在算法的初始阶段,由于转向点较多,因此删除概率应当取大一些,这样可以使转向点数量减少,从而缩小路径的长度;但在算法后期,路径点已经较少,再使用较大的删除概率,容易使算法陷入局部解,且收敛到最优解的概率大大减少,因此进化后期的删除概率应减少,保证路径的多样性。初始删除概率选0.8,大约20代以后,选取0.1,而扰动算子1和插入算子1的概率始终为0.8。选取两种不同的环境(见图3),分别运行上述算法各10次,选出效果最好的路径显示在图3(a)、图3(b)中。从图3中可以看出,改进后的遗传算法对各种环境都有良好的适应性。其中,图3(a)的情况最简单,只用了19代就得到了最优结果;图3(b)进化了36代后;收敛到最优解。
为了与标准遗传算法的性能进行对比,分别使用本文算法和标准遗传算子对环境一和二进行实验。标准遗传算法的选择采用锦标赛选择法,其交叉概率、变异概率与本文算法相同,运行结果如表1和表2所示。
从表1,表2中数据可以看出,不管是运行时间,还是收敛的路径长度,本文算法都优于标准遗传算法。主要是由于本文算法针对规划路径有针对性地设计了新的遗传算子,从而加快了进化的速度,更容易收敛到最优解。
3 结 语
采用基于预选择机制的小生境技术,且基于启发式知识来设计遗传算子。对标准遗传算法进行了改进和扩充,并应用于移动机器人行走的路径规划。该算法同时兼顾了遗传进化的快速性和群体的多样性,有效地抑制了“早熟”现象的发生,能很好地搜索局部最优解和全局最优解。实验证明,该算法在不同的环境中都能够在较小的进化代数内收敛到最优解,算法的执行速度和成功率明显高于标准的遗传算法。另外,在进化的不同阶段选取合适的交叉和变异概率对于进化结果有着关键性的影响,本文将算法分成了两个阶段,分别设定了不同的遗传 *** 作概率,这种方式还比较简单,不能完全适应种群的变化情况。如何让算法根据种群进化情况自动调整和优化这些参数,还需进一步的研究和改进。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)