Genetik Algoritma ile Dağıtım Problemi-Araç Rotalama Problemi (Genetik Algoritma, C#)

Bu slayt gösterisi için JavaScript gerekir.

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu

GİRİŞ

        21.yüzyılın dünyasında bilgisayarın daha etkin kullanılması ile birlikte özellikle büyük firmalar dağıtım ağ yapılarını yeniden düzenlemektedirler. Optimal dağıtım yöntemleri zaman, maliyet ve kalite açısından işletmelere rekabet avantajı kazandırmaktadır. Özellikle coğrafi açıdan ulaşımın zor olduğu bölgelere uygun dağıtım kanalının seçilmesi müşterileri ihtiyaçlarının zamanında temin edilmesini sağlar. Araç güzergahlarının belirlenmesi, taşıma yapacak araç tiplerinin seçimi, araç kapasitelerinin düzenlenmesi ve ürünlerin yerlerine ulaşımının takip edilmesi gerekmektedir. Böylelikle işletmeler rekabetçi ortamda rakipleri karşısında önemli pazar payı elde etmektedirler.

        Araç Rotalama Problemi (ARP),    “bir noktadan başlayarak farklı düğüm noktalarına (şehir, hedef, vs.),en kısa süre veya en düşük maliyetle en az sayıda araç ile uğranılmasını eniyileyen problem çeşitidir”(Pakkan vd. 2010:78). ARP ilk olarak Danzig ve Ramser tarafından 1959 yılında tanımlanmıştır.  Temelde depodan çıkan araç her bir müşteriye bir kez uğrar ve depoya tekrar döner.  Firma tarafından gönderilen araç sayısı ve gidilen müşteri sayısı az ise çözüme kesin çözüm algoritmaları ile kolaylıkla ulaşılabilir. Müşteri sayısı ve dağıtımı yapan araç sayısı arttıkça bilgisayar işlem süresi uzamaktadır. ARP çözümü zor olan problemler (NPL-Hard) için kesin çözüm algoritmaları yerine sezgisel ve metasezgisel yöntemler kullanılmaktadır(Çolak vd. 2009:171-173).

Okumaya devam et “Genetik Algoritma ile Dağıtım Problemi-Araç Rotalama Problemi (Genetik Algoritma, 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 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. Okumaya devam et “Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)”

Ödüllü Programlama Sorusu ve Çözümü (C#) (Yazılım yeni başlayan için algoritma geliştirme)

Bu soru TBD Genç Ankara Şubesinin hazırladığı 2011 Şubat ayı programlama yarışmasının sorusuydu. Soruyu doğru cevaplandıranlar arasından iki kişiye kitap hediye edildi. Şanslı olanlardan birisi de bendim. Soru şöyleydi:

TBD Genç Ankara – Ödüllü Programlama Sorusu 12
(Bu soru TBD Genç Ankara Şubat 2011 bülteninde yayımlanmıştır.)
Soru 12: Uzun İp

Problem

Elinizde 100 metrelik düz ve iki uçlu bir ip var ve bu ip birkaç ipin birleştirilmesinden oluşturulmuş. Sizden bu kaynak noktalarından herhangi rastgele ikisini çözdüğünüzde oluşacak en büyük parçanın verilen bir A sayısından büyük veya eşit olma ihtimalini bulmanız isteniyor.

Girdisindede size ipin kaç tane kaynak noktası olduğu N, kaynak noktalarının ipin sol ucundan kaç metre uzakta olduğu ve A sayısının verileceği, çıktısında sadece ihtimalin ondalık gösterimini yazacak bir konsol uygulaması yazmanız isteniyor.

Açıklayıcı olması açısından, istenen sonuç, N kaynak noktasından herhangi (birbirinden farklı) ikisi çözüldüğünde oluşan parçalardan en büyüğünün uzunluğunun A’dan büyük veya eşit olma olasılığının ondalık gösterimidir. Lütfen girdi ve çıktı biçimini ve kısıtlamaları dikkatli okuyunuz.

Okumaya devam et “Ödüllü Programlama Sorusu ve Çözümü (C#) (Yazılım yeni başlayan için algoritma geliştirme)”