Research Article

Hybrid Swarm Intelligence Energy Efficient Clustered Routing Algorithm for Wireless Sensor Networks

Algorithm 1

Pseudocode of the proposed algorithm.
Assumptions:
(i) nodes are uniformly dispersed within a square field.
(ii) Each node has unique ID. Nodes located in the event area are grouped into one cluster.
(iii) Nodes are location-aware and quasi-stationary.
(iv) A sensor can compute the approximate distance based on the received signal strength (RSS),
and the radio power can be controlled
(v) A fixed base station can be located inside or outside the network sensor fields.
(vi) All nodes are capable of operating in cluster head mode and sensing mode.
(vii) Data fusion is used to reduce the total data message sent.
Variables:
(i) D is the dimension of the squared region.
(ii) Nodes are the number of nodes in the () region.
(iii) is the Initial energy of the nodes.
(iv) Alive_Nodes is the number of nodes left after the successful execution of previous round.
(v) is the distance between the nodes.
(vi) is the threshold distance value between the free space and multipath fading model.
(vii) is the amplification energy.
(viii) is the free space energy consumption.
(ix) N is the set of sensor nodes.
(x) Nodes_C is the nodes in sub-region which is under consideration for CH selection.
(xi) Energy is the residual energy of the nodes.
(xii) is list of possible nodes positions to become a sub-region CH computed using ABC algorithm.
(xiii) CH_s is the list of CHs in the round.
//Set up phase
Step  1. Take a region of (m2) with number of nodes.
Step  2. Initialize the Nodes () with initial Energy
Step  3. For each round Until Alive_Nodes > 0, then
  Repeat Step to Step
  function Alive_Nodes (Nodes)
      Total_Alive  := 0
  for each node  := 1 to length (Nodes) do
      if Energy [Nodes[]] > 0 then
         NODE_STATUS  := 1
         Total_Alive  := Total_Alive + 1
      Else
         NODE_STATUS  := 0
      end if
  end for
  return Total_Alive   
  endfunction
Step  4. Compute the distance of each node from other nodes and the BS by using Euclidian distance formula.
              
where and are -coordinates of nodes and and are -coordinates of the nodes.
Step  5. Compute for optimal number of sub_regions that can be formed in given region (m2)
and divide the given region (m2) into sub_regions based on value.
function Region Optimum Value {NODES}
    := Null
if BS.location is “Outside” then
  if    then
              
  else
            
  endif
endif
  return  
endfunction
Step  6. For each sub_region repeat Steps 7 and 8.
Step  7. Select CH, for each sub_region using ABC algorithm using function ABC_Cluster_Head,
Which accepts two arguments, (1) Nodes residual Energy and (2) Nodes in that particular sub_region.
function ABC_Cluster_Head
      Fitness_to_be_CH  := Null
    for each node  := 1 to length(Nodes_C) do
    Fitness_to_be_CH  := Fitness(Nodes_C[] × ID, BS)
    end for
      Threshold_Energy  := NULL
      Residual_Energy  := NULL
    for each node  := 1 to length(Nodes_C) do
    Residual_Energy := Residual_Energy +
            Energy(Nodes_C[])
    end for
               
    for each node  := 1 to length(Nodes_C) do
          
end for
   Threshold_Probability := 1/length(Nodes_C)
// New Position Calculating
for each node  :=  to length(Nodes_C) do
   if Probability_Nodes_to_CH[] >
        Threshold_Probability then
   rand_ABC:= Upper_Bound_ABC +
   (Lower_Bound_ABC-Upper_Bound_ABC) × rand
    := Fitness_Node_CH(Prev_CH_Node) − rand_ABC × (Fitness_Node_CH(Prev_CH_Node) −
  Fitness_Node_CH (Nodes_C[]))
end if
end for
Node CH Id:= Nodes C_max()
endfunction
Step  8. For each sub_region, repeat Steps and .
Step  9. Divide the sub_region into sub_region_parts based on value for this sub region.
function Sub_Region_Optimum_Value
    := Null
if CH.location is at “Centre” then
   if    then
    
   else
    
   endif
else if CH.location is at “Corner” then
   if    then
    
   else
    
   endif
else if CH.location is at “mid-point of the bottom side” then
   if    then
    
   else
    
   endif
end if
Endfunction
Step  10. Select the sub_cluster_head (SCH) for each sub_region_parts based on given fitness formula
(i.e residual energy and distance to sub region CH).
Each SCH is responsible to communicate with CH of that sub region
Step  11. Select optimal path for CH of all sub regions for data transmit to BS using ACO algorithm.
function ACO_Optimal_Path
   for each node to length(CH_s) do
     Fitness Fitness(CH_s[], BS)
   end for
for each node to length(CH_s) do
  for each node to length(CH_s) do
   if    then
   
   end if
  end for
end for
endfunction
// Steady state phase
Step  12. Nodes wake up and sensed data.
Step  13. Node forwards sensed data to SCH using TDMA with (2).
Step  14. SCH receives sensed data from nodes by using (3) and transmits aggregated data to CH using CDMA with (2).
Step  15. CH aggregates the data receivsed from all SCHs and send to BS using CDMA through a next hop receiver
(i.e CH of other sub region) with (2).
Step  16. For each region,
  if Node_Energy then go to Step  3.