Routing algorithm and cluster head selection algorithm in WSN

It is very difficult to find one good project to work on. After a long series of discussion with my team We have decided to work on a project that will deliver the feature what are in the title. We have decided to implement this in WSN. As we are living in a changing world, technologies are also changing. We are being dependent on several sensor to make our life more easier and healthier. Wireless Sensor Network are being implemented in several areas to sense different attributes from the physical world  and Those data are being used to make prediction, analysis and lots of more things. WSN is now becoming a vital part of our daily life. But with development we should take care of the network health for the reliability and availability of services.

At the current situation the routing is being done by general routing algorithms. But there are several drawbacks of this method. If a node is suitable to transmit data and if we are transmitting data through it then after sometime that nodes energy will be very less or negligible. Issues in routing :

  1. Energy consumption

  2. Network Breakdown due to dead node

  3. Not efficient for large network

What we want to suggest is an algorithm to improve the routing issues.  We have decided to implement clustering and Neural network for data aggregation and energy consumption.

Clustering and NN will work on different section. Cluster will give a solution to data aggregation problem and NN will provide one solution for routing problem.

Basic Approach:

We are taking the WSN network as a graph structure with mesh topology. Mesh in the sense the node to node connection will be establish at the time of need. The edges between two nodes will be specified along with its weight and other parameters.  Nodes will have also certain attributes that will specify its state and other changes like ‘data sent’ and ‘data received’ , ‘energy’, ‘latency’ and so on. We have used a self generated data set to train our NN model. We have calculated the relation between parameters to calculate the approximate weights between nodes.

After defining the node data and edge weights we are applying dijkstra algorithm to find the shortest path with respect to its weight from source node to destination node.

After all there one question arises that how can we handle if the network is too large and if it has several sections. Some system should be there to aggregate the data and send it to the particular node. We decided to use clustering to resolve this problem. We use two types of clustering algorithm

  1. DBScan

  2. K-means clustering

DBScan to calculate the number of  clusters that can be possible in the network, and K-means to generate the clusters. K-means provides a uniform cluster. And each cluster has a cluster head to transmit the data. The cluster head will be selected according to its energy and latency parameters.

If we combine the above two sections then we will get:-  A cluster have a cluster head. For same cluster data transmission only dijkstra will decide how the data should go using edge weights of that cluster. For different cluster data transmission the data will be transmitter from source to the source node cluster head, then from the source node cluster head to destination node cluster head and finally from the destination node cluster head to destination node. Here dijkstra will be applied for three times.

This is the brief of our idea and the project that We are working on currently. I will write some more blogs regarding the implementation of these feature

Thanks to `Arpita Singh`, `Sidharth Naik`, `Priyanka Gupta`, `Satyabrata Pradhan`  for their help.