Repo Tanıtımı
OSTİM Teknik Üniversitesi öğrencileri için seçilen derslerden çakışmasız haftalık program üreten kısıt-tatmin çözücü. Sert kısıtların (çakışma yok) yanı sıra yumuşak kısıtları (boş gün, sabah/akşam tercihi) ağırlıklandırarak top-N varyant döndürür.
Özellikler
- Backtracking + forward checking solver
- Most-constrained-first heuristic ile dallanma azaltıldı (saniye-altı çözüm)
- Sert kısıtlar: çakışma yok, kapasite uygun
- Yumuşak kısıtlar: boş gün, sabah/öğleden sonra tercihi, dersler arası boşluk, binalar arası mesafe
- Skorlanmış top 5 program varyantı
- Görsel haftalık tablo (matplotlib) + JSON çıktı
- Web arayüzü (Flask) + komut satırı (CLI)
- CSV ders kataloğu girişi (Selenium yarı-otomatik scraper opsiyonel)
Mimari
- Veri: CSV — ders kodu, şube, gün, saat, kapasite, hoca
- Solver: Backtracking + forward checking; çakışma matrisi ön-hesap
- Heuristic: Most-constrained-variable + least-constraining-value
- Skorlama: Yumuşak kısıt ihlal puanı + binalar arası yürüyüş süresi
- Web UI: Flask + Jinja2, kullanıcı kısıt ağırlıklarını kaydırgaçla ayarlar
Kullanılan Teknolojiler
Python, pandas, matplotlib, Flask, constraint propagation, Selenium (opsiyonel scraping), argparse.