Welcome to the Optimal Electric Scooter Routing Project! 🛴💨
In this project, we aimed to develop an innovative solution for finding the best routes for electric scooters. Our focus was on optimizing distance, road comfort, traffic, and parking spot tracking. Let's take a look at the key components of our project.
-
Data Loading 📊:
- We loaded geo-data from various sources, including the open-source library "osmnx" (OpenStreetMap), data provided by the organizers, and open sources of the government of Moscow (used API). This data included details about hexes, speed limit zones, parkings, forbidden zones, speed medians, scooters at parkings, routes hex, road index, clashes, and the quality of road surface.
-
Data Preprocessing 🔄:
- Our data preprocessing phase involved merging different datasets based on common column values. We combined information from hexes to create some visualizations.
-
Graph Loading and Analysis 🚂:
-
Data Filling Algorithm using Decision Trees ⚙️:
- In addition to route optimization, we developed an algorithm to fill missing data in our datasets using decision tree models. This algorithm builds nested deep trees to predict missing values based on available features. To illustrate the data filling process, here's a comparison of variables before and after filling, which ensured that our datasets were complete and ready for analysis:
-
A* Algorithm for Route Optimization 🗺️:
- The highlight of our project was the implementation of the A* algorithm for finding optimal routes for electric scooters. We considered factors such as distance, time, road conditions, traffic congestion, and the parking availability. Furthermore, we developed our own weighted features, including cumulative convenience. Our algorithm is based on Dijkstra’s algorithm, but it incorporates heuristics to improve the search. The main purpose is to minimize or maximize the desired target, such as road time, comfort, etc. The result of using the algorithm is presented below:



