Inspiration

EOG wells are constantly producing water and we need to find ways to reduce expenditures, as well as reuse and recycle water whenever possible. The goal was to ensure we never have to use local water bodies and hence preserve the natural ecosystem.

What it does

The algorithm finds the most optimal set of operations that allow maximum revenue with reusability of water and hence preventing the need to disturb the local water bodies.

How we built it

  • We started the problem with a greedy approach. Performing the operations that produce the maximum output and then evenly distributing the remaining water among the operations that did not execute. This allowed us to reach a quick solution but definitely not the most optimal.
  • The second and definitely the most optimal solution that we came up with is using Basin-Hopping algorithm to optimize a non linear set of equations with constraints. It finds a global minima. We had also tried using scipy.optimize.minimize but it finds only a local minima as opposed to Basin-Hopping. This gave us a most optimised solution and reduced the execution time significantly.

Challenges we ran into

  • It took us several iterations of trying various algorithms (a few custom) to finally land on this technique.
  • One of the major issues was using python to run a background service. Due to our lack of experience with the language we did face a few hurdles integrating it with the client.

Accomplishments that we're proud of

  • Learning new techniques to write better algorithms. (Linear / non-linear programming)
  • Successfully implementing the algorithm.

What we learned

  • We had an opportunity to implement a collection of algorithms and data structures in which we only had a theoretical background.
  • Time complexity was extremely important! So to cut down on every millisecond of delay to provide a faster solution brought out all the fancy (or rather not so often used) data structures and algorithms.

What's next for eogresources - hackutd challenge

  • This is a MVP. There are many opportunities to improve this implementation. As engineers we are never completely satisfied and we know there are much more fancy optimisation techniques that we can apply.
Share this project:

Updates