By Vahagn Tovmasian and Aditi Behera
The Container Movement Optimizer is our project for our Artificial Intelligence Capstone. The basic goal was to develop software that can calculate the optimal sequence of moves that minimizes the time spent moving containers when a container ship is at port. It is capable of finding the optimal sequence for a target set of containers to load and unload or to calculate the sequence of moves required to balance the ship such that the mass of the lighter side is greater than or equal to 90% of the mass of the heavier side.
The CMO was built using Python. Python was chosen due to our groups common knowledge of the language, with the hopes that it would reduce development overhead, even if it meant a cost towards performance.
We utilized the following orimary libraries/modules in order assist us with the project.
- Tkinter, natively packaged with Python, was used to implement the GUI.
- PyTest, used for our unit testing suite.
- PyInstaller, used for building our executable and distributable files for release.
The CMO relies on A* with heuristics to search the solution space of move sequences to find the sequence that minimizes the time spent. The heuristics used for loading and unloading search relies on the knowledge of which containers need to be moved, and how their current location in the ship bay and buffer impacts the minimum number of moves required to load or unload those containers.
Let
The load/unload heuristic
Where
The balance heuristic
The primary complications that occurred during the development phase were during integration.
The original goal of the software was to create a separate execution thread for the GUI and the main Runner so that execution would not be hampered by running it all synchronously. Due to lack of time and issues with lack of familiarity with multithreading in Pythonwe were not able to incorporate this functionality, so the Runner was fully incorporated into the GUI.
After incorporation we encountered lots of small issueus in debugging the final product post integration, but ultimately resolved them.
We would like to acknowledge our professor, Dr. Eamonn Keogh for all of the assistance and guidance he provided us in making this project come to fruition.