genetġk algorġtmalar ġle haftalık ders programının

ÖZEL EGE LĠSESĠ
GENETĠK ALGORĠTMALAR ĠLE
HAFTALIK DERS PROGRAMININ HAZIRLANMASI
HAZIRLAYAN ÖĞRENCĠLER:
Berkin ĠNAN
Doğa YÜKSEL
DANIġMAN ÖĞRETMEN:
ĠZMĠR
2014
Aslı ÇAKIR
ĠÇĠNDEKĠLER
1. PROJENĠN AMACI………………………………………………………………………………….
3
2. GĠRĠġ…………………………………….………………………………………………................
3
3. YÖNTEM………………………………………………………………………………………..……
6
4. SONUÇ…………………………………………………...….…....……………………………….....
12
5. TARTIġMA…………………………………………………………………………………………...
12
KAYNAKLAR…………………………………………………………….…....……………………….
13
2
1. PROJENĠN AMACI
Haftalık ders programı oluşturma, çizelgeleme (timetabling) problemlerinden biridir.
Bu projede, bir liseye ait haftalık ders programlarının, genetik algoritmalar aracılığıyla
otomatik olarak hazırlanması amaçlanmıştır.
2. GĠRĠġ
Bu bölümde, projede geliştirilen yöntemde kullanılan genetik algoritmalar ve özellikleri
anlatılmaktadır.
Genetik Algoritmalar
Genetik algoritma, doğadan ilham alınarak yapılmış bir en iyiyi bulma yöntemidir.
Doğada en güçlünün yaşaması kanunu burada da geçerlidir. Uygun bireyler yaşar, kötü
bireylerin soyu tükenir. En uygun bireyi bulurken kullandığı yöntem evrimdeki aşamalara
benzetilebilir. Bu aşamalar sırasıyla populasyonun üretilmesi, çaprazlama(cross-over),
mutasyon ve değerlendirmedir. İlk populasyon üretildikten sonraki populasyonlarda elitizm,
yani oluşan bireylerin en uygunlarının yeni populasyona aktarılması, devreye girer [1]. Bir
bireyin uygunluğu populasyondaki yeri ile belli olur ve bu bireylerin çoğalması için onlara
daha çok şans tanınır. Genetik algoritma ilk kez John Holland tarafından ortaya atılmıştır.
Genetik algoritma matematik, fizik, mühendislik ve daha birçok alanda kullanılır. Genetik
algoritmaların temel akış şeması Şekil 1’de görülmektedir.
Başla
Başlangıç
popülasyonunun
oluşturulması
Dur
Popülasyonu
değerlendir
Elitizm
E
Çaprazlama
Mutasyon
Uygun
sonuca
ulaşıldı
mı?
Popülasyonu
değerlendir
H
Şekil 1
Genetik Algoritma
Akış Şeması
3
2.1 Kromozom Kodlama Teknikleri
Genetik algoritmada kromozom, çözümlerdir. Her kromozomun içeriği çözüm ile ilgili
bilgiler içerir. Sonuca ulaşmak için ise bu kromozomlar üstünde çaprazlama, mutasyon gibi
işlemler yapılır. Kromozomları genel olarak üç farklı şekilde kodlanmaktadır [2][3][4].
Ġkili Kodlama: İkili (binary) kodlama en yaygın kromozom temsillerindendir. Bir
özelliğin olma durumu 1, olmama durumu 0 ile gösterilir.
Örnek:
Kromozom 1
01101101010110
Kromozom 2
11001010101001
Permütasyon Kodlama: Gezgin satıcı problemi ve çizelgeleme gibi çözüm içerisinde
sıralamanın olduğu problemlerde kullanılır.
Örnek:
Kromozom 1
198346527
Kromozom 2
648273195
Değer Kodlama : Değer kodlamada kromozom çözüm hakkındaki değerlerden
oluşur.
Kromozom 1
(DUR), (İLERLE), (DUR), (ZIPLA)
Kromozom 2
(ZIPLA), (DUR), (DUR), (ZIPLA)
2.2 Çaprazlama
Çaprazlama, iki ebeveynden yavru bireylerin oluşturulma işlemidir. Populasyondaki
bireyler çaprazlama işlemine tabi tutularak yeni nesil elde edilir. Çaprazlama işlemiyle yeni
nesil oluşturulmadan önce, populasyondaki uygunluk değeri yüksek olan bireylerden bir
kısmı doğrudan yeni nesile aktarılır. Bu işlem elitizm olarak adlandırılır ve elitizm işlemiyle bir
önceki nesilde elde edilen kazanım korunmuş olur.
4
Çaprazlama işleminde kullanılan ebeveynlerin uygunluk değerleri, çaprazlama
sonucunda oluşacak olan bireylerin uygunluğunu etkilemektedir. Çaprazlama işleminde
ebeveyn seçimi için farklı yaklaşımlar literatürde yer almaktadır:
Rulet Tekerleği: Rulet tekerleği seçiminde tüm bireyler uygunluk değerlerine göre bir
rulet tekerleğine yerleştirilir. Böylece uygunluk değeri yüksek olan bireylerin çaprazlama
işleminde kullanılma olasılıkları diğer bireylere göre daha fazla olur.
Turnuva Yöntemi: Turnuva yönteminde populasyondan rastgele seçilen bireyler
arasında uygunluk değerine göre turnuva yapılır. Bu bireyler arasından en iyi olanı
çaprazlama için seçilir.
Çaprazlama işlemi için de farklı teknikler yer almaktadır:
Tek Noktalı Çaprazlama
Tek noktalı çaprazlamada ebeveynlerdeki kromozomlar rastgele seçilen bir noktadan
iki parçaya bölünür.
Farklı ebeveynlerden gelen bölünmüş parçalar birleştirilerek yeni
bireyler oluşturulur.
Örnek:
Ebeveyn 1
011101|1101
Ebeveyn 2
110100|0101
Çocuk 1
0111010101
Çocuk 2
1101001101
Çok Noktalı Çaprazlama
Çok noktalı çaprazlamada ebeveynlerdeki kromozomlar rastgele seçilen noktalardan
alt parçalara bölünür.
Farklı ebeveynlerden gelen bölünmüş parçalar birleştirilerek yeni
bireyler oluşturulur.
Örnek:
Kromozom 1
011|101|1101
Kromozom 2
110|100|0101
5
Çocuk 1
0111001101
Çocuk 2
1101010101
2.3 Mutasyon
Mutasyon, çaprazlama sonucunda elde edilen bireyler üzerinde rastgele bir genin
değiştirilmesi işlemidir. Mutasyon işlemi ile genetik çeşitlilik sağlanmaktadır. Tersine çevirme,
sıra değiştirme, değer ekleme/çıkarma gibi işlemler mutasyon operatörleri olarak
kullanılmaktadır.
Örnek:
Birey
01101110101
Mutasyonlu Birey
01101010101
3. YÖNTEM
Bu bölümde, genetik algoritma kullanılarak haftalık ders programı hazırlayan yöntem
anlatılmaktadır. Yöntemde kullanılan genetik algoritma yapıları bir önceki bölümde yer
almaktadır.
Kromozom Temsili
Projede, bireyler (çözümler) her bir hoca için, o hocanın bir haftada gireceği dersleri
gösteren haftalık ders listeleri olarak temsil edilmektedir. Haftalık ders programı her hoca için
haftalık ders sayısı kadar hücresi olan bir ders tablosudur. Popülasyondaki her birey, Java
programlama dilindeki [5] Map yapılarıyla kodlanmıştır. Bu map yapıları ders verecek olan
hocalarla bu hocalara ait haftalık ders listelerini eşleştirmektedir. Örnek olarak Özel Ege
Lisesi’nin haftalık ders sayısı 40’tır. Şekil 2’de görüldüğü üzere her bir hoca, 1’den 40’a kadar
numaralandırılmış bir listeye sahiptir. Bu listenin her bir hücresinde hocanın o saatte girmesi
gereken dersin adı bulunmaktadır. Ders adları sınıfları birbirinden ayırt edecek şekilde
tanımlanmıştır. Örneğin, “MAT_11A” 11-A sınıfının matematik dersini, “MAT_10B” ise 10-B
sınıfının matematik dersini göstermektedir. Şekil 3’te, popülasyonda yer alan bir bireydeki iki
hocaya ait ders listesi yer almaktadır.
6
Hocalar
Hocaya Ait Ders Listesi
Hoca 1
Hoca 1 için ders listesi
Hoca 2
Hoca 2 için ders listesi
Hoca 3
Hoca 3 için ders listesi
Şekil 2
Map yapısını gösteren şema
Pazartesi
Ruşen
Sönmez
MAT_11A
MAT_11A
Salı
MAT_10A MAT_10B
Çarşamba
MAT_11A
Perşembe
MAT_11A
MAT_10B MAT_10B MAT_10A MAT_10A
Cuma
Pazartesi
BİY_10A
BİY_10A
BİY_10D
BİY_10C
BİY_10B BİY_10B
Salı
Mesut
Esen
Çarşamba
BİY_10D
Perşembe
Cuma
BİY_11A
BİY_11A
BİY_11A
BİY_10C
Şekil 3
Örnek bir birey.
BaĢlangıç Populasyonunun OluĢturulması
Başlangıç populasyonunun oluşturulması, hocalara atanan derslerin rastgele bir
şekilde haftalık ders listesi üzerinde yerleştirilmesi işlemidir. Bu işlemde ilk olarak, daha
önceden hazırlanmış olan ve içerisinde hocalara ait dersler ve ders saatlerini içeren dosya
okunur. Dosya okunmasıyla elde edilen ders ve ders saatleri bilgileri daha sonra rastgele
atama yapılırken ulaşılacaktır. Rastgele atama için ilk adım bir hocadan başlayarak onun bir
dersini seçip rastgele bir sayı üretmektir. Bu sayı o hocanın listesinde kaçıncı ders saatinde
seçilen dersin yerleştireceğini belirler. Aynı ders saatine tekrar ders yazılmayacak şekilde
seçilen dersin haftalık ders sayısı kadar bu tekrar edilir. Daha sonra varsa aynı hocanın diğer
7
dersleri için de hocanın programındaki bir ders saatinin üzerine tekrar ders yazılmayacak
şekilde bu işlem yapılır. Bu şekilde tüm hocalar için hoca sayısı kadar ders listesi
oluşturulmuş olur. Her adımda bu listeyle hoca eşlenerek Map yapısına eklenir. Bu şekilde bir
birey oluşturulur. Bu popülasyonun her bir bireyi için tekrarlanır. Bu yüzden kalabalık
popülasyonlar üzerinde algoritmanın yavaşladığı görülür. Şekil 4’te 2 bireyden oluşan örnek
bir popülasyon gösterimi yer almaktadır. Gösterimde renkli olarak belirlenen yerlerde
hocalara ait dersler yer almaktadır.
Pazartesi
Salı
Ruşen Sönmez
Çarşamba
Perşembe
Cuma
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
Cuma
Pazartesi
Salı
Ruşen Sönmez
Çarşamba
Perşembe
Cuma
8
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
Cuma
Şekil 4
2 bireyden oluşan bir popülasyon
Çaprazlama
Projede geliştirilen yöntemde çaprazlama işlemi bir önceki bölümde anlatılan “tek
noktalı çaprazlama” kullanılmaktadır. Çaprazlama işleminde, birinci ebeveynde yer alan ilk
(K/2) hocanın ders listeleri birinci çocuğa, son (K/2) hocanın ders listeleri ise ikinci çocuğa
kopyalanır. Daha sonra ikinci ebeveyndeki ilk (K/2) hocanın ders listeleri ikinci çocuğa, son
(K/2) ders listeleri ise ilk çocuğa kopyalanır. Şekil 5.1 ve Şekil 5.2’de sırasıyla, Şekil 4’te
gösterilen 2 bireyin çaprazlanması sonucu elde edilen bireyler yer almaktadır.
1. bireyin 1.
hocası
Pazartesi
Ruşen Sönmez
Çarşamba
Salı
Perşembe
Cuma
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
2. bireyin 2.
hocası
Cuma
Şekil 5.1
9
2. bireyin 1.
hocası
Pazartesi
Salı
Ruşen Sönmez Çarşamba
Perşembe
Cuma
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
2. bireyin 1.
hocası
Cuma
Şekil 5.2
Şekil 4’te verilen bireylerden oluşan iki yavru birey
Yeni nesile aktarılacak olan bireylerin bir kısmı bu çaprazlama yöntemiyle
oluşturulurken bir kısmı da elitizm yöntemiyle elde edilmektedir. Elitizm yönteminde, uygunluk
değeri yüksek olan bireyler doğrudan bir sonraki nesile aktarılmaktadır.
Mutasyon
Projede geliştirilen yöntemde mutasyon işlemi için bir önceki bölümde anlatılan “sıra
değiştirme” yöntemi kullanılmaktadır. Mutasyon işleminde, birey içerisinden rastgele seçilen
bir hocaya ait ders listesinden rastgele seçilen iki günün yerleri değiştirilmektedir. Birey
üzerinde mutasyon işleminin uygulanması kararı daha önceden belirlenen bir olasılığa göre
verilmektedir.
Şekil 6.1 ve Şekil 6.2’de yer alan örnekte sırasıyla bir bireyin mutasyona uğramadan
önce ve uğradıktan sonraki durumları gösterilmektedir. Hca Mesut Esen olsun. Örnekte,
mutasyon olasılığına göre seçilen bireyde, rastgele seçilen bir hocanın Pazartesi ve
Çarşamba günlerinin mutasyona uğraması yapılmaktadır.
10
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
Cuma
Şekil 6.1
Mutasyona uğratılacak bireyde hangi günlerin değişeceği gösterilmiştir
Pazartesi
Salı
Mesut Esen
Çarşamba
Perşembe
Cuma
Şekil 6.2
Mutasyon sonucu oluşan birey
Değerlendirme
Yaratılan ve birçok şekilde değişikliğe uğrayan bu bireylerin yapılan uygulama için
uygun olup olmadığını test etmek gerekir. Bizim ders programı problemimizde istenen şey
aynı sınıfa birden fazla hocanın aynı anda ders vermemesidir. Bu yüzden yapılan
değerlendirme fonksiyonu her bireydeki aynı anda aynı sınıfa giren hoca çakışmalarını
hesaplar. Bu çakışmalar için her bireye ceza puanı verilir. Bu şekilde ceza puanları
karşılaştırılarak hangi bireyin daha iyi olduğu anlaşılabilir. Elitizm yapılırken de en iyi olan
bireyler bu ceza puanlarına göre en az puana sahip bireyler seçilir. Eğer ceza puanı 0 olan,
hiç ceza almamış, bir birey bulunursa bu istenilen ders programının üretildiği anlamına gelir.
11
4. SONUÇ
Bu
bölümde,
projede
geliştirilen
yönteme
ait
simülasyon
altyapısı,
parametreleri ve elde edilen sonuçlar anlatılmaktadır.
Altyapı
Projede geliştirilen yöntem Java programlama dili kullanılarak Eclipse[6]
geliştirme ortamında kodlanmıştır. Simülasyonlar, Intel Core 2 Quad CPU Q6600
2.40 GHz özelliklere sahip işlemciye ve 8 GB belleğe sahip 64 bitlik bir bilgisayarda
çalıştırılmıştır.
Parametreler
Geliştirilen yöntem farklı parametreler ile test edilmiştir. Elde edilen test
sonuçlarına göre en iyi sonucu veren parametreler Tablo 1’de yer almaktadır.
Tablo 1. En iyi sonucu veren parametreler
Nesil Sayısı
1000
Birey Sayısı
10000
Elitizim Oranı(%)
5
Mutasyon Oranı (%)
0.1
Popülasyondaki birey sayısı arttırıldığında, programın çalışması yavaşlamakta ve çok
geç sonuçlar vermektedir. Hatta işlemci ve bellek kullanımının artmasıyla bilgisayarda
kilitlenmeler yaşanmaktadır. Mutasyon oranı arttırıldığında uygun bireylerde de bozulmalar
gözlenmektedir. Elitizim oranı arttırıldığında, nesiller arası çeşitlilikte azalma gözlenmekte ve
çözüme ulaşılamamaktadır.
5.TARTIġMA
Bu bölümde proje hazırlanırken karşılaşılan sorunlar, proje hakkındaki fikirlerimiz ve
projenin geleceği hakkındaki düşüncelerimizi aktaracağız.
Proje çalışmalarına başlamadan önce projemizin belirli bir kitlenin sorununu çözmesi
üzerine yoğunlaştık ve baktığımızda en yakınımızdaki öğretmenlerimizi ve okul çalışanlarını
gördük.
12
Uygun bir ders programı hazırlamak için haftalarca çalışmak zorundaydılar.
Hazırladıkları ders programı hem öğretmen hem de öğrenci açısından tatmin edici düzeyde
değildi. Bu sebeplerden dolayı bu projeyi yapmaya karar verdik.
Projeyi yaparken, genetik algoritma basamaklarını birbirinden bağımsız olarak ele alıp
modüler bir yapı ortaya koyduk. Java programlama dilinde yer alan hazır veri yapıları işimizi
oldukça kolaylaştırmasına rağmen, özellikle veri yapılarının referans ile çağırılmasından
dolayı bazı zorluklarla da karşılaştık. Bu zorlukları aşmak için farklı çözüm yöntemleri
denedik.
Projede sonucunda, hedeflediğimiz maddelerin büyük bir bölümünü gerçekleştirdik.
Gelecek çalışmalarda; öğretmenlerin istedikleri günlere dersleri yerleştiren, zor derslerin arka
arkaya gelmesini engelleyen vb.. gibi birtakım kısıtları da eklemeyi planlamaktayız. Bu
eklemelerle birlikte, projemizin ülkemizdeki okullarda ders programlarının hazırlanması için
kullanılmasını hedeflemekteyiz.
KAYNAKLAR
[1] Mitchell, Melanie (1996). An Introduction to Genetic Algorithms. Cambridge, MA:
MIT Press.
[2] Michalewicz, Zbigniew (1996). Genetic Algorithms + Data Structures = Evolution
Programs. Springer-Verlag.
[3] İşçi Ö. ve Korukoğlu, S., (2003), Genetik Algoritma Yaklaşımı ve Yöneylem
Araştırmasında Bir Uygulama, Yönetim ve Ekonomi, 2003, Cilt:10, Sayı:2.
[4] Genetik Algoritmalar, İleri Algoritma Analizi Ders Notları,
http://www.ibrahimcayiroglu.com/Dokumanlar/IleriAlgoritmaAnalizi/IleriAlgoritmaAnalizi7.Hafta-GenetikAlgoritma.pdf, Erişim tarihi: 20.01.2014.
[5] Java Technology, http://www.java.com/en/, Erişim tarihi: 20.01.2014.
[6] Eclipse IDE, http://www.eclipse.org/, Erişim tarihi: 20.01.2014.
13