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. |