EDA365电子论坛网

标题: 基于matlab蚁群优化模糊聚类图像分割 [打印本页]

作者: pulbieup    时间: 2021-6-17 13:46
标题: 基于matlab蚁群优化模糊聚类图像分割

/ I; y  ]& P* K* q0 x; j) t一、蚁群算法简介
& Q5 k) t" A6 g% \  `蚁群算法(ant colony optimization, ACO),又称蚂蚁算法,是一种用来在图中寻找优化路径的机率型算法。它由Marco Dorigo于1992年在他的博士论文中提出,其灵感来源于蚂蚁在寻找食物过程中发现路径的行为。蚁群算法是一种模拟进化算法,初步的研究表明该算法具有许多优良的性质。针对PID控制器参数优化设计问题,将蚁群算法设计的结果与遗传算法设计的结果进行了比较,数值仿真结果表明,蚁群算法具有一种新的模拟进化优化方法的有效性和应用价值。* \7 u3 ?/ j$ d: p

7 Y! ^, w; p1 a定义4 Z- m! H" z" g
各个蚂蚁在没有事先告诉他们食物在什么地方的前提下开始寻找食物。当一只找到食物以后,它会向环境释放一种挥发性分泌物pheromone (称为信息素,该物质随着时间的推移会逐渐挥发消失,信息素浓度的大小表征路径的远近)来实现的,吸引其他的蚂蚁过来,这样越来越多的蚂蚁会找到食物。/ s8 k0 ~2 \: P( A' r5 Y" H
$ c7 M  m+ g2 @5 K  H' O
有些蚂蚁并没有像其它蚂蚁一样总重复同样的路,他们会另辟蹊径,如果另开辟的道路比原来的其他道路更短,那么,渐渐地,更多的蚂蚁被吸引到这条较短的路上来。
3 _+ b3 Z9 [, T- U% Q+ _3 D' U8 ]# V  |, V" d7 H6 i
最后,经过一段时间运行,可能会出现一条最短的路径被大多数蚂蚁重复着。2 p6 @. n. m, o, s7 I" {7 Q

/ ^5 Q( x; p. ?& A% m% B蚁群算法是一种仿生学算法,是由自然界中蚂蚁觅食的行为而启发的。在自然界中,蚂蚁觅食过程中,蚁群总能够按照寻找到一条从蚁巢和食物源的最优路径。下图显示了这样一个觅食的过程。" c4 `% W) |4 q1 p
, x% }  |& _. f0 A
在图(a)中,有一群蚂蚁,假如A是蚁巢,E是食物源(反之亦然)。
. @5 X, y. g* @; @. c1 [: ^5 ]2 Z0 Q6 E: L' w
这群蚂蚁将沿着蚁巢和食物源之间的直线路径行驶。假如在A和E之间突然出现了一个障碍物(图(b)),那么,在B点(或D点)的蚂蚁将要做出决策,到底是向左行驶还是向右行驶?由于一开始路上没有前面蚂蚁留下的信息素(pheromone),蚂蚁朝着两个方向行进的概率是相等的。但是当有蚂蚁走过时,它将会在它行进的路上释放出信息素,并且这种信息素会议一定的速率散发掉。信息素是蚂蚁之间交流的工具之一。它后面的蚂蚁通过路上信息素的浓度,做出决策,往左还是往右。很明显,沿着短边的的路径上信息素将会越来越浓(图(c)),从而吸引了越来越多的蚂蚁沿着这条路径行驶。
$ D/ i3 \# p  q: ^7 w  M) C( E' Y) l

1 R& q, }# C" M9 I2 T7 ]
0 c: j8 L1 X/ M  S蚁群算法原理
! B1 d9 R' H. f" B( ?假如蚁群中所有蚂蚁的数量为m,所有城市之间的信息素用矩阵pheromone表示,最短路径为bestLength,最佳路径为bestTour
; n: A# g7 e8 r; R每只蚂蚁都有自己的内存,内存中用一个禁忌表(Tabu)来存储该蚂蚁已经访问过的城市,表示其在以后的搜索中将不能访问这些城市* [4 a' c2 K2 M6 A
一个允许访问的城市表(Allowed)来存储它还可以访问的城市; |2 \5 b" O/ V9 }; t" G8 q) @2 K
矩阵(Delta)来存储它在一个循环(或者迭代)中给所经过的路径释放的信息素
9 S. B/ m1 a' y$ o/ u还有一些额外数据,例如一些控制参数(α,β,ρ,Q)0 W! J1 Z$ f1 R* X- q& _9 W$ |
蚂蚁行走完全程的总成本或距离(tourLength)
) D* x+ ]! B6 V* O6 L假定算法总共运行MAX_GEN次,运行时间为t。7 m- {2 Z9 ~; q, R3 d
算法流程说明(结合流程图食用,效果更佳)
) M' [4 c9 D5 {) O' H(1)初始化0 l& N, D9 n$ Q9 N. u
5 Z2 V+ r. u, q7 o- u
设t=0,初始化bestLength为一个非常大的数(正无穷),bestTour为空。初始化所有的蚂蚁的Delt矩阵所有元素初始化为0,Tabu表清空,Allowed表中加入所有的城市节点。随机选择它们的起始位置(也可以人工指定)。在Tabu中加入起始节点,Allowed中去掉该起始节点。. T% j. i! x" _1 k7 @) `' K9 U

& @: l* s/ P: @9 S9 t  D(2)为每只蚂蚁选择下一个节点& X' }) ]! c$ J2 u3 q1 e

# w) |+ ?$ h; g0 b$ T为每只蚂蚁选择下一个节点,该节点只能从Allowed中以某种概率(公式1)搜索到,每搜到一个,就将该节点加入到Tabu中,并且从Allowed中删除该节点。该过程重复n-1次,直到所有的城市都遍历过一次。遍历完所有节点后,将起始节点加入到Tabu中。此时Tabu表元素数量为n+1(n为城市数量),Allowed元素数量为0。接下来按照(公式2)计算每个蚂蚁的Delta矩阵值。最后计算最佳路径,比较每个蚂蚁的路径成本,然后和bestLength比较,若它的路径成本比bestLength小,则将该值赋予bestLength,并且将其Tabu赋予BestTour。5 `6 ^9 m7 a' D9 G& ~5 {  i

5 a) n' B9 b' g$ y- L/ D! J(3)更新信息素矩阵Delta
% l. ?# I- C1 g/ y% T0 F(4)检查终止条件,是否到达MAX_GEN次4 ?% H: q! W! d$ `: `
(5)输出最优值bestlength
" ?2 F9 B4 N% B' k& I* |' F+ B( U- b* f9 q* W' V6 G
算法流程图
( m( }/ B+ R4 m7 r! l7 O( N" i3 h$ h' a" [5 e1 D( m1 g
3 R( P/ q% c! x% D6 B1 [3 [

1 X6 n: A$ m2 }7 t# j2 q1 \9 i0 G" b8 z7 O8 v! j
二、源代码
9 G5 l; L3 a6 o; P) s                                                            * G+ v. E$ C0 Q& n: q) h/ m
( I* p) S' z6 L- u' Z! H5 \
三、运行结果" [8 {7 G" k, ]
/ J' b6 N' r" D- t( A7 z- B% D- [
* Q$ b; P' }8 t0 V" G8 q8 g' m
1 C- U! x. y# J( H
; \+ C7 Z) ]& k9 o9 R

5 Z! E3 n: g) d% C$ X6 o# |# T% G8 X- {/ x3 C

作者: CCxiaom    时间: 2021-6-17 14:45
基于matlab蚁群优化模糊聚类图像分割
作者: NNNei256    时间: 2021-6-17 15:41
基于matlab蚁群优化模糊聚类图像分割
作者: jiulquq    时间: 2021-6-17 15:42
基于matlab蚁群优化模糊聚类图像分割




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2