算法设计原则.docx

上传人:b****6 文档编号:6181636 上传时间:2023-01-04 格式:DOCX 页数:10 大小:169.43KB
下载 相关 举报
算法设计原则.docx_第1页
第1页 / 共10页
算法设计原则.docx_第2页
第2页 / 共10页
算法设计原则.docx_第3页
第3页 / 共10页
算法设计原则.docx_第4页
第4页 / 共10页
算法设计原则.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

算法设计原则.docx

《算法设计原则.docx》由会员分享,可在线阅读,更多相关《算法设计原则.docx(10页珍藏版)》请在冰豆网上搜索。

算法设计原则.docx

算法设计原则

算法设计原则:

1)与任何障碍物不发生碰撞;

2)路径尽可能短,运行时间尽可能少;

3)应与障碍物保持一定的安全距离;

4)路径曲线尽可能平滑。

1.环境信息与编码:

为了模拟机器人的工作环境,需要对其工作空间建立模型来表示。

只考虑机器人工作空间的平面状况,不考虑高度问题,本论文采用栅格法划分机器人的工作空间,将机器人工作环境分解成一系列具有二值信息的网格单元。

假设机器人的工作空间可以用二维平面图形表示,而且障碍物的尺寸、大小和位置己知,在机器人运动过程中障碍物的位置不发生变化。

为了方便起见,机器人的工作空间用正方形表示(不是正方形时,可以扩大障碍物,将工作空间填充成正方形),用尺寸相同的栅格将工作空间划分(栅格的大小以机器人通过为准)。

在二维空间中采用栅格法来建立机器人的工作空间模型,按照机器人及工作空间的大小来确定栅格的数目,以保证机器人可以在其中自由移动。

栅格的标识也就是栅格的编码方法有下述两种方法:

①直角坐标法。

如图所示,以栅格阵左下角为坐标原点,水平向右为x轴正方向,竖直向上为y轴正方向,每一栅格区间对应坐标轴上的一个单位长度。

任一栅格均可用直角坐标(x,y)唯一标识。

②序号法。

如图1所示,按从左到右,从下到上的顺序,从栅格阵左下角第一个栅格开始,给每一个栅格一个序号p(从零开始计),则序号p与栅格块

图1用直角坐标系建立的栅格

用序号法对每个小栅格进行编号,其中每个编号P都与其直角坐标一一对应,其映射关系为

p=x+10y(1-1)

而在MATLAB语言中,x和y与P的关系为

x=rem(p,10)(1-2)

y=fix(P,10)(1-3)

其中,rem表示取余操作,fix表示取整操作。

对已建立的栅格加入序号编码后的图形见图1。

因为遗传算法在搜索和优化上具有的优势,所以采用遗传算法来进行机器人路径的规划。

用遗传算法对机器人的路径进行规划时,可将直角坐标法同序号法相结合使用,根据条件的不同按照映射关系进行变换。

这样既减少了个体长度及编码的复杂度,又可以保证机器人处于栅格中心位置,避免了与其周围障碍物的碰撞。

为了使每次的路径寻优都尽量向接近目标点的方向运动,当前栅格邻接方位的位置显得极为重要。

对于8个邻接方位,8个方位分别为:

右下,右,右上,上,左上,左,左下,下。

方位距离表示当前栅格到它的邻接栅格的距离,定义为两个栅格之间的中心距离。

可以看出,当前栅格和它相邻的8个方位的距离为定义为

(1-4)

由于地图的表示有两种方式,有序号法,如上所述,和直角坐标法。

因此,在机器人地图的表示中,需要一个结构来表示这两种表示方法的对应关系。

typedefstructGrid

{

DPOINTm_left_up;

DPOINTm_left_down;

DPOINTm_right_up;

DPOINTm_right_down;

DPOINTm_center;

intproperty;

intserial_number;

}GRID,*PGRID;

在结构GRID中,以栅格的四个顶点,一个中心点栅格属性以及栅格序号表示一个栅格的信息。

其中,栅格的四个顶点为:

左上点m_left_up,左下点m_left_down,右上点m_right_up,右下点m_right_down,DPOINT也是一个结构表示地图中点的坐标{doubles_X;doubles_Y};栅格中心点为m_center,整数property表示此栅格为自由栅格还是障碍栅格。

如果是自由栅格property=0,否则property=1。

整数serial_number表示每个栅格的序号。

图1中,灰色格为障碍栅格。

2.算法流程

2.1改进的初始种群

遗传算法与传统搜索算法不同,遗传算法在运算开始需要随机产生一组初始解,称作初始种群。

结合本章的机器人路径规划考虑,初始种群中的每个解,必须满足两个条件:

一是栅格的连续性,它确保了种群的可行性;二是随机性,它保证了初始种群尽可能分布在搜索空间中每一个区域,体现遗传算法的全局最优性。

本算法中初始种群的产生方法主要有以下特点:

(1)采用不等长染色体,每条染色体都是“起点”和“终点”之间的一条连续栅格代码,因此,采用不等长染色体比较合理。

(2)采用A*算法产生初始种群。

在“起点”和“终点”之间随机插入一个或多个中间点,然后,采用A*算法在这些点之间填充连续栅格,使之成为可行的初始解;这种方法产生的初始解更接近于最优解,大大提高了收敛速度。

在讨论初始种群前,首先给出连续的相邻栅格定义:

定义1连续的相邻栅格如图2.1所示,地图中与栅格N相邻的有八个栅格,分别是N-Nraw-1,N-Nraw,,N-Nraw+1,N-1,N+1,N+Nraw-1,N+Nraw,N+Nraw+1,其中Nraw为每行中的最大栅格数目。

若满足公式(2-1),N-Nraw-1称为N的连续栅格;式中(N-Nraw-1)N表示N-Nraw-1是N的连续的相邻栅格,其条件是N-Nraw和N-1至少有一个为自由栅格,即它们的属性为0,且N-Nraw-1必须为自由栅格。

同理,式(2-2)(2-3)(2-4)(2-5)表明其它相邻的七个栅格称为N的连续的相邻栅格的条件。

图2.1连续的相邻栅格定义

(2-1)

(2-2)

(2-3)

(2-4)

(2-5)

设栅格环境为Ù,栅格总数为n,假定种群中个体数目为pop_size。

第t代的第i条染色体表示为

;每条染色体由m个实数构成,染色体

可以表示成m维的行向量即

;这样第t代的种群Xt可以表示为一个向量集

机器人的起点“Nstart”,终点“Ngoal”,“Nstart”和“Ngoal”为整数。

分别代表起点和目标所在栅格的代码。

下面讨论初始种群产生步骤:

Step1:

确定染色体的条数即确定种群大小pop_size

Step2:

确定染色体的起始和末尾基因:

由于机器人路径规划的任务是从确定的起点到确定的终点。

因此,可以将机器人的起点Nstart始终作为染色体的第一个基因,终点Ngoal始终作为染色体的最后一个基因,即

=Nstart,

=Ngoal这样可以缩小遗传算法的搜索空间。

Step3:

确定起点到终点的一组染色体大小为pop_size:

Step3-1:

确定起点到终点的第一条染色体:

从Nstart开始,根据连续的相邻栅格原则,从与之相邻的八个栅格中,选取一个自由栅格作为此染色体的第二个基因;然后从围绕第二个基因的八个基因中,选取一个自由栅格作为此染色体的第三个基因;依此类推,直到Ngoal为止;选取原则有两个:

一是该栅格的代码与已有的代码不重复(不重复原则),见公式(2-6);二是即将选取的栅格到目标栅格的距离d(Nnew,Ngoal)最短,见公式(2-7):

(2-6)

(2-7)

Step3-2:

确定起点到终点的第i条染色体(1

在起点“Nstart”到终点“Ngoal”之间,随机插入i-1个“1—n-1”之间的整数(不包含起点Nstart和终点Ngoal),将这i-1个整数按距离起点Nstart的远近排序,距Nstart越近,排名越靠前,得到

,因此,得到包括起点和终点在内的不连续栅格序列为

;然后将这些不连续的栅格变为连续的栅格,每两个不连续栅格

变为连续栅格的方法是满足公式(2-8)所示的A*算法,即栅格Nj,i到所选栅格N的距离

,与栅格N到栅格

的距离

和最短;另外还要考虑Step3-1的不重复原则,将序列中的断点补齐。

到此为止,第i条染色体形成;

(2-8)

Step3-3:

以此类推共得到pop_size条染色体。

Step4:

在产生染色体过程中,还需要注意一些细节问题。

例如,由于要求基因的无重复性,在Step3-2中产生初始种群时可能陷入死锁,即无法生成连续栅格序列,例如下图所示情况,判断生成种群的死锁方法:

是当前栅格的周围无自由栅格点,而且当前点不是终点;解决方法是重复执行Step3-2直到成功产生新的染色体。

图2.2无连续栅格情况

2.2适应度函数:

在遗传算法中,个体适应度的大小决定该个体被遗传到下一代群体中的概率,适应度函数的选择在遗传算法中是相当重要的,它是引导遗传算法问题最优解逼近的关键因素。

适应度函数的选取直接影响遗传算法的计算效率和计算时间。

本文的适应度函数取路径长度的倒数。

路径越长,适应度就越小;路径越短,适应度越大。

这样,适应度越大(路径越短)的个体被淘汰的可能性就越小。

(2-9)

式中eval(Pi)表示染色体的适应值。

f(Pi)表示机器人的目标函数。

机器人路径优化的目标函数可取为机器人行走路径的总长度最短。

设机器人经过的路径为栅格

,则机器人目标函数为:

(2-10)

式中:

Pi为染色体。

Num_Chromosome为染色体长度,

表示第i组染色体中的栅格

到栅格

的距离,可以认为是两栅格中心的距离。

以适应度函数为评价指标,就可以从每代种群中选择优秀的染色体并将它们保存下来。

2.3遗传算子:

2.3.1选择操作:

选择算子也称复制(reproduction)算子,它的作用在于根据个体的优劣程度,保留适应性好的染色体,淘汰适应性差的染色体。

一般地说,通过选择,将保证当前种群中具有较高适应值的个体,以较大的概率通过复制和繁衍,生成新的种群,而适应度小的个体将被淘汰。

本算法采用竞争策略,令交叉产生的子代染色体按适应度优劣进行竞争,从中选出优胜个体进入下一代种群,直到种群充满为止。

下面首先介绍一下转轮法,这是一种正比选择策略,能根据与适值成正比的概率选出新种群,步骤如下:

Step1:

分别计算每一个染色体的累积概率

(2-11)

式中eval(xk)为第k个染色体适应值,分母为所有适应值的和。

Step2:

在[0,1]区间随机产生pop_size个均匀分布的伪随机数ri

Step3:

对每一个ri,若ri小于qi,则从子代染色体中选染色体xi,否则选第k个染色体

,使

成立,作为第i对染色体中的第1个染色体。

Step5:

从第i对染色体中选取适应值高的染色体作为下一代种群的第i个染色体。

Step6:

重复Step3,直到充满种群得到尺寸为pop_size的新种群。

2.3.2交叉算子:

交叉操作是结合来自父代交配种群中的信息产生新的个体,通常有单点交叉、多点交叉、均匀交叉等几种方法。

此处选择单点不等长交叉的方法。

只要两条路径通过相同的栅格,就可以进行交叉。

如果相同的栅格不止一个,则在这些相同的栅格中任选一个进行交叉;如果没有相同的栅格,则不进行交叉。

用交叉后的子代个体代替原种群中的父代个体,产生新的种群。

这样,有效地避免了染色体中出现新断点和重复栅格。

交叉算子流程:

图2.3交叉运算

FORcross_num=1TOPc﹒pop_sizeBEGIN//按交叉率Pc确定交叉次数并作循环

Pos1←—rand%(pop_size)//在1—pop_size中随机选一个数作为交叉染色体1的位置

Pos2←—rand%(pop_size)//在1—pop_size中随机选一个数作为交叉染色体2的位置

Pos[i]←—samegrid//发现相同栅格将相同点位置存入pos[i],i=1,2,m

i←—rand%(m)//在m个相同点中随机产生一个数作为交叉点

Ppos1CrosswithPpos2atNpos[i]//位置在Pos1和Pos2的染色体在点Npos[i]进行交叉运算

Replacethe2worstchromosomes//新染色体取代两个适应值最差的旧染色体

ENDFOR

2.3.3变异操作:

变异操作是通过随机改变染色体的某些基因来引入新个体,对于增加种群多样性起着关键作用,经过变异的解是否变得更好并不重要。

路径规划中的变异算子,分三种操作方式,即从个体中随机删除一个序号(不包括起始点、终止点序号);或从个体中随机选取一点,插入一个新序号;或在个体中随机选取一个序号,用另一个随机产生的序号代替它。

显然,这三种变异算子都有可能产生间断路径。

通过实验,我们发现可行路径变异后所得到的新路径为不可行路径。

本章提出一种新的变异算子,让系统不断增加新的染色体,并能保持与次优解接近。

具体方法是按变异率Pm从种群中选取pop_size*Pm个优秀染色体;在每一个染色体中,随机抽取k个不连续基因,将这k个基因和染色体的起点和终点,构成一个染色体的基本构架。

然后按照2.1节所述的距离最短原则和不重复原则,使之连续化,形成新的染色体,并以之取代种群中适应值最差的pop_size*Pm个染色体。

图3以k=1为例描述了变异运算:

图2.4变异运算

2.4终止条件:

本章采取最佳适值过半原则,它的含义是当种群中一半以上的染色体达到相同的适应度,且种群的适应值不变,则可以确定染色体的发展方向并将之作为停止条件。

2.5流程

综上所述,机器人在静态环境下路径规划的主要程序框架为:

main

g=draw(m,m)//将机器人工作空间画出栅格

mark=number(m,m)//将栅格编号

S=area(x,y)//将障碍物标识在机器人工作空间中

oldpop=zeros(pop_size,lengthchromosome)//随机生成初始种群

bestpath=ga(oldpath)//采用遗传算法优化生成的路径

plot(x,y)//在机器人工作空间中画出最优路径图

end

3实验仿真

路径规划是寻找满足安全和平滑条件下的最优路径,因此个体的适应度函数值越小,则该路径越好。

为了获得最优路径,根据本文中给出的算法,利用MATLAB分别对交叉率、变异率等参数的不同取值进行了比较选择。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1