Gale_shapely / README.md
daemon03's picture
Add Hugging Face Space configuration to README
aaf7a0b

A newer version of the Streamlit SDK is available: 1.57.0

Upgrade
metadata
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

Python Streamlit 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


✨ 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

# 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.