Otomatik ders dağıtım programı (phayton)

  • Konbuyu başlatan Konbuyu başlatan erbay1
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

erbay1

Üye
Mesajlar
45
Bilgisayarınıza Phaytonu kurun. Aşağıdaki "dagitim.py" dosyasını ve "Kitap1.xlsx" dosyalarını masaüstüne çıkarın. Kitap1.xlsx dosyasındaki öğretmen ders saatleri, haftalık ders saatleri, öğretmen kısıtları vb. sayfaları düzenleyip kaydedin.

Masaüstünde Çalıştırma Komutları​

Kodunuzu masaüstünde bulunan dagitim.py ismiyle kaydettiyseniz, işletim sisteminize uygun terminal/komut satırı komutunu kullanarak çalıştırabilirsiniz:

1. Windows (CMD / PowerShell)​

Komut penceresini açıp masaüstü dizinine geçiş yaptıktan sonra çalıştırabilirsiniz:

DOS

Kod:
cd Desktop
python dagitim.py

(Not: Python sistem yolunuza ekli değilse python yerine tam yolunu yazmanız gerekebilir veya doğrudan masaüstündeki dosyanın üzerine sağ tıklayıp terminalde açabilirsiniz.)

2. macOS / Linux (Terminal)​

Terminal uygulamasını açıp masaüstüne ulaştıktan sonra:

Bash

Kod:
cd ~/Desktop
python3 dagitim.py



dagitim.py dosyasını çalıştırın. Masaüstünde "dersprogrami_cikis.xlsx" adlı bir dosya oluşacak ve sınıfların ve öğretmenlerin ders programları oluşacaktır.
Varsayılan süre 180 saniye ayarlandı.
"dagitim.py" dosyasından aratıp
Kod:
solver.parameters.max_time_in_seconds = 180.0
daha iyi sonuç için süreyi azaltıp çoğaltabilirsiniz.
ornek1.webp
örnek2.webp
 

Ekli dosyalar

Son düzenleme:

A.Mevcut Python Kodunun Excel Sayfasından Adığı Veriler

1. Günlük Ders Saatleri: Haftanın her bir günü (Pazartesi, Salı, Çarşamba, Perşembe, Cuma) için kaçar saat ders yapılacağı bilgisi sütun başlıkları ve altındaki değerler üzerinden tamamen okunur ve sisteme işlenir.

2. Sistem bu sayfadaki tüm yapısal eğitim verilerini eksiksiz okur:​

  • Sınıf Adları: Okuldaki sınıfların isimleri (Örn: 5-A vb.).
  • Dersin Adı: Okutulacak derslerin adları.
  • HDS (Haftalık Ders Saati): Her dersin haftalık toplam kaç saat olacağı.
  • Blok Bilgisi: Derslerin kaçar saatlik bloklar hâlinde işleneceği (Örn: 2+2 veya tekli bloklar).
  • Öğretmen Bilgisi: Hangi dersin hangi öğretmen tarafından verileceği.

3.Bu sayfada yer alan sütunlardan kod tarafından okunmaktadır:​

  • Boş Günler Sütunu: Öğretmenlerin izinli/boş olmak istediği günler okunur. Eğer öğretmenin yanında belirli gün isimleri yazıyorsa sistem o öğretmene ilgili günlerde kesinlikle ders atamaz.

B.Mevcut Python Kodunun Fiilen Dikkate Aldığı Kısıtlar

Mevcut Python kodu şu anda bunları hesaba katmaktadır:
  1. Ders Yerleştirme Zorunluluğu: Her ders ve blok, haftalık ders programına tam olarak 1 kez yerleştirilir.
  2. Sınıf Çakışma Kontrolü: Aynı sınıfa aynı saatte birden fazla ders atanamaz.
  3. Öğretmen Çakışma Kontrolü: Bir öğretmen aynı anda iki farklı sınıfta derste olamaz.
  4. Öğretmen Boş Gün Kısıtı (Kodda aktif): ÖĞRETMEN KISITLARI sayfasındaki "BOŞ GÜNLER" sütunu okunur; öğretmenin boş gününde ona ders verilmez.
  5. Aynı Sınıfta Günlük Ders Sınırı (Kodda aktif): Bir öğretmenin aynı sınıfta bir günde alacağı ders saati sınırlandırılır (Genel kurallardaki sınırlamaya benzer şekilde kod içinde uygulanır).
  6. Boşluk (Gap) Cezalandırması (Kodda aktif): Öğretmenin gün içindeki dersleri arasında boşluk kalması durumunda optimizasyon cezalandırma puanı ekler.
  7. Tek Saat Ders Cezalandırması (Kodda aktif): Bir günde sadece 1 saat ders verilmesi durumu ceza puanı ile engellenmeye çalışılır.
 
Son düzenleme:
ilksms
Geri
Üst