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.

Okumaya devam et “Tavlama Benzetimi ve Tabu Arama Algoritmaları ile Gezgin Satıcı Problemi (C#)”

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.

Okumaya devam et “Genetik Algoritma ile Çift Taraflı Montaj Hattı Dengeleme (Genetic Algorithms, C#)”

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. Okumaya devam et “Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)”

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.

Okumaya devam et “Genetik Algoritma Parametreleri”

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.

Okumaya devam et “Genetik Algoritma Süreci”

Genetik Algoritma Temel Kavramlar

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.

Evrimsel Algoritmalar: Çözüm uzayı içerisinde belirli kurallar dahilinde rastsal arama yapan algoritmalardır. Evrimsel algoritmaların (EA) probleme özgü bilgilere ihtiyacı diğer yöntemlere göre daha azdır.

Kodlama: Probleme ait potansiyel çözümler parametreler kümesi olarak sembolize edilir. Gen olarak da bilinen bu parametreler değerler dizgisi biçimini oluşturacak şekilde birleştirilir. Holland bu dizgelerin en verimli şeklinin ikilik sistemde olduğunu belirtmiştir.

Kromozom: Bir bireyin tam ifadesidir.

Gen: Bir kromozom içerisindeki tek bir özelliktir. Dikkat edilmesi gereken husus bir çocuğun kromozomu genlerden oluşur ve bu genler rastlantı olarak ebeveynlerinden aktarılır. Okumaya devam et “Genetik Algoritma Temel Kavramlar”