• Tidak ada hasil yang ditemukan

Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem

N/A
N/A
Protected

Academic year: 2016

Membagikan "Aplikasi Pendekatan Dynamic Programming Pada Traveling Salesman Problem"

Copied!
43
0
0

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

(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

(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,

(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

(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.

(6)

ABSTRAK

(7)

ABSTRACT

(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.1Latar Belakang 1

1.2Perumusan Masalah 2

1.3Tinjauan Pustaka 2

1.4Tujuan Penelitian 4

1.5Kontribusi Penelitian 4

1.6Metode 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

(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

(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

(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

(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.

Teorema2.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

(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

(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.978kota

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

(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 + n1 n1 n1

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

(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

(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

(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.

(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 kV – {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 ≤ in

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

=

jS ij

+

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

(

V

c

1

f

k

V

k

f

=

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 ≤ in

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

(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

[image:32.595.155.441.248.559.2]

2

(33)

3.2 Perancangan Flowchart

Gambaran secara umum proses yang terjadi dalam menyelesaikan permasalahan TSP

dalam menentukan jalur terpendek dengan bobot minimum yaitu :

[image:33.595.157.440.182.693.2]

Mulai

Gambar dari node i ke j

Input nilai

tidak

ya

Gambar 3.3Flowchart dynamic programming pada TSP Hitung

f

(

i

,

)

=

c

i,1, 2 ≤in

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

Identifikasi pembentuk jalur dengan bobot terpendek

Hitung hubungan rekursif

Tampilkan Hasil

(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

[image:34.595.110.513.180.441.2]

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

(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

[image:35.595.107.491.335.534.2]

utama dapat dilihat pada Gambar 3.4.

(36)
[image:36.595.106.519.68.382.2]

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.

[image:36.595.117.516.498.720.2]
(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

[image:37.595.156.440.191.544.2]

jarak dengan input n=10.

(38)

4. Form Hasil

Form hasil merupakan form untuk melakukan proses komputasi mencari jalur optimal

[image:38.595.112.481.162.723.2]

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

(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

[image:40.595.157.441.258.420.2]

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:

[image:40.595.114.496.329.727.2]
(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

(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

(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.

Gambar

Tabel 2.1 Daftar  History dari TSP   Tabel 3.1 Perhitungan Waktu Antar Kota  Tabel 3.2 Hasil Pengujian dengan Black Box
Gambar 2.2. Graph Tak-Berarah
Tabel 2.1  Daftar  History dari TSP
Gambar 3.2 Graf dengan Empat Vertex
+7

Referensi

Dokumen terkait

Algoritma Greedy digunakan untuk mengetahui pergerakan laba-laba, kemudian program dinamis (dynamic programming) pada permainan Greedy Spiders digunakan untuk

Pada tampilan diatas kita dapat melihat tampilan Subset Dynamic Programming yang menampilkan hasil waktu yang diperoleh pada saat running dan menampilkan jarak terpendek

Penjelasan dari hasil yang dilakukan pemrosesan pemecahan setiap tahapan optimalitas yang dilakukan dengan menggunakan teknik dynamic programming menggunakan

Recursion sudah sesuai, dengan perolehan komposisi nilai TXOP maksimum yang sama dari setiap tahapan.. Backward maupun Forward

Pada makalah ini dijelaskan penerapan sebuah solusi paralel dari metode sequential dynamic programming untuk memecahkan masalah 2D knapsack (cutting- stock) dimana metode ini

Pada studi kasus ini didapatkan bahwa dynamic programming dapat memudahkan kita untuk bekerja lebih terstruktur dalam menyelesaikan permasalahan investasi, serta