人工鱼群算法应用
基于人工鱼群算法的机器人路径规划
环境描述
路径规划的第一步是建立适当的环境模型,建模的方法有多种,例如:栅格法、实际坐标系建模及链接图法建模等。栅格法当规划范围较大时计算量相当大,用实际坐标系建模,虽然建模简单,但很难和其他成熟的规划方法结合。在障碍物形状不是太复杂的情况下,采用链路图(即自由空间法)方法建立的机器人工作空间模型会大大减少建模的复杂性。用人工鱼群算法求解问题时,算法操作比较简单,而且可以和成熟的图搜索遍历技术相结合,比较容易求到最优路径。
作为全局路径规划方法的一种,自由空间法采用预先定义的如广义锥形和凸多边形等基本形状构造自由空间,并将自由空间表示为连通图,通过搜索连接图来进行路径规划。自由空间的构造方法是:从障碍物的一个顶点开始,依次作其他顶点的连接线,删除不必要的连接线,使得连接线与障碍物边界所围成的每一个自由空间都是面积最大的凸多边形;连接各连接线的重点形成的网络图即为机器人可自由运动的路线。自由空间法的优点是比较灵活,起始点和目标点的改变不会造成连通图的重构,并且不需要像栅格法一样需要大量的存储空间;缺点是其复杂程度与障碍物多少成正比,且有时无法获得最短路径。
链接线的中点作为机器人路径点,这些路径点顺序标识为1,2,3,… ,n;连接各路径点形成的网络图即为机器人可自由运动的线路。其中黑色多边形为障碍物,点线为自由链接线,虚线为自由链接线中点连接而成的机器人可自由运动的网络。
路径编码方法
通过引进Dijkstra算法可以得到链接图中的最短路径P0,P1,P2,…,Pn,Pn+1,其中:P0 = start为路径的起点,Pn+1 = goal为路径的终点。优化工作就是调整Pi(i =1,2,3,…,n)的位置,使此路径最短,从而得到机器人在规划空间的最优(或近似最优)移动路径。
对于Pi点,让它在由Pi1,pi2两点所组成的直线段上变动,其具体位置可由下述参数方程式中的ti来决定。
对此路径上的每个路径点都这样处理后,这些新的路径点就组成了一条新的行走路径。则每一条新的行走路径就代表一条人工鱼。
对于这一条新的调整后的路径,可由n个取值在[0,1]范围内的ti值的排列来唯一地表示其各个路径点的新位置,即确定了这条路径。要注意的是,机器人行走路径的起点和终点不参与调整。个体的编码形式为P = t1t2t3…tl…tn。例如:P = 0.5 0.8 0.3 … 0.8 0.6 0.2 就表示一条机器人行走路径。其中各个数字表示对初路径点的调整量。
算法步骤
步骤1
设定鱼群的参数,包括鱼群规模m,最大迭代次数gen,人工鱼的感知范围Visual,最大移动步长step,拥挤度因子δ等;
步骤2
在参数区间内随机生成m条人工鱼个体,作为初始鱼群;
步骤3
计算每条鱼的食物浓度函数,把最小的值放入公告板中;
步骤4
对于每条人工鱼执行以下操作;
1) 计算出追尾行为、聚群行为的值,采用行为选择策略,选择优的行为作为鱼的前进方向,缺省行为是觅食行为。该鱼向前移动一步。
2)计算每条鱼的食物浓度函数,其最小值与公告板中的值进行比较,最终公告板中始终保持较小的值。
步骤5
判断 如果满足结束条件,转步骤6;否则转步骤4。
步骤6
程序结束,则公告板中的值就是全局路径优化后的最优值,其对应的路径则是优化了的全局路径的最优路径。
结论
对于机器人路径规划问题,在利用链路图对路径空间进行建模的基础上,先使用图论中的成熟算法找到一条从起点到终点的最优路径,然后再利用人工鱼群算法来调整路径上的点,最终得到全局的最优路径。实验结果显示,算法在很少的迭代次数内就能得到最优值,很明显这种方法满足机器人路径规划的实时性,是有效的。
基于人工鱼群算法求解数值积分
求解思路
基于人工鱼群算法求数值积分求解思路:首先在积分区间上随机的产生一些分割点,看做一条人工鱼;然后通过人工鱼的自寻优方法来对分割点进行优化,最后以优化后的分割点为最优分割点,再依据求和公式进行求和,最终得到所求被积函数的值。
算法步骤
人工鱼群(分割方法)产生及优化过程如下:
步骤1
设定鱼群的参数,包括鱼群规模m,最大迭代次数gen,人工鱼的感知范围Visual,最大移动步长step,拥挤度因子δ等;
步骤2
初始化鱼群:在定积分的积分区间内随机生成m条人工鱼个体,作为初始鱼群;
步骤3
计算每条鱼的食物浓度函数,把最小的值放入公告板中;
步骤4
对于每条人工鱼执行以下操作;
1) 计算出追尾行为、聚群行为的值,采用行为选择策略,选择优的行为作为鱼的前进方向,缺省行为是觅食行为。该鱼向前移动一步。
2)计算每条鱼的食物浓度函数,其最小值与公告板中的值进行比较,最终公告板中始终保持较小的值。
步骤5
判断 如果满足结束条件(达到最大迭代次数或满足精度要求),转步骤6;否则转步骤4。
步骤6
程序结束。则公告板中的值就是采用不等距分割法寻优后的最优解,而后使用传统的积分方法:代入表达式
∑j=1n+1midYjdj
\sum_{j=1}^{n+1}midY{j}d{j}
j=1∑n+1midYjdj
来求积分值,其中 midYj为由积分区间的左端点、优化后的不等距分割点和右端点划分成的n+1个小段的中点对应的函数值;
dj为 由积分区间的左端点、优化后的不等距分割点和右端点划分成的n+1个小段的长度。
应用举例
结论
利用人工鱼群算法来求解数值积分问题,充分发挥了人工鱼群算法的群体搜索和并行的特性。从以上的实例可以看出,采用人工鱼群算法来求解数值积分问题具有以下几个特点:
1)该算法适应性强,计算精度比一些传统的积分方法要高;
2)既可以较精确的计算一般函数的数值积分,还可以计算奇异积分、震荡积分和原函数不易求得的被积函数的积分;
3)收敛性好,算法能在很少的代数内收敛到比较满意的解;
4)参数的敏感性低,参数的变动对结果的影响不大。