SmartScheduler
Genetik algoritmanın ürettiği ders programını, öğretim üyesinin bakıp güvenebileceği bir arayüze çeviren iş.
Bir üniversitenin ders programı; derslik kapasitesi, öğretim üyesi müsaitliği, öğrenci grupları ve saat kısıtlarının hepsini aynı anda tutturmayı gerektirir. Elle yapıldığında çakışma kaçınılmazdır. Ekibimiz bu problemi genetik algoritmayla çözen bir motor yazdı — ama bir optimizasyon motorunun çıktısı ham haliyle kimsenin işine yaramaz.
- Çözümü haftalık ızgara üzerinde görselleştirdim: hangi ders nerede, hangi kısıt yüzünden oraya kondu, hangi alternatifler elendi.
- What-if senaryoları ekledim — kullanıcı bir dersi taşımayı denediğinde hangi kısıtın kırıldığını anında görüyor.
- Arayüzü Next.js 14, TypeScript ve Tailwind ile kurdum; backend ile sözleşmeyi tiplenmiş API katmanı üzerinden sabitledik.
Beş kişilik Scrum ekibinde Frontend Lead’im. Genetik algoritma motoru ve .NET tarafındaki servisler benim işim değil — o taraf ekipteki başka bir arkadaşımın. Benim sorumluluğum, motorun ürettiği çözümü insanın okuyabileceği ve sorgulayabileceği hale getirmekti.
Çakışmasız program üretimi, senaryo karşılaştırma ve dışa aktarma çalışır durumda. Proje Docker ve GitHub Actions üzerinde sürekli entegrasyonla ilerledi.
Bir optimizasyon sisteminin en zor kısmı optimizasyon değil, ikna. Kullanıcı "bu ders neden buraya kondu" sorusunun cevabını göremiyorsa, algoritma ne kadar iyi olursa olsun sonucu elle değiştirmeye kalkıyor. Arayüzün işi sonucu göstermek değil, gerekçeyi göstermekmiş.
Next.js 14 · TypeScript · Tailwind CSS · ASP.NET Core 9 · PostgreSQL 16 · Docker · GitHub Actions