| Function 1: Initialization |
| //Function: Initialization |
| //prototype of Procedures |
| Next-Hop-Selection; |
| Calculate-Pheromone; |
| //initialize the global variable |
| S = Source ID; |
| //initialize probability distribution table |
| = Number of nodes in network; |
| = the set of neighboring nodes of node ; |
| ; |
| dp = distribution probability; |
| [][dp] = Source probability distribution table; |
| ; // is the probability of jumping from node to node |
| //Initiate the routing table |
| For (; ; ){ |
| [dp]·; |
|
| D = Destination ID (sink ID); |
| FA [S, M, D] = forward ant [source ID, memory of forward ant, Destination ID]; |
| Ph = amount of Pheromone; |
| = initial energy; |
| BA [S, M, Ph, D] = Backward Ant [Source ID, Memory of backward ant, |
| Pheromone value, Destination ID]; |
| = visibility array; |
| = Intermediate node ID; |
| Function 2: Decision making |
| //If the intermediate node is equal to the destination node, |
| then calculate the pheromone and construct the backward ant |
| L1: If () |
| Calculate-Pheromone; |
| Construct the BA [S, M, Ph, ]; |
| L2: Next-Hop-Selection; |
| If () |
| Eliminate BA [, M, Ph, ]; |
| //update the routing table |
| |
| |
| = number of visited nodes by the backward ant |
| |
| Goto L3; |
| Else |
| Goto L2; |
| Else |
| Next-Hop-Selection; |
| Goto L1; |
| L3: End |
| Function 3: Next hop selection |
| //procedure Next-Hop-Selection |
| Proc Next-Hop-Selection { |
| = next Intermediate node |
| = actual energy; |
| = Number of nodes; |
| = visibility of ; |
| = ; |
| ; |
| = pheromone routing table; |
| = probability of jump to s as a next hop; |
| |
| |
| = ; |
| = number of neighbors which are located in the destination direction; |
| = array for storing probability amount of neighbors; |
| ; |
| = 0; |
| For (; ; ++){ |
| If () |
| ; |
| } |
| ; |
| If (·FA) |
| Loop happens then eliminate FA; |
| Else |
| {LastV= Count the member of M; |
| If (LastV = 2) |
| Delete M[i]; |
| ; |
| ; |
| } |
| } |
| Function 4: Update of source probability distribution table |
| //update the source probability distribution table |
| For (; ; ++){ |
| Check the RoutingTable · S; |
| Find nodes which could be simultaneously Then |
| = ; |
| Update [dp]·; |
| For other neighbor |
| = ; |
| Update [dp]·; |
| //check the link failure |
| If ([dp]·) //it means the link is lost |
| { |
| ; |
| ); |
| Update [dp]·; |
| } |
| } |
| Function 5: Pheromone calculation |
| // procedure Calculate-Pheromone |
| Proc Calculate-Pheromone{ |
| Min.; |
| Avg.; |
| = number of visited nodes by forward ant |
| ; |
| BA·Ph |
| } |