• Sonuç bulunamadı

Ç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