Spaces:
Sleeping
Sleeping
| title: Gale Shapely | |
| emoji: π | |
| colorFrom: blue | |
| colorTo: purple | |
| sdk: streamlit | |
| sdk_version: "1.30.0" | |
| app_file: app.py | |
| pinned: false | |
| # π Roommate Allocation System β Python & Streamlit Edition | |
| [](https://python.org) | |
| [](https://streamlit.io) | |
| [](https://en.wikipedia.org/wiki/Gale%E2%80%93Shapley_algorithm) | |
| A modern **Streamlit UI** for the Gale-Shapley Roommate Allocation algorithm. | |
| This version uses **Python** for the algorithm and **file-system storage** (JSON) instead of MySQL. | |
| > π **For the original C + MySQL version**, see: | |
| > [https://github.com/Harshwardhan-Deshmukh03/Roommate-allocation-using-Gale-Shapley-Algorithm.git](https://github.com/Harshwardhan-Deshmukh03/Roommate-allocation-using-Gale-Shapley-Algorithm.git) | |
| --- | |
| ## β¨ Features | |
| - **Stable Matching** via the Nobel Prize-winning Gale-Shapley algorithm | |
| - **Two-Stage Allocation**: Roommate matching β CGPA-ranked room assignment | |
| - **CSV Import**: Bulk-upload students & rooms via CSV files | |
| - **File-System Storage**: No database needed β data stored as JSON | |
| - **Interactive Charts**: Plotly visualizations of CGPA distributions | |
| - **Premium UI**: Dark theme with glassmorphism, gradients, and animations | |
| --- | |
| ## π Quick Start | |
| ```bash | |
| # 1. Create virtual environment | |
| python -m venv venv | |
| venv\Scripts\activate # Windows | |
| # source venv/bin/activate # macOS/Linux | |
| # 2. Install dependencies | |
| pip install -r requirements.txt | |
| # 3. Run the app | |
| streamlit run app.py | |
| ``` | |
| --- | |
| ## π Project Structure | |
| ``` | |
| streamlit_gale_shapely/ | |
| βββ app.py # Main Streamlit UI application | |
| βββ gale_shapley.py # Gale-Shapley algorithm (Python port) | |
| βββ db.py # File-system database layer (JSON) | |
| βββ requirements.txt # Python dependencies | |
| βββ .streamlit/ | |
| β βββ config.toml # Streamlit theme configuration | |
| βββ data/ | |
| β βββ students.json # Student records (replaces MySQL 'main' table) | |
| β βββ rooms.json # Room records (replaces MySQL 'RoomNum' table) | |
| β βββ allocations.json # Allocation results | |
| βββ sample_csv/ | |
| βββ sample_students_10.csv # 10 students (5 pairs) | |
| βββ sample_rooms_5.csv # 5 rooms for 10 students | |
| βββ sample_students_26.csv # 26 students (13 pairs) | |
| βββ sample_rooms_13.csv # 13 rooms for 26 students | |
| ``` | |
| --- | |
| ## π CSV Format | |
| ### Students CSV | |
| | Column | Type | Description | | |
| |--------|------|-------------| | |
| | id | int | Unique student ID (0-indexed) | | |
| | name | str | Student name | | |
| | cgpa | float | CGPA (0.0β10.0) | | |
| | pref_roommate | str | Space-separated preferred roommate IDs | | |
| | pref_room | str | Space-separated preferred room IDs | | |
| ### Rooms CSV | |
| | Column | Type | Description | | |
| |--------|------|-------------| | |
| | room_id | int | Unique room ID (0-indexed) | | |
| | room_number | str | Room label (e.g., "A101") | | |
| --- | |
| ## π§ Algorithm | |
| 1. **Stage 1 β Roommate Matching**: Gale-Shapley pairs students into stable roommate matches. | |
| 2. **Stage 2 β Room Allocation**: Pairs ranked by max CGPA select rooms via Gale-Shapley. | |
| Higher CGPA pairs get priority in room selection. | |