|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1 \: C( _& K1 S2 ]$ S一、简介: D2 r$ l8 v. ?$ |
基于matlab蚁群算法的三维路径规划
' v5 c7 U. x' u4 ?4 `0 K" v& [/ D& e
$ Z# E& {; i; m6 H+ i$ K二、源代码
; f* [: D- W+ X6 n. K2 x3 \%% 该函数用于演示基于蚁群算法的三维路径规划算法& v6 C/ C, {3 X2 R+ w2 @/ x7 E
g, H+ E1 ~' J3 T%% 清空环境
/ }# Z" G+ |) ]clc
}& s( j9 l# H7 b: W2 Z4 s$ Vclear5 I) X$ w7 [$ A8 c$ R
8 @9 l) q6 B- P: o' A$ Z
%% 数据初始化
S$ ~/ l* G$ h+ W0 }- G; i' L9 }, a0 C, a# ~' e: P4 s
%下载数据
! t& Z+ P+ ~0 [5 m' ?' a- Sload HeightData HeightData
# f) }$ g; K$ W
2 y: }5 H0 o5 g. G6 z, o%网格划分
/ Y0 i$ \* L& F# g# XLevelGrid=10;
1 Y; v R; z- ~7 oPortGrid=21;
4 ^* b! Y2 c; ?; F3 i
& K* s$ m0 @7 E; ~% }. i4 K' u3 Y# d%起点终点网格点 + _7 Z- H- [4 \( g( X! f. x3 J
starty=10;starth=4;. x; T- ~4 V' {& G
endy=8;endh=5;6 j3 O6 d* A- L* \5 U8 Z
m=1;$ r2 A$ l {& d( v, }( o
%算法参数
& H, Z0 N& s! S8 m1 ePopNumber=10; %种群个数
% v2 o3 |$ a9 v" b Q+ `BestFitness=[]; %最佳个体
* H+ ?$ P4 r; C. y% y* i' j; Z' H
; u. x4 f: j0 u% ~3 T( W%初始信息素4 I5 l. m% S* |- H, b$ z& Z
pheromone=ones(21,21,21);
0 f2 V# j1 h# a. H# C- @0 o
: [7 z, g9 p. D1 T%% 初始搜索路径
) o$ Q0 k$ E9 K! @- j[path,pheromone]=searchpath(PopNumber,LevelGrid,PortGrid,pheromone, ...
+ ~3 ^, p8 v+ Y HeightData,starty,starth,endy,endh);
) S3 N( M% B* e0 w% v; P. jfitness=CacuFit(path); %适应度计算. W# |" z, q* r" n
[bestfitness,bestindex]=min(fitness); %最佳适应度
' ^$ T, K5 u7 z5 o. ?bestpath=path(bestindex,:); %最佳路径
+ ~( X! |- X1 K. Z$ k0 MBestFitness=[BestFitness;bestfitness]; %适应度值记录5 _7 S: }* s7 ~$ t& O& C
* D( L- n0 ?' K8 I8 |: M4 D: k A%% 信息素更新. X/ s* p7 Q/ V# a3 j# M- \
rou=0.2;
1 _* q2 [$ D! Z9 @! z# G$ u) Dcfit=100/bestfitness;: }8 Y% Z2 \0 h& n1 R
for i=2:PortGrid-1
9 S3 {2 B# ^4 T. Y1 @ pheromone(i,bestpath(i*2-1),bestpath(i*2))= ...
& ^7 J, k: _3 ]' n (1-rou)*pheromone(i,bestpath(i*2-1),bestpath(i*2))+rou*cfit;! K v$ c' u- x% ~! W
end% p! H* w) x" A! X8 g: U$ |
# L2 J* H, M# H& B- k1 S' _
%% 循环寻找最优路径/ L K% e. h- R; ?0 A
for kk=1:1002 e3 u6 i/ g6 F9 \. ~
7 Y8 B( p; Z1 O6 w7 _
%% 路径搜索
/ |- ^4 X5 s+ H* ^! W' m! Z [path,pheromone]=searchpath(PopNumber,LevelGrid,PortGrid,... d5 ~" h# S- k; N% l6 J( B
pheromone,HeightData,starty,starth,endy,endh); $ n8 E3 e0 @9 g1 X g' p
5 V5 O* S1 Z- g% w1 F9 v
%% 适应度值计算更新
7 t) s4 n$ A: i7 n1 z# w fitness=CacuFit(path);
& ]) `8 H9 t( e& I% g$ F- g6 |! N [newbestfitness,newbestindex]=min(fitness);
/ r' S' M, J1 ~3 I2 g" u X) @ if newbestfitness<bestfitness
: z0 J9 G# x9 {7 P1 @+ A. [$ P bestfitness=newbestfitness;
* e/ ~- v: Y9 @( A bestpath=path(newbestindex,:);
( h/ X& @9 P1 F/ B4 S8 o end 0 q' y7 R. B( {5 g
BestFitness=[BestFitness;bestfitness];
; N5 _" c0 w. w L3 U6 S 8 X/ S; Z/ u9 i. y ^+ V7 p9 J' }
%% 更新信息素
8 o5 @7 _$ b! E% y7 a cfit=100/bestfitness;5 B& _* Y3 [7 r3 `' d# F2 r
for i=2:PortGrid-1& ~: a) q* d; ]
pheromone(i,bestpath(i*2-1),bestpath(i*2))=(1-rou)* ...
( ^5 ]7 a8 ~0 N pheromone(i,bestpath(i*2-1),bestpath(i*2))+rou*cfit;
5 s0 i' B J- s. u7 t$ O end
6 f& r- H2 \7 s, Y' o6 C! s % q& G' F3 h/ P
end
4 F) S& z4 K, V1 ]% L' {! F
" F5 W3 c o: z$ f! _# r) G三、运行结果
3 k: L8 u: r# ~" ^
|
|