群(swarm):平等的、相互间能够协调运动的个体的集合
个体:群的每个成员
群成员之间是平等关系,没有主从关系
个体——简单智能;群体——高级智能
群成员的集体运动以及他们之间的相互作用是从每个群成员个体所遵循的一些简单行为规则自底向上的一种突现
1:蚁群行为
三个选择机制:
路径概率选择机制(信息素浓度高的路线)
信息素更新机制(短路径增长快)
协同工作机制(个体间信息素传递信息)
2:鸟群行为
两个社会行为要素:
个体经验(学习单个个体)
社会学习(学习鸟群)
3:鱼群行为
四个游动行为:
觅食行为(向食物方向游动)
追尾行为(向视野内的其他觅食行为的鱼游动)
聚群行为(避免被捕食,向同类多的地方游动)
随机行为(无目的游动)
在图中寻找优化路径的机率型算法
核心机制
1:信息素(蚂蚁途径的地方留下信息素,越多蚂蚁经过越多信息素)
2:正反馈现象(信息素越多的路径,蚂蚁选择概率越大)
人工蚁群 和 自然蚁群 的不同
1:人工蚁群有记忆能力
2:人工蚁群会针对性选择路径(即不是盲目选择)
1:原理是一种正反馈机制或增强型学习系统(信息素的不断更新导致路径收敛于近似最优解)
2:通用型随机优化(实际情况 + 人工智能)
3:分布式优化(串行计算机 + 并行计算机)
4:全局优化(单目标优化问题 + 多目标优化问题)
5:启发式算法(复杂度为O(epoch × m × n × n),epoch是迭代次数、m是蚂蚁数、n是节点数)
1:开始
2:初始化
3:迭代次数NC=NC+1
4:蚂蚁数k=1
5:蚂蚁数k=k+1
6:按照状态转移概率公式,选择下一个元素
7:修改禁忌表
8:判断k是否大于蚂蚁总数m,若是,则进入9,否则继续进入4
9:按照公式更新信息素
10:判断是否满足结束条件,若是,则进入11,否则继续进入3
11:输出程序计算结果
12:结束
将m只蚂蚁随机放到n个城市,每只蚂蚁的禁忌表(人工蚁群的记忆功能,旨在不走重复道路)是蚂蚁当前所在城市,各边信息素初始化为c
t时刻,蚂蚁k从城市i走到城市j的概率:
P k ( i , j ) = [ ε ( i , j ) ] α ∗ [ η ( i , j ) ] β / Σ s ∈ J k ( i ) (当 j ∈ J k 时,否则为 0 ) P^k(i,j)=[ε(i,j)]^α*[η(i,j)]^β/Σ_{s∈J_k(i)}(当j∈J_k时,否则为0) Pk(i,j)=[ε(i,j)]α∗[η(i,j)]β/Σs∈Jk(i)(当j∈Jk时,否则为0)
T_k:保存每只蚂蚁k已经访问过的城市集合
J_k:没有访问过的城市集合,大小是N-T_k
α:信息素对蚂蚁选择路径的影响程度(若为0,则变为选择最近城市)
β:距离对蚂蚁选择路径的影响程度(若为0,则只根据信息素浓度确定路径)
ε(i,j):边L(i,j)上的信息素强度
η(i,j):城市i到城市j的期望程度
η ( i , j ) = 1 / d i j η(i,j)=1/d_{ij} η(i,j)=1/dij
合适的α与β范围
α=[1,2]
β=[2,5]
在所有蚂蚁找到一条合法路径后更新信息
ε i j ( t + 1 ) = ( 1 − ρ ) ε i j ( t ) + Σ m Δ ε i j k ( t , t + 1 ) ε_{ij}(t+1)=(1-ρ)ε_{ij}(t)+Σ_mΔε_{ij}^{k}(t,t+1) εij(t+1)=(1−ρ)εij(t)+ΣmΔεijk(t,t+1)
Δ ε i j k ( t , t + 1 ) = Q / L k (当蚂蚁经过 i , j 时,否则为 0 ) Δε_{ij}^{k}(t,t+1)=Q/L_k(当蚂蚁经过i,j时,否则为0) Δεijk(t,t+1)=Q/Lk(当蚂蚁经过i,j时,否则为0)
ρ:信息素的挥发速率,是小于1的正数
合适的ρ范围
ρ=0.5
作用:防止信息素积累,提高搜索能力
Δε:所有蚂蚁在这轮运行在边(i,j)上增加的信息素强度
Δε^k:蚂蚁k在边(i,j)上增加的信息素强度
Q:蚂蚁所留轨迹正常数
L_k:蚂蚁k在这轮运行走过的路径长度和
若未达到终止条件,则继续【2】,否则输出最优解
蚁群大小:根据计算规模确定
终止条件:
1-外循环的最大数目(有足够蚂蚁工作)
2-最优解连续K次相同(K为给定整数,算法已收敛)
3-目标值控制,目标值与给定下界的差小于给定误差值
1:根据具体问题设置多只蚂蚁,分头并行搜索
2:每只蚂蚁完成一次周游后,在行进的路上释放信息素,信息素量与解的质量成正比
3:蚂蚁路径的选择根据信息素强度大小(初始信息素量设为相等),同时考虑两点之间的距离,采用随机的局部搜索策略。这使得距离较短的边,其上的信息素量较大,后来的蚂蚁选择该边的概率也较大
4:每只蚂蚁只能走合法路线(经过每个城市1次且仅1次),为此设置禁忌表来控制
5:所有蚂蚁都搜索完一次就是迭代一次,每迭代一次就对所有的边做一次信息素更新,原来的蚂蚁死掉,新的蚂蚁进行新一轮搜索
6:更新信息素包括原有信息素的蒸发和经过的路径上信息素的增加
7:达到预定的迭代步数,或出现停滞现象(所有蚂蚁都选择同样的路径,解不再变化),则算法结束,以当前最优解作为问题的解输出
1:蚂蚁数量m
过大:信息素变化趋于平均
过小:未搜索路径信息素提前减到0
一般情况,m=1.5M,M是城市数量
2:信息素因子α
过大:选择走以前的路径概率大
过小:提前局部最优
一般情况,α=[1,4]
3:启发函数因子β
过大:提前局部最优
过小:随机搜索
一般情况,β=[3,4.5]
4:信息素挥发因子ρ
一般情况,ρ=[0.2,0.5]
5:信息素常数Q
越大:已遍历路径的信息素积累越快,有利于收敛
一般情况,Q=[10,1000]
6:最大迭代次数epoch
过大:资源浪费
过小:算法未收敛就结束
一般情况,epoch=[100,500]
建议起初epoch=200,然后根据收敛轨迹修改
1:确定m,m=1.5M
2:粗调,即调整取值范围较大的α、β、Q
3:微调,即调整取值范围较小的ρ
1:给定外循环的最大数目
2:最优解连续K次相同(已收敛)
ASelite:最优解保留策略蚂蚁系统(精英策略)
ACS:蚁群系统
MMAS:最大-最小蚂蚁系统
ASrank:基于优化排序的蚂蚁系统
BWAS:最优最差蚂蚁系统
AACA:一种自适应蚁群算法
HBACA:基于混合行为的蚁群算法
1:蚁群活动
2:信息素挥发
3:信息素增强
主要体现:转移概率公式 + 信息素更新公式(p和ε)
1:网络路由问题
2:电力系统领域
3:航迹规划问题
4:混流装配线调度
解质量:ACO > GA > 退火
收敛速度:ACO > GA > 退火(ACO个体之间不断进行信息交流和传递)