登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
程序
>
基于遗传算法的机器人路径规划MATLAB源码
发帖
回复
4782
阅读
0
回复
[
RFEDA原创
]
基于遗传算法的机器人路径规划MATLAB源码
离线
greensim
UID :63869
注册:
2010-07-25
登录:
2011-09-15
发帖:
10
等级:
仿真新人
0楼
发表于: 2011-09-15 20:58:44
w[)HQ1K
算法的思路如下:取各障碍物顶点连线的中点为路径点,相互连接各路径点,将机器人移动的起点和终点限制在各路径点上,利用Dijkstra算法来求网络图的最短路径,找到从起点P1到终点Pn的最短路径,由于上述算法使用了连接线中点的条件,不是整个规划空间的最优路径,然后利用遗传算法对找到的最短路径各个路径点Pi (i=1,2,…n)调整,让各路径点在相应障碍物端点连线上滑动,利用Pi= Pi1+ti×(Pi2-Pi1)(ti∈[0,1] i=1,2,…n)即可确定相应的Pi,即为新的路径点,连接此路径点为最优路径。本源码由GreenSim团队原创,转载请注明,有意购买源码或代写相关程序,请与GreenSim团队联系QQ:761222791
pK/RkA1
vSH-hAk
function [L1,XY1,L2,XY2]=JQRLJGH(XX,YY)
{e0aH `me
%% 基于Dijkstra和遗传算法的机器人路径规划演示程序
!thFayq
% GreenSim团队原创作品,转载请注明
U2\k7I
% Email:greensim@163.com
[DTe
%输入参数在函数体内部定义
F#qc#s
%输出参数为
9,"gXsvx(
% L1 由Dijkstra算法得出的最短路径长度
&[yYgfsp
% XY1 由Dijkstra算法得出的最短路径经过节点的坐标
twa H20
% L2 由遗传算法得出的最短路径长度
<UGM/+aO
% XY2 由遗传算法得出的最短路径经过节点的坐标
~i>'3j0@k
%程序输出的图片有
m+ #G*
% Fig1 环境地图(包括:边界、障碍物、障碍物顶点之间的连线、Dijkstra的网络图结构)
aFh'KPhe
% Fig2 由Dijkstra算法得到的最短路径
=OKUSHu@V
% Fig3 由遗传算法得到的最短路径
<N=ow"rD
% Fig4 遗传算法的收敛曲线(迄今为止找到的最优解、种群平均适应值)
sp0_f;bC
%% 画Fig1
ZOx;]D"s
figure(1);
UM0#S}
PlotGraph;
B>cx[.#!
title('地形图及网络拓扑结构')
\D#+0
PD=inf*ones(26,26);
>:J1Gc
for i=1:26
p-7?S^!l
for j=1:26
gs~u8"B
if D(i,j)==1
jX t5.9 t
x1=XY(i,5);
`1FNs?j
y1=XY(i,6);
B\;fC's+
x2=XY(j,5);
4(,X.GVY/
y2=XY(j,6);
";n%^I}
dist=((x1-x2)^2+(y1-y2)^2)^0.5;
v)*eLX$
PD(i,j)=dist;
>9<rc[
end
Ie8K[ >
end
-YipPo"a
end
Vu<mOuh
%% 调用最短路算法求最短路
@Qqf4h
s=1;%出发点
~BBh 4t&
t=26;%目标点
C"k]U[%{
[L,R]=ZuiDuanLu(PD,s,t);
kkj_k:Eah
L1=L(end);
Nvd(Tad
XY1=XY(R,5:6);
PK_2
%% 绘制由最短路算法得到的最短路径
z34+1d
figure(2);
;\T~Hc}&;
PlotGraph;
B5;94YIN
hold on
ZCfd<NS?
for i=1:(length(R)-1)
b}hQU~,E
x1=XY1(i,1);
fECmELd
y1=XY1(i,2);
c&`]O\D-c
x2=XY1(i+1,1);
QX.U:p5C
y2=XY1(i+1,2);
g+C~}M_7
plot([x1,x2],[y1,y2],'k');
owO&[D/
hold on
FGpV ]p
end
J]Q-#g'Z
title('由Dijkstra算法得到的初始路径')
!~-@sq
%% 使用遗传算法进一步寻找最短路
^)3=WD'!
%第一步:变量初始化
O@LUM{\
M=50;%进化代数设置
a]I~.$G
N=20;%种群规模设置
MLmv+
Pm=0.3;%变异概率设置
Jd33QL}Hj
LC1=zeros(1,M);
_Vr}ipx-k
LC2=zeros(1,M);
>vuR:4B
Yp=L1;
W9A F}
%第二步:随机产生初始种群
@ZcI]G%
X1=XY(R,1);
Vz y )jf
Y1=XY(R,2);
#Jfmt~ks'
X2=XY(R,3);
sWP_fb1
Y2=XY(R,4);
U(<~("ocN
for i=1:N
\6/!{D,
farm{i}=rand(1,aaa);
EDA6b]
end
ip*UujmNyR
% 以下是进化迭代过程
u>2opI~m
counter=0;%设置迭代计数器
}&EdA;/o_
while counter<M%停止条件为达到最大迭代次数
5N|hsfkx
%% 第三步:交叉
lhF)$M
%交叉采用双亲双子单点交叉
#5^S@}e
newfarm=cell(1,2*N);%用于存储子代的细胞结构
qqu]r
Ser=randperm(N);%两两随机配对的配对表
-TyBb]
A=farm{Ser(1)};%取出父代A
F Zk[w>{
B=farm{Ser(2)};%取出父代B
p.vxrk`c
P0=unidrnd(aaa-1);%随机选择交叉点
1kh()IrA
a=[A(:,1:P0),B(:,(P0+1):end)];%产生子代a
$,1KD3;+]
b=[B(:,1:P0),A(:,(P0+1):end)];%产生子代b
\Iz-<:gA'
newfarm{2*N-1}=a;%加入子代种群
ZVCa0Km
newfarm{2*N}=b;
Dh9C9<Ta:
for i=1:(N-1)
: Z3]Dk;y
A=farm{Ser(i)};
H*&!$s.
B=farm{Ser(i+1)};
2:6lr4{uY
newfarm{2*i}=b;
q9(hn_X@/
end
k| >zauK
FARM=[farm,newfarm];%新旧种群合并
JvtbGPz
%% 第四步:选择复制
|b|bL 7nx
SER=randperm(2*N);
'5P:;zw
FITNESS=zeros(1,2*N);
8oP"?ew#
fitness=zeros(1,N);
S$nEflcz
for i=1:(2*N)
OUm,;WNLf
PP=FARM{i};
WAb@d=H{+>
FITNESS(i)=MinFun(PP,X1,X2,Y1,Y2);%调用目标函数
AD"L>7
end
WAGU|t#."
for i=1:N
sTECNY=l
f1=FITNESS(SER(2*i-1));
:j;_Xw
f2=FITNESS(SER(2*i));
&t74T"(d
if f1<=f2
.wcKG9u
else
ezr'"1Ba}
farm{i}=FARM{SER(2*i)};
6W N(Tw
fitness(i)=FITNESS(SER(2*i));
257q%"
end
y~rtYI
end
)`<7qT_BM
%记录最佳个体和收敛曲线
xx[l#+:c
minfitness=min(fitness);
H`jvT]
meanfitness=mean(fitness);
xGK"`\V
if minfitness<Yp
\Jr7Hy1;
pos=find(fitness==minfitness);
?"T *{8
Xp=farm{pos(1)};
x)e(g}n
Yp=minfitness;
U5H5QW +
end
bbFzmS1
if counter==10
}9Awv#+
PPP=[0.5,Xp,0.5]';
jp#/]>(9Z
PPPP=1-PPP;
ljk,R G
X=PPP.*X1+PPPP.*X2;
>F;yfv;
Y=PPP.*Y1+PPPP.*Y2;
PKt;]T0
XY2=[X,Y];
/Au7X'}
figure(3)
4,7W*mr3(
PlotGraph;
m%i!;K"{s
hold on
mUwGr_)wj
for i=1:(length(R)-1)
IlMst16q5
x1=XY2(i,1);
.&n;S';"
y1=XY2(i,2);
lBOxB/`
x2=XY2(i+1,1);
?xzDz
y2=XY2(i+1,2);
8>ODtKI*
plot([x1,x2],[y1,y2],'k');
4 _Idf
hold on
ROr| <
end
EZ)GW%Bm2
title('遗传算法第10代')
:&$WWv
hold on
=E:a\r
for i=1:(length(R)-1)
5`1p ?
x1=XY1(i,1);
XM?C7/^k
y1=XY1(i,2);
Xe<kdB3
x2=XY1(i+1,1);
Hr;\}
y2=XY1(i+1,2);
Xa&0j&AH
plot([x1,x2],[y1,y2],'k','LineWidth',1);
]0myoWpi3
hold on
r$;u4FR
end
-y)g}D%
end
9lSs;zm{Q
if counter==20
>SHW
PPP=[0.5,Xp,0.5]';
wy#5p]!u
PPPP=1-PPP;
87:V-*8
X=PPP.*X1+PPPP.*X2;
;%$wA5"2M
Y=PPP.*Y1+PPPP.*Y2;
"$N 4S9U
XY2=[X,Y];
oJVpJA0IA
figure(4)
5t[7taLX\
PlotGraph;
QhmOO-Z?
hold on
-^= JKd&p
for i=1:(length(R)-1)
z irnur1
x1=XY2(i,1);
^97\TmzP{
y2=XY2(i+1,2);
AR5)Uws
plot([x1,x2],[y1,y2],'k');
{@T<eb$d
hold on
NLO&.Q]#
end
cW\Y1=Gv|
title('遗传算法第20代')
q|N4d9/b
hold on
Xa/]} B
for i=1:(length(R)-1)
<=PYu:]h
x1=XY1(i,1);
\Gz 79VW
y1=XY1(i,2);
hZeF? G)L'
x2=XY1(i+1,1);
%scQP{%aD
y2=XY1(i+1,2);
0*8uo Wt&
plot([x1,x2],[y1,y2],'k','LineWidth',1);
xs$-^FnD
hold on
kDK0L3}nr]
end
t[b@P<F
end
t%]b`ad
if counter==30
E#mpj~{-
PPP=[0.5,Xp,0.5]';
1F94e)M)"
PPPP=1-PPP;
A,! YXl[
X=PPP.*X1+PPPP.*X2;
*Au[{sR
Y=PPP.*Y1+PPPP.*Y2;
R'p- 4
XY2=[X,Y];
u_X(c'aE;
figure(5)
PgwNE wG
PlotGraph;
55vI^SSA
hold on
x_.}C%
for i=1:(length(R)-1)
y_N h5
x1=XY2(i,1);
RWINdJZ
y1=XY2(i,2);
*aS[^iX?s
x2=XY2(i+1,1);
nO .:f
y2=XY2(i+1,2);
h9WyQl7
plot([x1,x2],[y1,y2],'k');
S]}W+BF3
hold on
OK=ANQjs(
end
)dZ1$MC[
title('遗传算法第30代')
w.R2' WR
hold on
t gHXIr}3
for i=1:(length(R)-1)
uPBtR
x1=XY1(i,1);
m$bDWxm#e
y2=XY1(i+1,2);
]5j1p6;(`
plot([x1,x2],[y1,y2],'k','LineWidth',1);
vy1N,8a
hold on
[,|;rt\o>
end
glgXSOj
end
u13v@<HGc
if counter==40
5r(Y,m"?
PPP=[0.5,Xp,0.5]';
299uZz}Y
PPPP=1-PPP;
4+4C0/$Y
X=PPP.*X1+PPPP.*X2;
Ts 1
Y=PPP.*Y1+PPPP.*Y2;
jK-usn
XY2=[X,Y];
H5?H{
figure(6)
]ppws3*Pa
PlotGraph;
V.Qy4u7m
hold on
z)XIA)i6
for i=1:(length(R)-1)
fGMuml?[ e
x1=XY2(i,1);
T96M=?wh!
y1=XY2(i,2);
_"'0^F$I
x2=XY2(i+1,1);
|n+ `t?L^
y2=XY2(i+1,2);
F@Cxjz
plot([x1,x2],[y1,y2],'k');
8c0ugM
hold on
-q}I; cH
end
#wP$LKk
title('遗传算法第40代')
SH#!Y
hold on
W#lt_2!j
for i=1:(length(R)-1)
"| W``&pM
x1=XY1(i,1);
Q!v]njCIB7
y1=XY1(i,2);
N"&qy3F
x2=XY1(i+1,1);
vFgX]&bE
y2=XY1(i+1,2);
j`ybz G^
plot([x1,x2],[y1,y2],'k','LineWidth',1);
p28=l5y+
hold on
>'|Wrz67Z
end
dEG1[QG
end
$qy ST
if counter==50
+a}>cAj*
PPP=[0.5,Xp,0.5]';
Sx}61 ?
PPPP=1-PPP;
R\,qL-Br
X=PPP.*X1+PPPP.*X2;
t6a$ZN;
Y=PPP.*Y1+PPPP.*Y2;
S7WT`2
XY2=[X,Y];
h$rk]UM/Q
figure(7)
o1]Ze F
PlotGraph;
T~b6Zu6
hold on
8u4Fag Q,
for i=1:(length(R)-1)
pQ yH`
x1=XY2(i,1);
4&+lc*
y1=XY2(i,2);
f~Q]"I8w
x2=XY2(i+1,1);
I18<brZJ
y2=XY2(i+1,2);
ZIikDih1
plot([x1,x2],[y1,y2],'k');
g.d~`R@v
hold on
^A' Bghy
end
m. "T3K
title('遗传算法第50代')
Nvj0MD{ X
hold on
.[8g6:>
for i=1:(length(R)-1)
BhCOT+i;c
x1=XY1(i,1);
);oE^3]f
y1=XY1(i,2);
J^)=8cy
x2=XY1(i+1,1);
fs6% M]u
y2=XY1(i+1,2);
^muPjM+D
plot([x1,x2],[y1,y2],'k','LineWidth',1);
z{ MO~d9
hold on
j]bNOC2.L
end
4+'d">+|
end
w-?|6I}T
LC2(counter+1)=Yp;
l"app]uVZ
LC1(counter+1)=meanfitness;
HA0Rv#p
%% 第五步:变异
Yi+$g
for i=1:N
$61j_;WF`
if Pm>rand&&pos(1)~=i
R"V^%z;8o
AA=farm{i};
wH N5H
AA(POS)=rand;
]iE)8X
farm{i}=AA;
CwQRHi
end
c&;Xjy
end
w!~85""
counter=counter+1;
&JHqUVs^
disp(co ..
5;_&C=[
HlC[Nu^6U
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
图片:014附图1.jpg
共
条评分
发帖
回复