• Sonuç bulunamadı

3. ARAÇ ROTALAMA PROBLEMLERİ İÇİN ÇÖZÜM YOLLARI

3.1 Kesin Yöntemler

3.1.6 Dinamik Programlama

Dinamik programlama, bir dizi karar verme işlemini optimize eden bir matematik işlemleri bütünüdür. Temelde, dinamik programlama, problem çözümüne, problemin veya problemin bir kısmının parçalara bölünmesi ve bu parçaların çözülerek, bu çözümlerin depolanması şeklinde bir problem çözüm yaklaşımı sunmaktadır. Bu çözümler, ihtiyaç duyulduğunda, yeniden çözmek yerine, yeniden canlandırılmak suretiyle problemin genel çözümüne eklenerek, nihai çözüme ulaşılmaktadır. Dinamik programlama, çok aşamalı karar verme problemlerinde optimal bir silsileye karar vermede kullanılabilir. Dinamik programlama, özellikle karâr aşamasının zaman periyodunda silsile halinde olan problemlere çok uygundur.

Periyotlar birbirine öyle bir bağla bağlıdır ki bir zaman döneminde alınan kararlar sonraki

karar verme aşamalarını etkilemektedir. Problem, alt problemlere bölünür ve her bir alt problem için optimal bir çözüm bulunur, n sayıda karar verme aşamalarına sahip bir problem, n sayıda ve her biri tek bir karar değişkenine sahip, problemlere bölünür. Hesaplama süresi, bir problem içindeki değişkenler sayısınca eksponensiyal olarak büyürken, alt problemler sayısınca doğrusal olarak büyür. Bir problemin tümü sistem ve alt problemler de basamak olarak düşünülebilir. Dinamik programlamada basamaklar, genellikle, bir zaman aralığını temsil eder. Bir sistemin her bir basamağında, problemin çözüm şanlarına karşılık gelen birden fazla durum vardır. Durumlar, tamamlanmamış çözümleri karakterize eder. Karar verici, her bir basamakta, o basamak için en iyi sonucu veren karan vermelidir. Bir karar, sistemi bir durumdan diğerine taşır. Bir sistemi bir durumdan diğerine taşıyan her bir aşamaya basamak denir. Dinamik programlama genellikle geriye doğru, yani son durumdan ilk duruma doğru, bir işlemler silsilesi şeklinde uygulanır. Bu geriye doğru endükleme tekniği, son durumdan, bir önceki basamağın durumlarına doğru yapılır (Çetin, 2005). Araç rotalama problemleri için dinamik programlama konusunda ise 1971 yılında Elion ve arkadaşları çalışmada bulunmuştur (Alabaş ve Dengiz, 2004).

3.2 Sezgisel Yöntemler

Algoritma mekanik davranan kişiye ve makineye bir takım verilerden yola çıkarak ve sonlu sayıda aşamalardan geçerek belli bir problemi çözme imkanı veren, çok kesin komutlar bütününde oluşmaktadır. Bir algoritmanın çalışmasındaki mutlak zorunluluk, her türlü belirsizlikten arınmış olmasıdır. Bir algoritmanın yürütülmesi, her biri komutla belirlenen bir etkiler dizisi oluşturur ve bir dizi önceki komutun yürütülmesinin sona ermesiyle birlikte yürütülmeye başlar. Algoritmanın temel yapısı olan, zaman içerisindeki bu sıralılık, emredici programlamada temel bir varsayımdır. Genel olarak algoritmaların aşağıdaki özellikleri ele alınmaktadır: (Nabiyev, 2003)

• Genellik,

• Kesin sıralılık,

• Sırayı belirleyen kumanda yapısı,

• Sonluluk ve neticelik.

Algoritma belirli bir işin veya problemin sonucunu elde etmek için art arda uygulanacak adımları ve koşulları kesin olarak ortaya koyar. Buradan da anlaşılacağı gibi algoritma genel olarak tek bir işin kotarılması üzerine yoğunlaşmıştır. Örneğin bir kümenin elemanlarını

sıralama, bir graf üzerinde en kısa yolun bulunması, bir matrisin determinantının alınması gibi algoritmalar tek bir amaca yöneliktir (Erol, 2006).

Feigenbaum ve Fieldman’a göre sezgisellik, problemin durum uzayı çok büyük olduğunda çözümün aranmasını kesin bir biçimde sınırlayan kural, strateji, hile ve diğer etmenlerin kullanımıdır. Dolayısıyla sezgisellik problem karmaşıklık içerdiğinde çözüm için yolun bulunmasındaki yardımcı anahtardır. Ancak bir problem için geçersiz olan sezgisel yaklaşım diğeri için başarılı sonuçlar verebilir. Sezgisel yaklaşım, algoritmik yöntemlerden farklı olarak hedefe ulaşmanın kesin yolunu göstermektedir. Söz konusu zayıflık sezgisel yöntemlerle değil, problem alanının kendisi ile ilgilidir. Diğer bir problem ise doğrudan algoritmaların sezgiselliği ile ilgilidir. Sezgisel yaklaşımların temel adımları aşağıdaki gibidir:

(Nabiyev, 2003)

• Mümkün olabilecek durumların içinde herhangi birinin ele alınması

• Ele alınmış duruma mümkün gidişler uygulayarak durumun değiştirilmesi

• Durumun değerlendirilmesi

• Gereksiz durumların atılması

• Eğer sonuca ulaşılmışsa çözümün tamamlanması, aksi halde yeni değerler ele alınarak işlemlerin tekrarlanması.

Problem için geliştirilmiş bir sezgisel algoritma, aşağıdaki faktörler göz önüne alınarak değerlendirilebilmektedir: (Erol, 2006)

Çözüm Kalitesi ve Hesaplama Zamanı: Çözüm kalitesi ve hesaplama zamanı bir algoritmanın etkinliğinin değerlendirilmesi için önmeli kriterlerdir. Bundan dolayı bir algoritma ayarlanabilir parametreler setine sahip olmalı ve bu parametreler kullanıcıya etkinlik açısında hesaplama maliyeti ile çözüm kalitesi arasında bir vurgulamanın yapılabilmesine imkan vermelidir. Diğer bir deyişle çözüm kalitesi ile hesap zamanı arasındaki ilişki kontrol edilebilmelidir.

Algoritma Basitliği ve Gerçeklenebilirlik: Algoritma prensipleri basit olmalı ve genel olarak uygulanabilir olmalıdır. Bu durum problem yapısı ile ilgili başlangıçta çok az bilgiye sahip olunması halinde bile algoritmanın yeni alanlara kolaylıkla uygulanabilmesini sağlar.

Esneklik: Algoritmalar modelde, sınırlamalarda ve amaç fonksiyonlarında yapılacak değişiklikleri kolayca karşılayabilmelidir.

Dinçlik: Yöntem başlangıç çözümünün seçimine sahip olmaksızın herzaman yüksek kaliteli, kabul edilebilir çözümleri üretebilme Kabiliyetine sahip olmalıdır.

Basitlik ve Analiz Edilebilirlik: Karmaşık algoritmalar, esneklik ve çözüm kalitesi açısından basit algoritmalardan daha zor analiz edilebilmektedir. Algoritma kolayca analiz edilebilir olmalıdır.

Laporte ve Semet 2002 yılında ARP için sezgisel yaklaşımlara farklı bir sınıflandırma önermişlerdir. Sezgiselleri Klasik Sezgiseller ve Metasezgiseller olmak üzere iki ana gruba ayırmışlardır (Ropke, 2005). Klasik sezgiseller çoğunlukla 1960-1990 yılları arasında geliştirilmiştir ve metasezgiseller daha çok son 20 yıl içerisinde gelişme göstermektedir.

Yapısal ve iyileştime sezgiseller çözüm uzayında kısmi sınırlı araştırma alanında gerçekleştirlirler ve genellikle az bir miktar hesaplama zamanı içinde iyi kalitede sonuçlar üretirler. Dahası, bu sezgisellerden bir çoğunun uzantıları gerçek dünya durumunda karşılaşılabilen kısıt çeşitliliğinin hesaplanması için kullanılabilir. Buyüzden ticari paketlerde hala yaygın olarak kullanılmaktadır. Metasezgisellerde vurgu, çözüm uzayının umut verici bölgelerinde derin araştırmalar gerçekleştirebilmesindedir. Bu metotlar genellikle sofistike komşuluk araştırma kurallarını, hafıza yapılarını ve çözümün yeniden birleştirilmesini birleştirir. Bu metotlar kullanılarak elde edilen çözüm kalitesi kalsik sezisellerle elde edilenlerden sıklıkla daha yüksektir ama hesaplama zamanı için ödenen değer artmaktadır.

Dahası, prosedürler duruma bağımlıdırlar ve iyi ayarlanmış parametreye ihtiyaç duyarlar bu da diğer durumlara uyumu zaorlaştırır (Laporte ve diğerleri, 2000; Laporte ve Semet, 1999).