Please click here to access our final project slides presentation
**LOCATION **
SRC Folder Files :
**csv.h + csv.cpp** - csv.cpp contains functions to the take the data from the file and format it into 3 vectors - preference vector, attribute vector, and id vector. It also contains functions that calculate the preference and attribute scores which are used later on by the BFS and other algorithms. csv.h is the header file for csv.cpp.
**Graph.h + Graph.cpp** - Graph.cpp contains graph function such as adding an edge to a graph. It also contains the functions which perform the graph traversal - BFS, and the shortest path algorithm - Djikstra's and helper functions for these operations. Graph.h is the header file for Graph.cpp.
**BFS.h + BFS.h** - BFS.cpp is the file used to create the adjacency matrix and call the respective functions to find the shortest path and do the traversal on the graph. BFS.h is the header file for BFS.cpp.
**Kosaraju.h + Kosaraju.cpp** - Kosaraju.cpp contains the Kosaraju's algorithm which is implemented by performing a DFS on an adjacency list and reverse adjacency list that's created by traversing through the dataset and also contains helper functions requred to perform the algorithm. Kosaraju.h is a header file to Kosaraju.cpp.
Test Folder Files : contains multiple files used to run and test all aspects of the project. The tests are in the file 'alltests.cpp'
- Data parsing and cleaning
- Kosaraju's Algorithm
- BFS Algorithm
- Dijkstra's Algorithm
Data Files :
- all the raw data is present in the 'tests' folder in the file CS225_matchmaking.csv
Written Report
-
the written report is present in the 'results.md' file
**RUNNING**
To be able to run the tests, follow the steps :
1. download the folder CS225_Matchmaking or clone repository to open in VSCode in Docker container
2. make a build directory using the command 'mkdir build'
3. move inside the build directory using the command 'cd build'
4. run the command 'cmake ..' followed by 'make test'
5. now run './test' to test all parts of the code
**TEST CASES**
- We have written multiple test cases. A few of them are listed : - to check if the vectors have been populated properly after the data cleaning and parsing has been performed - to check if the preference and attribute scores have been calculated properly - to check if people who are labelled as compatible are actually compatible based on their preference and attribute scores - to check if the algorithm is returning the correct set of people a person could possibly be very compatible with - to check how many people in a group are not compatible with each other