Overview
Shipping Manager is a networked desktop application for more efficient shipping. It was developed on a consulting basis to provide cost savings as well as greater insight for management as to the nature of planned routes and estimated costs. The Shipping Manager is currently used on a daily basis by both shipping managers as well as company leadership to plan and review the transportation of $10 million of product annually.
Description
Shipping Manager interfaces to a backend database that stores all of the state information for the application. I was the sole programmer for the project.
The application supports the manual entry of the various shipping invoices as well as the automatic import from the company’s legacy database system. The imported invoices are stored to a database along with routes and other information generated by the program. As a result the system supports multiple concurrent users across the network for delivery route scheduling and review of planned routes. Users can move invoices between days and assign them to different driver’s routes on days. Invoices can be manually edited as well.
The application offers the option to manually set up shipping routes. The application interfaces to a MapQuest service to allow for the locating of addresses, the lookup of directions between addresses, the calculation of times between addresses, and the distance between addresses. Users can assign invoices to different routes and change the order in which invoices are delivered. The application automatically regenerates a map of the routes, distance information, time information, and cost information for the routes as the users make changes to the routes using queries to the MapQuest service. This feature allows users to quickly try different configurations and get an idea for the cost implications of various routes while still being able to make routing decisions that are difficult to be automatically made by a computer (e.g. customer wants an order early in the day).
The application has several methods for automatic generation of routes. It uses a meta-heuristic for route planning in order to group invoices onto trucks and find the optimal order to deliver those invoices. This metaheuristic minimizes a cost function with constraints on the amount of time that truck can spend delivering items during a day and the number of stops per truck. The interface allows for the manual tweaking of input parameters, adjusting the accuracy of calculations to save calculation time, and the viewing of results. Results can then be modified at the user’s discretion.
Technology
- Code base in C# with Microsoft .NET for graphical interface and network code
- MySQL database for storing driver information and route information with C# MySQL connector
- Threading for window responsiveness (automatic refresh of route information as the user modifies the route) and faster processing (optimization algorithms and data import)
- HTTP/JSON interface to MapQuest API service for distance calculations
- C# Webkit library for map rendering
- VRPH C++ library of metahueristics for solving transportation problems
- C# OBDC connection for legacy FoxPro database