算法设计原则.docx
- 文档编号:4761997
- 上传时间:2022-12-08
- 格式:DOCX
- 页数:10
- 大小:32.91KB
算法设计原则.docx
《算法设计原则.docx》由会员分享,可在线阅读,更多相关《算法设计原则.docx(10页珍藏版)》请在冰豆网上搜索。
算法设计原则
算法设计原则:
1)与任何障碍物不发生碰撞;
2)路径尽可能短,运行时间尽可能少;
3)应与障碍物保持一定的安全距离;
4)路径曲线尽可能平滑。
1.环境信息与编码:
为了模拟机器人的工作环境,需要对其工作空间建立模型来表示。
只考虑机器人工作空间的平面状况,不考虑高度问题,本论文采用栅格法划分机器人的工作空间,将机器人工作环境分解成一系列具有二值信息的网格单元。
假设机器人的工作空间可以用二维平面图形表示,而且障碍物的尺寸、大小和位置己知,在机器人运动过程中障碍物的位置不发生变化。
为了方便起见,机器人的工作空间用正方形表示(不是正方形时,可以扩大障碍物,将工作空间填充成正方形),
用尺寸相同的栅格将工作空间划分(栅格的大小以机器人通过为准)。
在二维空间中采用栅格法来建立机器人的工作空间模型,按照机器人及工作空间的大小来确定栅格的数目,以保证机器人可以在其中自由移动。
栅格的标识也就是栅格的编码方法有下述两种方法:
①直角坐标法。
如图所示,以栅格阵左下角为坐标原点,水平向右为x轴正方向,竖直向上为y轴正方向,每一栅格区间对应坐标轴上的一个单位长度。
任一栅格均可用直角坐标(x,y)唯一标识。
②序号法。
如图1所示,按从左到右,从下到上的顺序,从栅格
阵左下角第一个栅格开始,给每一个栅格一个序号p(从零开始计),
则序号P与栅格块
10
90
91
92
93
94
95
96
97
98
99
80
81
82
83
84
85
86
87
88
89
70
71
72
73
74
75
76
77
78
79
60
61
62
63
64
65
66
67
68
69
50
51
52
53
54
55
56
57
58
59
40
41
42
43
44
45
46
47
48
49
30
31
32
33
34
35
36
37
38
39
20
21
22
23
24
25
26
27
28
29
10
11
12
13
14
15
16
17
18
19
0
1
2
3
4
5
6
7
8
9
1
10
图1用直角坐标系建立的栅格
用序号法对每个小栅格进行编号,其中每个编号P都与其直角坐
标一一一对应,其映射关系为
p=x+10y(1-1)
而在MATLA语言中,x和y与P的关系为
x=rem(p,10)(1-2)
(1-3)
y=fix(P,10)
其中,rem表示取余操作,fix表示取整操作。
对已建立的栅格加入序号编码后的图形见图1。
因为遗传算法在搜索和优化上具有的优势,所以采用遗传算法来进行机器人路径的规划。
用遗传算法对机器
人的路径进行规划时,可将直角坐标法同序号法相结合使用,根据条
件的不同按照映射关系进行变换。
这样既减少了个体长度及编码的复杂度,又可以保证机器人处于栅格中心位置,避免了与其周围障碍物
的碰撞。
为了使每次的路径寻优都尽量向接近目标点的方向运动,当前栅格邻接方位的位置显得极为重要。
对于8个邻接方位,8个方位分别为:
右下,右,右上,上,左上,左,左下,下。
方位距离表示当前栅格到它的邻接栅格的距离,定义为两个栅格之间的中心距离。
可以看出,当前栅格和它相邻的8个方位的距离为定义为
、畀=卜2,1,.2,1,.2,1,仁沱8(1-4)
由于地图的表示有两种方式,有序号法,如上所述,和直角坐标法。
因此,在机器人地图的表示中,需要一个结构来表示这两种表示方法的对应关系。
typedefstructGrid
{
DPOINTm」eft_up;
DPOINTm」eft_down;
DPOINTm_right_up;
DPOINTm_right_down;
DPOINTm_center;
intproperty;
intserial_number;
}GRID,*PGRID;
在结构GRID中,以栅格的四个顶点,一个中心点栅格属性以及栅格序号表示一个栅格的信息。
其中,栅格的四个顶点为:
左上点m」eft_up,左下点m」eft_down,右上点m_right_up,右下点m_right_down,DPOINT也是一个结构表示地图中点的坐标{doubles_X;doubles_»;栅格中心点为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的连续的相邻栅格的条件。
y+yruw-l
.V+A'rtfHH-1
A-1
A
5'+J
y-Nraw-1
A'-.Vnimr
图2.1连续的相邻栅格定义
\(N-Nrawyproperty0or(N-1).property0小-心厂厲二[(n_Ngw-1》property。
(2-1)
\(N-N-aw\property0or(N+1).property0NNraw1n=N-IV「Property。
(2-2)
N-1).property0or(N+Nraw).property0甘kN+Naw-“propeW
(2-3)
f(N+1).propert尸0or(N+Nraw).property0
NNraw1NU
l(N+Nraw+1).propert^0
(2-4)
(N-Nraw)Nu(N-Nraw)•property=0
NNrawNNraw.property二0
(N_1hu(N_1'property=0
JN+1hu(N+1).property=0
(2-5)
设栅格环境为u,栅格总数为n假定种群中个体数目为
pop_sizeb
第t代的第i条染色体表示为X;,i“,2,…,pop_siz』;每条染色体由m
个实数构成,染色体X;可以表示成m维的行向量即
X,=[X;⑴X;
(2)X;(3)...X;(m)];这样第t代的种群Xt可以表示为一个向量
集Xt={X;Xt2Xt3Xtpop_size}。
机器人的起点“Nstart”,终点“Ngoal”,
“Nstart”和“Ngoal”为整数。
分别代表起点和目标所在栅格的代码。
F面讨论初始种群产生步骤:
Stepl:
确定染色体的条数即确定种群大小pop_size
Step2确定染色体的起始和末尾基因:
由于机器人路径规划的
任务是从确定的起点到确定的终点。
因此,可以将机器人的起点
Nstart始终作为染色体的第一个基因,终点Ngoal始终作为染色
体的最后一个基因,即x;(l)=Nstart,x;(m)=Ngoal这样可以缩小
遗传算法的搜索空间。
Step3:
确定起点到终点的一组染色体大小为pop_size
Step31:
确定起点到终点的第一条染色体:
从Nstart开始,根据连续的相邻栅格原则,从与之相邻的八个栅格中,选取一个自由栅格作为此染色体的第二个基因;然后从围绕第二
个基因的八个基因中,选取一个自由栅格作为此染色体的第三个基因;依此类推,直到Ngoal为止;选取原则有两个:
一是该栅格的代码与已有的代码不重复(不重复原则),见公式(2-6);二是即将选取的栅格到目标栅格的距离d(Nnew
Ngoal)最短,见公式(2-7):
_(Nnew),“讹=N°id,N1,叫「(2-6)
d(Nnew
Ngoa)=min{(XnewXgoal)(YnewXjoal)}
(2-7)
Step32:
确定起点到终点的第i条染色体(1
在起点“Nstart”到终点“Ngoal”之间,随机插入i-1个
“1—n-1”之间的整数(不包含起点Nstart和终点Ngoal),将这i-1个整数按距离起点Nstart的远近排序,距Nstart越近,排名越靠前,得到「N^NziL,Ni_1「,因此,得到包括起点和终点在内的不连续栅格序列为
'Nstart,N1,i,N2,i,,Ni-1,i,Ngoal1;然后将这些不连续的栅
格变为连续的栅格,每两个不连续栅格Nj,i和N^,i
1 至U此为止,第i条染色体形成; ming(N)=d(Nj,i,N)d(N,Njij(2-8) Step33: 以此类推共得到pop_size条染色体。 Step4: 在产生染色体过程中,还需要注意一些细节问题。 例如,由于要求基因的无重复性,在Step32中产生初始种群时可能陷入死锁,即无法生成连续栅格序列,例如下图所示情况,判断生成种群的死锁方法: 是当前栅格的周围无自由栅格点,而且当前点不是终点;解决方法是重复执行Step32直到成功产生新的染色体。 22适应度函数: 在遗传算法中,个体适应度的大小决定该个体被遗传到下一代群体中的概率,适应度函数的选择在遗传算法中是相当重要的,它是引 导遗传算法问题最优解逼近的关键因素。 适应度函数的选取直接影响遗传算法的计算效率和计算时间。 本文的适应度函数取路径长度的倒数。 路径越长,适应度就越小;路径越短,适应度越大。 这样,适应度越大(路径越短)的个体被淘汰的可能性就越小。 eval(P」=1/f(P」(2-9) 式中eval(Pi)表示染色体的适应值。 f(Pi)表示机器人的目标函数。 机器人路径优化的目标函数可取为机器人行走路径的总长度最短。 设机 器人经过的路径为栅格汕如,“门小笛,Nj,i,,Ngoal/,则机器人 目标函数为: Num_Chromosome f(PJ二min'd(Nj,iNj.,i)(2-10) i二 式中: Pi为染色体。 Num_Chromosome为染色体长度,d(Nj,iNH1j)表示第i组染色体中的栅格Nj到栅格Nj1的距离,可以认为是两栅格中心的距离。 以适应度函数为评价指标,就可以从每代种群中选择优秀的染色体并将它们保存下来。 2.3遗传算子: 2.3.1选择操作: 选择算子也称复制(reproduction)算子,它的作用在于根据个体的优劣程度,保留适应性好的染色体,淘汰适应性差的染色体。 一般地说,通过选择,将保证当前种群中具有较高适应值的个体,以较大的 概率通过复制和繁衍,生成新的种群,而适应度小的个体将被淘汰。 本算法采用竞争策略,令交叉产生的子代染色体按适应度优劣进行竞争,从中选出优胜个体进入下一代种群,直到种群充满为止。 下面首先介绍一下转轮法,这是一种正比选择策略,能根据与适值成正比的概率选出新种群,步骤如下: Stepl: 分别计算每一个染色体的累积概率 qk pop_size=z k-1 eval(xQ pop_size Zeval(xj i-1 i,k=1,2,...pop_size(2-11) 式中eval(xk)为第k个染色体适应值,分母为所有适应值的和。 Step2在[0,1]区间随机产生pop_size个均匀分布的伪随机数ri Step3对每一个ri,若ri小于qi,则从子代染色体中选染色体xi,否则选第k个染色体Xk2_k一pop_size,使”: r StepS从第i对染色体中选取适应值高的染色体作为下一代种群的第i 个染色体。 Step6重复Step3,直到充满种群得到尺寸为pop_size的新种群。 2.3.2交叉算子: 交叉操作是结合来自父代交配种群中的信息产生新的个体,通常 有单点交叉、多点交叉、均匀交叉等几种方法。 此处选择单点不等长交叉的方法。 只要两条路径通过相同的栅格,就可以进行交叉。 如果相同的栅格不止一个,则在这些相同的栅格中任选一个进行交叉;如 果没有相同的栅格,则不进行交叉。 用交叉后的子代个体代替原种群中的父代个体,产生新的种群。 这样,有效地避免了染色体中出现新断点和重复栅格。 交叉算子流程: N1 N2 •■• Mi-l Ni Ni+l •i« 恤i N1 Mi-l Ni Ni+l' ••• Nn1 N1' Ni-11 Mi NM Nn1 Nl' Ni-1' Ni Ni+l ••• Nm 图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为例描述了变异运算: N1 N2 ••• Nil Ni Ni+1 ••• Nm 11 N1 NiNm 1 N1 N2F ■• *■ Nj-r Ni Nj+r ••• Nn1 图2.4变异运算 2.4终止条件: 本章采取最佳适值过半原则,它的含义是当种群中一半以上的染色体达到相同的适应度,且种群的适应值不变,则可以确定染色体的发展方向并将之作为停止条件。 2.5流程 综上所述,机器人在静态环境下路径规划的主要程序框架为: maing=draw(m,m)//将机器人工作空间画出栅格mark=number(m,m)//将栅格编号 S=area(x,y)//将障碍物标识在机器人工作空间中oldpop=zeros(pop_size,lengthchromosome)//随机生成初始种群 bestpath=ga(oldpath)//采用遗传算法优化生成的路径plot(x,y)//在机器人工作空间中画出最优路径图end 3实验仿真 路径规划是寻找满足安全和平滑条件下的最优路径,因此个体的适应度函数值越小,则该路径越好。 为了获得最优路径,根据本文中给出的算法,利用MATLA分别对交叉率、变异率等参数的不同取值进行了比较选择。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 原则
![提示](https://static.bdocx.com/images/bang_tan.gif)