Overview

As I said in the intro, one of the aims of this site is to make sure I have a working example of the different technologies I have come to use throughout my career. This page gives a summary of the different libraries and technologies involved in making this site function. In addition, the code for the site (minus the vehicle routing server) can be found in my github repository.

General

Vehicle Routing

  • Solver: jsprit

  • Real-road distances and times: a self-hosted instance of OSRM that generates distance and time matrices

  • Communication: ZeroMQ. jsprit does not include a standard API that is accessible outside of Java. Therefore, I built a custom RESTful API that listens on a socket for a problem serialized as JSON. The middleware is capable of formulating and tracking the problem for dynamic routing solutions but this is too resource-heavy to demonstrate on this site, so some default settings are used.

  • Mapping: a combination of Leaflet, Leaflet Routing Machine (utilising the self-hosted OSRM server), Mapbox for the custom tileset and Leaflet.Icon.Glyph for the numbered markers

Machine Scheduling

  • Graphing: Plotly.js

  • Solver: an entirely custom algorithm based on the principles of Simulated Annealing. The problem is first transformed in Pandas and rearranged into a series of NumPy arrays. For a problem of this scale, approximately 10,000 solutions can be generated and evaluated per second.