Inspiration - Considering the time and effort manually invested in detecting which pipe has a water leakage in a large water system, can easily be simplified by getting a few inputs about the system.
What it does - The proposed computer application which implements an algorithm is based on the principles of graph theory. In graph theory, a graph is defined as a set of points (vertices or nodes) connected by lines (edges). While dealing with water systems, we can treat reservoirs (tanks) and points of withdrawal as the nodes of a graph. The pipes connecting these nodes can be treated as the edges of the graph.
In order to isolate the leak, we must find the optimal cut set of this graph. A cut set is the set of edges to be removed from a graph to partition it into two disjoint sub-sets. The optimal cut set will require the least number of edges to be removed. In practice, to find the cut set of the water system, certain flow measurements are to be made. Once these measurements have been made, the program then checks if the water flowing in from the reservoirs minus the water flowing out from the withdrawal points is equal to the water flowing through the pipes. (This is similar to Kirchhoff's current law.) Based on this equality and other such equalities, the program eliminates the section of the graph where ineuqality is satisfies and continues to cut-set the graph till it locates the pipe in which the leak is present.
How we built it - Both our front-end and back-end was developed using python and GUI tkinter. Firstly, the user inputs his system - i.e, the nodes and pipe connections in the system. The Graph is sketched using on-click buttons on the tkinter GUI. After the graph is plotted, the graph is read as a matrix which is then acted upon by various functions. For Each function, we developed algorithms of our own including algorithm for finding the number of minimal cuts and an algorithm for creating dis-joint graphs. All the code and algorithms we used were developed by us till we find the leak in the pipe
Challenges I ran into - Coming up with algorithms for both minimum number of measurements and coordinates to be dis-joint. Our second cut-set is not implemented well due to various differences in counter values and we could not debug it in time
Accomplishments that I'm proud of - Although finding algorithms for each and every case was a challenging task, we are proud that we could come up with a solution of our own
What I learned - Tkinter GUI , Graph Theory, How to find cutsets of a graph, how to develop foolproof algorithms
What's next for Peek in the Leak - Try more test cases, debug and polish to make user experience error free and better
Built With
- python
- tkinter
Log in or sign up for Devpost to join the conversation.