DETERMİNİSTİK DİNAMİK PROGRAMLAMA Giriş Biri diğerini izleyen ve karşılıklı etkileri olan bir dizi kararın bütünüyle ele alındığı problemler için geliştirilen karar modelleri ve bunların çözümleri "dinamik programlama" yöntemiyle incelenir. Dinamik programlamanın altında yatan temel prensip principle of optimality adında karar verme aşamasında geçmişte izlenen karar verme süreçlerinden etkilenmeyerek, gelecek adına en optimum ve en düzgün kararı verebilmeyi şart koşan prensiptir. Bir problem, dinamik programlama ile 2 yoldan çözülebilir. Bu yollar; Forward recursion (ileriye yineleme): sorunun başındaki en küçük birimden başlayarak sorunun tamamını çözmek Backward recursion (geriye yineleme): sorunun çözümünün son noktasından başlayarak, başına doğru yol alarak çözmek Richard Bellman tarafından 1954 yılında keşfedilmiş bir yöntemdir ve bu konuda Bellman denklemi denilen algoritma da mevcuttur. Bazı ekonomik değişme ve gelişmeler, gelecek dönem için önceden yapılan planları geçersiz kılabilir. Bu durumda yeni bir planlamaya gereksinim vardır ya da önceki plan güncelleştirilmelidir. Koşullar bir zaman sürecinde değişiyorsa ve bunların alınan kararlara etkisi önemli ise, dinamik programlama modellerine gereksinim vardır. Teknik bilgi Dinamik programlama, n değişkenli bir problemin optimum çözümünü problemi n aşamaya ayrıştırarak ve her aşamada tek değişkenli bir alt problemi çözerek belirler. Bunun hesaplama avantajı, n değişkenli alt problemler yerine tek değişkenli alt problemleri optimum kılacak olmamızdır. Dinamik programlamanın asıl katkısı, problemleri aşamalara ayrıştırmasının çerçevesini oluşturan optimumluk ilkesidir. Optimizasyon problemine bağlı olarak aşamaların yapısı farklılıklar gösterdiğinden, dinamik programlama her bir aşamayı optimum kılmak için gereken hesaplamaların ayrıntısını vermez. Bu ayrıntılar problem çözücü tarafından doğaçlama olarak gerçekleştirilip tasarlanır. Dinamik Programlamanın Yinelenen Yapısı Dinamik programlamada hesaplamalar yinelenerek yapılır, bu bakımdan bir alt problemin optimum çözümü bir sonraki alt problemin girdisidir. Son alt problemi çözdüğümüzde, problemin tamamının optimum çözümüne ulaşmış oluruz. Yinelenen hesaplamaların uygulanma biçimi orijinal problemi nasıl ayrıştırdığımıza bağlıdır. Özellikle, alt problemler bazı ortak kısıtlarla normalde birbirleriyle ilişkilendirilmişlerdir. Bir alt problemden bir sonrakine ilerledikçe bu kısıtların uygunluğuna dikkat etmek zorunludur.
Örnek 1: (En Kısa Yol Problemi- Shortest Route Problem). İki il arasındaki en kısa otoyol bağlantısını seçmek istediğinizi varsayalım. Şekil l'deki şebeke 1. düğümdeki başlangıç iliyle 7. düğümdeki varılacak il arasındaki tüm olası yolları göstermektedir. Aradaki iller içerisinden geçen yollar 1. düğümle 7. düğüm arasındaki yollardır. Başlangıç 1 7 5 8 2 3 12 8 9 7 5 6 9 6 7 4 13 Şekil l Bu problemi 1. ve 7. düğümler arasındaki tüm yolları (burada beş yol bulunmaktadır) ayrıntılı olarak birer birer sayarak çözebiliriz. Ancak çok büyük bir şebekede bu yöntem hesaplama bakımından etkili olmayacaktır. Bu problemi dinamik programlamayla çözmek için problemi aşamalara ayırırız. Şekil 2'deki dikey (kesikli) çizgiler problemin üç aşamasını göstermektedir. Bundan sonra her bir aşama için ayrı ayrı hesaplamaları gerçekleştiririz. 7 7 f 1 f 1 f 2 f 2 f 0 0 8 8 12 12 f 3 21 17 17 5 5 Şekil 2 Genel düşünce, bir aşamanın tüm son düğümlerine olan en kısa (kümülatif) uzaklıkları hesaplamak, sonra bu uzaklıkları bu aşamayı izleyen aşamada girdi olarak kullanmaktır. 1. aşamayla ilgili düğüm noktaları dikkate alınırsa, 2, 3 ve 4. düğümlerinin her birinin başlangıç
düğümü olan 1. düğüme tek bir okla bağlandığını görebiliriz (bkz. Şekil 2). Böylece 1. aşama için elimizde şu bilgiler olur: 1. aşama sonuçlarının özeti 2. düğüme en kısa uzaklık= 7 km (1. düğümden) 3. düğüme en kısa uzaklık= 8 km (1. düğümden) 4. düğüme en kısa uzaklık= 5 km (1. düğümden) Daha sonra, 5. ve 6. düğümlere en kısa (kümülatif) uzaklıkları belirlemek için 2. Aşamaya geçeriz. Önce 5. düğümü ele alırsak, Şekil 2'den görüleceği gibi 5. düğüme ulaşmak için üç olası rota bulunmaktadır. Bunlar (2, 5), (3, 5) ve ( 4, 5)' tir. Bu bilgi, 2, 3 ve 4. düğümlere olan en kısa uzaklıklarla birlikte 5. Düğüme en kısa (kümülatif) uzaklığı aşağıdaki gibi belirler: ( 5. düğüme en kısa uzaklık) = mini;2,3,4 {(i. düğüme en kısa uzaklık) +(i. düğümden 5. düğüme olan uzaklık)} 7+12=19 = min 8+ 8=16 = 12 (4.düğümden) 5 + 7=12 6. düğüm için benzer şekilde aşağıdaki sonucu elde ederiz: (6. düğüme en kısa uzaklık) = mini; 3,4 {(i. düğüme en kısa uzaklık) +(i. düğümden 6. düğüme olan uzaklık)} = min 8+ 9=17 = 17 (3.düğümden) 5+13=18 2. aşama sonuçlarının özeti 5. düğüme en kısa uzaklık= 12 km (4. düğümden) 6. düğüme en kısa uzaklık= 17 km (3. düğümden) Son adım, 3. aşamayı dikkate almaktır. Varış düğümü olan 7. düğüme hem 5. hem de 6. düğümden ulaşılabilir. 2. aşama sonuçlarının özetine ve 5 ile 6. Düğümlerden 7. düğüme olan uzaklıklara bakarak Şunu elde ederiz: (7. düğüme en kısa uzaklık) = min 12+9=21 = 21 (5. düğümden) 17+6=23 3. aşama sonuçlarının özeti 7. düğüme en kısa uzaklık= 21 km (5. düğümden) Yapılan bu hesaplamalar, 1. ve 7. düğüm arasındaki en kısa uzaklığın 21 km olduğunu göstermektedir. Optimum yolu veren iller aşağıdaki gibi belirlenir. 3. aşamanın sonuçlarına bakılarak 7. düğüm 5. düğüme bağlanır. Daha sonra 2. Aşamanın sonuçlarına bakılarak 5.
düğüm 4. düğüme bağlanır. Son olarak 1. Aşamanın sonuçlarına bakılarak 4. düğüm 1. düğüme bağlanır. Böylece 1-4-5-7 yolu optimum yol olur. Şimdi dinamik programlamanın yinelenen hesaplamalarının matematik olarak nasıl ifade edileceğini göstereceğiz. fi(xi): i. aşamada xi. düğüme en kısa uzaklık olsun, d(xi-1, xi): xi-1. düğümden xi. düğüme olan uzaklık diye tanımlayalım. Bu durumda fi aşağıdaki yinelenen eşitlik yardımıyla fi-1 'den hesaplanır: fi(xi) = min { d(xi-1, xi)+ fi-1(xi-1)}, i=1,2,3 tüm uygun yollar Başlangıçta i=1 'dir ve yineleme f0(x0)=0 diye tanımlanır. Eşitliğin gösterdiği gibi, i. aşamada fi(xi) en kısa uzaklıkları, bir sonraki düğüm xi 'ye göre ifade edilmek zorundadır. Dinamik programlama terminolojisinde xi 'den i. aşamada sistemin durumu diye söz edilir. Gerçekte i. aşamada sistemin durumu, aşamaları birbirine bağlayan bir bilgi olarak görülür; böylelikle, geri kalan aşamalar için optimum kararlar, önceki aşamalardaki kararlara nasıl ulaşıldığını yeniden sınamadan alınabilir. Durumun uygun biçimde tanımlanması, her aşamayı ayrı ayrı ele almamızı sağlar ve çözümün tüm aşamalar için uygun olmasını garanti eder. Durum tanımı bizi aşağıdaki birleştirici çerçeveye götürür: Optimumluk ilkesi Kalan aşamalar için gelecekteki kararlar, önceki aş - malarda benimsenen optimum politikaya bakılmaksızın oluşturulacaktır. Örnek 1' deki hesaplamalarda bu ilkenin yerine getirildiği açıkça görülmektedir. Örneğin 3. aşamada 5. ve 6. düğümlere en kısa uzaklık kullanılmış, bu düğüm noktalarına 1. düğüm noktasından nasıl ulaşıldığıyla ilgilenilmemiştir. Ödev: Örnek 1 i aşağıdaki yol uzunlukları kullanıldığını varsayarak tekrar çözün. d(1, 2) = 5 d(1, 3) = 9 d(1, 4) = 8 d(2, 5) = 10 d(2, 6) = 17 d(3, 5) = 4 d(3, 6) = 10 d(4, 5) = 9 d(4, 6) = 9 d(5, 7) = 8 d(6, 7) = 9 İleriye ve Geriye Doğru Yineleme Örnek 1'de, hesaplamalar 1. aşamadan 3. aşamaya yapılarak ileriye doğru yineleme kullanılmıştır. Aynı örnek, 3. aşamadan başlayıp 1. aşamada bitecek şekilde geriye doğru yinelemeyle de çözülebilir. İleriye ve geriye doğru yineleme aynı sonucu verir. İleriye doğru yineleme daha mantıklı görünmekle birlikte, dinamik programlama literatürü değişmez bir biçimde geriye doğru yinelemeyi kullanmaktadır. Bu tercihin nedeni, geriye doğru yinelemenin hesaplama bakımından genelde daha etkili olmasıdır. Biz geriye doğru yinelemeyi Örnek l' e
uygulayarak göstereceğiz. Bu, dinamik programlama hesaplamalarının derli toplu bir biçimde sunulmasına da olanak verecektir. Örnek 1 için geriye doğru yineleme denklemi aşağıdaki gibi olacaktır; fi(xi) = min{d(xi, xi+1) + fi+1(xi+1)}, i=1,2,3 tüm uygun yollar Burada x4 = 7 için. f4(x4) = 0'dır. Bu hesaplamalara ait sıra f3 f2 f 1 'dir. 3. aşama: 7. düğüm (x4 = 7), 5. ve 6. (x3 = 5 ve 6) düğümlere sadece birer yolla bağlandığından, seçim yapılacak alternatif yoktur ve 3. aşamanın sonuçları aşağıdaki gibi özetlenir: d (x3, x4) Optimum çözüm x3 x4 = 7 f3(x3) x4* 5 9 9 7 6 6 6 7 2. aşama: 2. aşamada (2, 6) yolu uygun bir alternatif değildir çünkü böyle bir alternatif yoktur. 3. aşamada bulunan f3(x3) ile birlikte, uygun alternatifleri aşağıdaki tabloda gösterildiği gibi karşılaştırabiliriz. d(x2, x3) + f3(x3) Optimum çözüm x2 x3 = 7 x3 = 7 f2(x2) x3* 2 12+9=21-21 5 3 8+9=17 9 + 6 = 15 15 6 4 7 + 9 = 16 13+6=19 16 5 2. aşamanın optimum çözümü şöyle yorumlanabilir: Eğer 2. veya 4. ildeyseniz en kısa yol 5. ilden geçen yoldur; 3. ildeyseniz en kısa yol 6. ilden geçen yoldur. 1. aşama: l. düğümden üç alternatif yolumuz vardır: (l, 2), (l, 3) ve (1, 4). f2(x2) i kullanarak aşağıdaki tabloyu elde ederiz: d(x1, x2) + f2 (x2) Optimum çözüm x1 x2 = 2 x2 = 3 x2 = 4 f1(x1) x2* 1 7+21=28 8+15=23 5+16=21 21 4 l. aşamadaki optimum çözüm 1. ilin 4. ile bağlandığını gösterir. 2. aşamadaki optimum çözüm ise 4. ilin 5. ile bağlandığını gösterir. Son olarak 3. aşamadaki optimum çözüm 5. ilin 7. ile bağlandığını gösterir. Böylece optimum yollar 1-4-5-7 ile verilen yollardır ve bunun da uzaklığı 21 km dir.
Genel özet Her uygulamayı incelerken, dinamik programlama modelinin üç temel bileşenine özelikle dikkat gösterilmelidir; 1. Aşamaların tanımlanması 2. Her bir aşamada alternatiflerin tanımlanması 3. Her bir aşama için durumların tanımlanması Bu üç bileşen içinde, durumu tanımlamak en karmaşık ve zor olanıdır. İleride sunulan uygulamalar, modellenmekte olan koşula bağlı olarak durum tanımının değiştiğini göstermektedir. Buna rağmen, uygulamaları incelerken aşağıdaki soruları dikkate almanız yerinde olacaktır: 1. Aşamaları birbirine bağlayan ilişki nedir? 2. Önceki aşamalarda verilen kararları yeniden gözden geçirmeden, içerisinde bulunulan aşamada uygun kararların verilmesi için gereken bilgi nedir? Size "daha mantıklı" gelen bir tanım deneyerek yineleme hesaplamalarında onu kullanabilirsiniz. Her ne olursa olsun, burada sözü edilen tanımların problemin çözümü için doğru yolu gösterdiğini siz de fark edeceksiniz. Bu arada, önerilen akıl yürütme süreci durum kavramını daha iyi anlamanızı sağlayacaktır. Seçilmiş Dinamik Programlama Uygulaması Bu örnek, dinamik programlamanın uygulanması konusunda fikir vermek için seçilmiştir. Kargo Yükleme Modeli Kargo yükleme problemi, sınırlı hacme veya ağırlık kapasitesine sahip bir gemiye kargoların yüklenmesiyle ilgilidir. Her yükün bir gelir düzeyi vardır. Amaç, gemi kapasitesini en çok geliri sağlayacak yükle doldurmaktır. Diğer taraftan, Kargo yükleme problemi, jet pilotunun uçağına alacağı en gerekli (acil) malzemeleri belirlemek zorunda olduğu uçuş çantası veya bir askerin (ya da yürüyüşçünün) çantasında taşıyacağı en gerekli eşyalara karar vermek zorunda olduğu sırt çantası problemi diye de bilinir. Öyle görünüyor ki üç isim deniz, hava ve kara kuvvetlerinin eşitçe temsil edilmesini sağlamak için seçilmiş! n farklı yük ve W kapasiteli (ton) gemi için, mi: kargoda i. yükten kaç birim olacağını göstersin ve her bir yükün getirisi ve hacmi sırasıyla ri ve wi olsun. Problemin genel formülasyonu aşağıdaki tam sayılı doğrusal programlama problemiyle gösterilir: Amaç fonk. Kısıtlar: maks. z = r1m1 + r2m2 +... + rnmn w1m1 + w2m2 +... + wnmn W m1, m2,..., mn 0 ve tamsayı
Dinamik programlama açısından problemi incelediğimizde şu verilere ulaşırız. Modelin üç bileşeni vardır: 1. i. aşama: i yüküyle gösterilir. i=1, 2,..., n. 2. i. aşamadaki alternatifler: kargonun içinde bulunan i yükünün sayısı ile gösterilir. Bunun geliri rimi 'dir. [W/wi], W/wi 'den küçük veya ona eşit en büyük tamsayı olarak tanımlanır ve mi= 0,1,..., [W/wi] olur. 3. i. aşamadaki durum: i, i+ 1,..., ve n. aşamalara (yüklere) tahsis edilecek toplam ağırlık xi ile gösterilir. Bu tanım, ağırlık kısıtının bütün n aşamalarını birbirine bağlayan tek kısıt olması demektir. fi(xi) = verilen xi durumu ve i, i + 1,..., n aşamaları için maksimum gelirler olsun. Geriye doğru yineleme denklemini belirlemek için en kolay yol iki adımlı prosedürdür. 1. adım: fi(xi) yi, fi+1(xi+1) in fonksiyonu olarak aşağıdaki gibi tanımla fi(xi) = maks {rimi + fi+1(xi+1)}, i=l,2,...,n mi= 0, l,..., W/wi xi =0,1,..., W 2. adım: xi+1, sol taraf fi(xi) sadece xi'nin bir fonksiyonu olacak şekilde xi fonksiyonu cinsinden tanımla. Bu formülasyon ile xi - xi+1 ifadesi, i, aşamada kullanılan (tüketilen) ağırlığı gösterecektir. Buradan; xi - xi+1 = wimi veyahut xi+1 = xi - wimi elde edilir. Böylece uygun yineleme denklemi aşağıdaki gibi oluşturulur. fi(xi) = maks {rimi + fi+1(xi- wimi)}, i=l,2,...,n mi= 0, l,..., W/wi xi =0,1,..., W Not: Burada fn+1(xn+1) 0 dır. Örnek 2: 4 tonluk bir gemi üç farklı yükü taşıyabilmektedir. Aşağıdaki tablo, i. kalem için ton cinsinden birim ağırlık wi' yi ve 1000 pb olarak birim gelir ri'yi vermektedir. Toplam geliri maksimum kılmak için gemi nasıl yüklenmelidir? i. yük wi ri 1 2 31 2 3 47 3 1 14 Birim ağırlık wi ve maksimum ağırlık W tam sayılı değerler olarak varsayıldığından, xi durumunun da sadece tam sayılı değerler alacağı varsayılabilir.
3. aşama: 3. aşamaya (3. yüke) tahsis edilecek ağırlık şimdiden kesin olarak bilinemez, fakat 0, 1, 3 ve 4 değerlerinden biri olarak varsayılmak zorundadır (çünkü gemi kapasitesi W= 4 ton'dur). x3 =0 ve x3 = 4 durumları sırasıyla 3. yükü hiçbir şekilde gemiye almamak ve gemi kapasitesinin tamamını 3. yüke tahsis etmek gibi uç durumları gösterir. x3 'ün kalan değerleri ( = 1, 2 ve 3) gemi kapasitesinin kısmen 3. yüke tahsis edildiğini gösterir. Gerçekte x3 için verilen değerler aralığı gemi kapasitesinin 3. yüke bütün olası tahsislerini kapsamaktadır. Birim başına w3 = 1 ton olduğundan, 3. yükün maksimum miktarı 4/1=4 olacaktır. m3 'ün olası değerleri 0, 1, 2, 3 ve 4'tür. Alternatif m3 sadece w3m3 x3 olması durumunda uygundur. Böylelikle (w3m3 x3 gibi) bütün uygun olmayan alternatifler çıkarılır. 3. aşamanın alternatiflerini karşılaştırmak için aşağıdaki denklem esas alınır: f3(x3) = maks{14m3}, maks m3= [4/1] = 4 m3 Aşağıdaki tablo x3 'ün her bir değeri için uygun alternatifleri karşılaştırmaktadır: 14m3 Optimum çözüm x3 m3=0 m3=1 m3=2 m3=3 m3=4 f3(x3) m3* 0 0 - - - - 0 0 1 0 14 - - - 14 1 2 0 14 28 - - 28 2 3 0 14 28 42-42 3 4 0 14 28 42 56 56 4 2. aşama: f2(x2) = maks{47m2+ f3(x2-3m2)}, maks m2= [4/3]=1 m2 3. aşama: 47m2+ f3(x2-3m2) Optimum çözüm x2 m2=0 m2=1 f2(x2) m2* 0 0 + 0 = 0-0 0 1 0 + 14 = 14-14 0 2 0 + 28 = 28-28 0 3 0 + 42 = 42 47 + 0 = 47 47 1 4 0 + 56 = 56 47 + 14 = 61 61 1 f1(x1) = maks{31m1+ f2(x1-2m1)}, maks m1= [4/2] =2 m1 31m1+ f2(x1-2m1) Optimum çözüm x1 m1=0 m1=1 m1=2 f1(x1) m1* 0 0 + 0 = 0 - - 0 0 1 0 + 14 = 14 - - 14 0 2 0 + 28 = 28 31 + 0 = 31-31 1 3 0 + 47 = 47 31 + 14 = 45-47 0 4 0 + 61 = 61 31 + 28 = 59 62 + 0= 62 62 2 Optimum çözüm şu şekilde belirlenir: W= 4 olduğu bilindiğinden, 3. aşamada x1 = 4, optimum alternatifi m1*= 2 olarak verir ve bu, 1. yükten gemiye 2 birim yüklenmesi
gerektiğini belirtir. Bu durumda x2 = x1-2m1* = 4-2x2= 0 olur. 2. aşamada ise x2=0 olduğunda m2* = 0'dır. Buna göre x3 = x2 3m2*= 0-3x0= 0 bulunur. Sıradaki aşama olan 1. aşamada x3 = 0 olduğunda m3* = 0 olur. Böylece kesin optimum çözüm m1* = 2, m2*=0, m3* =0 olarak belirlenir, çözümün geliri 62000 pb' dir. 1. aşama için geliştirilen tabloda, bu aşamanın hesaba katılacak son aşama olması nedeniyle sadece x1 = 4 için gerçekte optimumu bulmamız gerekmekteydi. Duyarlılık analizi yapabilmemizi sağlaması açısından x1 =0, 1, 2 ve 3 de bu tabloya eklenmiştir. Örneğin eğer gemi kapasitesi 4 ton değil de 3 ton olsaydı problem nasıl çözülecekti? Yeni optimum çözüme, 1. aşamada x1 = 4 yerine x1 = 3 alarak başlanacak ve yukarıdaki aşamalar tekrar edilerek sonuca ulaşılacaktı. Kargo yükleme örneği sınırlı kaynakların sonlu sayıda (ekonomik) faaliyet arasında bölüştürülmesini sağlayan tipik bir kaynak tahsisi modelidir. Amaç, gelir fonksiyonunu maksimum kılmaktır. Bu gibi modellerde her aşamada durumun tanımı kargo yükleme modelinde verilen tanıma benzer bir tanım olacaktır. i. aşamadaki durum i, i + 1,... ve n aşamalarına tahsis edilen toplam kaynak miktarıdır. Ödev: Örnek 2'de gemi kapasitesinin maksimum 8 ton olduğunu varsayarak optimum çözümünü bulun.
OLASILIKLI DİNAMİK ROGRAMLAMA Olasılıklı dinamik programlamada her aşamadaki durumlar ve getiriler olasılıklıdır, bu nedenle deterministik dinamik programlamadan farklıdır. Olasılıklı dinamik programlama özellikle stokastik stok problemlerinin ve Markov süreçlerinin çözümünde sıkça kullanılır. Bu bölümde dinamik programlamanın stokastik yapısını ortaya çıkarmak için genel bir örnek anlatılacaktır. Şans Oyunu Rus ruleti oyununun bir çeşidi aşağıdaki gibidir. Çevresi boyunca l'den n'ye birbirini izleyen n numaranın işaretlendiği bir döner çark vardır. Bir kez çevrildiğinde çarkın i numarasında durma olasılığı Pi 'dir. Bir oyuncu çarkı m kez çevirme avantajına sahip olabilmek için x pb öder. Oyuncunun getirisi ise son çevirmede gelen sayının iki katıdır. Oyunun (her seferinde m çevirmeye kadar) makul ölçüde büyük bir zaman diliminde tekrarlandığını varsayarak oyuncu için optimum bir strateji geliştirin. Aşağıdaki tanımları kullanarak problemin dinamik programlama modelinioluşturabiliriz: 1. i. aşama çarkın i. kere döndürülmesiyle gösterilir: i= 1, 2,..., m. 2. Her aşamadaki alternatifler hem çarkı bir kez daha çevirmeyi hem de oyunu sona erdirmeyi içerir. 3. i aşamasında sistemin j durumu, l'den n 'ye kadar olan sayılardan biriyle gösterilir. Buradaki n, son çevirmeyi göstermektedir. fi(j) = Oyun i aşamasındayken ve j ise son çevirmenin sonucu iken beklenen maksimum getiri olsun. Böylece 2 j oyun biterse Son döndürmenin sonucu j iken i aşamasındaki beklenen kazanç = nn pp kk ff İ+1 oyun devam ederse kk=1 elde edilir. Yineleme denklemi aşağıdaki gibi yazılabilir: fm+1(j) = 2j Bitiş: 2j fi(j) = Çevirme: pp kk ff İ+1 (kk) nn kk=1 i = 1,2,3,, m nn f 1 (0) = pp kk ff 2 (kk) kk=1
Yineleme denklemleri için ilk çevirmedeki (i= 1) mantık, sistem durumunun j =O olmasıdır, çünkü oyun daha yeni başlamıştır. Bu yüzden f1(0) = p1f2(1)+ p2f2(2) +. + pnf2(n) olur. Son çevirmeden sonra (i= m), bize m. çevirmenin sonuna bakmaksızın sadece oyunu bitirmek kalır. Böylece fm+1(j) = 2j olur. Yineleme hesaplamalan fm+1 ile başlar ve f1(0) ile sona erer. Böylece m+1 hesaplama aşaması oluşturulur. f1(0) tüm m çevirmelerinin beklenen getirisi olduğundan ve oyunun maliyeti x pb olarak verildiğinden, Beklenen net getiri = f1(0) x olur. Örnek 3: Çevresi l'den 5'e kadar numaralanmış bir rulet tekerleğimiz olsun. Tekerleğin i sayısında durma olasılığı p1 = 0.3, p2 = 0.25, p3 = 0.2, p4 = 0.15, p5 = 0.1 olarak verilmiştir. Oyuncular maksimum 4 çevirme için 5 pb ödemektedirler. Dört çevirmenin her biri için optimum stratejiyi belirleyin ve optimum stratejinin beklenen net getirisini bulun. Örneğimiz yine geri yineleme yöntemi ile çözülecektir. Öncelikle 4 çevirme olduğundan problemi 5 aşamada çözeceğimizi anlıyoruz ve 5 aşama için işlemleri başlatıyoruz. Tekrarlamak gerekirse fi(j) = Oyun i aşamasındayken ve j ise son çevirmenin sonucu iken beklenen maksimum getiridir. 5. aşama f5(j) = 2j (eğer son çevirmeyi gerçekleştirdiysek oyun getirisi 2j olacaktır ve oyun bitecektir.) 4. Çevirmenin sonucu Optimum çözüm j f5(j) Karar 1 2 Bitir 2 4 Bitir 3 6 Bitir 4 8 Bitir 5 10 Bitir 4. aşama f4(j) = maks. {2j, (p1f5(1)+ p2f5(2)+ p3f5(3)+ p4f5(4) + p5f5(5))} = maks. {2j, (0,3*2+0,25*4+0,2*6+0,15*8+0,1*10)} = maks. {2j,5} 3. Çevirmenin Beklenen getiri Optimum çözüm sonucu j Bitir Çevir f5(j) Karar 1 2 5 5 Çevir 2 4 5 5 Çevir 3 6 5 6 Bitir 4 8 5 8 Bitir 5 10 5 10 Bitir
3. aşama f3(j) = maks. {2j, (p1f4(1)+ p2f4(2)+ p3f4(3)+ p4f4(4) + p5f4(5))} = maks. {2j, (0,3*5+0,25*5+0,2*6+0,15*8+0,1*10)} = maks. {2j, 6,15} 3. Çevirmenin Beklenen getiri Optimum çözüm sonucu j Bitir Çevir f4(j) Karar 1 2 6,15 6,15 Çevir 2 4 6,15 6,15 Çevir 3 6 6,15 6,15 Çevir 4 8 6,15 8 Bitir 5 10 6,15 10 Bitir 2. aşama f3(j) = maks. {2j, (p1f3(1)+ p2f3(2)+ p3f3(3)+ p4f3(4) + p5f3(5))} = maks. {2j, (0,3*6,15+0,25*6,15+0,2*6,15+0,15*8+0,1*10)} = maks. {2j, 6,8125} 1. aşama 3. Çevirmenin Beklenen getiri Optimum çözüm sonucu j Bitir Çevir f4(j) Karar 1 2 6,81 6,81 Çevir 2 4 6,81 6,81 Çevir 3 6 6,81 6,81 Çevir 4 8 6,81 8 Bitir 5 10 6,81 10 Bitir f3(j) = maks. {2j, (p1f2(1)+ p2f2(2)+ p3f2(3)+ p4f2(4) + p5f2(5))} = maks. {2j, (0,3*8125+0,25*8125+0,2*8125+0,15*8+0,1*10)} = maks. {2j, 7,31} Oyun başlangıcında tek seçeneğimiz çevirmektir. Önceki tablolardan elde edilen optimum sonuçlar aşağıdaki tabloda özetlenmiştir. Çevirme numarası Optimum strateji 1 Oyun başlatmak için çevir 2 Eğer 1. Çevirmede 1,2,3 geldiyse çevir aksi halde bitir 3 Eğer 2. Çevirmede 1,2,3 geldiyse çevir aksi halde bitir 4 Eğer 3. Çevirmede 1,2 geldiyse çevir aksi halde bitir Oyunun beklenen kazancı 7,31-5= 2,31 pb. Sizce bu sonuç mantıklı mıdır? Yorumlayınız.
Referanslar Taha, H.A. Yöneylem araştırması (Baray Ş.A. ve Esnaf Ş. 6.Basımdan çeviri) 2005 Literatür Yayıncılık, İstanbul http://en.wikipedia.org/wiki/dynamic_programming http://www.itusozluk.com/goster.php/dinamik+programlama