3.3. Dynamic Programming
3.3.1. Deskripsi Dynamic Programming
13
Dynamic programming merupakan prosedur matematis yang dirancang untuk memperbaiki efisiensi perhitungan masalah pemrograman matematis
tertentu dengan menguraikannya menjadi bagian-bagian masalah yang lebih kecil dan lebih sederhana. Pemrograman dinamis pada umumnya menjawab masalah
dalam tahap-tahap, dengan setiap tahap meliputi tepat satu variabel optimasi. Perhitungan di tahap yang berbeda-beda dihubungkan melalui perhitungan
rekursif dengan cara menghasilkan pemecahan optimal bagi seluruh masalah. Nama pemrograman dinamis mungkin berkembang karena penggunaan metode
ini yang melibatkan pengambilan keputusan yang berkaitan dengan waktu. Tetapi, situasi lain dimana waktu bukan merupakan faktor juga dipecahkan oleh program
dinamis. Maka dari itu program dinamis lebih tepat disebut pemrograman multitahap karena pemecahaannya dilakukan secara bertahap.
Teori utama dalam pemrograman dinamis adalah prinsip optimalisasi. Prinsip tersebut pada dasarnya menentukan bagaimana suatu masalah yang
diuraikan dengan benar dapat dijawab dalam tahap-tahap melalui pemakaian perhitungan rekursif. Konsep yang tidak jelas yang digunakan dalam program
dinamis bersamaan dengan notasi matematis yang tidak dikenal seringkali
13
Taha, A. Hamdy. 1996. Riset Operasi. Binarupa Aksara : Jakarta
Universitas Sumatera Utara
merupakan sumber kebingungan. Tetapi, seringnya seseorang menggunakan perumusan dan pemecahan program dinamis maka orang tersebut akan
menganggap program dinamis menjadi lebih mudah dan jelas Taha, 1996.
14
1. Terdapat sejumlah berhingga pilihan yang mungkin.
Pada penyelesaian dengan metode dynamic programming ada beberapa hal yang harus diperhatikan, yaitu:
2. Solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya.
3. Persyaratan optimisasi dan kendala digunakan untuk membatasi sejumlah
pilihan yang harus dipertimbangkan pada suatu tahap. Pada dynamic programming, rangkaian keputusan yang optimal dibuat
dengan menggunakan prinsip optimalitas. Prinsip ini berbunyi : ”Jika solusi total optimal, maka bagian solusi sampai ke tahap ke-k juga optimal.” Prinsip
optimalitas berarti bahwa jika bekerja dari tahap k ke tahap ke k+1, dapat menggunakan hasil optimal dari tahap ke k tanpa harus kembali ke tahap awal.
Jika pada setiap tahap dihitung ongkos cost maka dapat dirumuskan secara
umum:
Ongkos tahap k+1 = ongkos yang dihasilkan pada tahap k + ongkos dari tahap k ke k+1
Dengan prinsip optimalitas, dijamin bahwa pengambilan keputusan pada suatu tahap, adalah keputusan yang benar untuk tahap-tahap selanjutnya.
3.3.2. Karakteristik Permasalahan Dynamic Programming
15
14
Ginting, Rosnani, Penjadwalan Mesin Yogyakarta: Graha Ilmu, 2009. h. 217 – 218.
Universitas Sumatera Utara
Setiap metode pengambilan keputusan memiliki karakteristik persoalan yang berbeda, hal tersebut sesuai dengan kondisi ataupun kasus yang terjadi.
Berikut ini adalah karakteristik persoalan yang dapat diselesaikan dengan metode dynamic programming:
1. Persoalan dapat dibagi menjadi beberapa tahap stage yang pada setiap tahap
hanya diambil satu keputusan. 2.
Masing-masing tahap terdiri dari sejumlah status state yang berhubungan dengan tahap tersebut. Secara umum, status merupakan bermacam
kemungkinan masukan yang ada pada tahap tersebut. 3.
Hasil dari keputusan yang diambil pada setiap tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.
4. Ongkos cost pada suatu tahap meningkat secara teratur steadily dengan
bertambahnya jumlah tahapan. 5.
Ongkos pada suatu tahap bergantung pada ongkos tahap-tahap yang sudah berjalan dan ongkos pada tahap tersebut.
6. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan
yang dilakukan pada tahap sebelumnya. 7.
Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk setiap status
pada tahap k + 1. 8.
Prinsip optimalitas berlaku pada persoalan tersebut Rinaldi Munir, 2004.
15
Munir, Rinaldi. 2004. Dynamic Programming. ITB : Bandung.
Universitas Sumatera Utara
3.3.3. Konsep Dasar dalam Dynamic Programming
16
Konsep-konsep dasar dalam dynamic programming, yaitu: 1.
Dekomposisi Persoalan dynamic programming dapat dipecah-pecah menjadi sub-persoalan
atau tahapan yang lebih kecil dan berurutan. Setiap tahap disebut juga sebagai titik keputusan. Setiap keputusan yang dibuat pada suatu tahap akan
mepengaruhi keputusan-keputusan pada tahap berikutnya. 2.
Status Status adalah kondisi awal Sn dan kondisi akhir Sn-1 pada setiap tahap, di
mana pada tahap tersebut keputusan dibuat Dn. Status akhir pada sebuah tahap tergantung keadaan status awal dan keputusan yang dibuat pada tahap
tersebut. Status akhir pada suatu tahap merupakan input bagi tahap berikutnya. 3.
Variabel Keputusan dan Hasil Keputusan yang dibuat pada setiap tahap Dn merupakan keputusan yang
berorientasi kepada return yang diakibatkannya Rn|Dn. 4.
Fungsi Rekursif Fungsi rekursif biasanya digunakan pada berbagai program komputer, di mana
nilai sebuah variabel pada fungsi itu merupakan nilai kumulatif dari nilai variabel tersebut pada tahap sebelumnya. Pada dynamic programming, fungsi
umum dituliskan sebagai:
16
Ginting Rosnani, Penjadwalan Mesin, op. cit, h. 218 – 220.
Universitas Sumatera Utara
fnSn, Dn = Rn + fn-1Sn-1,Dn-1
3.4. Perencanaan Produksi