GENETIC ALGORITHMS | Mobile App Developer

All Posts All Posts

Category: GENETIC ALGORITHMS
Tavlama Benzetimi ve Tabu Arama Algoritmaları ile Gezgin Satıcı Problemi (C#)

Bu slayt gösterisi için JavaScript gerekir.

Gezgin Satıcı Problemi

GSP, n adet şehir arasındaki mesafelerin bilindiği durumda, şehirlerin her birine yalnız bir kez uğramak şartıyla, başlangıç noktasına geri dönülmesi esasına dayalı, tur boyunca kat edilen toplam yolun en kısa olduğu şehir sıralamasının (optimal rota) bulunmasının amaçlandığı bir problemdir. Dağıtım, rotalama, kuruluş yeri belirleme, planlama, lojistik gibi problemlerde geniş bir uygulama alanına sahip olan gezgin satıcı problemi, aynı zamanda optimizasyon alanında, araştırmacılar tarafından üzerinde uzun yıllardır çalışmalar yapılan NP-hard (çözümü zor) sınıfında yer alan bir problemdir.

Tavlama Benzetimi Algoritması (TB)

TB algoritması, ilk olarak 1983 yılında Kirkpatrick, Gelatt ve Vecchi  tarafından sunulmuş olup, optimizasyon problemlerinin çözümü için geliştirilmiş bir yerel arama algoritmasıdır.

GENETİK ALGORİTMA İLE LOJİSTİK AĞ TASARIMI PROBLEMİ – GAMS İLE HİBRİT ÇÖZÜM (C#)

Model, tedarikçilerden satış toplama merkezine sıfır parça (komponent) ve sıfır ürün satışı yaparken, diğer taraftan satış toplama merkezleri aynı zamanda geri dönen ürünleri toplamakta ve bu ürünlerin belirlenen değer seviyelerine göre de tamir, komple demontaj ve atık seçeneklerine göndermektedir. Bu şekilde ileri ve tersine bir akış söz konusudur. Çalışmamdaki modelimi GAMS paket programında çözdürülebilmektedir(GAMS optimizasyon modellerini çözüme ulaştıran bir paket programdır) fakat problem GAMS te küçük boyutlu problemler için çözüme ulaşırken, tesis sayılarını arttırdığında çözümün  uzun süreler aldığını ve uzun sürelere rağmen optimal çözümler elde edilmemiştir. Bu problem NP hard problem sınıfında, Genetık algorıma ile yaklaşık kısa sürede yaklaşık çözümler elde etmek istenmiştir. Model yapısı çok basit olup, sadece tedarikçi, fabrika ve dağıtım merkezlerinin açma kapama kararlarını sezgisel algoritma karar verip, geri kalan cebirsel işlemleri GAMS paket programı ile çözmüştür. Yani tüm model komple genetik algoritma değilde Hibrit olarak çözülmüştür.

Kaynak kodları projeye özel olduğu için yayınlanmamıştır.

Genetik Algoritma ile Maksimum Ağırlıklı Clique Problemi ( MWCP ) (Genetik Algoritma, C#)

Bu çalışmada ağırlıkları ve diğer Nodelerle ilişkileri verilmiş bir uzayda en yüksek ağırlığa sahip alt grafın bulunması amaçlanmıştır. Çalışma sonunda büyük bir arama uzayına rağmen doğru çaprazlama şekli ve oranı sayesinde çok kenarlı graflar bulunmuştur. Projede bu çalışma için en uygun olan Rulet tekeri çaprazlama modeli kullanılmıştır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Projenin detayı: maksimum ağırlık projesi

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu

Genetik Algoritma ile Çift Taraflı Montaj Hattı Dengeleme (Genetic Algorithms, C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Rapor ve Kodu

1. GİRİŞ

Bu çalışmada, çift taraflı mondaj hattının her iki tarafı için belirlenmiş çevrim süresi içerisinde istasyon sayısını en aza indirgeme amaçlanmıştır. Operasyonlarda taraf ve istasyon sayısı kısıtları bulunmaktadır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır.

2. Materyal ve Yöntem

Genetik Algoritmalar, daha iyi çözümlere yavaş yavaş bir yaklaşım sağlayan geniş bir problem uzayı boyunca yönlendirilmiş rastgele bir araştırmaya imkan sağlar. Temel avantajı optimize edilmeye çalışılan problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç göstermemeleridir.

Genetik Algoritma ile Araç Rotalama Problemi (Genetik Algoritma, C#)

Bu çalışmada bir firmaya ait farklı taşıma hacmine sahip araçlarla en az araç ve en az yol gidilecek şekilde rotalama amaçlanmıştır. Çalışmada ikili turnuva methodu kullanılmıştır. Çalışma sonunda, araç sayısına göre yapılan nesil ve birey sayısı ayarının ardından  tasarruflu değerler üretilmiştir. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Örnek Genetik Algoritma İle Araç Rotalama Probleminde ;

Şirket Türkiye’de 5 bölgeye hizmet vermektedir. Bölgelerin kapsadığı şehirler şöyledir:
Ankara, Çankırı, Kırıkkale, Kastamonu Ankara Bölge Müdürlüğüne; Kayseri, Kırşehir, Nevşehir, Aksaray, Sivas, Niğde Kayseri Bölge Müdürlüğüne; Samsun, Sinop, Ordu, Tokat, Çorum, Amasya Samsun Bölge Müdürlüğüne; Trabzon, Gümüşhane, Giresun, Rize, Artvin Trabzon Bölge Müdürlüğüne; Zonguldak, Bolu Düzce, Karabük, Bartın Zonguldak Bölge Müdürlüğüne bağlıdır.
Rotanın bulunmasında kısıtlar araç sayısının minimum olması ve yolun en kısa olmasıdır.
Şirketteki Araç Sayıları ve Kapasiteleri:
1 tane 1490 kg’lık Transit
5 tane 7860 kg’lık Isuzu
3 tane 9130 kg’lık Mercedes
1 tane 14670 kg’lık Mercedes olmak üzere 10 tane araç vardır.

Projenin Kodları

Tüm projeyi İNDİR: Kaynak Kodu

Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu ve Rapor

1.Giriş

Bu çalışmada bir kroki üzerinde bulunan noktalar arası rota ve yolun genetik algortima ile bulunması amaçlanmıştır. Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın  problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır. Temelinde gezgin satıcı problemine benzeyen çalışmanın , gezgin satıcı problemine benzer problemler içinde çözüm olması amaçlanmıştır.

2.Genetik Algoritma Yönteminin Probleme Uygulanışı

Problemin çözümü için populasyon büyüklüğü karar verilmelidir. Populasyon büyüklüğü seçilirken aşırı yüksek seçilirse gelişim yavaşlar, aşırı küçük seçilmesi durumunda da araştırma uzayı yetersiz olur. Problemimize en uygun populasyon büyüklüğü 30 birey olarak seçilmiştir. Programın arayüzünde birey sayısı değiştirilebilir. Her kromozom 20 genle temsil edilip, genler kodlanırken değer kodlama yöntemi kullanılmıştır. Her gen yönleri temsil eden 0;Batı, 1;Kuzey, 2;Doğu ve 3;Güney ile belirtilmiştir. Örnek olarak 5 nolu kromozomun genleri:01102033021011023221 gibi 20 gene sahiptir.

Populasyon büyüklüğü tamamlanıp, kromozomlar kodlandıktan sonra uygunluklarına göre seçilim yapıldı. Uygunluk değerleri hesaplanırken noktalar arası seyahat olduğu için kromozomun en son noktası ile ulaşmak istenen arasındaki farka bakılır. Bu yüzden uygunluk fonksiyonumuz 2 fonksiyonun toplamına eşittir. Birinci fonksiyonumuz en son nokta uzaklığı f(y) , ikinci fonksiyonumuz ise kromozomun aldığı yolların toplamı olan toplam mesafe f(z) fonksiyonudur. Uygunluk fonksiyonumuz f(x)=5*f(y)+ f(z) olarak belirlenmiştir. Burada son nokta uzaklığını fonksiyonu problem için daha önemli olduğundan katsayısı artılmıştır. Örneğin 6 nolu kromozom son noktası 21 , ulaşılmak istenen nokta 22 ise f(y)=20, ve aldığı yolların mesafesini ölçen f(z)=550 olduğunu düşünelim ,6 nolu kromozomun uygunluk değeri f(x)=5*20+550=650 olur. Kromozom ulaşılmak istenilen noktaya varmış olsaydı bu değer 550 olacaktı. Burada görüldüğü gibi son noktaya ulaşmak uygunluk değerini hesabının doğruluğunu kanıtlıyor.

Genetik Algoritma Parametreleri

Genetik algoritmanın performansını etkileyen önemli etmenlerden biri kontrol parametrelerinin belirlenmesidir. Kontrol parametrelerinin seçimi problem tiplerine göre farklılık göstermektedir. Farklı problem ve kodlama türlerine göre en uygun kontrol parametrelerin belirlenmesi için birçok çalışma yapılmıştır. Aşağıda GA kontrol parametreleri olan popülasyon büyüklüğü, çaprazlama olasılığı, mutasyon olasılığı, kuşak farkı, seçim yöntemi ve fonksiyon ölçeklemesi açıklanmaktadır.

1.Popülasyon Büyüklüğü

Genetik algoritmanın ilk adımı başlangıç popülasyonunun oluşturulmasıdır. Başlangıç popülasyonunu oluşturan bireylerin uygunluk değerleri GA performansını etkileyen unsurlardan biridir. Popülasyon oluşturan bireylerin sayısı küçük seçildiğinde iterasyonlar daha hızlı olacak ancak algoritmanın yerel optimuma takılma şansı artacaktır. Popülasyonun çok büyük seçilmesi çözüm kalitesini arttıracak ancak algoritmanın adımları daha uzun zaman alacaktır. Goldberg 1985’de, yalnızca kromozom uzunluğuna bağlı bir popülasyon büyüklüğü hesaplama yöntemi önermiştir. Golderg birçok araştırmacının popülasyon büyüklüğünü 30-200 aralığında seçtiğini belirtmiştir. Popülasyon büyüklüğünü kromozom uzunluklarını dikkate alarak belirlenmesinde seçilen yöntemlerden biri n kromozom uzunluğu olmak üzere popülasyon büyüklüğünün [n, 2n] arasında seçilmesidir. Popülasyon büyüklüğünün küçük bir değer olarak belirlenmeye çalışılmasının başlıca nedeni GA’nın diğer meta-sezgisel yöntemlerle çözüm süresi olarak rekabetçi olabilmesidir.

Genetik Algoritma Süreci

Çözülmek üzere tanımlı bir problem verilmesi ve aday çözümlerin birer bit dizisi ile temsil edilmesi halinde, GA şu şekilde çalışır:
1.  N adet kromozom (problem için aday çözümler) içeren rastgele oluşturulmuş bir topluluk ile başla.
2.  Topluluktaki her  x kromozomu için  f(x) uygunluk değerini hesapla.
3.  Aşağıdaki adımları birey  n (topluluk büyüklüğü) oluşturuluncaya kadar tekrarla.
a.  Güncel topluluktan, yüksek uygunluk değerinin seçilme ihtimalini arttırdığını göz önünde bulundurarak, iki ebeveyn kromozom seç. Seçilim, aynı kromozomun birden çok defa ebeveyn olarak seçilmesine olanak verecek şekilde yapılır.
b.  Pc olasılığı (“çaprazlama olasılığı” ya da “çaprazlama oranı”) ile seçilen çifti iki yeni birey
oluşturmak üzere rastgele belirlenen bir noktadan çaprazla. Eğer çaprazlama gerçekleşmezse
ebeveynlerinin birebir kopyası olan iki çocuk oluştur.
c.  Pm olasılığı (“mutasyon olasılığı” ya da “mutasyon oranı”) ile, oluşan iki çocuğu tüm veya bazı locuslarında
mutasyona uğrat.
d.  Sonuçta elde edilen kromozomları yeni topluluğa ekle.
4.  Önceki topluluğu yeni topluluk ile değiştir.
5.  Sonlandırma koşulu sağlandıysa mevcut topluluktaki en iyi çözümü döndür, sağlanmadıysa 2. adıma dön.

1.Kromozomların Kodlanması

Bir problemin çözümünde Genetik Algoritmalar kullanılacaksa çözümün ilk adımı kromozomların nasıl kodlanacağına karar vermektir. Kodlama yaklaşımı çözümün başarısına doğrudan etki eder ve problemin
türüne ve özelliklerine göre farklılık gösterir.