This project addresses the stable matching problem, specifically in the context of allocating students to projects based on their preferences. The goal is to maximize overall utility by ensuring that students are matched to projects they prefer, while maintaining stability in the allocation. This project addresses the stable matching problem, specifically in the context of allocating students to projects based on their preferences. The goal is to maximize overall utility by ensuring that students are matched to projects they prefer, while maintaining stability in the allocation.
The stable matching problem involves finding a stable match between two sets of elements given a set of preferences for each element. A match is considered stable if there are no two elements that would prefer each other over their current matches.
In this project, we focus on matching students to projects. Each student ranks their preferred projects, and the algorithm aims to allocate projects to students in a way that maximizes overall satisfaction and ensures stability. Additionally, supervisors can mark students as suitable for specific projects, which is taken into account during the matching process.
- Preference Collection: Students submit their ranked preferences for available projects.
- Supervisor Input: Supervisors mark students as suitable for specific projects.
- Algorithm Execution: We implement a stable matching algorithm (such as the Gale-Shapley algorithm) to process the preferences and generate a stable match.
- Utility Maximization: The algorithm ensures that the allocation maximizes the overall utility by considering the preferences of all students and the suitability markings by supervisors.
To get started with this project, follow these steps:
-
Clone the repository:
git clone https://github.com/vsrivatsa-edinburgh/stable_matching
-
Navigate to the project directory:
cd stable-matching
-
Install the necessary dependencies:
npm install
-
Start the ReScript development server:
npm run res:dev
-
Start the Vite development server:
npm run dev
We welcome contributions to improve the project. Please fork the repository and submit a pull request with your changes.
This project is licensed under the MIT License. See the LICENSE file for details.
For any questions or feedback, please contact [email protected].