路径规划全局路径规划算法——蚁群算法(含python实现)
Posted CHH3213
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了路径规划全局路径规划算法——蚁群算法(含python实现)相关的知识,希望对你有一定的参考价值。
文章目录
参考资料
1. 简介
蚁群算法(Ant Colony Algorithm, ACO) 于1991年首次提出,该算法模拟了自然界中蚂蚁的觅食行为。蚂蚁在寻找食物源时, 会在其经过的路径上释放一种信息素,并能够感知其它蚂蚁释放的信息素。 信息素浓度的大小表征路径的远近, 信息素浓度越高, 表示对应的路径距离越短。通常, 蚂蚁会以较大的概率优先选择信息素浓度较高的路径, 并释放一定量的信息素, 以增强该条路径上的信息素浓度, 这样,会形成一个正反馈。 最终, 蚂蚁能够找到一条从巢穴到食物源的最佳路径, 即距离最短。
2. 基本思想
- 用蚂蚁的行走路径表示待优化问题的可行解, 整个蚂蚁群体的所有路径构成待优化问题的解空间。
- 路径较短的蚂蚁释放的信息素量较多, 随着时间的推进, 较短的路径上累积的信息素浓度逐渐增高, 选择该路径的蚂蚁个数也愈来愈多。
- 最终, 整个蚂蚁会在正反馈的作用下集中到最佳的路径上, 此时对应的便是待优化问题的最优解。
3. 算法精讲
不失一般性,我们定义一个具有N个节点的有权图 G = ( N , A ) G=(N,A) G=(N,A),其中N表示节点集合 N = 1 , 2 , . . . , n N=1,2,...,n N=1,2,...,n,A表示边, A = ( i , j ) ∣ i , j ∈ N A=(i,j)|i,j\\in N A=(i,j)∣i,j∈N。节点之间的距离(权重)设为 ( d i j ) n × n (d_ij)_n\\times n (dij)n×n,目标函数即最小化起点到终点的距离之和。
-
设整个蚂蚊群体中蚂蚊的数量为 m m m, 路径节点的数量为 n n n, 节点 i i i 与节点 j j j 之间的相互距离为 d i j ( i , j = 1 , 2 , … , n ) , t d_i j(i, j=1,2, \\ldots, n), t dij(i,j=1,2,…,n),t时刻节点 i i i 与节点 j j j 连接路径上的信息素浓度为 τ i j ( t ) \\tau_i j(t) τij(t) 。初始时刻, 各个节点间连接路径上的信息素浓度相同, 不妨设为 τ i j ( 0 ) = τ 0 \\tau_i j(0)=\\tau_0 τij(0)=τ0。
-
蚂蚁 k ( k = 1 , 2 , … , m ) k(k=1,2, \\ldots, m) k(k=1,2,…,m) 根据各个节点间连接路径上的信息素浓度决定其下一个访问节点, 设 P i j k ( t ) P_i j^k(t) Pijk(t) 表示 t t t 时刻蚂蚊 k k k 从节点 i i i 转移到节点 j j j 的概率, 其计算公式如下:
P i j k = [ τ i j ( t ) ] α ⋅ [ η i j ( t ) ] β ∑ s ∈ allow k [ τ i s ( t ) ] α ⋅ [ η i s ( t ) ] β s ∈ allow k 0 s ∉ allow k (1) \\tag1 P_i j^k= \\begincases\\frac\\left[\\tau_i j(t)\\right]^\\alpha \\cdot\\left[\\eta_i j(t)\\right]^\\beta\\sum_s \\in \\text allow _k\\left[\\tau_i s(t)\\right]^\\alpha \\cdot\\left[\\eta_i s(t)\\right]^\\beta & s \\in \\text allow _k \\\\ 0 & s \\notin \\text allow _k\\endcases Pijk=⎩⎨⎧∑s∈ allow k[τis(t)]α⋅[ηis(t)]β[τij(t)]α⋅[ηij(t)]β0s∈ allow ks∈/ allow k(1)其中,
- η i j ( t ) \\eta_i j(t) ηij(t) 为启发函数, η i j ( t ) = 1 / d i j \\eta_i j(t)=1 / d_i j ηij(t)=1/dij, 表示蚂蚊从节点 i i i 转移到节点 j j j 的期望程度,
- a l l o w k ( k = 1 , 2 , … , m ) allow_k(k=1,2, \\ldots, m) allowk(k=1,2,…,m) 为蚂蚁 k k k待访问节点的集合。开始时, a l l o w k allow_k allowk中有(n-1)个元素,即包括除了蚂蚁 k k k出发节点的其它所有节点。随着时间的推进, allow k _k k 中的元素不断减少, 直至为空, 即表示所有的节点均访问完毕。
- α \\alpha α 为信息素重要程度因子, 其值越大, 蚂蚁选择之前走过的路径可能性就越大,搜索路径的随机性减弱, 其值越小,蚁群搜索范围就会减少,容易陷入局部最优。一般取值范围为 [ 0 , 5 ] [0,5] [0,5]。
- β \\beta β 为启发函数重要程度因子, 其值越大, 表示启发函数在转移中的作用越大, 即蚂蚊会以较大的摡率转移到距离短的节点,蚁群就越容易选择局部较短路径,这时算法的收敛速度是加快了,但是随机性却不高,容易得到局部的相对最优。一般取值范围为 [ 0 , 5 ] [0,5] [0,5]。
-
计算完节点间的转移概率后,采用与遗传算法中一样的轮盘赌方法选择下一个待访问的节点。
依据轮盘赌法来选择下一个待访问的节点, 而不是直接按概率大小选择,是因为这样可以扩大搜索范围,进而寻找全局最优,避免陷入局部最优。
首先计算每个个体的累积概率 q j q_j qj ,如下式:
q j = ∑ j = 1 l P i j k (2) \\tag2 q_j=\\sum_j=1^l P_i j^k qj=j=1∑lPijk(2)
q j q_j 路径规划基于matlab GUI多种蚁群算法栅格地图路径规划含Matlab源码 650期路径规划基于matlab蚁群算法二维路径规划含Matlab源码 1131期
路径规划基于蚁群算法求解栅格地图路径规划问题matlab源码含GUI
路径规划基于matlab蚁群算法求解公交车路径规划问题含Matlab源码 930期