| 功能1:初始化 |
|
/ /功能:初始化 |
|
/ /程序的原型 |
|
Next-Hop-Selection; |
|
Calculate-Pheromone; |
|
//初始化全局变量 |
|
S =源ID; |
|
//初始化概率分布表 |
|
=网络中的节点数; |
|
=节点的相邻节点的集合; |
|
; |
|
Dp =分布概率; |
|
[[dp] =源概率分布表; |
|
;//是从节点跳转的概率是多少到节点 |
|
//启动路由表 |
|
(;;){ |
|
(dp) ?; |
|
|
|
D =目的ID (sink ID); |
|
FA (S, M, D] = forward ant [source ID, memory of forward ant, Destination ID]; |
|
Ph =信息素量; |
|
=初始能量; |
|
BA (S, M, Ph, D] = Backward Ant[来源ID, Backward Ant的记忆, |
| 信息素值,目的地ID]; |
|
=能见度数组; |
|
=中间节点ID; |
| 功能二:决策 |
|
//如果中间节点等于目标节点, |
| 然后计算信息素,构造反向蚂蚁 |
|
L1:如果() |
|
Calculate-Pheromone; |
|
构建BA [S, MPh值,]; |
|
L2: Next-Hop-Selection; |
|
如果() |
|
消除BA (,米Ph值,]; |
|
//更新路由表 |
|
|
|
|
|
=反向蚂蚁访问的节点数 |
|
|
|
Goto L3; |
|
其他的 |
|
转到L2; |
|
其他的 |
|
Next-Hop-Selection; |
|
Goto L1; |
|
L3:结束 |
| 功能3:下一跳选择 |
|
/ /程序Next-Hop-Selection |
|
Proc Next-Hop-Selection { |
|
中间节点 |
|
=实际能源; |
|
=节点数; |
|
=的可见性; |
|
=; |
|
; |
|
=信息素路由表; |
|
=的概率下一跳跳到s; |
|
|
|
|
|
=; |
|
=目标方向上的邻居数; |
|
=存储邻居概率数量的数组; |
|
; |
|
= 0; |
|
(;;+ +) { |
|
如果() |
|
; |
|
} |
|
; |
|
如果(·FA) |
|
循环发生,然后消除FA; |
|
其他的 |
|
{LastV=计算M的成员; |
|
If (LastV = 2) = 0 |
|
删除M[我]; |
|
; |
|
; |
|
} |
|
} |
| 函数4:更新源概率分布表 |
|
//更新源概率分布表 |
|
(;;+ +) { |
|
检查RoutingTable·S; |
|
找出可能的节点同时又 |
|
=; |
|
更新(dp)·; |
|
对于其他的邻居 |
|
=; |
|
更新(dp)·; |
|
//检查链路故障 |
|
如果((dp)·) //表示链接丢失 |
|
{ |
|
; |
|
); |
|
更新(dp)·; |
|
} |
|
} |
| 功能5:信息素计算 |
|
/ /程序Calculate-Pheromone |
|
Proc Calculate-Pheromone { |
|
分钟。; |
|
Avg。; |
|
=前向蚂蚁访问的节点数 |
|
; |
|
英航·Ph值 |
|
} |
|