Research Article

ARCS: An Energy-Efficient Clustering Scheme for Sensor Network Monitoring Systems

Pseudocode 1

Pseudo code for clustering process in ARCS.
CH regional: regional cluster head node
Repeater: relay node
N RCH_member: regional cluster member node
N normal: normal node before joining the cluster
N regional: regional node
N sleep: sleep node
Initialize:
  (1)  generate (random_delay Time) /by normal nodes
Main Processing: /clustering process by normal nodes
  (1)  if (nodes weight value > 0)
  (2)    decrease weight value by 1 point
  (3)  end if
  (4)  Calculate available time slot period by weight value
  (5)  delay Time <- generate (random_delay Time)
  (6)  wait for delay Time or until receiving {any advertisement
    message}
  (7)  if (delay Time_Expired)
  (8)   if (nodeID == Nnormal)
     become Nregional
     broadcast (the Advertisement Message {nodeID, the 1st
    sensing value, position, altitude})
  (9)   else
     cancel the delay Time
  (10)  end if
  (11)  else
  (12)    if (receive the Advertisement Message {the 1st sensing value,
    altitude} == the 1st sensing value, altitude)
          become Nsleep
    else
       wait for delay Time or until receiving {any advertisement
Message}
  (13)    end if
  (14)  end if
  (15)  if (nodeID == Nregional)
         increase weight value by 1 point
    delay Time <- generate (random_delay Time)
  (16)   wait for delay Time or until receiving {any advertisement
     message}
  (17)  if (delay Time_Expired)
  (18)   if (nodeID == Nregional)
     become CHregional
     increase weight value by 2 points
     broadcast (the Advertisement Message {NodeID, position})
  (19)   else
     cancel the delay time
  (20)   end if
  (21)  else
  (22)   if (receive the Advertisement Message)
     cancel the delay time
            become NRCH_member
          else
        wait for delay Time or until receiving {any
advertisement Message}
  (23)   end if
  (24)  end if
  (25)  if (nodeID == NRCH_member)
  (26)    if (# of neighbor CHregional) > 2 &&
  (27)   # of neighbor CHregional < 6)
  (28)   become repeater
  (29)   broadcast (the Advertisement Message {NodeID, position})
  (30)    end if
  (31)  end if
CHregional
  (1)  broadcast (the Advertisement Message {nodeID, the 1st sensing
    value, position})
  (2)  accept (join Message)
  (3)  aggregate sensing data
  (4)  transmit_data_to_Sink (sensing value, nodeID, position)
NRCH_member
  (1)  join to cluster (CHnodeID, nodeID, position)
Repeater
  (1)  join to cluster (CHnodeID, nodeID, position)
  (2)  relay data