A Part of Kotlite Ridesharing Application
Explore the Projects »
Report Bug
·
Request Feature
Kotlite is here as a breakthrough idea that answers the need of users to find drivers or passengers from and going to the same routes. It is designed to optimistically accelerate the transformation of the citizens' lifestyle to rideshare and network, eliminating incurable rush hour traffic and provide practicality for user's mobility from one place to another.
We use the Machine Learning approach to provide passenger, driver recommendations who have the same route. By using the recommendation system that we created, the system will offer passengers with recommendations for drivers who will travel past the passenger pickup location and through or to the passenger dropoff location. In this recommendation system, we use a location-based filtering approach, similar direction approaching, pickup time filtering, and distance-based filtering.
To get a local copy up and running follow these simple steps.
This project requires several resources to be prepared and installed on the local computer, including:
- Python Virtual Environtment (recommendation)
- Python ver 3.6.x - 3.8.x (we use python version 3.8.5)
- Google Maps API Key
-
Clone the repository
$ git clone https://github.com/kroniz-utab/kotlite_algorithm.git # cd to the repository folder $ cd kotlite_algorithm
-
Install the required environment with virtualenv (recommendation). This part is for a run on local computer
- Linux/macOs
$ virtualenv env $ source env/bin/activate (venv) $ pip install -r requirements.txt
- Windows
python -m venv env env\scripts\activate pip install -r requirements.txt
- Linux/macOs
-
For the local computer, you can run this project using jupyter notebook by this way in your CLI
$ jupyter notebook
-
Setup
Maps API
, if you foundAPI KEY
on the notebook, change it by your Google Maps API Key. -
And you can explore how our algorithm was built.
-
We use the KWB Dummy Taxi dataset to test the algorithm we use. We created this dataset because we feel that the data in the NYC Trip Distance matrix dataset is still insufficient to support our system. so we create our dataset to get the data we want.
Our recommendation system works using variations of approaches to get the best recommendation results based on our opinion. The purpose of this recommendation system is to find drivers that most closely match destinations, directions, and routes. Our recommendation system is based on the Nearest Neighbor Algorithm. The reason we use the nearest neighbor algorithm is that we gather real-time data or to be called crowdsourcing. In that case, we need to do continuous training when passengers want driver recommendations. Our recommendation system does not only rely on the nearest neighbor algorithm, but we also take several approaches so that passengers get good driver recommendations, and drivers do not have to travel too far to pick up or drop off passengers.
Location-based Filtering is the main approach of what we use. This approach uses the Nearest Neighbor Algorithm to detect the closest route point from all driver trip data to the pickup and drop-off points of passengers. This closest point will be used for other approaches.
Similar Direction Approach is the approach we use to determine whether drivers have the same direction of travel. We use the driver sequence route data to see if the drivers are in a similar direction or not.
Pickup Time Filtering is the approach we use to provide driver recommendations to passengers based on the passenger's desired pickup time. To get the best recommendation, we use pickup time filtering as one of the approaches in our recommendation system.
Distance-based Filtering is the process we use to make our drivers feel free. It is practical to find the distance value from the driver's closest location point to the passenger's pickup and dropoff point. We use this approach to limit the range of distances a driver must travel to pick up and drop off passengers on the main route the driver must take.
We test the algorithm that we have built using the dataset KWB Dummy Taxi Dataset using the data
passengers who want to depart from MAN 1 Kota Batu on (-7.8838611,112.5381295)
to GOR Gajah Mada Kota Batu on (-7.8786821,112.524145)
.
By using a threshold of 0.7 km from the nearest point, the system recommends 2 drivers who have a similar route, namely the driver with id [11,19]
. We're trying to see how effective the system is at providing driver recommendations to passengers. In this case, we want to test using google maps to see and assess how effective this system is. The testing process uses a scenario that the driver will pick up passengers and then deliver them first before the driver goes to his final destination.
Image of the main route the driver should have taken with ID 11
Image of the route of the driver who has to pick up and drop off passengers
However, if the driver with ID 11 picks up passengers and delivers them to the passenger's destination, the distance covered will be 12.5 km with an estimated travel time of 28 minutes. It is nice that the system can search for and recommend drivers who have the same direction to passengers. The results of the recommendations are also not burdensome or detrimental to drivers because the maximum pick-up distance is limited to 0.7 km from the point provided by the maps.
Feel free to clone, use, and contribute back via pull request. We'd love to see your pull requests and send them in! Please use the issues tracker to raise bug reports and feature requests.
We are excited to see the amazing features you build in your application using this project. Do ping us at our contact once you build one, feel free to contact us, and we would love to feature your app on our blog.
Distributed under the MIT License. See LICENSE.txt
for more information.
How can we help you? While we're occupied for the Capstone Project, there are simpler ways for us to get in touch! Please do visit us at here.
You can also looking up our other repository in this project by this link.