In this blogpost, we summarize what we have done in the first two weeks of ‘Algorithm models for maritime routes’ project. As we showed in our project plan and schedule, we finished 2 main goals for the first 2 weeks which were firstly to learn the existing systems,more specifically ORBIS, then to understand what have been done in the same project of the last year. Generally, the work is divided into two parts: front end and back end. In front end part, one team member works on the presentation layer, more generally how to integrate maps and GIS to our project. The other 2 members are working on the back end, which consists of analysing implemented algorithms and integrate the front end to the back end.
In the back end part, even if the program solves the main problem and is very helpful for us for beginning, we noticed that there are some points that still need improvement. For example, in the project of last year, 90 minutes was needed for superfine path which means the program is very slow for this task. So, first of all, in the next phase we will try to optimise the code so that it works as fast as possible, more specifically the goal would be 2 times faster. Existing algorithm used by the previous team is called ‘Ant colony optimisation’. And we are going to apply different existing algorithms, beginning with Dijkstra’s algorithm to account for bidirectional paths, which we believe that it will make the program faster. But for this, since the code is ‘spaghetti code’, we will need to make as clean as possible that change in one part does not require the change in the other parts by making firstly abstraction and methods that are less dependent on changes in one part of the program. Also, in this phase, depending our time limit, we may transfer the whole code to Java language(some part is in MATLAB now) since we are planning to write a web application and we want to have one main code base which has unique language that will help also the people who will work and develop this code more later. But we are not sure about we will have enough time to do this task.
In the front end part, we had two goals: First, we wanted to provide an interactive map tool similar to ORBIS, where users can choose starting and destination ports and see our route prediction, and secondly, we want to add some tools so that the users can add their own constraints into the prediction system. We found a code library to help us with the visualization and the user interface (http://leafletjs.com and https://github.com/Leaflet/Leaflet.draw) This tool already helps us to add polygons on a map to create constraints and we will add our own components to finish the user interface. The next problem will be integrating the front end input formats with the backend code.
We slightly deviated from our original plan because we realized that the backend code from previous semester requires some work to be portable. So two of us in our group will start working on the backend code while one of us will finish a simple interface with the help of existing libraries and contribute to the backend after the frontend tasks are finished.