Course:CPSC312-2017-Car-Finder

From UBC Wiki

Car Finder

Authors: Kayci Wang, Joanna Tu, Nathan Tong

What is the problem?

People often have difficulty picking the car that suits their need the most (unless you're one of the car experts). It is often very easy to become overwhelmed when you're looking at tens and hundreds of webpages searching for your Mr/Ms.RightCar. Our project aims to provide users with the quickest solution in searching for the best car model/brand given a certain criteria. For example, users can ask questions such as "What is the cheapest car?", "What is the most popular car brand?", "Which car has more than 5 seats, is silver, and under the budget of $30000?", or even "What is the best car that I can get with 3 million?".

What is the something extra?

In addition to answering simple questions about specific models of cars, our program will generate suggestions and answers based on how compatible each car is in accordance to the given criteria. The user's preferences will be reflected in their queries and questions inputted to the interface, which will then be used to generate answers by ranking which cars have the highest compatibility with the user's wishes. This program can be further extended to applications for all car models/brands to create a car feedback system, which can aid new buyers in their decision when choosing their first car. In the future, users can be allowed to leave feedback and their own ranking of each car to make the generated suggestions more representative of car buyers' opinions.

What did we learn from doing this?

For this project, logic programming was suitable. Since the responses given to inputted queries depended on a system of true or false evaluations within the database, using a Prolog program for this task was sufficient. However, the Prolog program was definitely not the most efficient way to perform this task. Each new object to be entered into the database (in our project, the objects were cars) needed to have their characteristics declared separately in different predicates. For example, for our cars, each one needed to be declared as a car, a certain type, a transmission (one of automatic or manual), a color, and more. If we were to expand the database to be inclusive of all existing car brands and models, or if we add more filtering-characteristics (such as fuel economy, dealerships, customer rating), then it would be quite infeasible to continue using the Prolog program to store the data.

Link to Project: https://github.com/kitty7756/CPSC312-Project_1/blob/master/Project_1.pl