Çok depolu araç rotalama probleminin çözümü için önerilen genetik algoritma ve karınca kolonisi optimizasyonu yaklaşımlarının bir araya getirilmesiyle oluşturulmuş olan melez yapının özet kodu Şekil 5.3’de verilmiştir. Bu kod göz önüne alınarak oluşturulan algoritmanın akış süreci ise Şekil 5.4’de verilmiştir. Müşterilerin gruplama işleminin genetik algoritma ile, rotalama işleminin ise karınca kolonisi optimizasyonu ile yapıldığı bu yöntemin çözümü için bilgisayar yardımı alınmış ve önerilen çözüm C# programlama dili ile yazılmış, tüm veriler SQL programında muhafaza edilmiştir. Problem, çözüm için Intel® CoreTM i7 extreme edition dört çekirdekli, 1 GB® ayrılmış bellekle NVIDIA Quadro FX3800M grafik kartı, 8 GB1333 MHz çift kanallı DDR3 bellek ve 500 GB 7200 RPM harddiske sahip olan bilgisayarda çalıştırılmıştır.
135 BEGIN
BÖLÜM 1.
P(0) dairelerini yapılandırmada rassal değerler tarafından başlangıç popülasyonu üret Kullanıcı olarak parametre ayarla
“Popülasyon büyüklüğü” parametresini ayarla “Çaprazlama oranı” parametresini ayarla “Mutasyon oranı” parametresini ayarla “Kuşak aralığı” parametresini ayarla
repeat
Kromozomları uygunluk fonksiyonu ile değerlendir İki kromozoma seçim operatörü uygula
“Rulet tekeri seçim operatörü” uygula Çaprazlama operatörü uygula
“Dairesel çaprazlama operatörü” uygula Mutasyon operatörü uygula
“Komşu iki gen değiştirme mutasyon operatörü” uygula Yavruları değerlendir
if
Yavru P popülasyonundaki en kötü kromozomdan daha iyiyse
then
En kötü kromozomu yavru ile değiştir
end if
Jenerasyon = Jenerasyon + l
until
“Üretilen maksimum jenerasyon sayısı” durma kuralına ulaşana kadar En iyi kromozomu sonuç olarak seç ve 2. bölüme geç
BÖLÜM 2.
Kullanıcı olarak parametre ayarla
“İterasyon sayısı” parametresini ayarla,
“q0” parametresini ayarla, “α” parametresini ayarla, “β” parametresini ayarla
“En yakın komşu metodu” ile aday listelerini belirle repeat
Aday listesindeki müşteri sayısı kadar karıncayı depoda konumlandır Başlangıç feromon değerini hesapla (0
n Lnn
1
), karıncaları rastsal olarak ata
repeat
Geçiş kuralını uygula
i = 0 to n ve j = 0 to m için
Bir sonraki müşteriyi Denklem (3.20) ve Denklem (3.21)’ya göre seç Seçilen müşteriye karıncayı gönder
Karınca tarafından gidilen şehri tabu-yasaklar listesine ekle until
Başlangıç aday listesi = tabu listesi Global feromon güncellemesi yap
k = 1 to m için Lk(t) ve Lbest hesapla
Feromonu Denklem (3.25) ve Denklem (3.7)’ye göre güncelle
until
“Maksimum iterasyon sayısı” durma kuralına ulaşana kadar
END.
136 Hayır Evet Hayır Hayır Evet Hayır Evet Hayır Evet
Şekil 5.4 Algoritmanın akış şeması
Bi ri n ci a şa m a (g ru p la m a) İki n ci a şa m a (r ot al am a) Başla
Depoların etrafında rastsal olarak birbirini kesmeyen daireler oluşturulur ve bu dairelerin içinde kalan müşteriler dahil oldukları dairelerin deposuna atanarak gruplanır
Dairelerin dışında kalan müşteriler kendilerine en yakın depoya atanarak gruplanır
Popülasyonun uygunluk değeri hesaplanır
Popülasyona çaprazlama operatörü uygulanır Popülasyona mutasyon
operatörü uygulanır Her bir depo için depo merkez alınarak aday listeleri
oluşturulur
Her aday listesinde n = m tane karınca depoda konumlandırılır
Her aday listesinde tüm yollara τ0 başlangıç feromon
değeri atanır
Başlangıçta tabu listelerinde sadece depo bulunur
Karınca kolonisi optimizasyonu ile bir sonraki müşteriye gidilir
Gidilen müşteri aday listesinden çıkartılır ve tabu listesine eklenir
En kısa turu yapan karınca için global feromon güncellemesi yapılır
Bitir Çözüm?
Maksimum nesil sayısına
ulaşıldı mı?
Tabu listesi başlangıç aday listesine eşit mi? (aday listesi = )
Popülasyona seçim operatörü uygulanır
Belirlenen iterasyon sayısına ulaşıldı mı?
Her aday listesinde en kısa yollar seçilir
137
Geliştirilen yöntemi çözmek için oluşturulan programın daha kolay anlaşılması açısından kullanıcı arayüzü oluşturulmuştur. Bu arayüze yerleştirilen komutlar ile seçilen problem setine göre müşteriler ve depolar koordinatlarıyla ekrana gelmekte ve işlem adımları ekrana yansıtılmaktadır. Ayrıca arayüz üzerindeki pencereler sayesinde de programda kullanılan algoritmalara ait parametrelerin değiştirilmesi ve bu parametrelerin problemin çözümünü ne şekilde etkileyebileceğinin izlenmesi sağlanmaktadır.
Şekil 5.5’de 11. problem seti için genetik algoritma çalışmasının başlangıç durumu yani seçilen problem setinin depo ve müşteri bilgileri ile koordinatlar dahilinde ekrana yüklenmesi gösterilmiştir.
138
Şekil 5.5 Kullanıcı arayüzü ile verilerin ekrana yüklenmesi
Seçilen problem için depo ve müşteri koordinat bilgileri ekrana yüklendikten sonra, önerilen geometrik şekil temelli genetik kümeleme metodunun ilk adımı olan rastlantısal çap uzunluklarına sahip dairelerin çizimi gerçekleştirilir. Örnek olarak alınan 11. problem seti için beş ayrı depodan çizilen rastlantısal daireler Şekil 5.6’da gösterilmiştir.
139
Şekil 5.6 Kullanıcı arayüzü ile rastlantısal çap uzunluklu daire çizim işleminin ekran görüntüsü
Rassal çap uzunluklarına sahip dairelerin çizilmesinin ardından genetik kümeleme işlemini gerçekleştirecek olan tüm genetik algoritma operatörleri çalıştırılır. Geliştirilen genetik kümeleme çözüm yöntemi ile çok depolu araç rotalama problemi için rastsal olarak çizilen daireler ve bu daireler esas alınarak yapılan genetik algoritma işlemleri sonucu oluşturulan kümeler arası müşteri dağılımı rapor edilebilmektedir. Şekil 5.7’de 11. problem seti için tüm genetik algoritma işlemlerinin gerçekleştirilmesi sonucu elde edilen son müşteri dağılımı gösterilmiştir.
140
Şekil 5.7 Kullanıcı arayüzü ile birinci aşama(gruplama) çözüm sonucunun gösterimi Geliştirilen kullanıcı arayüzü ile hangi müşterilerin hangi depolara gruplanacağı belirlendikten sonra genetik algoritma işlemleri tamamlanıp karınca kolonisi optimizasyonuna geçilir. Arayüzün bu kısımında da her bir grup farklı renklerle ifade edilerek hangi müşterilerin hangi depodan hizmet alacağı görsel olarak kullanıcının hizmetine sunulur. Karınca kolonisi sisteminin çalışma adımları da yine ekranda gösterilir.
İşlemlerin sonucunda program çıktı olarak karıncalar tarafından kat edilen toplam mesafeyi ve bu mesafeyi gerçekleştirdikleri rotayı verir.
Ekranın sol tarafında bulunan parametre pencerelerinin değiştirilmesi ile de mevcut çözüm üzerinde değişiklikler yapılarak bu değişikliklerin çözüm üzerine olan etkisi incelenebilir. Buna göre 11. problem seti için Şekil 5.8’de genetik algoritma (birinci aşama) sonucu elde edilen verilerin karınca kolonisi optimizasyonu (ikinci aşama)
141
arayüzüne atanması ve Şekil 5.9’da da aktarılan bu verilerle yapılan karınca kolonisi optimizasyonu işlemleri ile elde edilen nihai sonuç gösterilmiştir.
Şekil 5.8 Genetik algoritma (birinci aşama) sonucu elde edilen verilerin karınca kolonisi optimizasyonu (ikinci aşama) arayüzüne atanması
142
Şekil 5.9 Önerilen genetik algoritma ve karınca kolonisi optimizasyonu algoritma yapısının çalıştırılması ile nihai sonucun elde edilmesi