Pemrograman Dinamis LANDASAN TEORI

10

2.4 Pemrograman Dinamis

Pemrograman Dinamis adalah metode pemecahan masalah dengan cara menguraikan masalah menjadi sekumpulan langkah atau tahapan sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan [7]. Pada pemrograman dinamis, rangkaian keputusan yang optimal dibuat dengan menggunakan prinsip optimalitas. Prinsip optimalitas yaitu, suatu kebijakan optimal mempunyai sifat bahwa apapun keadaan dan keputusan awal, keputusan selanjutnya harus membentuk suatu kebijakan optimal yang berkaitan dengan keadaan yang dihasilkan dari keputusan awal [1]. Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya [7]. Ada dua pendekatan dalam penyelesaian masalah dengan pemrograman dinamis yaitu maju dan mundur. Misalkan x 1 , x 2 , …, x n menyatakan peubah keputusan yang harus dibuat masing- masing untuk tahap 1, 2, …, n. Maka [7], 1. Pendekatan Maju Pemrograman dinamis maju bekerja mulai dari tahap 1, terus maju ke tahap 2, 3, dan seterusnya sampai tahap n. Runtunan peubah keputusan adalah x 1 , x 2 , …,x n . 2. Pendekatan Mundur Pemrograman dinamis mundur bekerja mulai dari tahap n, terus mundur ke tahap n – 1, n – 2, dan seterusnya sampai tahap 1. Runtunan peubah keputusan adalah x n , x n -1 , …, x 1 . 11 Contoh penerapan pemrograman dinamis pada permasalahan lintasan terpendek, tentukan lintasan terpendek dari Jakarta ke Tasikmalaya dari Gambar 2.6. Jakarta Bekasi Depok Bogor Sukabumi Karawang Cianjur Purwakarta Tasikmalaya Bandung Sumedang Garut 49 32 61 68 50 86 41 24 54 65 80 24 60 41 1 2 3 4 5 6 95 Gambar 2.6 Contoh Permasalahan Lintasan Terpendek Misalkan x 1 , x 2 , .., x 6 = x k adalah simpul-simpul yang dikunjungi pada tahap k k = 1, 2, 3, 4, 5, 6 dengan k adalah banyaknya tahap. Berikut adalah rumusan pemrograman dinamis pada permasalahan lintasan terpendek ini [7]: 1. Pendekatan Maju f k s = f k s = {f k x k ,s }, dengan f k x k , s = + f k-1 x k 2. Pendekatan Mundur f k s = f k s = {f k

s, x

k } , dengan f k

s, x

k = + f k+1 x k Keterangan: s : simpul-simpul pada setiap tahap disebut status. : label sisi dari s ke x k . f k

s, x

k : total label lintasan dari s ke x k. f k s : nilai minimum dari f k

s, x

k . 12 Maka penyelesaian masalah pada contoh diatas adalah sebagai berikut: 1. Penyelesaian Dengan Pendekatan Maju a. Tahap 1 : f 1 s = Tabel 2.1 Tahap 1 s Solusi Optimum f 1 s x 1 Bekasi 41 Jakarta Depok 24 Jakarta Bogor 54 Jakarta b. Tahap 2 : f 2 s = { + f 1 x 2 } Tabel 2.2 Tahap 2 x 2 s f 2 x 2 , s = + f 1 x 2 Solusi Optimum Bekasi Depok Bogor f 2 s x 2 Karawang 65 104 149 65 Bekasi Sukabumi - - 119 119 Bogor c. Tahap 3 : f 3 s = { + f 2 x 3 } Tabel 2.3 Tahap 3 x 3 s f 3 x 3 , s = + f 2 x 3 Solusi Optimum Karawang Sukabumi f 3 s x 3 Purwakarta 106 - 106 Karawang Cianjur - 151 151 Sukabumi d. Tahap 4 : f 4 s = { + f 3 x 4 } Tabel 2.4 Tahap 4 x 4 s f 4 x 4 , s = + f 3 x 4 Solusi Optimum Purwakarta Cianjur f 4 s x 4 Bandung 166 212 166 Purwakarta e. Tahap 5 : f 5 s = { + f 4 x 5 } Tabel 2.5 Tahap 5 x 5 s f 5 x 5 , s = + f 4 x 5 Solusi Optimum Bandung f 5 s x 5 Sumedang 216 216 Bandung Garut 234 234 Bandung 13 f. Tahap 6 : f 6 s = { + f 5 x