Anda di halaman 1dari 6

Dynamic Programming

Pemrograman Dinamis

Pemrograman dinamis merupakan suatu teknik analisa kuantitatif untuk membuat tahapan keputusan yang saling berhubungan. Teknik ini menghasilkan prosedur yang sistematis untuk mencari keputusan dengan kombinasi yang optimal. Pemrograman dinamis membagi permasalahan menjadi beberapa tahapan keputusan, dimana hasil keputusan dari satu tahap akan mempengaruhi keputusan dari tiap-tiap tahapan selanjutnya. Berbeda dengan linear programming, dalam pemrograman dinamis tidak ada formulasi matematis standar. Tetapi, pemrograman dinamis adalah sebuah pendekatan umum untuk pemecahan masalah, dan perhitungan yang digunakan harus dikembangkan agar sesuai dengan tiaptiap situasi tertentu. Oleh karenanya, diperlukan suatu kepandaian dan pemahaman pada struktur umum permasalahan untuk mengetahui kapan dan bagaimana suatu permasalahan harus dipecahkan dengan pemrograman dinamis. Ada 2 perbedaan mendasar antara pemrograman dinamis dan linear programming. Pertama, tidak ada algoritma (seperti metode simplex) yang bisa diprogramkan untuk memecahkan semua permasalahan. Sebaliknya, pemrograman dinamis adalah teknik yang mengarahkan kita untuk memecah masalah yang sulit menjadi tahapan dari beberapa masalah yang lebih mudah, yang kemudian dievaluasi berdasarkan tahapan. Kedua, linear programming adalah suatu metode yang menghasilkan solusi satu tahap (single stage solution) atau satu periode waktu. Pemrograman dinamis mempunyai kemampuan untuk mencari solusi optimal dari suatu permasalahan menjadi beberapa permasalahan dalam satuan waktu yang lebih kecil dan memecahkan tiap permasalahan tersebut dengan optimal (misal permasalahan dengan jangka waktu satu tahun dapat dibagi menjadi 12 permasalahan dengan jangka waktu 1 bulan). Jadi pemrograman dinamis menggunakan pendekatan banyak tahap (multistage).

Pemecahan masalah dengan menggunakan pemrograman dinamis mempunyai 4 tahapan: 1. Memecah permasalahan asli (Original Problem) menjadi bagian permasalahan (Subproblem) yang juga disebut sebagai tahapan (Stage), dengan aturan keputusan di tiap2 tahapan 2. Memecahkan tahapan terakhir dari permasalahan dengan semua kondisi dan keadaan yang memungkinkan 3. Bekerja mundur dari tahap terakhir, dan memecahkan tiap tahap. Hal ini dikerjakan dengan mencari keputusan optimal dari tahap tersebut sampai dengan tahap terakhir

Operations Research 4. Solusi optimal dari permasalahan didapatkan jika semua tahap sudah terpecahkan Suatu contoh umum dari penggunaan pemrograman dinamis adalah pencarian rute terpendek, berikut adalah contoh pemecahan masalah rute terpendek.

Permasalahan Rute Terpendek Agus akan melakukan perjalanan dari Jakarta menuju Bandung, dengan melewati kota/tempat seperti terlihat di peta perjalanan Gambar 1. Tanda bulatan (node) mewakili kota, tanda panah (arc ) mewakili jalan raya antar kota/tempat, jarak antar kota tertulis di tanda panah.

Gambar 1. Peta Perjalanan

Langkah 1: Tahap pertama adalah membagi permasalahan menjadi subproblem. Gambar 2 menunjukkan tahapan dalam problem ini. Dalam pemrograman dinamis, biasanya dimulai dari bagian terakhir problem, sebagai tahap 1, dan bekerja mundur sampai dengan permulaan problem atau jaringan. Tabel 1 menunjukkan jarak arc antar tahapan.

Ajie Wahyujati

Dynamic Programming 2

Operations Research

Stage 3

Stage 2 Gambar 2. Tahapan Pencarian Rute Terpendek

Stage 1

Tabel 1. Jarak Tiap Arc Stage 1 Arc 57 67 45 35 36 25 26 14 13 12 Jarak 14 2 10 12 6 4 10 4 5 2

Langkah 2: Pada langkah berikut, kita memecahkan stage 1, bagian terakhir dari jaringan. Biasanya bagian ini mudah dilakukan. Kita cari jalur terpendek ke akhir jaringan, dalam problem ini node 7. Pada tahap 1, jalur terpendek hanya terdiri dari node 5 dan node 6 ke node 7. Kita gambarkan jarak minimum tersebut dalam kotak di node awal di tahap 1, yaitu node 5 dan node 6.

Ajie Wahyujati

Dynamic Programming 3

Operations Research

Gambar 3. Solusi Stage 1, One Stage Problem

Node Awal 5 6 Langkah 3:

Stage 1 Jarak Terpendek ke Node 7 14 2

Arc dalam Jalur 57 67

Solusi stage 2 dapat dilihat di gambar 4. Pada node 4, jarak terpendek ke node 7 adalah arc 4 5 dan 5 7 dengan jarak total 14. Pada node 3, jalur terpendek adalah arc 3 6 dan 6 7 dengan jarak minimum 8. Pada node 2, jalur terpendek adalah 2 6 dan 6 7 dengan jarak minimum 12.

Gambar 4. Solusi Stage 2, Two Stage Problem Ajie Wahyujati Dynamic Programming 4

Operations Research Stage 2 Jarak Terpendek ke Node 7 24 8 12

Node Awal 4 3 2

Arc dalam Jalur 45 57 36 67 26 6-7

Untuk mendapatkan solusi optimal pada tiap-tiap tahap, yang harus kita perhitungkan adalah arc ke tahap berikutnya dan solusi optimal dari tahap berikutnya. Pada stage 3, kita hanya perlu memperhitungkan 3 arc yan mengarah ke stage 2 (1 2, 1 3, dan 1 4) dan hasil optimal di stage 2, yang telah dicatat dalam tabel sebelumnya. Solusi stage 3 terlihat pada gambar 5

Gambar 5. Solusi Stage 3, Three Stage Problem

Node Awal 1

Stage 3 Jarak Terpendek ke Node 7 13

Arc dalam Jalur 13 36 67

Solusi akhir dari Problem tersebut adalah seperti terlihat di tabel diatas, jalur yang ditempuh adalah 1 3, 3 6, dan 6 7 seperti terlihat di gambar 6, dengan panah dicetak tebal.

Ajie Wahyujati

Dynamic Programming 5

Operations Research

Gambar 6. Solusi Akhir Jadi rute terpendek yang dapat ditempuh oleh Agus adalah Jakarta Ciawi Puncak Bandung

Ajie Wahyujati

Dynamic Programming 6

Anda mungkin juga menyukai