Sorumluluk sınav programını hazırlama algoritması.

Kodla Büyü

emrahsahan

Süper Üye
Süper Üye
Seçkin Üye
Mesajlar
1,369
Sorumluluk sınavlarında her öğrencinin sorumlu olduğu dersler var. Bu sınavlar 1 hafta sürüyor ve bir öğrenci günde en fazla 3 sınava giriyor. Örneğin 11.sınıf bir öğrencinin hem 9 dan hem de 10 dan sorumlu olduğu dersler var.

Arkadaşlar e-okuldan indirdiğim excel dosyasından verileri şu şekilde sözlüğe çevirdim.

ogrenci_ders = { “ogrenci1”:[ ‘ders1’,’ders2’,’ders3’],
“ogrenci2”:[ ‘ders1’,’ders2’,’ders3’, 'ders4']
“ogrenci3”:[ ‘ders1’,’ders2’,’ders3’, 'ders4', 'ders5']
“ogrenci4”:[ ‘ders1’,’ders2’,]
“ogrenci5”:[ ‘ders1’,’ders2’,’ders3’]
……
}
bu şekilde devam ediyor. Öğrencilerin gireceği sınavlar çakışmadan bu dersleri zaman tablosuna nasıl yerleştirebilirim? Python'da yapacağım. Komplex bir yapı var anlayacağınız önümde.
 
Dersi enfazla olan öğrencinin planlamasını yap önce. En az olanı ensona bırak.
Ben olsam böyle denerdim.
Tabi detaylı anlatım için klavye ve sağlıklı kafa lazım :)
 
Son düzenleme:
Dersi enfazla olan öğrencinin planlamasını yap önce. En az olanı ensona bırak.
Ben olsam böyle denerdim.
Tabi detaylı anlatım için klavye ve sağlıklı kafa lazım :)
Yaklaşık 80 öğrenci var hocam. Karmaşık yapıları çözen bir algoritma vardır diye düşündüm.
 
Bir kaç grup veri lazım. Öğretmen ve öğretmenin sınavları, öğrenci ve öğrencinin sınavları diye gruplayıp yapılabilir.

Misal öğretmenin pazartesi ilk ders 9 matematik. 9 matematiğe sınavı olan ve pazartesi günü üç sınavı olmayan öğrencileri bul, sınıfa ekle. Ve bunu bütün sınavlar yerleşinceye kadar devam ettir.

Detaylı yazamadım şimdilik ama temel mantık bu şekilde olsa, yerleştirilir.
 
Yaklaşık 80 öğrenci var hocam. Karmaşık yapıları çözen bir algoritma vardır diye düşündüm.
Hocam 2002 li yıllarda VB ile ders dağıtım yazılımı yapmıştım. Kendi çapında çalışıyordu.
İki boyutlu bir dizi yapmıştım. Excel tablosu gibi.
Kriterlere uygun en esnek öğretmeni en sona bırakacak şekilde yerleştiriyorum. Random tamamen
Uygun alan kalmayınca baştan random dağıtmaya başlardı. Bazen bir saat çalışırdı ama bulurdu uygun kombinasyonu.
Sanırım bir noktaya kadar mantıklı algoritma olur. İşin içine random yerleştirmede girmek zorunda
 
biraz daha açayım;
1 öğretmenlere = boş gün ve saatler ekle(günlük 6 saat sınırı olsun)
2 öğrenciye boş gün ve saatler ekle(günlük 6 saat sınırı olsun)
3 öğretmenlerin sınavlarını oluştur.
4 öğrencinin gireceği sınavları oluştur.
5 rastgele bir öğretmenin boş saatini bul, atanmamış sınavını yerleştir. Bu sınava girmesi gereken ama daha önce girmemiş öğrencileri tespit et. Bu öğrencilerden, o gün içerisinde 3 sınava girmemiş olanları bul ve eğer o gün ve saati açık ise sınav listesine dahil et. Hem öğretmenin, hem öğrencinin o gün ve saatini kapat.
6- 5. adıma git.

bu yöntem, bir sınıfta en fazla 30 öğrencinin sınava girebileceğini farzedersek, sınava giren öğrenci sayısının 30'dan fazla olması halinde hata verir. Ancak bu sınav, 2 ayrı sınavmış gibi gruplandırılarak bu da çözülebilir.
 
biraz daha açayım;
1 öğretmenlere = boş gün ve saatler ekle(günlük 6 saat sınırı olsun)
2 öğrenciye boş gün ve saatler ekle(günlük 6 saat sınırı olsun)
3 öğretmenlerin sınavlarını oluştur.
4 öğrencinin gireceği sınavları oluştur.
5 rastgele bir öğretmenin boş saatini bul, atanmamış sınavını yerleştir. Bu sınava girmesi gereken ama daha önce girmemiş öğrencileri tespit et. Bu öğrencilerden, o gün içerisinde 3 sınava girmemiş olanları bul ve eğer o gün ve saati açık ise sınav listesine dahil et. Hem öğretmenin, hem öğrencinin o gün ve saatini kapat.
6- 5. adıma git.

bu yöntem, bir sınıfta en fazla 30 öğrencinin sınava girebileceğini farzedersek, sınava giren öğrenci sayısının 30'dan fazla olması halinde hata verir. Ancak bu sınav, 2 ayrı sınavmış gibi gruplandırılarak bu da çözülebilir.
Hocam öğretmenler önemli değil. Öğretmenleri hiç katmayacağız işe. Sadece bir öğrencinin iki sınavı aynı zaman dilimine denk gelmeyecek. Genetik algoritma ve graph color algoritmasını araştırıyorum bakalım.
 
Genetik algoritma bu işe biraz fazla gibi zira bu kadar karmaşık, olasılık yok. Graph algoritmasını bilmiyorum. Ancak eğer öğretmenler hiç katılmayacaksa, benim algoritma yine de çalışır.
 
Hocam en fazla sorumlu olunan dersten başlasak yerleştirmeye. Sonra bu sınavdan sorumlu olmayan başka bir grup var ise o sınavı da aynı saate koysak. Rahatlatsak sistemi yerleştirme olasılığı artar mı acaba.
 
Hocam en fazla sorumlu olunan dersten başlasak yerleştirmeye. Sonra bu sınavdan sorumlu olmayan başka bir grup var ise o sınavı da aynı saate koysak. Rahatlatsak sistemi yerleştirme olasılığı artar mı acaba.
Bu yöntem sanıyorum Alpay hocamızın dediği yöntemle aynı.

Bu, sınavları bir nevi sıralamak. Sıralama önceliği, yerleştirilebilir yeri en az olan(yani öğrencisi çok olan sınav) önce yerleştirilirse evet, azıcık hız artar ama yerleştirme olasılığına etki eder mi bilemiyorum. Recursive fonksiyon şart gibi.
 
ortak olan dersleri tespit edip bu dersleri aynı saate koymayacaksın, istersen dersleri elle tek tek tespit et, istersen dizi yardımı ile mesela 9. sınıftaki hangi ders ile 10. sınıftaki hangi dersi alıyor öğrenciler bunu tespit ettir.

Tavsiyem 9 ve 10 ların sınavlarını aynı zamana koymayın, 10-11 ve 11-12 de aynı zamana koymayın. Çünkü öğrencilerin genelde bir alt sınıftan sorumluluk dersi vardır, bundan sonra elle kontrol etmesi daha kolay olur.
 
Hazır var zaten hocam ne gerek var MERLİF kullanın gayet güzel e-okul sorumlu öğrenci listesini almayı ben yazdım excelde sitesinde bulabilirsiniz.
http://www.kelebeksinavprogrami.com/?Syf=26&Syz=168258

Valla hocam programı yazdım, araştırdım color graph algoritması ile çözdüm işi. Öğrenci çakışmalarını önlüyor ve programı hazırlıyor. Kullanımı gayet basit.

www.nazillisoft.com adresinden videolarına bakabilirsin.

Şu an Django ile commenius web sitesi yazıyorum. Tüm paydaşların kullanıcı olabileceği , sitede paylaşım yapabilecekler. Kendi özel sayfalarını oluşturabilecekler. Koordinatör Admin olacak. Pandemide bunlarla uğraşıyorum yani :)
 
Geri
Üst