Ders Dağıtım Programı Yazıyorum

Kodla Büyü
MuratAKAR' Alıntı:
Arkadaşlar birkaç haftadır boş saatlerimde ders dağıtım yapabilecek bir program yazmaya çalışıyorum. Şu an için genel ayarlar, dersler, derslikler, öğretmenler ve sınıfları(gruplarıyla) oluşturup kayıt edebiliyoruz. Asc nin kolaylıklarını programda oluşturmaya çalışıyorum. Görsel olarak şu an için fazla bir özellik yok (en azından yetiştirebilirsem bu sene için böyle, tutarsa daha görsel olabilir). İlköğretimlerdeki seçmeli dersleri, sınıflar bazında gruplar oluşturarak ve ders planınıda grupları birleştirerek çözmeyi düşünüyorum. Aynı şekilde meslek liselerindeki dalların ortak ve dal dersleri de böyle çözülebilir. Programı modüler yapmaya çalışıyorum örneğin ders dağıtımını özel bir sınıf içinde yapacağım. Program bittikten sonra kodlarını burada paylaşırım. İsteyen arkadaşlar dağıtımı farklı mantıklarla kendileri istediği gibi düzenleyebilir.

Sizlerden şu an için isteğim:
Ders dağıtımında en çok kullandığınız kısıtlamalar nelerdir? (Şu iki ders arka arkaya gelsin gibi)
Olmasını istediğiniz özellikler nelerdir?
Gönderdiğim programda şurası olmamış dediğiniz yerler nelerdir?

Şu ana kadar hazırladığımı örnek verilerle gönderiyorum.
Belki size bir fikir verir diye bu dosyaları göderiyorum
 
hocam işin gerçekten zor. allah sabır ve kolaylık versin
..
bence ilköğretimlerdeki seçmeli derslerde sınıfların birden fazla gruba bölünebileceği gibi meslek liselerinde bir derse birden fazla öğretmen girebileceğini de göz ardı etmeyin derim. aynı ders 4 öğretmene kadar atanabilmeli. ve bu ders atanan tüm öğretmenlerde aynı saatte olmalı
..
 
bormut' Alıntı:
hocam ne oldu proğram çalışmanız son buldu mu ?
Hocam dağıtım için 3 farklı algoritma yazdım. Yazdıklarım içinde iyileştirme metodu ile dağıtım yaptığım algoritma 19 öğretmen, 13 şube ve 153 tanımlı dersli bir okulun dağıtımını öğretmenleri fazla kapatmadan yapılırsa 3 dakikada gerçekleştirdi. Yanlız öğretmenleri çok kapatırsak sonuca ulaşamıyor. ASC aynı dağıtımı (çok kapatılırsa) 5dk gibi bir sürede gerçekleştirebiliyor. Şimdi yeni bi dağıtım planladım onu kodlayacam bakalım. Aşağıdaki en iyi çalışan algoritmanın sonucudur. Çalışmalara devam ediyorum.
 

Ekli dosyalar

  • TaramaAni.png
    TaramaAni.png
    89.4 KB · Görüntüleme: 1,634
  • TaramaSonu.png
    TaramaSonu.png
    48.8 KB · Görüntüleme: 1,631
Yazılımın dağılımları öğretmen şartlarına uygun olana kadar rastgele yapıyor tahminim. İnsan gibi belli mantık kuralları dahilinde adım adım ilerleyerek dağılım hazırlıyorsa gerçekten işin zor.
Allah yardımcın olsun.
 
alpaygunes' Alıntı:
Yazılımın dağılımları öğretmen şartlarına uygun olana kadar rastgele yapıyor tahminim. İnsan gibi belli mantık kuralları dahilinde adım adım ilerleyerek dağılım hazırlıyorsa gerçekten işin zor.
Allah yardımcın olsun.
Hocam dersin haftaya yayılma şekline göre (örn 4+4+4 gibi) öğretmenin, okulun, sınıfın koşulları birleştirilerek dersin haftaya yayılabileceği olasılıklar oluşturuluyor. Bazen bir dersin olasılığı 3000 veya fazlasını bulabiliyor. Sonrasında rastgele bir noktadan yerleştirilmeye başlanırıyor. Derslerin yerleşme olasılıkları puanlanarak sonraki yerleştirmelerde puanlamaya göre olasılıklar seçiliyor (İyileştirme ile dağıtımda sonuca ulaşmanın en kilit noktalarından biri) Bir ders yerleşmediğinde derse komşu olan (aynı öğretmenin, sınıfın, dersliğin dersleri) sırasıyla kaldırılıyor ve yerleşmeyen dersin yerleştirilmesi sağlanıyor. Yerleşme oranı belli bir seviyeye ulaştığında %80 gibi yerleşmeyen ders oluştuğunda kendisine komşu olan yerleşmiş bir ders kaldırılıp ikisi birlikte yerleşiyormu diye tarıyor (bu da kilit bir nokta). Yerleşme oranı %95 seviyesine ulaştığında ise yerleşmeyen ders için komşusu olan iki ders kaldırılarak yerleşmeyen ders ile birlikte yerleşebiliyormu diye taranıyor(bu baya zaman alıyor). Bir ders komşusu tarafından kaldırılırsa o anda yerleşmiş olasılık puanı düşürülüp olasılık sonlara atılıyor. Bu yöntem ile yerleştirme ile program sonuca ulaşabiliyor yanlız öğretmenler çok fazla kapatılmamışsa.
Şimdi planladığım yerleştirme yönteminde komşuları ile yerleşmeleri hesaplayacak. Komşu yerleşimler kesiştirilerek tüm olasılıkların yerleştirimesi sağlanacak. Bu yerleştirme yönteminde program tarama yaptıkça elindeki veri artacak, olasılıkları organize edecek ve daha önce komşuları ile yerleşmiş dersleri tanıyacak. Zannedersem asc böyle tarıyor. Bakalım sonuç ne olacak :)

Ek: İlk yaptığım algoritmada ders olasılıkları sırasıyla denenerek sonuca ulaşımlaya çalışılıyordu. Mantıken eğer bir ders programı yerleştirilebiliyorsa sonucu bulacak olan algoritma buydu fakat tek şubeli bir okulun bile olasılıklarının taranması günler alabilecekti. İnternette yaptığım araştırmalarda bu konuda Genetik Algoritma yönteminin kullanıldığını okudum. Mantık olarak sonsuz yoldan oluşan bir çözüm uzayında, en iyi çözüme ulaşmak için belli sayıda rastgele çözüm populasyonu oluşturuluyor. Bu populasyon içindeki en iyiler ayrılıyor. Populasyon içindeki elemanlar çiftleştirililiyor, mutasyona uğratılıyor ve yeni bireyler ortaya çıkarılıyor. En iyi bireyler seçilerek bu işlem nihayi sonuca ulaşana kadar tekrarlanıyor. Bununla ilgili de algoritma yazdım yanlız benim populasyon %90 lardan sonra gelişmedi :)
 
MuratAKAR' Alıntı:
alpaygunes' Alıntı:
Yazılımın dağılımları öğretmen şartlarına uygun olana kadar rastgele yapıyor tahminim. İnsan gibi belli mantık kuralları dahilinde adım adım ilerleyerek dağılım hazırlıyorsa gerçekten işin zor.
Allah yardımcın olsun.
Hocam dersin haftaya yayılma şekline göre (örn 4+4+4 gibi) öğretmenin, okulun, sınıfın koşulları birleştirilerek dersin haftaya yayılabileceği olasılıklar oluşturuluyor. Bazen bir dersin olasılığı 3000 veya fazlasını bulabiliyor. Sonrasında rastgele bir noktadan yerleştirilmeye başlanırıyor. Derslerin yerleşme olasılıkları puanlanarak sonraki yerleştirmelerde puanlamaya göre olasılıklar seçiliyor (İyileştirme ile dağıtımda sonuca ulaşmanın en kilit noktalarından biri) Bir ders yerleşmediğinde derse komşu olan (aynı öğretmenin, sınıfın, dersliğin dersleri) sırasıyla kaldırılıyor ve yerleşmeyen dersin yerleştirilmesi sağlanıyor. Yerleşme oranı belli bir seviyeye ulaştığında %80 gibi yerleşmeyen ders oluştuğunda kendisine komşu olan yerleşmiş bir ders kaldırılıp ikisi birlikte yerleşiyormu diye tarıyor (bu da kilit bir nokta). Yerleşme oranı %95 seviyesine ulaştığında ise yerleşmeyen ders için komşusu olan iki ders kaldırılarak yerleşmeyen ders ile birlikte yerleşebiliyormu diye taranıyor(bu baya zaman alıyor). Bir ders komşusu tarafından kaldırılırsa o anda yerleşmiş olasılık puanı düşürülüp olasılık sonlara atılıyor. Bu yöntem ile yerleştirme ile program sonuca ulaşabiliyor yanlız öğretmenler çok fazla kapatılmamışsa.
Şimdi planladığım yerleştirme yönteminde komşuları ile yerleşmeleri hesaplayacak. Komşu yerleşimler kesiştirilerek tüm olasılıkların yerleştirimesi sağlanacak. Bu yerleştirme yönteminde program tarama yaptıkça elindeki veri artacak, olasılıkları organize edecek ve daha önce komşuları ile yerleşmiş dersleri tanıyacak. Zannedersem asc böyle tarıyor. Bakalım sonuç ne olacak :)

Ek: İlk yaptığım algoritmada ders olasılıkları sırasıyla denenerek sonuca ulaşımlaya çalışılıyordu. Mantıken eğer bir ders programı yerleştirilebiliyorsa sonucu bulacak olan algoritma buydu fakat tek şubeli bir okulun bile olasılıklarının taranması günler alabilecekti. İnternette yaptığım araştırmalarda bu konuda Genetik Algoritma yönteminin kullanıldığını okudum. Mantık olarak sonsuz yoldan oluşan bir çözüm uzayında, en iyi çözüme ulaşmak için belli sayıda rastgele çözüm populasyonu oluşturuluyor. Bu populasyon içindeki en iyiler ayrılıyor. Populasyon içindeki elemanlar çiftleştirililiyor, mutasyona uğratılıyor ve yeni bireyler ortaya çıkarılıyor. En iyi bireyler seçilerek bu işlem nihayi sonuca ulaşana kadar tekrarlanıyor. Bununla ilgili de algoritma yazdım yanlız benim populasyon %90 lardan sonra gelişmedi :)

Hocam 2002-2003 yıllarında visual basic ile dağılım yazılımı geliştirdim. rasgele dağıtıyordu tıkandığı an sil baştan tekrar başlıyordu. bu işlem saniyede 10 veya pc nin gücüne göre 20 defa tekrar ediyordu yaklaşık 5-10 dk da bir kaç sonuç veriyordu .
Fakat herhangi bir dağılım yazılımını incelmediğimden eksikleri vardı mesela şartlı öğretmenlerle ilgili eksikler vardı.

öğretmenin haftalık ders saatiyle okula gelebileceği ders saati arasındaki orana göre puanlama yaptığımı ve esnekliği en fazla olanlar en arkaya bıraktığımı hatırlıyorum.

siz bayağı araştırmalarda bulunmuşsunuz. elinize sağlık.
 
sa. Hocam düşüdüğüm programı yazabilecek olan var mı? ücret vermeyi bile dü
şünüyorum bu konuda... zaman ayırabilecek olan.. okulla ilgili bir program..
 
Geri
Üst