Ders Dağıtım Sistemi — Mimari Notları
OR-Tools CP-SAT ile okullar için otomatik ders programı oluşturan optimizasyon sisteminin mimarisi ve tasarım kararları.
PythonOR-Tools CP-SATFastAPISQLAlchemyNext.js
Problem
Ders programı hazırlamak, orta ölçekli bir okulda bile günler süren ve elle yapıldığında çakışmalar üreten bir problem. Öğretmen uygunlukları, şube blokları, derslik kapasiteleri ve pedagojik tercihler aynı anda gözetilmeli.
Çözüm
Problemi bir constraint satisfaction modeli olarak formüle edip OR-Tools CP-SAT çözücüsüyle ele aldım. Hard constraint'ler (çakışma yasakları, zorunlu bloklar) ile soft constraint'ler (tercihler, dengeli dağılım) ayrıştırıldı; okullar mevcut verilerini XLSX ile aktarabiliyor.
Teknik mimari
- Python + OR-Tools CP-SAT çözücü çekirdeği.
- FastAPI + SQLAlchemy ile veri modeli ve çözüm API'si.
- Next.js tabanlı yönetim arayüzü ve program görselleştirme.
Öğrenimler
- Gerçek okul verisi hiçbir zaman temiz gelmiyor; içe aktarma katmanındaki doğrulama, çözücü kadar emek istiyor.
- Soft constraint ağırlıklarını okulla birlikte ayarlamak, teknik çözümün kabul görmesinin anahtarı.
Sonraki adım
İlk pilot okul aranıyor.