The problem of fleet optimization promises to deliver large cost savings. We were inspired by the challenge of the problem. Additionally, we also though that having an optimized fleet is half of the story. After that you want to administrate the fleet in its daily operations or make it grow.
In order to optimize the system we needed to find a good cost function. After a lot of search and headache, we sought the web in order to find solution to this issue and we found out that airlines company are facing a similar issue with their fleet and that they develop smart solutions for it.
We decided to test some of these solutions to develop the core algorithm.
In addition to that we brainstorm on the platform that could use the algorithm and display other useful information.
What it does
FleetVisio optimises several aspects of a electric vehicle fleet such as charging, vehicle purchase and type of electric battery used. This reduces the cost of owning and operating a fleet of electric vehicles. It also provides real time information (such as battery level and battery life) on the dashboard panel for easy monitoring .
First you can see how much electrics vehicles you should buy for your transportation system. As each city is different you are able to enter new constraint in the system before performing the simulation.
you can see the state of your fleet in real time in order to manage unexpected event as quickly as possible.
You can also plan the future cost of your system by knowing which battery will have to be replaced or the electrical consumption cost of the installation.
How we built it
The team was divided into three main functions. First, we had a member working on the interface through Angular 5 and mockup made in illustrator. They came up with idea to improve the system.
Then, the team was split into two subgroups that worked in tandem and in parallel - (1) fleet composition optimization and (2) fleet assignment/scheduling. Subgroup (1) worked from a top-down approach by setting up the python notebook environment as a linear programming problem using Python Pulp. This allowed a degree of experimentation with optimization by working on progressively more complex cost functions and constraints. Subgroup (2) worked off the initial numbers generated by the first subgroup - which are the fleet size and composition - and brainstormed on optimization strategies for charging, and optimized schedules to charge and deploy individual buses. This was mainly achieved through reading existing research on similar problems, and testing a bottom-up approach explained below. This would allow us to have dynamic scheduling of individual buses, but unfortunately we did not have enough time to finish.
Challenges we ran into
The biggest challenge was designing the algorithm. The problem had a lot of parameters thus was quite complex. There were multiple approaches to the problem that we contemplated and experimented with. For example, we tried adopting a bottom-up approach that creates buses as an object with charging stations and routes as nodes on the graph -- but given the complexity of the problem, we decided that this could not be completed in 32 hours. We settled on creating a framework that conceptualises the problem as a linear programming problem. This allowed us to programme each constraint and solve for optimisation variables -- giving the framework high customisation potential. We also tried aggregating optimization strategies for charging and bus deployment, but this could not be effectively integrated into the linear programming framework.
After spending most of our time on the algorithm itself, the design of the dashboard started late into the hackathon.
Accomplishments that we're proud of
We are proud to have developed an algorithm that gives us consistent result given the constraint we implemented. This algorithm is still quite naive but he could be extended in order to solve more complex issues.
We are also proud to have develop this system with people that we never met before. Running a team is always a challenge by itself even with members that know each others. This time we had the opportunity to work with people from other countries and with different background and the collaboration ran smoothly.
What we learned
We learned a lot about optimization process. We had to construct a cost function that will be relevant when solving our problem. Most of us had seen that in course, but having a practical case to work on was interesting. Plus the discovery of some libraries !
Some members of the team had the opportunity to experiment for the first time with Angular 5.
What's next for FleetVisio
In order to make FleetVisio really usable, we should connect the backend to the frontend. This can be done through a simple HTTPS socket.
On the technical side: We would have liked to add more constraints to the linear programming problem to better model reality We would have liked to make the bottom-up simulation work by adding realistic heuristic functions that model bus behaviour.