在时刻
t
t
t,蚂蚁
k
k
k 从城市
i
i
i 转移到城市
j
j
j 的概率
p
i
j
k
(
t
)
为
:
p^k_{ij}(t)为:
pijk(t)为:
式中,
J
k
(
i
)
=
{
1
,
2
,
…
,
}
−
t
a
b
u
k
J_k(i)=\{1,2,…, \}-tabu_k
Jk(i)={1,2,…,}−tabuk 表示蚂蚁
k
k
k 下一步允许选择的城市集合。禁忌表
t
a
b
u
k
tabu_k
tabuk 记录了蚂蚁
k
k
k当前走过的城市。当所有
n
n
n 座城市都加入到禁忌表
t
a
b
u
k
tabu_k
tabuk 中时,蚂蚁
k
k
k 便完成了一次周游,此时, 蚂蚁
k
k
k 所走过的路径便是 TSP 问题的一个可行解。
(5.1) 中的
η
i
j
η_{ij}
ηij 是一个启发式因子,表示蚂蚁从城市
i
i
i 转移到城市
j
j
j 的期望程度。在蚁群算法中,
η
i
j
η_{ij}
ηij 通常取城市
i
i
i与城市
j
j
j 之间距离的倒数。
式中:
ρ
(
0
<
ρ
<
1
)
ρ(0<ρ<1)
ρ(0<ρ<1)表示路径上信息素的蒸发系数,
1
−
ρ
1-ρ
1−ρ 表示 信息素的持久性系数;
Δ
τ
i
j
Δτ_{ij}
Δτij 表示本次迭代中边
i
j
ij
ij 上信息素的增量,即
其中
Δ
τ
i
j
k
Δτ_{ij}^k
Δτijk 表示第
k
k
k 只蚂蚁在本次迭代中留在边
i
j
ij
ij 上的信息素量,如果蚂蚁
k
k
k 没有经过边 ,则
Δ
τ
i
j
k
Δτ_{ij}^k
Δτijk 的值为零。
Δ
τ
i
j
k
Δτ_{ij}^k
Δτijk可表示为:
其中
Q
Q
Q为正常数, 表示第
L
k
L_k
Lk只蚂蚁在本次周游中所走过路径的长度。
其他模型
2. 基本蚁群算法的具体实现
(1)参数初始化。令时间
t
=
0
t = 0
t=0 和循环次数
N
c
=
0
N_c = 0
Nc=0,设置最大循环次数
G
G
G,将
m
m
m 个蚂蚁置于
n
n
n 个元素(城市)上,令有向图上每条边
(
i
,
j
)
(i,j)
(i,j) 的初始化信息量
τ
i
j
(
t
)
=
c
τ_{ij}(t) =c
τij(t)=c ,其中
c
c
c 表示常数,且初始时刻
Δ
τ
i
j
(
0
)
=
0
Δτ_{ij}(0)=0
Δτij(0)=0
(2)循环次数:
N
c
=
N
c
+
1
N_c = N_c+1
Nc=Nc+1
(3)蚂蚁的禁忌表索引号:
k
=
1
k=1
k=1
(4)蚂蚁数目:
k
=
k
+
1
k= k+1
k=k+1
(5)蚂蚁个体根据状态转移概率公式(5.1)计算的概率选择元素
j
j
j 并前进,
j
∈
{
J
k
(
i
)
}
j∈\{J_k(i)\}
j∈{Jk(i)}。
(6)修改禁忌表指针,即选择好之后将蚂蚁移动到新的元素,并把该元素移动到该蚂蚁个体的禁忌表中
(7)若集合
C
C
C 中元素未遍历完,即
k
<
m
k < m
k<m,则跳转到第(4)步;否则执行第(8)步。
(8)记录本次最佳路线
(9)根据式(5.2)和式(5.3)更新每条路径上的信息量。
(10)若满足结束条件,即如果循环次数
N
c
≥
G
N_c≥G
Nc≥G ,则循环结束并输出程序优化结果;否则清空禁忌表并跳转到第(2)步。