I've done (another) thing... and I'm so happy to finally be sharing my biggest and best personal coding project with the world! The engineering manager finally has the confidence to reveal his code... and this is only the start. I plan to upload all my significant historic projects, including a quantum entropy simulator written in GFA Basic for the Atari ST.
TLDR: Scuba Hacker is planning to add Artificial Intelligence to Mercator Origins to create an optimised dive plan for an ultimately satisfying and chilled-out dive experience! I need to do a significant side-project to change the problem being solved from stock cutting to the well-known Computer Science problem of Travelling Salesman (or Travelling Diver!) so this won't be appearing anytime really soon, but it has been added as a stretch goal to the project plan!
Plan your Dive, Dive your Plan!
In 1998 I did my Master's dissertation on the subject of 'solving' the NP-Hard optimisation problem of stock cutting. My supervisor was Dr David Corne, who is now Professor and Global Goals Engineer at Heriot-Watt University in the UK. David was an amazingly supportive project supervisor and I'm really grateful for his expert guidance throughout the entire project. Checkout David's LinkedIn:
The project uses the Artificial Intelligence technique of Evolutionary Algorithms, specifically the sub-class of Genetic Algorithms or GA to minimise wastage of stock eg a large sheet of plate glass when cutting out smaller panes of glass for windows... or make that cake, for cutting small pieces of cake from a massive Mother Cake!
But, I here you ask, why is the Scuba Hacker calling out this antique C++ project on his hackaday Mercator Origins project log?
Because I want to modify the GA engine for the NP-Hard Travelling Salesman problem, or in this case the Travelling Scuba Diver problem! I'm going to use Genetic Algorithms to compute optimised Route Planning. Oh, and thanks for asking, yes this is going to run locally on the M5 Stick C Plus using the two core ESP32 microcontroller.
I just have to decide which stick to run the code on, well I think it's obvious. I've named the three sticks after shark species:
Mako - the navigation engine showing bearing and distance to the diver.
Tiger - The routing and UX engine that shows which target is next, with text and photo.
Lemon - Master of the internet connection, lifeline to the world and GPS message filter located in the SMB float box.
So,the answer's obvious... Tiger is going to run the Genetic Algorithm under the sea, in my hands!
I hope to have the GA optimise the following constraints;
* Include features that are flagged in the diver's wish list.
* Add a nice selection of other features to visit which fit with the dive plan depth and duration constraints.
* Dive site local weather conditions, namely air temperature.
* Dive site water temperature.
* And anything else I can think of!
I've uploaded the final write-up, project logs, code and original Win 1995 Visual Studio 5 binaries and released this all under the open source, permissive MIT licence. So you can use the code almost without exception, but you must include a copyright notice attributing the original work to me, Mark B Jones.
If you're a coder, or otherwise interested, I'd be chuffed (US English translation: very pleased!) if you were to checkout my freshly minted github account.