APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA TRAVELING SALESMAN PROBLEM SKRIPSI WIDYA MAULINA

43 

Loading....

Loading....

Loading....

Loading....

Loading....

Teks penuh

(1)

APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA

TRAVELING SALESMAN PROBLEM

SKRIPSI

WIDYA MAULINA

060823023

PROGRAM STUDI SARJANA MATEMATIKA

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009

(2)

APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA

TRAVELING SALEMAN PROBLEM

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains

WIDYA MAULINA

060823023

PROGRAM STUDI SARJANA MATEMATIKA

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2009

(3)

PERSETUJUAN

Judul : APLIKASI PENDEKATAN DYNAMIC

PROGRAMMING PADA TRAVELING SALESMAN PROBLEM

Kategori : SKRIPSI

Nama : WIDYA MAULINA

Nomor Induk Mahasiswa : 060823023

Program Studi : SARJANA (S1) MATEMATIKA

Departemen : MATEMATIKA

Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA

Diluluskan di

Medan, Maret 2009

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Syahriol Sitorus, S.Si, M.IT Dra. Mardiningsih, M.Si NIP.132 174 687 NIP.130 803 344

Diketahui oleh :

Departemen Matematika FMIPA USU Ketua,

Dr. Saib Suwilo,M.Sc NIP. 131 796 149

(4)

PERNYATAAN

APLIKASI PENDEKATAN DYNAMIC PROGRAMMING PADA TRAVELING SALESMAN PROBLEM

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Maret 2009

WIDYA MAULINA 060823023

(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Allah SWT, dengan limpahan dan karunia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.

Ucapan terima kasih saya sampaikan kepada Dra. Mardiningsih, M.Si dan Syahriol Sitorus, S.Si, M.IT selaku pembimbing pada penyelesaian skripsi ini yang telah memberikan panduan dan penuh kepercayaan kepada saya untuk menyempurnakan kajian ini. Panduan ringkas, padat dan professional telah diberikan kepada saya agar penulis dapat menyelesaikan tugas ini. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Matematika FMIPA USU Dr. Saib Suwilo, M.Sc. dan Drs. Henry Rani Sitepu, M.Si, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen pada Departemen Matematika FMIPA USU, pegawai di FMIPA USU, dan rekan-rekan kuliah. Akhirnya, tidak terlupakan kepada kedua orang tua dan semua ahli keluarga dan rekan terdekat saya yang selama ini memberikan bantuan dan dorongan yang diperlukan. Semoga Allah SWT memberikan balasan yang layak.

(6)

ABSTRAK

Dynamic programming adalah metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian hingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Dalam tulisan ini membahas tentang penggunaan graph dalam dynamic programming untuk mencari solusi optimal pada Traveling Salesman Problem (TSP). Dengan memberikan sejumlah n kota, TSP dapat didefenisikan perjalanan seorang salesman dalam menemukan jalur terpendek dengan mengunjungi setiap kota yang ada hanya sekali dan kembali ke asalnya dan kemudian diimplementasikan ke dalam suatu program dengan menggunakan Visual Basic 6.0 beserta waktu komputasinya. Hasil dari analisi kota terhadap waktu adalah berbentuk non linier.

(7)

ABSTRACT

Dynamic programming is problem solving methode by elaborating solution to become a group of step or stage in such a way finite solution from problem can be looked into from with refer to decision that is each other interconnected. In this articles studies about used of graph in dynamic programming to look for optimal solution at Traveling Salesman Problem (TSP). By giving a number of n city, TSP can be definition walk of a salesman in finding shorthestpath by visiting every cities once and back to source and than implementation into a program by using Visual Basic 6.0 and the time computation. The result of analyze about the city of the time as non linier.

(8)

DAFTAR ISI Halaman Persetujuan ii Pernyataan iii Penghargaan iv Abstrak v Abstract vi

Daftar Isi vii

Daftar Tabel viii

Daftar Gambar ix Bab 1 Pendahuluan 1 1.1 Latar Belakang 1 1.2 Perumusan Masalah 2 1.3 Tinjauan Pustaka 2 1.4 Tujuan Penelitian 4 1.5 Kontribusi Penelitian 4 1.6 Metode Penelitian 5

Bab 2 Landasan Teori 6

2.1 Teori Graph 6

2.2 Graph Hamilton 7

2.3 Representasi Graph pada Komputer 8

2.4 Permasalahan Optimasi 9

2.5 Traveling Salesman Problem 10

2.5.1 Sejarah Singkat Traveling Salesman Problem 10

2.6 Dynamic Programming 12

2.6.1 Model Dynamic Programming 13

2.6.2 Konsep Dasar Dalam Dynamic Programming 14 2.6.3 Ciri-ciri Dasar dari Suatu masalah Dynamic Programming 16

Bab 3 Pembahasan 18

3.1 Analisa dynamic Programming 18

3.2 Perancangan Flowchart 24

3.3 Perancangan Antar Muka 25

3.4 Analisa Kebutuhan Perangkat Keras 25

3.5 Perancangan Perangkat Lunak 26

Bab 4 Kesimpulan dan Saran 33

4.1 Kesimpulan 33

4.2 Saran 33

Daftar Pustaka

(9)

DAFTAR TABEL

Halaman

Tabel 2.1 Daftar History dari TSP 11

Tabel 3.1 Perhitungan Waktu Antar Kota 31

(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Graph dengan Empat vertex 6

Gambar 2.2 Graph Tak-Berarah 7

Gambar 2.3 Graph Berarah 7

Gambar 2.4 Penggambaran Graph Hamilton 8

Gambar 3.1 Graph dengan Empat Vertex 20

Gambar 3.2 Graph dengan Empat Vertex 23

Gambar 3.3 Flowchart dynamic programming pada TSP 24 Gambar 3.4 Form Utama Aplikasi Dynamic Programming 25

Gambar 3.5 Form Utama 26

Gambar 3.6 Form Menu 27

Gambar 3.7 Form Entri Data Graph 27

Gambar 3.8 Form Komputasi jalur Terpendek 28

Gambar 3.9 Form Hasil Komputasi Jalur Terpendek 29

Gambar 3.10 Form Hasil Graph Jalur Terpendek 29

(11)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Traveling Salesman Problem (TSP) merupakan salah satu permasalahan penting dalam dunia matematika dan informatika. TSP dapat diilustrasikan sebagai perjalanan seorang salesman yang harus melalui semua kota yang dituju dengan jarak terpendek, dimana setiap kota hanya boleh dilalui satu kali. Solusi dari TSP ialah jalur yang dilalui oleh salesman tersebut. Tentunya solusi terbaik atau optimal dari permasalahan ini ialah jalur dengan jarak terpendek atau dapat disebut juga dengan rute perjalanan minimum.

Penggambaran yang sangat sederhana dari istilah TSP adalah seorang salesman yang harus mengunjungi n buah kota dengan aturan: ia harus mengunjungi setiap kota hanya sebanyak satu kali. Ia harus meminimalisasi total jarak perjalanan dan pada akhirnya ia harus kembali ke kota asalnya. Dengan demikian, apa yang telah ia lakukan disebut sebagai sebuah tour. Guna memudahkan permasalahan, pemetaan n kota tersebut akan digambarkan dengan sebuah graph, dimana jumlah vertex dan edge-nya terbatas (sebuah vertex akan mewakili sebuah kota dan sebuah edge akan mewakili jarak antar dua kota yang dihubungkan). Penanganan problem TSP ini ekuivalen dengan mencari sirkuit Hamilton terpendek.

Dynamic Programming merupakan sebuah metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan. Penemu dan orang yang bertanggung jawab atas kepopuleran dynamic programming adalah Richard Bellman.

Pada dynamic programming, rangkaian keputusan optimal yang dibuat dengan menggunakan prinsip optimalitas. Prinsip Optimalitas: jika solusi total optimal, maka bagian solusi sampai tahap ke-k juga optimal. Dengan prinsip

(12)

Optimalitas ini dijamin bahwa pengambilan keputusan pada suatu tahap adalah keputusan yang benar untuk tahap-tahap selanjutnya. Inti dari pemrograman dinamik adalah membuang satu bagian kecil dari sebuah persoalan dalam setiap langkahnya, kemudian menyelesaikan persoalan yang lebih kecil tersebut dan menggunakan solusi hasil penyelesaian ini untk ditambahkan kembali ke bagian persoalan dalam langkah berikutnya.

Dynamic programming mencoba untuk memberikan solusi yang memiliki pemikiran terhadap konsekuensi yang ditimbulkan dari pengambilan keputusan pada suatu tahap. Dynamic programming mampu mengurangi pengenumerasian keputusan yang tidak mengarah ke solusi. Penerapan pendekatan dynamic programming telah banyak diperlihatkan mampu untuk menyelesaikan aneka masalah seperti: alokasi, muatan (knapsack), capital budgeting, pengawasan persediaan, dan lain-lain.

1.2 Perumusan Masalah

Bagaimana peranan atau pendekatan program dinamik dalam penyelesaian TSP dalam menentukan jalur yang paling optimal dengan jarak total yang paling minimum dengan pendekatan maju (forward atau up-down).

1.3 Tinjauan Pustaka

Muhammad Ghifary (2007 : 2) dalam jurnalnya menjelaskan bahwa ada dua pendekatan yang berbeda dalam dynamic programming yaitu:

1. Maju (forward atau up-down) : bergerak mulai dari tahap 1, terus maju ke tahap 2,3,…,n. urutan variabel keputusan adalah .

2. Mundur (backward atau bottom-up) : bergerak mulai dari tahap n, terus mundur ke tahap n-1, n-2,…2,1. Urutan variabel keputusan adalah

.

(13)

1. Persoalan dapat dibagi menjadi beberapa tahap (stage), yang pada setiap tahap hanya diambil satu keputusan yang optimal.

2. Masing-masing tahap terdiri dari sejumlah status (state) yang berhubungan dengan tahap tersebut.

3. Hasil keputusan yang diambil pada tahap ditransformasikan dari status yang bersangkutan ke status berikutnya pada tahap berikutnya.

4. Jarak pada suatu tahap bergantung pada jarak tahap-tahap sebelumnya dan meningkat secara teratur dengan bertambahnya jumlah tahapan.

5. Keputusan terbaik pada suatu tahap bersifat independen terhadap keputusan yang dilakukan tahap sebelumnya.

6. Adanya hubungan rekursif yang mengidentifikasikan keputusan terbaik untuk setiap status pada tahap k memberikan keputusan terbaik untuk tahap sebelumnya.

7. Prinsip optimalitas berlaku pada persoalan ini.

Mohamad Irvan Faradian (2007 : 6) berdasarkan prinsip optimalitas, diperoleh hubungan sebagai berikut:

Misalkan G = (V, E) adalah graph lengkap berarah dengan edge-nya yang diberi harga cij> 0 untuk setiap i dan j, dimana i dan j adalah vertex-vertex yang berada di dalam V. Misalkan ⎢V ⎢= n dan n > 1. Setiap simpul diberi nomor 1, 2, …, n.

(

1

,

{

1

})

min

{

1

(

,

{

1

,

})}

2

c

f

k

V

k

V

f

k n k

+

=

≤ ≤ (1) dimana:

f(1, V – {1}) = panjang optimal dari tour

V = himpunan berhingga tidak kosong dari vertex-vertex dari sebuah graph

V – {1} = himpunan vertex dari suatu graph yang dikurang vertex 1 (awal) k = vertex yang terhubung ke vertex 1 (awal)

= bobot dari vertex 1 (awal) ke k

dari persamaan (1), diperoleh rincian:

(14)

(2) (rekurens)

dimana:

f(i, S) = bobot jalur terpendek

S – {j} = rangkaian jalur S dikurang vertex j. i dan j = vertex-vertex di dalam V

= bobot dari vertex i ke j

Asumsikan perjalanan (tour) dimulai dan berakhir pada vertex 1. Setiap tur pasti terdiri dari sisi untuk beberapa k V – {1} dan sebuah jalur dari vertex k ke vertex 1. jalur dari vertex k ke vertex 1 tersebut melalui setiap vertex di dalam V – {1,k} tepat hanya sekali. Misalkan f(i, S) adalah bobot jalur terpendek yang berawal dari vertex i, yang melalui semua vertex di dalam S dan berakhir pada vertex 1. Nilai f(1, V – {1}) adalah bobot tour terpendek.

Dari persamaan (1) dapat diperoleh persamaan (2) jika kita mengetahui f (k, V – {1, k}) untuk seluruh pilihan nilai k. Nilai f tersebut dapat diperoleh dengan menggunakan persamaan (2). Kita menggunakan persamaan (2) untuk memperoleh f(i, S) untuk , kemudian kita dapat memperoleh f(i, S) untuk , hingga |S| = n- 2.

1.4 Tujuan Penelitian

Mengkaji TSP sebagai graph Hamiltonian dengan menggunakan dynamic programming untuk mendapatkan jumlah bobot yang paling minimum dan mengaplikasikannya ke dalam sebuah program.

(15)

1.5 Kontribusi Penelitian

Dengan mengaplikasikan dynamic programming pada TSP dapat bermanfaat dalam pengembangan program dinamik lebih lanjut dan diharapkan hasil dari tulisan ini dapat dikembangkan dan direpresentasikan pada lembaga atau perusahaan yang bergerak di bidang Transportasi, Alokasi, Capital Budgeting, dan lain-lain.

1.6 Metode Penelitian

Metode penelitian yang digunakan dalam penelitian ini adalah sebagai berikut: 1. Menggambarkan contoh TSP dalam bentuk graph.

2. Menerapkan dynamic programming untuk penyelesaian TSP.

3. Mengaplikasikan dynamic programming pada TSP ke dalam bahasa pemrograman.

(16)

BAB 2

LANDASAN TEORI

2.1 Teori Graph

Graph didefinisikan dengan G = (V, E), di mana V adalah himpunan berhingga tidak kosong dari vertex-vertex = dan E himpunan sisi (edges atau arcs) yang menghubungkan sepasang vertex . Vertex dalam graph pada tulisan ini merupakan kota dan edge atau sisi merupakan rute atau jalan yang menghubungkan antar kota.

a b

c d

Gambar 2.1. Graph dengan Empat Vertex

Keterangan Gambar:

G adalah graph dengan: V = { a, b, c, d }

E = { (a, b), (a, c), (a,d), (c, a), (c, d), (b,b), (b, d), (d, b) } = { e1, e2, e3, e4, e5, e6, e7, e8 }

Secara umum graph dapat dibedakan atas dua jenis:

1. Graph tak-berarah (undirected graph) adalah graph yang edge-ya tidak memiliki arah tertentu.

(17)

Gambar 2.2. Graph Tak-Berarah

2. Graph berarah (directed graph atau digraph) adalah graf yang semua edge-nya memiliki arah tertentu.

Gambar 2.3. Graph Berarah

2.2 Graph Hamilton

Lintasan Hamilton ialah lintasan yang melalui tiap vertex di dalam graph tepat satu kali. Bila lintasan itu kembali ke vertex asal membentuk lintasan tertutup (sirkuit), maka lintasan tertutup itu dinamakan sirkuit Hamilton. Jadi, sirkuit Hamilton ialah sirkuit yang melalui tiap vertex di dalam graph tepat satu kali. Graph yang memiliki sirkuit Hamilton dinamakan graph Hamilton, sedangkan yang memiliki lintasan Hamilton disebut graph semi-Hamilton.

Teorema 2.1. Setiap graph lengkap adalah graph Hamilton.

b a d c b a a b d c d c a b c

(18)

Keterangan gambar:

(a) graph yang memiliki lintasan Hamilton (misal:c, b, a, d) (b) graph yang memiliki sirkuit Hamilton (a, b, c, d, a)

(c) graph yang tidak memiliki lintasan maupun sirkuit Hamilton

2.3 Representasi Graph Pada Komputer

Untuk mengimplementasikan suatu graph dalam bahasa pemrograman komputer, dibutuhkan suatu cara untuk menterjemahkan bentuk graph ke dalam bentuk lain yang dikenal oleh komputer, sebab komputer tidak dapat mengenal graph dalam bentuk gambar graph biasa. Matriks dapat digunakan untuk menyatakan suatu graph, jika graph dinyatakan sebagai matriks maka perhitungan-perhitungan yang diperlukan dapat dilakukan dengan mudah. Representasi graph pada komputer dapat dilakukan dengan beberapa cara, yaitu:

1. Matriks Adjacency

Matriks adjacency didefinisikan sebagai berikut, misalkan A matriks berordo nxn (n baris dan n kolom). Jika antara dua vertex terhubung (adjacent) maka elemen matriks bernilai 1, dan sebaliknya jika tidak terhubung bernilai 0. Contoh dari matriks adjacency: A = ⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0

Jika graph yang diberikan adalah graph berbobot maka elemen matriks yang terhubung antara vertex adalah bobot graph.

2. Matriks Incidency

Matriks incidency atau matriks bersisian adalah matriks yang merepresentasikan hubungan antara vertex dan edge. Misalkan B adalah matriks dengan m baris untuk setiap vertex dan n kolom untuk setiap edge. Jika vertex terhubung dengan

(19)

edge, maka elemen matriks bernilai 1. Sebaliknya, jika vertex tidak terhubung dengan edge maka elemen matriks bernilai 0. Contoh matriks bersisian adalah:

B = ⎟⎟ ⎟ ⎟ ⎟ ⎠ ⎞ ⎜⎜ ⎜ ⎜ ⎜ ⎝ ⎛ 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 0 0 1 1 0 1

Seperti halnya matriks kedekatan untuk matriks berbobot, untuk matriks bersisian elemen dari matriks juga merupakan bobot dari setiap edge dari graph.

2.4 Permasalahan Optimasi

Secara umum, penyelesaian masalah pencarian jalur terpendek dapat dilakukan dengan menggunakan dua metode, yaitu metode konvensional dan metode heuristik.

1. Metode Konvensional

Metode konvensional adalah metode yang menggunakan perhitungan matematis biasa. Ada beberapa metode konvensional yang biasa digunakan untuk melakukan pencarian jalur terpendek, diantaranya: algoritman Djikstra, algoritma Floyd-Warshall, dan algoritma Bellman-Ford.

2. Metode Heuristik

Metode Heuristik adalah sub bidang dari kecerdasan buatan yang digunakan untuk melakukan pencarian dan optimasi. Ada beberapa algoritma pada metode heuristik yang biasa digunakan dalam permasalahan optimasi, diantaranya algoritma genetika, algoritma semut, logika fuzzy, jaringan syaraf tiruan, pencarian tabu, simulated annealing, dan lain-lain.

(20)

TSP merupakan salah satu permasalahan penting dalam dunia matematika dan informatika. TSP dapat diilustrasikan sebagai perjalanan seorang salesman yang harus memulai perjalanannya dari satu kota, melalui setiap kota lainnya hanya sekali dan kembali lagi ke kota asal keberangkatan. Solusi dari TSP ialah lintasan yang dilalui oleh salesman tersebut. Tentunya solusi terbaik atau optimal dari permasalahan ini ialah lintasan dengan jarak terpendek atau dapat disebut juga dengan tour perjalanan minimum. Model TSP dinyatakan dalam bentuk graph, dengan kata lain TSP termasuk ke dalam problem menemukan lintasan atau siklus Hamilton.

Dalam tulisan ini TSP yang dibahas adalah TSP asimetris, dimana TSP asimetris adalah jarak dari kota A ke kota B adalah tidak sama dengan jarak dari kota B ke kota A (asimetris terjadi karena jalan satu arah)(Adhi,2008). Graph yang direpresentasikan sebagai permasalahannya merupakan graph yang terhubung secara penuh artinya pada setiap vertex yang ada pasti terhubung dengan vertex yang lain.

2.5.1 Sejarah Singkat Traveling Salesman Problem

Permasalahan TSP dalam ilmu matematika dilakukan pada tahun 1800 oleh ahli matematika Irlandia William Rowan Hamilton dan ahli matematika Inggris Thomas Penyngton Kirkman, dengan membuat permainan untuk menyelesaikan perjalanan melalui 20 titik dengan menggunakan koneksi yang sudah ditetapkan. Permainan yang disebut game Icosian tersebut tak lain adalah menemukan siklus Hamilton di atas suatu bidang dengan mengunjungi tiap-tiap edge-nya sekali dan akhirnya kembali ke edge awal, suatu permainan yang jelas seperti rumus TSP.

TSP kemudian dipelajari oleh ahli matematika Karl Menger di Vienna, Harvard serta Hassler Whitney and Merrill Flood di Princeton pada tahun 1930 dan menuliskan bentuk umumnya. Karena pertumbuhan algoritma yang semakin meningkat dari tahun ke tahun, mulai tahun 1950 penyelesaian TSP dipecahkan dengan komputer. Tahun 1954 pertumbuhan penting dari TSP diteliti oleh para peneliti yaitu: Dantzig, Fulkerson dan Jhonson yang terus mengembangkan metode baru untuk menyelesaikan permasalahan TSP. Berikut tabel daftar history dari TSP (TSPLIB95, 1995)

(21)

Tabel 2.1 Daftar History dari TSP

Tahun Tim Periset Ukuran

1954 G. Dantzig, R. Fulkerson, dan S. Johnson 49 kota

1971 M. Held dan R.M. Karp 64 kota

1975 P.M. Camerini, L. Fratta, dan F. Maffioli 67 kota

1977 M. Grötschel 120 kota

1980 H. Crowder dan M.W. Padberg 318 kota 1987 M. Padberg dan G. Rinaldi 532 kota 1987 M. Grötschel dan O. Holldan 666 kota 1987 M. Padberg dan G. Rinaldi 2.392 kota

1994 D. Applegate, R. Bixby, V. Chvátal, dan

W. Cook 7.397 kota

1998 D. Applegate, R. Bixby, V. Chvátal, dan

W. Cook 13.509 kota

2001 D. Applegate, R. Bixby, V. Chvátal, dan

W. Cook 15.112 kota

2004 D. Applegate, R. Bixby, V. Chvátal, W.

Cook, dan K. Helsgaun 24.978 kota

2.6 Dynamic Programming

Dynamic programming adalah teknik manajemen sains yang diaplikasikan kepada persoalan yang melibatkan keputusan yang saling berkaitan. Program ini dikembangkan oleh Richard Bellman dan G. B Dantzig pada tahun 1940 – 1950. Sebagai sebuah konsep, dynamic programming lebih luwes dibanding program-program optimasi lainnya. Aplikasi dynamic program-programming telah terbukti baik pada pengelolaam persediaan, jaringan, penjadwalan kerja untuk karyawan, pengendalian produksi, perencanaan penjualan dan bidang lainnya.

Dynamic programming adalah metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.

(22)

Pada penyelesaian persoalan dengan metode dynamic programming ini terdapat sejumlah berhingga pilihan yang mungkin, solusi pada setiap tahap dibangun dari hasil solusi tahap sebelumnya, kita menggunakan persyaratan optimasi kendala untuk membatasi sejumlah pilihan yang harus dipertimbangkan pada suatu tahap.

Pada dynamic programming, rangkaian keputusan yang optimal dibuat dengan menggunakan Prinsip Optimalitas. Prinsip Optimalitas: jika solusi optimal, maka bagian solusi pada tahap ke-k juga optimal. Prinsip optimalitas berarti bahwa jika kita bekerja dari tahap k ke tahap k+1, kita dapat menggunakan hasil optimal dari tahap k tanpa harus kembali ke tahap awal. Ongkos pada tahap k+1 = (ongkos yang dihasilkam pada tahap k) + (ongkos dari tahap k ke tahap k+1). Dengan prinsip optimalitas ini dijamin bahwa pengambilan keputusan yang benar untuk tahap-tahap selanjutnya.

2.6.1 Model Dynamic Programming

Secara umum, model dari dynamic programming dapat dituliskan sebagai berikut:

) , ( * ) , ( n n = n + n−1 n−1 n−1 n S D R f S D f dengan: ) , (Sn Dn

f = return pada tahap-n dari nilai status input Sn dan keputusan Dn

n S = kondisi awal 1 − n S = kondisi akhir n

D = keputusan yang dibuat pada setiap tahap

1 −

n

D = keputusan pada tahap akhir

n R = return function ) , ( * 1 1 1 − − − n n n S D

f = return optimal pada tahap-n−1 dari nilai status input dan keputusan 1 − n S 1 − n D

(23)

Adapun model dari Dynamic Programming untuk TSP adalah:

})}

,

1

{

,

(

{

min

})

1

{

,

1

(

1 2

c

f

k

V

k

V

f

k n k

+

=

≤ ≤ dengan:

f(1, V – {1}) = panjang optimal dari tour

V = himpunan berhingga tidak kosong dari vertex-vertex dari sebuah graph

V – {1} = himpunan vertex dari suatu graph yang dikurang vertex 1 (awal) K = vertex yang terhubung ke vertex 1 (awal)

k

C1 = bobot dari vertex 1 (awal) ke k

2.6.2 Konsep Dasar Dalam Dynamic Programming

Adapun konsep dasar dalam sebuah dynamic programming adalah:

a. 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 mempengaruhi keputusan-keputusan pada tahap berikutnya.

b. Status

Status adalah kondisi awal ( ) dan kondisi akhir ( ) pada setiap tahap,

dimana pada tahap tersebut keputusan dibuat ( ). Status akhir pada sebuah tahap tergantung kepada status awal dan keputusan yang dibuat pada tahap yang bersangkutan. Status akhir pada suatu tahap merupakan input bagi tahap berikutnya.

n

S Sn1

n D

(24)

c. Variabel Keputusan dan Hasil

Keputusan yang dibuat pada setiap tahap ( ) merupakan keputusan yang berorientasi kepada return yang diakibatkannya ( ), tingkat maksimal atau minimal. n D n n D R | d. Fungsi Transisi

Fungsi transisi menjelaskan secara pasti bagaimana tahap-tahap saling berhubungan. Fungsi ini berbentuk fungsi hubungan antar status pada setiap tahap yang berurutan. Fungsi transisi secara umum berbentuk :

n n

n S D

S −1 = −

Di mana = status pada tahap n-1, atau status akhir pada tahap-n. adalah status awal pada tahap-n.

1 −

n

S Sn

e. Optimasi Tahap

Optimasi tahap dalam dynamic programming adalah menentukan keputusan optimal pada setiap tahap dari berbagai kemungkinan nilai status inputnya. Fungsi umum dari keputusan optimal adalah :

) , ( n n n S D f n D

= return pada tahap-n dari nilai status input , dan keputusan, . n S ) ( * n n S

f = return optimal pada tahap-n dari nilai input status Sn.

f. 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 DP, fungsi umum dituliskan sebagai : ) , ( * ) , ( n n = n + n1 n1 n1 n S D R f S D f

(25)

Karakteristik dynamic programming adalah :

1. Persoalan dapat dipisahkan menjadi beberapa tahap (stages), di mana setiap tahap membutuhkan keputusan kebijakan yang standard dan saling berhubungan.

2. Setiap tahap memiliki sejumlah status (state). Secara umum, sekumpulan status ini merupakan berbagai kemungkinan kondisi yang timbul dari sistem persoalannya. Status ini memberikan informasi yang dibutuhkan setiap keputusan dan dampaknya pada tahap berikutnya. Jumlah status pada setiap tahap bisa definit atau infinit.

3. Setiap keputusan kebijakan yang dibuat pada suatu tahap, status pada tahap tersebut ditransformasi ke dalam status yang berkaitan pada tahap berikutnya. Hubungan antar status pada tahap yang berurutan bisa bersifat deterministik atau probabilistik.

Pada sebuah persoalan dengan n-tahap, ada dua input, yaitu : (1) state pada tahap-n ( ) dan decision variable ( ). Sedang outputnya adalah : (1) return atau akibat dari setiap yang dipilih, ; dan (2) status baru yang menjadi input pada tahap berikutnya ( ). Hubungan antara dan

ditentukan oleh return function. Sedang hubungan antar status pada tahap tertentu ditentukan oleh transition function.

n S ) n n X n X fn(S,Xn) 1 − n S Xn , ( n S X f

4. Solusi pada dynamic programming berprinsip kepada optimalitas yang dikembangkan oleh Bellman.

5. Keputusan pada tahap berikutnya bersifat independen terhadap keputusan sebelumnya. Untuk menyelesaikan persoalan dynamic programming, dimulai dari solusi awal pada suatu tahap, dan secara berurutan menuju tahap berikutnya dengan proses yang terbalik (backward induction process).

6. Solusi optimal yang dihasilkan pada setiap tahap berprinsip kepada hubungan dalam bentuk fungsi rekursif (recursion relationship). Secara umum bentuk fungsi rekursif adalah :

(26)

)} , ( min{ max/ ) ( * n n n n n S f S X f =

Di mana fn*(Sn) = adalah hasil optimal dari keputusan pada tahap-n.

2.6.3 Ciri ciri dasar dari suatu masalah dynamic programming

Adapun ciri-ciri dasar dari suatu masalah dynamic programming adalah:

1. Dalam masalah dynamic programming, keputusan tentang suatu masalah ditandai dengan optimisasi pada tahap berikutnya, bukan keserentakan. Ini berarti, jika suatu masalah akan diselesaikan dengan dynamic programming, ia harus dipisahkan menjadi n sub problem.

2. Dynamic programming berkaitan dengan masalah-masalah dimana pilihan atau keputusan dibuat pada masing-masing tahap. Seluruh kemungkinan pilihan dicerminkan, di-atur, oleh sistem status atau state pada setiap tahap.

3. Berkaitan dengan setiap keputusan pada setiap tahap adalah return function yang mengevaluasi pilihan yang dibuat dalam arti sumbangan yang diberikan kepada tujuan keseluruhan (maksimisasi atau minimisasi).

4. Pada setiap tahap proses keputusan dihubungkan dengan tahap yang berdekatan melalui fungsi transisi.

5. Suatu hubungan rekursif digunakan untuk menghubungkan kebijaksanaan optimum pada tahap n dengan n-1. Ada dua macam prosedur rekursif yaitu:

a. Foreward recursive equation (perhitungan dari depan ke belakang) b. Backward recursive equation (perhitungan dari belakang ke depan)

Langkah- langkah pengembangan dynamic programming adalah sebagai berikut: 1. Karakteristikkan struktur solusi optimal.

2. Defenisikan secara rekursif nilai solusi optimal. 3. Hitung nilai solusi optimal secara maju atau mundur. 4. Kontruksi solusi optimal.

(27)

BAB 3 PEMBAHASAN

3.1 Analisa Dynamic programming

Dynamic programming merupakan metode pemecahan masalah dengan cara menguraikan solusi menjadi sekumpulan langkah (step) atau tahapan (stage) sedemikian sehingga solusi dari persoalan dapat dipandang dari serangkaian keputusan yang saling berkaitan.

Diberikan sejumlah kota dan jarak antar kota. Tentukan sirkuit terpendek yang harus dilalui oleh seorang salesman, bila salesman itu berangkat dari sebuah kota asal dan menyinggahi setiap kota tepat satu kali dan kembali lagi ke kota asal keberangkatan. Permasalahan melewati setiap kota tepat satu kali dan kembali ke kota asal adalah meliputi pencarian lintasan terpendek pada sebuah graph Hamilton. Apabila contoh kasus tersebut diubah menjadi persoalan pada graph, maka dapat dilihat bahwa kasus tersebut adalah bagaimana menentukan sirkuit Hamilton yang memiliki bobot minimum pada graph tersebut.

Dalam dynamic programming, diperlukan beberapa variabel dan langkah-langkah untuk menentukan jalur terpendek dengan bobot minimum menggunakan metode forward, yaitu:

Misalkan G = (V, E) adalah graf lengkap dengan edge-edge yang diberi harga cij > 0 untuk setiap i dan j adalah vertex-vertex di dalam V. Misalkan ⎢V ⎢= n dan n > 1. Setiap vertex diberi nomor 1, 2, …, n.

Asumsikan perjalanan (tour) dimulai dan berakhir pada vertex 1 dan setiap titik saling terhubung. Setiap tur pasti terdiri dari edge (1, k) untuk beberapa k ∈ V – {1} dan sebuah jalur dari vertex k ke vertex 1. Jalur dari vertex k ke vertex 1 tersebut melalui setiap vertex di dalam V – {1, k} tepat hanya sekali.

Inisialisasi

(28)

b. Himpunan berhingga tidak kosong dari vertex-vertex pada sebuah graph (V), V = {1, 2, 3,…n}

c. Himpunan edge pada sebuah graph (E)

d. Jarak dari i ke j (jarak antar kota) , dimana e. Rangkaian jalur (S), S {2, 3, …, n}

f. Bobot jalur terpendek yang berawal pada vertex i yang melalui semua vertex di dalam S dan berakhir pada vertex 1 ( f(i,S) ), i S dan S

Adapun langkah-langkah dalam penyelesaian TSP dengan dynamic programming adalah sebagai berikut:

Langkah 1:

Menentukan basis dari graph Hamilton yang telah direpresentasikan menjadi sebuah matriks adjacency dengan persamaan:

1 ,

)

,

(

i

c

i

f

=

, 2 ≤ i ≤ n Langkah 2:

Hitung f(i, S) untuk ⎢S ⎢= 1, kemudian kita dapat memperoleh f(i, S) untuk ⎢S ⎢= 2, hingga |S| = n- 1. Dengan persamaan:

})}

{

,

(

{

min

)

,

(

i

S

c

f

j

S

j

f

ij S j

+

=

dengan:

f(i, S) = bobot jalur terpendek

S – {j} = rangkaian jalur S dikurang vertex j. i dan j = vertex-vertex di dalam V

= bobot dari vertex i ke j

Langkah 3:

Setelah diperoleh hasil dari langkah 3, kemudian hitung persamaan hubungan rekursif:

})}

,

1

{

,

(

{

min

})

1

{

,

1

(

1 2

c

f

k

V

k

V

f

k n k

+

=

≤ ≤

(29)

dengan:

f(1, V – {1}) = panjang optimal dari tour

V = himpunan berhingga tidak kosong dari vertex-vertex dari sebuah graph

V – {1} = himpunan vertex dari suatu graph yang dikurang vertex 1 (awal) k = vertex yang terhubung ke vertex 1 (awal)

= bobot dari vertex 1 (awal) ke k

Langkah 4:

Setelah menghitung persamaan rekursif pada langkah 3,akan diperoleh bobot jalur terpendek, maka untuk memperoleh solusi optimal / panjang jalur terpendek untuk sebuah graph adalah dengan menghitung f(1, {2, 3, 4,…, n}) yang artinya adalah panjang jalur dari vertex awal (1) menuju vertex 1 setelah melewati vertex 2, 3, 4,.., n dengan urutan apapun (dicari yang minimum) kemudian cari pembentuk dari solusi optimal minimum yang telah diperoleh.

Berikut contoh penyelesaian TSP dengan menggunakan dynamic programming.

Diketahui sebuah graph lengkap berarah, dengan persoalan TSP untuk n = 4. Rangkaian jalur {2, 3, 4}. Dapat dilihat pada gambar 3.1. berikut

12 15 9 8 10 15 16 11 11 14 17 18 1 2 3 4

Gambar 3.1. Graf dengan Empat Vertex

Berikut Jarak dari i ke j (jarak antar kota) , dimana yang dirubah dalam bentuk matriks:

(30)

Berikut langkah-langkah penyelesaiannya: Langkah 1: Hitung 1 ,

)

,

(

i

c

i

f

=

, 2 ≤ i ≤ n Diperoleh:

15

)

,

2

(

=

c

21

=

f

8

)

,

3

(

=

c

31

=

f

9

)

,

4

(

=

c

41

=

f

Langkah 2:

Untuk |S| = 1, Hitung

f

(

i

,

S

)

min

{

c

f

(

j

,

S

{

j

})}

ij S j

+

=

Diperoleh:

(31)

Untuk |S| = 2, hitung

f

(

i

,

S

)

min

{

c

f

(

j

,

S

{

j

})}

ij S j

+

=

Diperoleh: = min{15 + 27, 10 + 25} = min{42, 35} = 35 = min{14 +19, 27 + 11} = min{33, 38} = 33 = min{11 + 22, 17 + 29} = min{33, 46} = 33 Langkah 3:

Dengan menggunakan persamaan,

})}

,

1

{

,

(

{

min

})

1

{

,

1

(

1 2

c

f

k

V

k

V

f

k n k

+

=

≤ ≤ diperoleh: = min {12 + 35, 11 + 33, 16 + 33} = min {47, 44, 49} = 44

Jadi, bobot jalur terpendek yang berawal dan berakhir di vertex 1 adalah 44.

Langkah 4:

Untuk mengetahui jalur yang dilalui, mula-mula diketahui bahwa nilai 44 yang merupakan nilai minimum didapatkan dari 11 + 33. Berarti jalur terpendek adalah , diperoleh bahwa bagian awal dari jalur adalah 1-3. Kemudian cari tahu komponen pembentuk yang menghasilkan nilai minimum ternyata adalah . Maka diketahui bahwa edge 3-2 adalah bagian dari jalur

(32)

terpendek. Dengan cara yang sama, ditelusuri pembentuk yang ternyata adalah . Edge 2-4 ternyata juga bagian dari solusi jalur terpendek. Langkah terakhir adalah menelusuri pembentuk yang ternyata adalah (berarti edge 4-1 juga bagian dari jalur terpendek). Hanya dengan merangkai edge-edge yang ditemukan (edge-edge 1-3, 3-2, 2-4, 4-1)dari depan ke belakang. Berarti jalur terpendek adalah 1→3→2→4→1 dengan jumlah bobot minimum 44. Dapat dilihat pada gambar berikut (edge yang bercetak tebal merupakan jalur terpendek):

12 1 15 16 9 11 11 14 15 10 8 16 18 14 17 4 3 2

(33)

3.2 Perancangan Flowchart

Gambaran secara umum proses yang terjadi dalam menyelesaikan permasalahan TSP dalam menentukan jalur terpendek dengan bobot minimum yaitu :

Mulai

Gambar dari node i ke j

Input nilai

tidak

ya

Gambar 3.3 Flowchart dynamic programming pada TSP

Hitung

f

(

i

,

)

=

c

i,1, 2 ≤ i ≤ n

Hitung persamaan rekursif untuk |S|=1…n-1

Identifikasi pembentuk jalur dengan bobot terpendek

Hitung hubungan rekursif

Tampilkan Hasil

Selesai Validasi matriks jarak

(34)

3.3 Perancangan Antar Muka

Rancangan antar muka dari dynamic programming menggunakan visual basic. Gambar 3.4 adalah tampilan dari aplikasi dynamic programming. Aplikasi terdiri dari beberapa bagian yaitu menu, form graph dan form hasil.

Dynamic Programming

Graph Matriks Jarak Editor

Graph Hasil

Gambar 3.4 Form Utama Aplikasi Dynamic Programming

3.4 Analisa Kebutuhan Perangkat Keras

Perangkat keras yang digunakan untuk menguji implementasi dari dynamic programming ini pada TSP adalah sebagai berikut :

1. Procesor Pentium IV 1,8D GHz 2. Memory 512 MB 3. Hard Disk 40 GB 4. O/S Windows XP 5. Mouse 6. Keyboard

(35)

3.5 Perancangan Perangkat Lunak

Implementasi dari dynamic programming untuk penyelesaian TSP pada tulisan ini diaplikasikan dalam bahasa pemrograman Visual Basic 6.0. Aplikasi dari dynamic programming ini dibatasi hanya pada pencarian jalur terpendek dari data graph yang diinput oleh user. Tampilannya terdiri dari beberapa form yang memiliki fungsi masing-masing yang tampil sesuai dengan urutan yang telah diprogram.

1. Halaman Utama

Pada halaman utama terdapat dua menu yaitu keluar dan graph. Tampilan halaman utama dapat dilihat pada Gambar 3.4.

(36)

Gambar 3.6. Form Menu 2. Form Graph

Form graph merupakan form yang digunakan untuk menggambar graph. Data graph diinput oleh user dengan cara menentukan vertex dan edge. Data graph juga bisa disimpan dan dibuka dalam bentuk file dengan ekstension *.tzr, sehingga mempermudah ketika data graph dibutuhkan kembali. Jumlah vertex yang dapat di-run untuk n= 100. Berikut tampilan dari form graph dengan input n=10.

(37)

3. Form Matriks Jarak

Form matriks jarak merupakan form yang digunakan untuk memasukkan jarak ke dalam matriks. Data matriks diinput oleh user . Berikut tampilan dari form matriks jarak dengan input n=10.

(38)

4. Form Hasil

Form hasil merupakan form untuk melakukan proses komputasi mencari jalur optimal minimum sekaligus menampilkan waktu komputasi. Berikut tampilan dari form hasil.

Gambar 3.9. Form Hasil Komputasi Jalur Terpendek

(39)

5. Coding untuk Dynamic Programming

Berikut adalah coding untuk penyelesaian TSP dengan dynamic programming yang ditulis dengan Microsoft Visual Basic 6.0.

1. Input Matriks Jarak

For i = 1 To Me.flxMap.Rows - 1 For j = 1 To Me.flxMap.Cols - 1 jarak(i, j) = flxMap.TextMatrix(i, j) If jarak(i, j) = 0 Then visib(i, j) = 0 ' Else

visib(i, j) = Round(1 / jarak(i, j), 2) End If

Next Next

2. Penentuan Jalur Terpendek

function TSP(G(),n) for k = 2 to n C(i,k),k)=d(1,k) next

for s=3 to n

for a= ubound(s) to lbound(s0

for b= ubound(k()) to lbound(k()) if k(b)=s(b) the

C(a,b)=min(m(c(s-{k(b)),a)+d(a,b) for c = ubound(k) to lbound(k)

optimal=min(c,k + d(b,a) next end if next next end function

(40)

6. Hasil Analisis

Setelah dynamic programming diimplementasikan dalam bahasa pemrograman, kemudian diuji dengan masukan beberapa jumlah kota untuk mendapatkan jalur terpendek dengan bobot minimum. Dari pengujian yang dilakukan dapat dilihat perbandingan waktu pada proses komputasi dengan masukan kota yang berbeda. Pengujian dilakukan pada spesifikasi komputer yang penulis gunakan, hasil waktu proses algoritma tidak selalu sama pada jenis komputer yang berbeda.

Tabel 3.1. Perhitungan Waktu antar Kota

Jumlah Kota Waktu Proses

(Detik) 5 0.016 10 0.047 15 0.153 20 0.442 25 0.716 30 0.890

Hasil pengukuran terhadap waktu proses dari metode dynamic programming ini ditunjukkan pada grafik berikut:

(41)

7. Analisis Berdasarkan Regresi

Regresi adalah bagian ilmu statistik yang mempelajari data berpasangan yang terdiri atas satu variabel takbebas dan minimal satu variabel bebas. Ada dua jenis persamaan regresi, yaitu regresi linier dan regresi non linier. Persamaan regresi linier adalah persamaan matematik yang memungkinkan peramalan nilai suatu peubah takbebas (dependent variable) dari nilai peubah bebas (independent variable).

Berdasarkan data grafik waktu proses, dilakukan pengujian untuk menghitung persamaan regresi dengan menggunakan aplikasi SPSS diperoleh model non linier eksponensial. (Data tabel SPSS terdapat pada halaman lampiran).

8. Pengujian Perangkat Lunak dengan Black Box

Pada bagian ini akan dibahas mengenai pengujian terhadap Perangkat Lunak .Pengujian perangkat lunak dilakukan dengan pengujian secara black box. Pengujian ini menggunakan beberapa kasus, seperti pada tabel di bawah ini :

No Pengujian Hasil Pengujian

1 Graph tidak ada Masukkan graph

2 Jika (i,j) ={ } Kalkulasi jarak gagal

3 (i,j) = text Kalkulasi jarak gagal

4 Nilai jarak (i,j) = jarak (j,i) Input jarak gagal 5 Titik awal = {} (kosong) Pencarian rute gagal

(42)

BAB 4

KESIMPULAN DAN SARAN

4.1 Kesimpulan

Berdasarkan hasil penelitian mengenai dynamic programming dalam penyelesaian kasus TSP dapat disimpulkan bahwa:

1. Pada penyelesaian TSP dengan dynamic programming mampu menghasilkan rute optimal yaknni jalur terpendek beserta panjang rute optimal dan dynamic programming mampu mengurangi pengenumerasian keputusan yang tidak mengarah ke solusi.

2. Dari hasil analisis ternyata untuk 5, 10, 15...30 kota, diperoleh fungsi waktu terhadap banyaknya kota berbentuk non linier.

4.2 Saran

Sebagai saran yang ditujukan kepada pembaca yang ingin menyelesaikan persoalan TSP dengan menggunakan dynamic programming, agar dapat mengembangkan metode ini lebih luas lagi. Disini penulis hanya menyelesaikan dalam cakupan kecil yang dapat dikerjakan secara manual. Untuk itu penulis berahap agar pembaca dapat menyelesaikan persoalan TSP yang lebih kompleks dalam cakupan besar.

(43)

DAFTAR PUSTAKA

Adhi, Wahyu A.2008. Studi dan Implementasi Graf dalam Penentuaan Rute. Bandung: Informatika ITB.

Evans. J. R. dan Minieka. E. 1992. Optimization Algorithms for Network and Graph. Marcel Dekker, Inc

Irfan, Mohamad Faradin. 2007. Penerapan Penggunaan Algoritma Genetika dengan Algoritma Konvensional pada Traveling Salesman Problem. Bandung: Informatika ITB

Kusuma, Dian Ningtyas, Vina Evania dan Ernastusi. 2008. Evaluasi Kinerja Algoritma Traveling Salesman Problem dengan Teknik Pemrograman Dinamik. Depok: Universitas Gunadarma.

Minoux, M. 1986. Mathematical Programming Theory and Algorithms. John Wiley & Sons Ltd.

Munir, Rinaldi. 2001. Matematika Diskrit . Bandung: Informatika ITB.

Setiadi, Robert. 2008. Algoritma itu Mudah. Jakarta: PT Prima Infosarana.

Simonetti, N. 1998. Applications of a Dynamic Programming Approach to the Traveling Salesman Problem. USA.

www.iwr.uni-heidelberg.de/groups/comopt/software/TSPLIB95/tsp/All-tsp.tar.gz. diakses tanggal 12 Desember 2008

Figur

Memperbarui...

Related subjects :