Ö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
© Copyright 2024 Paperzz