|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
; d4 _7 v% G6 H8 _; i! h2 u j
一、简介% w! F8 |$ Z- A& S T" x
基于matlab蚁群算法的三维路径规划
% R- t% W5 l) n6 `. r5 P, v' n9 G" @) \8 K0 n$ X- d0 j
二、源代码7 p/ G7 A+ J H8 w" c' F5 D+ t
%% 该函数用于演示基于蚁群算法的三维路径规划算法
% l5 m+ Z% g- E: G! f0 c' E9 J, I+ b/ M; j9 t2 x; O. N& {7 E1 I
%% 清空环境, [2 d# N3 n6 K% Z
clc. b6 d. }- {0 I; r; j
clear
; V/ a, Z. k# l
, N8 S, v/ u9 r$ P" l%% 数据初始化. m7 t( w6 v& ?7 a: x! b* J: W
, K0 b: f$ W' N6 I3 \# ~- L& E a%下载数据* U% s- W% [4 q. h
load HeightData HeightData! r' m4 p8 Z; l4 }
; f" I$ j) h2 t
%网格划分' W) B& [5 ~) r, U ?( u2 S5 Y
LevelGrid=10;
1 J) H: S; }0 j" J# r: K/ }PortGrid=21;
- v J p3 G) K; F* w5 ?) W* v: ~+ x% t9 K9 v
%起点终点网格点 ( ^; l3 b+ f3 f* l6 v' H
starty=10;starth=4;
7 [, a$ i* B% u# s+ v: w: Sendy=8;endh=5;
7 Q' ?' w0 g5 t3 _2 Z8 Q: q2 R, Sm=1;
; J! ?! c5 d; v) @7 x9 H/ J%算法参数
; \+ G& m5 Y6 S G& uPopNumber=10; %种群个数
1 ~, H; z: L, U% x9 {BestFitness=[]; %最佳个体
$ Z0 f, E7 J* w A* q( O: j
' [7 Y% g5 Z7 ~1 j& p2 U; j%初始信息素8 ?, ~4 z! S9 p# a
pheromone=ones(21,21,21);
+ Z+ ], n: B( X) F, j
3 S2 q$ e5 D; W4 b0 v3 j%% 初始搜索路径
: M! t$ M" W) N6 }2 Q8 [[path,pheromone]=searchpath(PopNumber,LevelGrid,PortGrid,pheromone, ...* }" M+ x1 Z3 e* c4 C# N& V' c
HeightData,starty,starth,endy,endh);
: x6 D8 P- }$ _4 a, B" u7 P; Bfitness=CacuFit(path); %适应度计算
5 w" P# d4 p( W0 {) }( P* H: D! a[bestfitness,bestindex]=min(fitness); %最佳适应度
" y, q; E/ m% n6 Q+ Nbestpath=path(bestindex,:); %最佳路径
9 X+ F3 O, R: _+ r4 I5 S: U) _7 GBestFitness=[BestFitness;bestfitness]; %适应度值记录' l4 W4 L( X. P7 @9 |% Z! o
: }: y) W( @ k. K0 n& Z% E" n" w
%% 信息素更新
" t% e4 m9 \7 Srou=0.2;) |3 }, ^! H# [- w5 _; S8 H
cfit=100/bestfitness;0 Y' p$ Q: x! h: o6 v* w
for i=2:PortGrid-1
# u+ u- R$ R% T. ? pheromone(i,bestpath(i*2-1),bestpath(i*2))= ...
% C+ Z4 h! Z( \3 [/ @; ] (1-rou)*pheromone(i,bestpath(i*2-1),bestpath(i*2))+rou*cfit;
4 u7 o: v3 q8 ^end$ O& U: E$ h6 g( a# y9 t2 [8 w, n
! L9 P1 j) M7 |/ s$ w* Q, B
%% 循环寻找最优路径6 z6 L% S6 T7 O; y" {7 ?
for kk=1:100
; v# u. `8 [# l7 I0 n* m8 S ) `) E+ C' C8 Q4 ?
%% 路径搜索
7 O4 H8 E) c2 t" c [path,pheromone]=searchpath(PopNumber,LevelGrid,PortGrid,...
9 A4 ]0 k% z& f( c8 K% Z- _ pheromone,HeightData,starty,starth,endy,endh);
: e: F% j9 Y1 V: z6 V7 @ # l, ]3 |. s( y* _
%% 适应度值计算更新& I0 [% C) c1 c8 l4 J
fitness=CacuFit(path); : K& ?; C% n, ~) Y Y2 M
[newbestfitness,newbestindex]=min(fitness); . g1 x f' |5 n- B) j! R
if newbestfitness<bestfitness
+ ~4 j' D* a. s0 J u bestfitness=newbestfitness;
9 {3 }( V7 P1 b5 x- | bestpath=path(newbestindex,:);
* d% R2 h' |- c4 @3 l% R end % W& e+ Q/ w' ^8 {9 r
BestFitness=[BestFitness;bestfitness];( w0 U2 z" n4 E4 j" L* k8 I
% B* X$ Q( Y& _ %% 更新信息素8 c9 i- l, ~+ z2 e6 O+ G, F
cfit=100/bestfitness;
- l. [+ p, c! o' y for i=2:PortGrid-1
8 P# u0 C- V0 e* b5 p+ L4 L$ l. D pheromone(i,bestpath(i*2-1),bestpath(i*2))=(1-rou)* ...
5 _# L; n5 Q g8 O pheromone(i,bestpath(i*2-1),bestpath(i*2))+rou*cfit;
3 ~/ c2 j$ `& }7 q! I/ i L- d end+ H- r- k. O& Y( ?$ ~
' v ?$ e4 m4 q" s6 Q0 p3 d
end) S$ F( T& H2 g! H6 S, B8 e
( B. ~/ a$ `! G+ r. U
三、运行结果
* e/ B) g0 A8 H9 e& N7 o& s1 ?
|
|