SKRIPSI
FAJRUL HUKMI POETRA
060803009
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
APLIKASI PENGGUNAAN ALGORITMA TABU SEARCH PADA PENCARIAN JALUR TERPENDEK
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Sains
FAJRUL HUKMI POETRA 060803009
DEPARTEMEN MATEMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
PERSETUJUAN
Judul : APLIKASI PENGGUNAAN ALGORITMA TABU
SEARCH PADA PENCARIAN JALUR TERPENDEK
Kategori : SKRIPSI
Nama : FAJRUL HUKMI POETRA
Nomor Induk Mahasiswa : 060803009
Program Studi : SARJANA (S1) MATEMATIKA
Departemen : MATEMATIKA
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Medan, 21 Juli 2010
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Syahril Efendi, S.Si, M.IT Dra. Normalina Napitupulu, M.Sc NIP. 196711101996021001 NIP. 196311061989022001
Diketahui oleh
Departemen Matematika FMIPA USU Ketua,
ii
PERNYATAAN
APLIKASI PENGGUNAAN ALGORITMA TABU SEARCH PADA PENCARIAN JALUR TERPENDEK
SKRIPSI
Saya mengakui bahwa Skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 21 Juli 2010
PENGHARGAAN
Alhamdulillahirabbila’alamin, segala puji dan syukur ke hadirat allah SWT yang telah memberikan rahmat dan nikmat-Nya kepada seluruh mahluk hidup, sehingga penulis dapat menyelesaikan Skripsi yang berjudul ”Aplikasi Penggunaan Algoritma Tabu Search Pada Pencarian Jalur Terpendek” ini dengan baik. Skripsi ini merupakan salah satu mata kuliah wajib yang harus diselesaikan oleh seluruh mahasiswa Departemen Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sumatera Utara.
Pada kesempatan ini penulis mengucapkan terima kasih kepada Ibu Dra. Normalina Napitupulu, M.Sc selaku Dosen Pembimbing I dan Bapak Syahril Efendi, S.Si, M.IT selaku Dosen Pembimbing II yang telah memberikan dukungan moral, motivasi dan ilmu pengetahuan bagi penulis dalam menyelesaikan penelitian ini. Penulis juga mengucapkan terima kasih kepada Bapak Dr. Eddy Marlianto, M.Sc, selaku Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Sumatera Utara. Bapak Dr. Saib Suwilo, M.Sc dan Bapak Henry Rani Sitepu, M.Si selaku Ketua dan Sekretaris Departemen Matematika FMIPA USU Medan. Seluruh Staf Pengajar Departemen Matematika dan Ilmu Pengetahuan Alam, Universitas Sumatera Utara. Juga kepada keluarga tercinta, kedua orang tua, serta kepada istri tersayang yang selalu memberi dukungan, motivasi baik secara moril maupun materil dan doa yang tiada hentinya kepada penulis.
Tak lupa, penulis juga mengucapkan terima kasih kepada rekan-rekan mahasiswa Departemen Matematika Stambuk 2006, khususnya kepada saudara Novi Yuanda Lbs, Muhammad Haikal, Dicky Agung Andryan, Mahater Muhammad dan Sandra Rizal yang telah memberikan perhatian, nasihat dan motivasi kepada penulis dalam penyelesaian Skripsi ini. Juga untuk para junior di stambuk 2007, stambuk 2008 dan lainnya yang tidak dapat disebutkan satu persatu oleh penulis. Semoga Allah SWT memberikan balasan atas kebaikan yang telah mereka berikan kepada penulis.
Penulis menyadari masih banyak terdapat kekurangan dalam penulisan skripsi ini, karena itu penulis mengharapkan saran dan kritik yang membangun dari pembaca sekalian.
iv
ABSTRAK
APLICATION OF USED TABU SEARCH ALGORITHM TO FIND SHORTEST PATH PROBLEM
ABSTRACT
vi
DAFTAR ISI
Halaman
PERSETUJUAN i
PERNYATAAN ii
PENGHARGAAN iii
ABSTRAK iv
ABSTRACT v
DAFTAR ISI vi
DAFTAR GAMBAR vii DAFTAR TABEL viii BAB 1. PENDAHULULUAN 1
1.1 Latar Belakang 1
1.2 Perumusan Masalah 2
1.3 Pembatasan Masalah 2
1.4 Tinjauan Pustaka 3
1.5 Tujuan Penelitian 6
1.6 Manfaat Penelitian 6
1.7 Metode Penelitian 7
2. LANDASAN TEORI 8
2.1 Teori Graf 8
2.2 Permasalahan Optimasi 14
2.3 Algoritma Tabu Search 16
2.4 Kompleksitas Algoritma 20
3. HASIL DAN PEMBAHASAN 22 3.1Perancangan Perangkat Lunak 22
3.2Pengujian Aplikasi 31
4. KESIMPULAN DAN SARAN 40
4.1 Kesimpulan 42
4.2 Saran 43
DAFTAR PUSTAKA 44
LAMPIRAN 45
DAFTAR GAMBAR
Halaman
1.1 Graf Berarah dan Berbobot 123456 4 2.1 Graf Tak Berarah dan Berbobot 9
2.2 Graf Berarah dan Berbobot 10
2.3 Graf Tidak Berarah dan Tidak Berbobot 10 2.4 Graf Berarah dan Tidak Berbobot 11
2.5 Graf Berarah ABCDEF 13
2.6 Graf Berarah ABCDEF 15
2.7 Graf Tidak Berarah 123456 17
3.1 Visual Basic Versi 6.0 23
3.2 Form Aplikasi Pencarian Jalur Terpendek 26
3.3 Form Layar Iterasi 26
3.4 Tampilan Awal Aplikasi 27
3.5 Diagram Penggunaan Aplikasi 29
viii
DAFTAR TABEL
Halaman
2.1 Matriks Tetanggaan Graf ABCDEF 12 2.2 Matriks bersisian graf ABCDEF 14 2.3 Matriks jarak pada graf tidak berarah 123456 18
3.1 Jarak antar titik dalam km 32
3.2 Waktu tempuh antar titik dalam jam 35
ABSTRAK
v
APLICATION OF USED TABU SEARCH ALGORITHM TO FIND SHORTEST PATH PROBLEM
ABSTRACT
PENDAHULUAN
1.1 Latar Belakang
Dalam kehidupan sehari hari, selalu dilakukan perjalanan dari satu titik atau lokasi ke
lokasi yang lain dengan mempertimbangkan efisiensi waktu dan biaya sehingga
diperlukan ketepatan dalam menentukan jalur terpendek antar suatu titik atau lokasi
yang diinginkan. Hasil penentuan jalur terpendek nantinya akan menjadi
pertimbangan dalam pengambilan keputusan untuk menunjukkan jalur yang akan
ditempuh. Hasil yang nantinya akan didapatkan juga membutuhkan kecepatan dan
keakuratan dengan bantuan komputer.
Secara umum pencarian jalur terpendek dapat dibagi menjadi dua metode,
yaitu metode konvensional dan metode heuristik. Metode konvensional diterapkan
dengan menggunakan perhitungan matematika murni, sedangkan metode heuristik
diterapkan dengan menggunakan perhitungan kecerdasan buatan. Metode heuristik
terdiri dari beberapa macam algortima seperti Generate and Test, Hill Climbing,
Genetika, Semut dll. Salah satunya adalah algoritma tabu search (TS). Tabu Search
(TS) merupakan bagian dari heuristik. Heuristik merupakan metode pencarian untuk
penyelesaian masalah optimasi. Sedangkan TS merupakan suatu algoritma untuk
penyelesaian masalah optimasi yang menggunakan short-term memoryuntuk menjaga
agar proses pencarian tidak terjebak pada nilai optimum lokal.
Metode ini menggunakan tabu list untuk menyimpan sekumpulan solusi yang baru
saja dievaluasi. Selama proses optimasi, pada setiap iterasi, solusi yang akan
dievaluasi akan dicocokkan terlebih dahulu dengan isi pada tabu list untuk melihat
2
tersebut tidak akan dievaluasi lagi pada iterasi berikutnya. Apabila sudah tidak ada
lagi solusi yang tidak menjadi anggota tabu list, maka nilai terbaik yang baru saja
diperoleh merupakan solusi yang sebenarnya. Mengingat prinsip algoritma TS dalam
menemukan jarak perjalanan paling pendek tersebut, maka TS merupakan salah satu
metode yang tepat digunakan untuk diterapkan dalam penyelesaian masalah optimasi,
salah satunya adalah untuk menentukan jalur terpendek.
Berdasarkan uraian tersebut penulis mengambil judul “Aplikasi Penggunaan
Algoritma Tabu Search Pada Pencarian Jalur Terpendek”.
1.2 Perumusan Masalah
Pembuatan sebuah sistem dengan memanfaatkan salah satu jenis dari metode heuristik
yaitu Tabu Search(TS) yang diharapkan dapat menyelesaikan masalah pencarian jalur
terpendek
1.3 Pembatasan Masalah
Dari latar belakang dan rumusan masalah yang telah di jelaskan, pencarian jalur
terpendek dibatasi pada salah satu jenis algoritma yang digunakan dalam metode
heuristik, yaitu Tabu Search(TS). Batasan masalah yang diperlukan dalam penelitian
yaitu :
1. Model graf yang digunakan adalah graf berarah (directed graph ataudigraph)
dan berbobot (weighted graph) serta jenis lintasanya tertutup (Sirkuit).
2. Masukan yang diperlukan berupa jumlah titik yang akan dicari beserta
namanya.
3. Bobot antar titik yang ditentukan merupakan bobot jarak dan bobot kendala
waktu tempuh antar titik. Sehingga jalur terpendek akan ditentukan
berdasarkan 2 hal yaitu, jarak terpendek antar titik dan waktu tempuh yang
tercepat.
5. Fungsi – fungsi yang dibutuhkan adalah :
a. Fungsi untuk menentukan titik selanjutnya
b. Fungsi untuk menyeleksi jarak terpendek
c. Fungsi untuk menyeleksi kendala terhadap waktu
6. Sistem dibangun menggunakan bahasa pemrograman Visual Basic 6.0.
1.4 Tinjauan Pustaka
1. Menurut Rinaldi Munir (2009) dalam bukunya yang berjudul “Matematika
Diskrit”Edisi ketiga, Masalah mencari lintasan terpendek dalam graf merupakan
salah satu persoalan optimasi. Graf yang digunakan dalam pencarian lintasan
terpendek adalah graf berbobot (weighted graph), yaitu graf yang setiap sisinya
diberikan suatu nilai atau bobot. Bobot pada sisi graf dapat menyatakan jarak antar
kota, waktu pengiriman pesan, jalur komunikasi dan sebagainya.
2. Menurut Kusumadewi dan Purnomo (2005) dalam bukunya yang berjudul
“Penyelesaian Masalah Optimasi dengan Teknik Heuristik” , Tabu Search (TS)
merupakan metode optimasi yang menggunakan short-term memory untuk
menjaga agar proses pencarian tidak terjebak pada nilai optimum lokal. TS
merupakan pendekatan meta-heuristik yang pertama kalinya diusulkan oleh Fred
Glover (1986), untuk menyelesaikan masalah optimasi dengan seakurat mungkin.
Beberapa elemen utama pada Tabu Searchadalah sebagai berikut :
1. Representasi resolusi
Setiap solusi yang mungkin pada suatu permasalahan optimasi harus
direpresentasikan secara unik.
2. Fungsi Cost
Setiap fungsi costakan memetakan setiap solusi feasibleke nilai cost-nya.
3. Tetangga
Suatu fungsi yang memetakan setiap solusi feasible S ke solusi-solusi yang
lain.
4
Suatu daftar yang berisikan T gerakan terakhir.
5. Jumlah elemen yang harus ada pada suatu solusi.
Dalam hal ini TS akan menentukan jarak terpendek dari permasalahan lintasan yang
diketahui jarak antar titik dengan diketahui titik awal A dan titik tujuan D. Sebagai
contoh sederhana perhatikan gambar 1.1 dari graf 123456 berikut ini :
Senarai ketetanggaan untuk graf pada gambar 1.1 :
1 : 2, 3, 4, 5, 6
2 : 3, 5, 6
3 : 4
5 : 4
6 : 3, 4
Proses pencarian menggunakan TS dengan maksimum iterasi 5, diperoleh :
Jalur awal :
1 2 3 4 Panjang jalur = 23
Iterasi ke-1 :
Tabu List :
1 2 3 4 Panjang jalur = 23
Tetangga (Jalur alternatif berikutnya) :
Jalur ke-1 : 1 2 3 4 Panjang jalur = 23
Jalur ke-2 : 1 5 4 Panjang jalur = 14
Jalur ke-3 : 1 6 3 4 Panjang jalur = 21
Jalur ke-4 : 1 4 Panjang jalur = 19
Jalur ke-5 : 1 2 5 4 Panjang jalur = 30
Jalur ke-6 : 1 2 6 3 4 Panjang jalur = 30
Iterasi ke-2 :
Tabu List :
1 2 3 6 4 Panjang jalur = 23
1 5 4 Panjang jalur = 14
Tetangga (Jalur alternatif berikutnya) :
Jalur ke-1 : 1 3 4 Panjang jalur = 23
Jalur ke-2 : 1 5 4 Panjang jalur = 14
Jalur ke-3 : 1 6 3 4 Panjang jalur = 21
Jalur ke-4 : 1 4 Panjang jalur = 19
Jalur ke-5 : 1 3 4 Panjang jalur = 23
Jalur ke-6 : 1 3 4 Panjang jalur = 23
Jalur ke-7 : 1 3 4 Panjang jalur = 23
Seterusnya hingga 5 iterasi, dan pada iterasi ke-4 akan diperoleh suatu jalur terpendek,
yaitu :
Jalur ke-7 : 1 6 4 Panjang jalur = 11
Gambar 1.1 merupakan sampel lintasan yang diketahui terdapat 6 titik lokasi dengan
masing-masing jaraknya. Maka dengan menggunakan algoritma Tabu Search akan
didapat suatu lintasan yang minimum atau terpendek. Dengan asumsi bahwa titik-1
merupakan titik awal dan titik-4 merupakan titik tujuan. Sehingga didapatkan lintasan
6
Algoritma Tabu Searchsecara garis besar dapat ditulis sebagai berikut :
Langkah 0 : Tetapkan :
X = Matriks input berukuran (n x m). MaxItr = Maksimum Iterasi.
Langkah 1 : S = bangkitkan solusi secara random. Langkah 2 : GlobalMin = FCost(S).
Langkah 3 : Best = S.
Langkah 4 : TabuList = [ ].
Langkah 5 : Kerjakan dari k = 1 sampai MaxItr: Langkah 6 : BestSoFar = Cost.
Langkah 7 : BestMove = S.
Langkah 8 : Kerjakan dari i = 1 sampai MaxItr: Langkah 9 : Kerjakan dari j = i sampai n: Langkah 10: L = Tukar(S[i],S[j]). Langkah 11: Cost = FCost(L).
Langkah 12: Jika(L TabuList)atau(Cos<GlobalMin),kerjakan : Langkah 13: Jika (Cost < BestSoFar), kerjakan :
Langkah 14: BestSoFar = Cost. Langkah 15: BestMove = L. Langkah 16: S = BestMove.
Langkah 17: Tambahkan S ke Tabu List.
Langkah 18: Jika BestSoFar < GlobalMin, kerjakan : Langkah 19: GlobalMin = BestSoFar.
Langkah 20: Best = BestMove.
Solusi Akhir adalah Best, dengan cost sebesar GlobalMin.
1.5 Tujuan Penelitian
Tujuan yang diharapkan dari penulisan skripsi ini adalah membuat suatu perangkat
lunak yang dapat mengaplikasikan Tabu Search dalam kasus pencarian jalur
terpendek antar titik atau lokasi dan juga mengetahui kecepatan waktu yang
diperlukan.
1.6 Manfaat Penelitian
Aplikasi ini diharapkan dapat dimanfaatkan untuk :
1. Membantu masyarakat terutama yang berhubungan langsung dengan transportasi
saat mereka melaksanakan perjalanan sehingga dapat menghemat waktu, tenaga
dan biaya.
2. Menambah perbendaharaan mengenai jalur terpendek.
1.7 Metode Penelitian
Salah satu metode penyelesaian permasalahan yang cukup efektif adalah metode
algoritma heuristik (Heuristic Algorithm), yaitu suatu jenis algoritma yang termasuk
ke dalam jenis algoritma sub-optimal.
Metode yang digunakan dalam penelitian ini meliputi metode pengumpulan data dan
pengembangan system.
1. Metode Pengumpulan Data
Pengumpulan data yang diperlukan menggunakan metode sebagai berikut :
a. Studi Literatur
Menggunakan berbagai macam literatur yang berhubungan dengan Tabu
Search(TS) dan permasalahan jalur terpendek.
b. Referensi Internet
Mencari referensi dan bahan-bahan melalui media internet
2. Metode Pengembangan Sistem
Metode pengembangan sistem yang digunakan meliputi :
a. Perancangan Perangkat Lunak
Perangkat lunak adalah rangkaian perintah untuk menjalankan suatu fungsi
pada perangkat keras. Dalam penelitian ini dibutuhkan perangkat lunak
sebagai media perancangan, yaitu:
1. Sistem Operasi Windows XP SP2
2. Microsoft Visual Basic 6.0
b. Aplikasi perangkat lunak dan analisis kinerja perangkat lunak
Aplikasi merupakan tahap dimana sistem siap untuk dioperasikan pada tahap
yang sebenarnya, sehingga akan diketahui apakah sistem yang dibuat telah
sesuai. Pada aplikasi Tabu Searchini telah dibatasi hanya pada pencarian jalur
BAB II
LANDASAN TEORI
2.1 Teori Graf
2.1.1 Defenisi Graf
Graf G didefenisikan sebagai pasangan himpunan (V,E), ditulis dengan notasi G =
(V,E), yang dalam hal ini V adalah himpunan tidak kosong dari simpul-simpul
(vertices atau node) dan E adalah himpunan sisi (edges atau arcs) yang
menghubungkan sepasang simpul (Munir, 2009).
Simpul pada graf dapat dinomori dengan huruf, seperti a,b,c,d,..., atau dengan
bilangan asli 1,2,3, … atau juga gabungan dengan keduanya. Sedangkan untuk sisi
yang menghubungkan antara simpul u dan v dinyatakan dengan (u,v) atau dapat
dinyatakan dengan lambang e1,e2,e3, … dengan 1,2,3 adalah indeks. Dapat dikatakan
bahwa jika e merupakan sisi yang menghubungkan simpul u dengan v, maka e dapat
ditulis sebagai e= (u,v).
Dalam aplikasinya, setiap simpul pada graf dapat dijadikan sebagai objek kehidupan,
yaitu sebagai objek titik jaringan pesan atau komunikasi, lokasi penempatan kerja,
titik kota, jalur transportasi dan lain sebagainya. Sedangkan untuk sisi graf dijadikan
sebagai bobot jarak, waktu, biaya dan kendala lainnya. Dan juga busur (arcs) adalah
2.1.2 Jenis Graf
Berdasarkan orientasi arah pada sisi dan bobotnya, maka secara umum graf dibedakan
atas empat jenis :
1. Graf tidak berarah dan berbobot (undirected graph)
Graf yang setiap sisinya tidak mempunyai arah anak panah tetapi memiliki bobot pada
setiap sisinya. Urutan pasangan simpul yang terhubung oleh sisi tidak diperhatikan.
Sehingga (u,v) = (v,u) adalah sisi yang sama.
Sehingga graf tak berarah sering dipakai pada jaringan saluran telepon karena
sisi pada graf tak berarah menyatakan bahwa saluran telepon dapat beroperasi pada
dua arah. Perhatikan contoh graf tak berarah pada Gambar 2.1 dengan enam buah
simpul dan sebelas buah sisi.
2. Graf berarah dan berbobot (directed graph)
Graf yang setiap sisinya diberikan orientasi arah disebut sebagai graf berarah. Secara
umum sisi berarah disebut dengan busur (arc). Pada graf berarah (u,v) dan (v,u)
menyatakan dua buah busur yang berbeda, dalam arti kata bahwa (u,v) (v,u). Jadi Gambar 2.1 Graf tak berarah dan berbobot
5
3 3
6 2
6
10 1
8
C
E A
F B
D
7
10
untuk busur (u,v) simpul u dinamakan simpul asal dan simpul v dinamakan simpul
terminal atau simpul tujuan.
Graf berarah sering dipakai untuk menggambarkan aliran proses, peta lintas
kota dan lain sebagainya. Sehingga pada graf berarah gelang atau looping
diperbolehkan tetapi sisi ganda tidak diperbolehkan. Perhatikan contoh graf berarah
pada Gambar 2.2 dengan enam buah simpul dan sebelas buah sisi.
3. Graf tidak berarah dan tidak berbobot
Graf yang setiap sisinya tidak mempunyai arah dan tidak mempunyai bobot apapun.
Perhatikan contoh graf tidak berarah dan tidak berbobot pada Gambar 2.3 Gambar 2.2 Graf berarah dan berbobot
3 5
3
6 2
6
10 1
8
C
E A
F B
D
7
4
Gambar 2.3 Graf tidak berarah dan tidak berbobot C
E A
F B
4. Graf berarah dan tidak berbobot
Graf yang setiap sisinya mempunyai arah tetapi tidak mempunyai bobot apapun.
Perhatikan contoh graf berarah dan tidak berbobot pada Gambar 2.4
2.1.3 Representasi Graf
Terdapat beberapa cara mempresentasikan graf, tiga diantaranya yang sering
digunakan adalah matriks ketetanggaan, matriks bersisian dan senarai ketetanggaan.
1. Matriks Ketetanggan (adjacency matrix)
Misalkan G = (V,E) adalah graf dengan n simpul, n1. Matriks ketetanggaan G
adalah matriks yang berukuran nn. Bila matriks tersebut dinamakan A[aij],
maka aij 1 jika simpul i dan j bertetangga atau terhubung, sebaliknya aij 0
jika simpul idan jtidak bertetangga atau tidak terhubung. Matriks bertetanggaan
hanya berisi 0 dan 1, selain dengan angka 0 dan 1, elemen matriks dapat juga
dinyatakan dengan nilai false(menyatakan 0) dan true(menyatakan 1). Gambar 2.4 Graf berarah dan tidak berbobot
C
E A
F B
12
Matriks ketetanggaan nol-satu tidak dapat digunakan untuk mempresentasikan
graf yang mempunyai sisi ganda (graf ganda). Untuk graf semu, gelang pada
simpul dinyatakan dengan nilai 1 pada matriks tetanggaannya. Tabel matriks
ketetanggaan untuk graf ABCDEF dapat dilihat pada Tabel 2.1
A B C D E F
Jumlah elemen matriks ketetanggaan untuk graf dengan nsimpul atau titik adalah
2
n . Jika setiap elemen membutuhkan ruang memori sebesar N, maka ruang
memori yang diperlukan seluruhnya adalah 2 n N .
Pada graf tidak berarah :
a. Ruang memori yang diperlukan adalah 2 2
n n
b. Derajat simpulnya adalah
Pada graf berarah :
a. Jumlah nilai pada baris i
2. Matriks Bersisian (incidency matrix)
Matriks bersisian menyatakan kebersisian simpul dengan sisi. Misalkan G = (V,E)
adalah graf dengan n simpul dan m buah sisi. Matriks bersisian G adalah matriks
yang berukuran nm. Baris menunjukkan label simpul, sedangkan kolom
menunjukkan label sisi. Bila matriks tersebut dinamakan A[aij], maka aij 1
jika simpul i bersisian dengan j, sebaliknya aij 0jika simpul i tidak bersisian
dengan simpul j.
Matriks bersisian dapat digunakan untuk mempresentasikan graf yang
mengandung sisi ganda atau sisi gelang. Derajat setiap simpul i dapat dihitung
dengan menghitung jumlah seluruh elemen pada baris i (kecuali pada graf yang
mengandung gelang atau looping). Jumlah elemen matriks bersisian adalah nm.
Jika setiap elemen membutuhkan ruang memori sebesar N, maka ruang memori
yang diperlukan seluruhnya adalah N nm. Perhatikan Gambar 2.5
menunjukkan graf berarah yang terdiri dari 6 simpul dan 10 sisi serta Tabel 2.2
yang menunjukkan matriks bersisian untuk graf ABCDEF.
e1 e2 e3 e4 e5 e6 e7 e8 e9 e10
A 1 0 0 1 0 0 0 0 0 0
B 0 0 1 0 0 0 0 0 0 0
C 0 1 0 0 1 0 0 0 0 0
Gambar 2.5 Graf berarah ABCDEF e9
e8
e7
e10
e6
e5
e4
e3
e2
e1 0
C B
F
D E
14
D 0 0 0 0 0 0 0 1 0 0
E 0 0 0 0 0 0 0 0 1 1
F 0 0 0 0 0 1 1 0 0 0
3. Senarai Ketetanggaan (adjacency list)
Jika dilihat dari segi implementasinya terhadap komputer matriks tetanggaan
memiliki kebutuhan ruang memori yang boros. Hal ini dikarenakan matriksnya
memiliki banyak elemen nol sedangkan didalam komputer elemen nol tidak perlu
disimpan. Untuk mengatasi hal tersebut maka senarai ketetanggaan yang lebih
baik. Senarai ketetanggaan mengurutkan simpul-simpul yang bertetangga dengan
setiap simpul di dalam graf. Sebagai contoh perhatikan senarai ketetanggaan
gambar 1.1 pada bab 1.
2.2 Permasalahan Optimasi
Secara umum pencarian jalur terpendek dapat dibagi menjadi dua metode, yaitu
metode konvensional dan metode heuristik. Metode konvensional diterapkan dengan
menggunakan perhitungan matematika murni, sedangkan metode heuristik diterapkan
dengan menggunakan perhitungan kecerdasan buatan.
1. Metode Konvensional
Metode konvensional adalah metode yang diterapkan menggunakan
perhitungan matematika murni. Ada beberapa metode konvensional yang
sering digunakan untuk menyelesaikan masalah optimasi, diantaranya:
algoritma Djikstra, algoritma Floyd-Warshall, dan algoritma Bellman-Ford.
2. Metode Heuristik
Metode heuristik adalah salah satu dari bidang kecerdasan buatan yang
digunakan untuk menyelesaikan masalah optimasi. Terdapat beberapa
optimasi, diantaranya adalah algoritma genetika, algoritma pencarian tabu,
jaringan saraf tiruan, algoritma semut dan lain-lain.
2.2.1 Permasalahan Lintasan Terpendek (Shortest Path Problem)
Menurut Munir, 2009 persoalan lintasan terpendek di dalam graf merupakan salah
satu persoalan optimasi. Graf yang digunakan dalam pencarian lintasan terpendek
adalah graf berbobot (weighted graph), yaitu graf yang setiap sisinya diberikan suatu
nilai atau bobot. Bobot pada sisi graf dapat dinyatakan sebagai jarak antar kota, waktu
pengiriman pesan dan lain-lain.
Dengan kata lain lintasan terpendek merupakan suatu jaringan atau kerangka jalur
petunjuk perjalanan dari suatu simpul atau titik ke simpul lainnya atau yang menjadi
tujuan perjalanan dengan beberapa pilihan jalur yang mungkin untuk di jalani.
Gambar 2.6 menunjukkan graf berarah ABCDEF dan tidak berberbobot.
Dapat dilihat pada Gambar 2.6 untuk malakukan suatu perjalanan dari simpul awal A
ke simpul tujuan F, maka terdapat beberapa pilihan jalur yang mungkin untuk di
tempuh, yaitu :
Jalur ke-1 : A B C F
Jalur ke-2 : A B E F
Jalur ke-3 : A C F
Jalur ke-4 : A D E F
E D A
F C
B
16
Jalur ke-5 : A D E F
Dari uraian jalur diatas dapat ditentukan jalur atau lintasan terpendek dengan mencari
jarak suatu jalur antara simpul-simpulnya kemudian membandingkan dengan jarak
pada jalur yang lain dan menentukan total jarak yang terpendek atau yang paling kecil.
2.3 Algoritma Tabu Search(TS)
Tabu Search merupakan salah satu algoritma yang berada dalam ruang lingkup
metode heuristik. Algoritma ini menggunakan short-term memoryuntuk menjaga agar
proses pencarian tidak terjebak pada nilai optimum lokal. Algoritma ini menggunakan
tabu list untuk menyimpan sekumpulan solusi yang baru saja dievaluasi. Selama
proses optimasi, pada setiap iterasi, solusi yang akan dievaluasi akan dicocokkan
terlebih dahulu dengan isi tabu list untuk melihat apakah solusi tersebut sudah ada
pada tabu list.
Apabila solusi tersebut sudah ada pada tabu list, maka solusi tersebut tidak
akan dievaluasi lagi pada iterasi berikutnya. Dan jika sudah tidak ada lagi solusi yang
tidak akan menjadi anggota tabu list, maka nilai terbaik yang baru saja diperoleh
merupakan solusi yang sebenarnya.
Beberapa elemen utama pada Tabu Searchadalah sebagai berikut :
1. Representasi solusi : setiap solusi yang mungkin pada suatu permasalahan
optimasi harus direpresentasikan.
2. Fungsi cost : setiap fungsi cost akan memetakan setiap solusi yang mungkin ke
nilai cost-nya
3. Neightbourhood (tetangga) : suatu fungsi yang memetakan setiap solusi yang
mungkin ke solusi-solusi yang lainnnya.
4. Tabu list : suatu listatau daftar yang berisi solusi gerakan terakhir.
5. Jumlah elemen yang harus ada pada suatu solusi.
Langkah 0 : Tetapkan :
X = Matriks input berukuran (n x m). MaxItr = Maksimum Iterasi.
Langkah 1 : S = bangkitkan solusi secara random. Langkah 2 : GlobalMin = FCost(S).
Langkah 3 : Best = S.
Langkah 4 : TabuList = [ ].
Langkah 5 : Kerjakan dari k = 1 sampai MaxItr: Langkah 6 : BestSoFar = Cost.
Langkah 7 : BestMove = S.
Langkah 8 : Kerjakan dari i = 1 sampai MaxItr: Langkah 9 : Kerjakan dari j = i sampai n: Langkah 10: L = Tukar(S[i],S[j]). Langkah 11: Cost = FCost(L).
Langkah 12: Jika(L TabuList)atau(Cos<GlobalMin),kerjakan : Langkah 13: Jika (Cost < BestSoFar), kerjakan :
Langkah 14: BestSoFar = Cost. Langkah 15: BestMove = L. Langkah 16: S = BestMove.
Langkah 17: Tambahkan S ke Tabu List.
Langkah 18: Jika BestSoFar < GlobalMin, kerjakan : Langkah 19: GlobalMin = BestSoFar.
Langkah 20: Best = BestMove.
Solusi Akhir adalah Best, dengan cost sebesar GlobalMin.
Contoh penyelesaian kasus Travelling Sales Problem menggunakan algoritma TS :
Misalkan pada kasus ini jalur yang ditetapkan dimulai dari kota ke-5 dan berakhir di
kota ke-2. Menggunakan TS dengan maksimum 6 iterasi. Perhatikan Gambar 2.7 graf
tidak berarah dan tidak berbobot 123456 dan Tabel 2.3 Matriks jarak antar titik.
6
5 2
4
3 1
18
1 2 3 4 5 6
1 0 20 21 25 30 36
2 20 0 25 21 36 30
3 21 25 0 10 11 18
4 25 21 10 0 18 11
5 30 36 11 18 0 20
6 36 30 18 11 20 0
Jalur awal :
5 1 3 4 6 2 Panjang jalur = 102
Iterasi ke-1 :
Tabu List :
5 1 3 4 6 2 Panjang jalur = 102
Tetangga (Jalur alternatif berikutnya) :
Jalur ke-1 : 5 3 1 4 6 2 Panjang jalur = 98
BestSoFar = 98
Jalur ke-2 : 5 4 3 1 6 2 Panjang jalur = 115
Jalur ke-3 : 5 6 3 4 1 2 Panjang jalur = 93
BestSoFar = 93
Jalur ke-4 : 5 1 4 3 6 2 Panjang jalur = 113
Jalur ke-5 : 5 1 6 4 3 2 Panjang jalur = 112
Jalur ke-6 : 5 1 3 6 4 2 Panjang jalur = 101
BestSoFar = 93, yaitu pada jalur ke-3 diterima sebagai GlobalMin
GlobalMin = 93
Iterasi ke-2 :
Tabu List :
5 1 3 4 6 2 Panjang jalur = 102
5 6 3 4 1 2 Panjang jalur = 93
Tetangga (Jalur alternatif berikutnya) :
Jalur ke-1 : 5 3 6 4 1 2 Panjang jalur = 85
BestSoFar = 85
Jalur ke-2 : 5 4 3 6 1 2 Panjang jalur = 102
Jalur ke-3 : 5 1 3 4 6 2 Panjang jalur = 102
Jalur ke-4 : 5 6 4 3 1 2 Panjang jalur = 82
BestSoFar = 82
Jalur ke-5 : 5 6 1 4 3 2 Panjang jalur = 116
Jalur ke-6 : 5 6 3 1 4 2 Panjang jalur = 105
BestSoFar = 82, yaitu pada jalur ke-4 diterima sebagai GlobalMin
GlobalMin = 82
Iterasi ke-3 :
Tabu List :
5 1 3 4 6 2 Panjang jalur = 108
5 6 3 4 1 2 Panjang jalur = 93
5 6 4 3 1 2 Panjang jalur = 82
Tetangga (Jalur alternatif berikutnya) :
Jalur ke-1 : 5 4 6 3 1 2 Panjang jalur = 88
Jalur ke-2 : 5 3 4 6 1 2 Panjang jalur = 88
Jalur ke-3 : 5 1 4 3 6 2 Panjang jalur = 113
Jalur ke-4 : 5 6 3 4 1 2 Panjang jalur = 93
Jalur ke-5 : 5 6 1 3 4 2 Panjang jalur = 108
Jalur ke-6 : 5 6 4 1 3 2 Panjang jalur = 101
GlobalMin = 82
Seterusnya hingga 6 iterasi, dan pada iterasi ke-2 akan diperoleh suatu jalur
terpendek, yaitu :
20
2.4 Kompleksitas Algoritma
Algoritma adalah urutan logis langkah-langkah penyelesaian masalah secara
sistematis. Sebuah algoritma tidak saja harus benar tetapi juga harus efisien (Munir,
2009). Efisiensi algoritma dinilai berdasarkan kecepatan waktu eksekusi dan
penggunaan struktur data yang menyebabkan banyaknya ruang memori komputer
yang terpakai.
2.4.1 EfficiencyAlgoritma
Algorima yang terbaik adalah bukan karena algoritma itu harus benar, akan tetapi juga
harus di pandang dari efisiensinya. Jadi algoritma yang terbaik adalah algoritma yang
efisien dalam penggunaan waktu eksekusi dan ruang memori komputer. Efisiensi
algoritma juga berguna dalam membandingkan algoritma. sebuah masalah dapat
mempunyai lebih dari satu jenis algoritma. Misalkan untuk masalah pengurutan data
dalam array, dapat digunakan berbagai macam algoritma seperti: bubble sort,
selection sort, merge sortdan lain-lain.
2.4.2 Kebutuhan Waktu dan Ruang
Kebutuhan waktu suatu algoritma biasanya dihitung dalam satuan detik, milidetik dan
lain sebagainya. Sedangkan untuk ruang memori yang digunakan dapat dihitung
dalam satuan byte atau kilobyte. Biasanya seorang pengguna algoritma mengukur
kebutuhan waktu sebuah algoritma dengan mengeksekusi langsung algoritma tersebut
pada sebuah komputer, lalu dihitung berapa lama durasi waktu yang dibutuhkan untuk
menyelesaikan sebuah persoalan yang berbeda-beda.
Keakuratan waktu eksekusi algoritma dapat diperoleh dengan tidak
menghitung kebutuhan waktu untuk menampilkan antarmuka program, operasi
2.4.3 Kompleksitas Waktu
Setelah siap untuk menjalankan suatu program maka untuk mengukur kompleksitas
waktunya adalah dengan menghitung banyaknya operasi yang dilakukan oleh
algoritma, seperti: operasi penjumlahan, pengurangan, perkalian, pembagian dan lain
sebagainya. Namun yang paling idealnya adalah cukup menghitung berapa kali
operasi yang sama terjadi secara berulang dan mencatat waktu yang terjadi selama
BAB III
HASIL DAN PEMBAHASAN
Pada bab ini akan diperlihatkan hasil dan pembahasan dari penelitian yang diperoleh
berdasarkan penjelasan-penjelasan yang telah dipaparkan pada bab-bab sebelumnya.
Hasil dan pembahasan dari tulisan ini adalah mengenai aplikasi dari penggunaan
algoritma pencarian tabu (Tabu Search) yang akan diujikan pada persoalan pencarian
lintasan ataupun jalur terpendek, sehingga akan diketahui keakuratan hasil dan
lamanya waktu eksekusi dari algorima tersebut.
3.1 Perancangan Perangkat Lunak
Perancangan perangkat lunak ini dikembangkan dengan salah satu bahasa
pemrograman yaitu Visual Basic 6.0 Visual Basic 6.0 merupakan suatu bahasa
pemrograman yang memberikan berbagai macam fasilitas pembuatan aplikasi visual.
Keunggulan pada bahasa pemrograman ini terletak pada penggunaannya yang mudah
dipahami karena didukung oleh banyak toolbaryang terfokus pada objek pembuatan
visual serta bahasa pemrograman yang terstruktur secara umum seperti bahasa
pemrograman lainnya.
Keunggulan lain yang didapat dari bahasa pemrograman ini adalah banyaknya
referensi dan contoh materi ataupun program yang telah banyak dipaparkan serta hasil
rancangan aplikasi dapat langsung di eksekusi dan menjadi bagian dari program lain
Berikut proses langkah-langkah pembuatan perangkat lunak yang sedang diteliti :
1. Buatlah file baru dengan cara menekan menu file kemudian pilih New Project lalu
pilih standart EXE.
2. Ganti Caption dari Form dengan Aplikasi Pencarian Jalur Terpendek dan Name
pada kolom Propertis dengan Form_Aplikasi.
3. Tambahkan 15 buah Button pada Form_Aplikasi masing-masing :
a. Name : Input_Nama
Caption : Input
Enabled : True
Visible : True
b. Name : Hapus_Nama
Caption : Hapus
24
Enabled : False
Visible : True
c. Name : Hapus_Daftar_Nama
Caption : Hapus Daftar
Enabled : False
Visible : True
d. Name : Tampil_Daftar_Nama
Caption : Tampil/Urut
Enabled : False
Visible : True
e. Name : Ambil_Data
Caption : Ambil Data
Enabled : False
Visible : True
Dan Button lainnya adalah Name : Ganti_Jarak, Lanjut, Hapus_Daftar, Cek_Data,
Proses, Hapus_Laporan, Simpan, Reset, Tampilkan_Proses, Keluar dengan tipe
Caption, Enabled dan Visible yang sama. Sehingga jumlah semua button adalah
lima belas.
4. Tambahkan lima buah ComboBox pada Form_Aplikasi masing-masing :
a. Name : Jumlah_Titik
b. Name : Titik_Awal
c. Name : Titik_Tujuan
d. Name : Awal
e. Name : Akhir
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai False dan True
5. Tambahkan enam buah GroupBox pada Form_Aplikasi masing-masing :
a. Name : Init_Titik
b. Name : Layar_Nama
c. Name : Init_Jarak
e. Name : Laporan_Jarak
f. Laporan_Waktu
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai False dan True
6. Tambahkan dua buah TextBox pada Form_Aplikasi masing-masing :
a. Name : Text_Nama
b. Name : Text_Jarak
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai False dan True
7. Tambahkan tiga buah ListBox pada Form_Aplikasi masing-masing :
a. Name : Daftar_Nama
b. Name : Daftar_Jarak
c. Name : Laporan_Hasil
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai False dan True
8. Tambakan enam buah Label pada Form_Aplikasi masing-masing :
a. Name : Kepala_Judul
b. Name : Lbl_Menit
c. Name : Lbl_Detik
d. Name : Lbl_Milidetik
e. Name : Label1
f. Name : Label2
g. Name : CopyRight
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai True dan True
9. Tambahkan satu buah Timer pada Form_Aplikasi yaitu dengan Name : Timer1,
Enabled : False
10. Tambahkan dua buah ListBox dan dua buah Group serta satu buah
CommonDialog pada Form_Layar_Iterasi masing-masing :
a. Name : Layar_Tabu
b. Name : Layar_Iterasi
26
d. Name : Iterasi
e. Name : CommonDialog1
Dengan tipe Caption sesuai Name, Enabled dan Visible bernilai False dan True
Gambar 3.2 Form Aplikasi Pencarian Jalur Terpendek
11. Berikan kode program pada jendela editor Visual Basic 6.0, kemudian simpan file
project1 pada folder yang telah dipilih kemudian simpan juga Form_Aplikasi dan
Form_Layar_Iterasi pada lokasi folder yang sama
12. Aplikasi yang sudah siap di berikan kode program dapat di jalankan melalui editor
Visual Basic 6.0 atau juga dapat langsung dibuat File EXE nya lalu dapat langsung
dijalankan.
3.1.1 Penjelasan Kinerja Aplikasi
Aplikasi yang telah di selesaikan dengan sempurna dapat segera dijalankan atau
dieksekusi dengan meng-klik tombol start pada layer editor Visual Basic 6.0 atau
dengan menekan tombol Ctrl + F5 pada keyboard komputer. Setelah itu akan muncul
tampilan seperti pada gambar berikut :
Proses kinerjanya adalah jika seorang user atau pengguna ingin menghitung
28
cukup memberikan banyak titik yang akan dicari, kemudian menekan tombol input
pada form aplikasi. Beberapa hal yang harus diperhatikan adalah bahwa jumlah titik
awal pencarian minimum adalah lima buah dan dengan jumlah titik maksimum seratus
buah. Karena kalau tidak maka data tidak akan diperoses nantinya. Lalu setelah
tombol input ditekan maka ketik nama masing-masing titik dengan diakhir dengan
tombol enter untuk masing-masing nama, setelah itu tekan tombol tampil/urut. Maka
nama-nama titik yang diinput tersebut akan muncul pada layer daftar nama beserta
dengan indeksnya masing-masing.
Disini aplikasi itu sendiri yang akan memberikan indeks dari masing-masing nama
titik secara berurutan, yang gunanya adalah sebagai indeks dari proses iterasi nantinya.
Setelah yakin bahwa jumlah titik dan nama yang kita input sudah benar maka tekan
tombol ambil data lalu semua data yang diinput tadi akan muncul pada bagian list titik
awal, titik tujuan, awal dan akhir. Kemudian pilih titik awal dan tujuan dari masing
masing titik yang mempunyai jarak, lalu ketik pada daerah ketik jarak lalu tekan enter
pada keyboard.
Setelah semua jarak telah di input pada masing-masing titik awal dan tujuan,
kemudian tekan tombol lanjut lalu tekan tombol cek data untuk memeriksa data yang
diinput apakah sudah memenuhi sarat atau tidak. Jika program aplikasi sudah selesai
memeriksa data maka tombol pada bagian proses akan hidup dan siap untuk di
jalankan. Pada saat proses iterasi berjalan pencatat waktu juga secara otomatis akan
bergerak dan menghitung berapa lama proses iterasi dilakukan.
Setelah selesai maka hasil akhir dari jalur atau lintasan terpendek akan
ditampilkan pada layer laporan hasil disebelah bawah tombol proses. Namun untuk
melihat hasil dari proses iterasi maka dapat ditekan tombol tampilkan proses untuk
mmembuka layer proses iterasi. Setelah itu jika user ingin menyimpan hasil dari
semua laporan ke dalam bentuk file maka user hanya tinggal menekan tombol simpan,
Pengguna
Tentukan titik awal dan akhir
Cek data jarak dan titik
Proses
Tampilkan layer proses
Simpan data proses
Keluar/tutup aplikasi Input data index awal
Ambil data nama Tampilkan nama Input nama titik Tentukan banyak titik
30
Tidak
Ya Tidak
Ya Mulai Pencatat Waktu
Mulai
Berhenti Inisial Variabel
Inisial Solusi Awal Inisial MaxItr
Tabu list = Solusi awal
Tukar Solusi
Tampilkan Solusi Index = MaxItr
Tabu list = Solusi Solusi < Tabu list
Stop Waktu
3.2 Pengujian Aplikasi
Adapun yang menjadi keunggulan dari suatu aplikasi adalah penggunaan algoritma
yang memiliki kinerja sangat efektif, yaitu dinilai dari segi waktu eksekusi dan
pemakaian memori komputer. Karena setiap user tentunya bukan hanya ingin
mendapatkan hasil yang benar tetapi juga harus dalam waktu yang relatif singkat serta
penggunaan dari aplikasi yang cukup sederhana.
Dalam penelitian ini akan dilakukan pencarian jalur terpendek berdasarkan
jarak tempuh yang data-data jarak antar titiknya telah diketahui. Namun jika pencarian
jalur terpendek berdasarkan waktu tempuhnya maka cukup menggunakan data-data
waktu tempuh antar titik yang telah diketahui. Hanya saja dalam penelitian ini aplikasi
telah dibuat dan dirancang tampilannya berdasarkan jarak sehingga jika ingin
menghitung berdasarkan waktu tempuh maka tampilan pada layer iterasi dan
laporannya masih tetap berada pada kondisi jarak, namun hasil dari proses tetap
berdasarkan data-data waktu tempuh.
3.2.1 Pengujian Pertama
Berikut pada gambar di bawah adalah contoh sebuah model lintasan atau jalur yang
terdiri dari 10 titik. Jika diketahui sebuah lintasan ataupun jalur dari suatu titik ke titik
lainnya yang di modelkan dalam bentuk graf A berarah dan berbobot jarak pada
gambar 3.7 dibawah ini :
8
32
Di bawah ini adalah representasi jarak antar titik yang di tabulasikan dalam tabel
berikut :
No Titik Awal Titik Tujuan Total Jarak (Km)
1 A1 A2 9
2 A1 A3 9
3 A1 A4 16
4 A1 A6 15
5 A2 A6 13
6 A3 A4 7
7 A3 A5 7
8 A3 A6 11
9 A4 A5 5
10 A4 A8 15
11 A5 A6 10
12 A5 A7 8
13 A5 A8 13
14 A6 A7 5
15 A7 A9 7
16 A8 A7 14
17 A8 A9 10
18 A8 A10 8
19 A9 A10 4
Maka dengan menggunakan aplikasi algoritma tabu search, akan dicari
lintasan ataupun jalur terpendek berdasarkan jarak tempuh dengan titik awal berada
pada A1 dan titik akhir berada pada A10. Setelah semua nama titik dan jarak yang
mungkin telah diinput maka hasil yang didapat dengan menggunakan aplikasi adalah
seperti yang ditunjukkan pada gambar dibawah ini.
Seperti yang terlihat pada Gambar 3.8 hasil pencarian jalur terpendek berdasarkan
jarak tempuh dari titik awal A1 ke titik akhir A10 adalah A1,A6,A7,A9,A10 dengan
total jarak 31 km. Dan tampilan hasil iterasi saat proses dijalankan adalah seperti yang
di tunjukkan pada gambar dibawah ini.
Setelah itu simpan semua hasil laporan aplikasi dengan menekan tombol simpan pada
form aplikasi dan menyimpan ke dalam file aplikasi notepad dengan nama file Hasil
Iterasi Jarak 10 titik.
Gambar 3.8 Tampilan hasil pencarian jalur terpendek
34
Berikut pada gambar di bawah adalah contoh sebuah model lintasan atau jalur. Jika
diketahui sebuah lintasan ataupun jalur dari suatu titik ke titik lainnya yang di
modelkan dalam bentuk graf Aberarah dan berbobot jarak pada gambar 3.11 dibawah
ini :
Di bawah ini adalah representasi jarak antar titik yang di tabulasikan dalam tabel
berikut :
No Titik Awal Titik Tujuan Total Waktu (Jam)
1 A1 A2 2
2 A1 A3 1
3 A1 A4 5
4 A1 A6 4
5 A2 A6 4
6 A3 A4 5
7 A3 A5 5
8 A3 A6 4
9 A4 A5 3
10 A4 A8 4
11 A5 A6 5
12 A5 A7 3
13 A5 A8 3
14 A6 A7 8
15 A7 A9 2
16 A8 A7 6
17 A8 A9 4
18 A8 A10 6
19 A9 A10 1
Maka dengan menggunakan aplikasi algoritma tabu search, akan dicari
lintasan ataupun jalur terpendek berdasarkan waktu tempuh dengan titik awal berada
pada A1 dan titik akhir berada pada A10. Setelah semua nama titik dan waktu telah
diinput maka hasil yang didapat dengan menggunakan aplikasi adalah seperti yang
ditunjukkan pada gambar dibawah ini.
36
Seperti yang terlihat pada Gambar 3.12 hasil pencarian jalur terpendek berdasarkan
waktu tempuh dari titik awal A1 ke titik akhir A10 adalah A1,A4,A8,A9,A10 dengan
total waktu 14 jam. Dan tampilan hasil iterasi saat proses dijalankan adalah seperti
yang di tunjukkan pada gambar dibawah ini.
Setelah itu simpan semua hasil laporan aplikasi dengan menekan tombol simpan pada
form aplikasi dan menyimpan ke dalam file aplikasi notepad dengan nama file Hasil
Iterasi Waktu 10 titik.
Gambar 3.12 Tampilan hasil pencarian jalur terpendek
3.2.2 Pengujian Kedua
Berikut ini adalah contoh hasil dari kinerja aplikasi yang telah diselesaikan. Jika
diketahui sebuah lintasan ataupun jalur dari suatu titik kota ke titik kota lainnya yang
di modelkan dalam bentuk graf Aberarah dan berbobot pada gambar 3.15 dibawah ini
:
38
Di bawah ini adalah representasi jarak antar titik yang di tabulasikan dalam tabel
berikut :
No Titik Awal Titik Tujuan Total Jarak (Km)
1 A1 A2 12
2 A1 A3 10
3 A1 A4 8
4 A1 A5 6
5 A1 A6 10
6 A2 A9 13
7 A2 A10 8
8 A2 A11 15
9 A3 A6 8
10 A3 A7 5
11 A3 A8 8
12 A4 A2 5
13 A4 A11 8
14 A5 A6 9
15 A5 A11 7
16 A6 A12 2
17 A6 A14 9
18 A7 A14 7
19 A8 A13 5
20 A8 A14 9
21 A8 A15 8
22 A9 A17 8
23 A9 A22 17
24 A9 A23 10
25 A10 A17 6
26 A11 A17 6
27 A11 A21 15
28 A12 A14 5
29 A12 A16 5
30 A13 A19 10
31 A14 A18 5
32 A14 A20 9
33 A14 A25 20
34 A15 A20 8
35 A16 A21 7
36 A17 A21 10
40
38 A18 A21 2
39 A19 A25 20
40 A20 A25 12
41 A21 A20 7
42 A21 A22 13
43 A22 A24 2
44 A22 A25 14
45 A23 A24 11
46 A24 A25 6
Maka dengan menggunakan aplikasi algoritma tabu search, akan dicari
lintasan ataupun jalur terpendek berdasarkan jarak tempuh dengan titik awal berada
pada A1 dan titik akhir berada pada A25. Setelah semua nama titik dan jarak yang
mungkin telah dinput maka hasil yang didapat dengan menggunakan aplikasi adalah
seperti yang ditunjukkan pada gambar dibawah ini.
Seperti yang terlihat pada Gambar 3.16 hasil pencarian jalur terpendek berdasarkan
jarak tempuh dari titik awal A1 ke titik akhir A25 adalah A1,A6,A12,A14,A25 dengan Tabel 3.3 Jarak tempuh antar titik dalam km
total jarak 37 km. Dan tampilan hasil iterasi saat proses dijalankan adalah seperti yang
di tunjukkan pada gambar dibawah ini.
Setelah itu simpan semua hasil laporan aplikasi dengan menekan tombol simpan pada
form aplikasi dan menyimpan ke dalam file aplikasi notepad dengan nama file Hasil
Iterasi jarak 25 titik.
Gambar 3.17 Tampilan iterasi pada layar aplikasi
BAB IV
KESIMPULAN DAN SARAN
4.1 Kesimpulan
Dari penelitian yang telah dilakukan ini dapat diambil beberapa kesimpulan mengenai
kinerja pencarian jalur terpendek dari algoritma Tabu Search (TS), yang telah
diujikan, yaitu :
1. Rata-rata kecepatan waktu eksekusi yang dilakukan oleh algoritma Tabu
Search (TS) adalah kurang dari 20 detik setelah dilakukan pengujian pada
pengujian pertama dengan graf A sepuluh titik lokasi kecepatan waktu
eksekusi 0,10 detik dan 0,06 detik pada pengujian berikutnya, kemudian pada
pengujian kedua dengan graf A dua puluh lima titik lokasi diperoleh kecepatan
waktu eksekusi adalah 12,58 detik.
2. Berdasarkan referensi yang ada bahwa algoritma Tabu Search bukan hanya
dapat menentukan nilai optimum pada kasus Travelling Sales Problemdan Job
Assigment Problem, namun juga dapat diterapkan dalam kasus Shortest Path
Problem dengan kondisi titik awal dan akhir yang diketahui karena algoritma
ini memilih langkah berikutnya (neightbour-solution) dengan dukungan tabu
listyang berfungsi menyimpan sekumpulan solusi yang mungkin.
3. Kecanggihan teknologi komputer dapat dimanfaatkan untuk mengaplikasikan
persoalan pencarian jalur terpendek dalam waktu yang cukup singkat dan
dengan hasil yang akurat juga tepat, sehingga mempermudah dalam
4. Penggunaan algoritma yang lain untuk kasus yang sama ataupun yang berbeda
akan memberikan hasil kompleksitas yang berbeda juga, jadi tidak dapat
dipastikan bahwa algoritma Tabu Searchadalah yang terbaik.
5. Dari sisi penggunaan deklarasi variabel, algoritma Tabu Search dapat
dikatakan membutuhkan banyak sekali variabel dalam pencapaian hasil akhir
yang akurat dan juga penggunaan memori karena mengharuskan banyak
penyimpanan memori arraydalam tabu listyang digunakannya.
4.2 Saran
Untuk memperlihatkan dan membuktikan keefektifan, kelebihan, keakuratan dan
kelemahan dari algoritma Tabu Search (TS), maka perlu diadakan sebuah penelitian
lebih lanjut dengan tujuan untuk membandingkan seluruh algoritma pencarian jalur
terpendek (shortest path problem) yang ada pada berbagai data dengan jumlah titik
yang lebih banyak dari yang saat ini diteliti. Dan juga diharapkan agar kinerja proses
pencarian jalur terpendek dari algoritma tersebut dapat lebih ditingkatkan lagi dalam
hal kecepatan eksekusi pencarian dan dalam penghematan penggunaan memori
44
DAFTAR PUSTAKA
Bunafit Komputer. 2008. 25 Aplikasi Windows Populer dengan Visual Basic 6.0, Jakarta : Elex Media Komputindo.
Kadir, Abdul. 1999. Panduan Pemrograman Visual C++,Yogyakarta : Andi Offset.
Kusumadewi, Sri. , Purnomo, Hari. 2005. Penyelesaian Masalah dengan Teknik-teknik Heuristik, Yogyakarta : Graha Ilmu.
Mutakhiroh, Ling. , Saptono, Fajar. , Hasanah, Nur. , Wiryadinata, Romi. 2007. Pemanfaatan Metode Heuristik Dalam Pencarian Jalur Terpendek Dengan Algoritma Semut Dan Genetika, Yogyakarta, Dalam Seminar Nasional Aplikasi Teknologi Informasi.
Munir, Rinaldi. 2009. Matematika Diskrit Edisi Ketiga, Bandung : Informatika Bandung.
Oonsivilai, Anant. , Srisuruk, Wichai. , Marungsri, Boonruang. , Kulworawanichpong, Thanatchai. 2009. Tabu Search Approach to Solve Routing Issues in Communication Networks. Dalam World Academy Science, Enggineering And Technologi, 53 2009.
Subari , Yuswanto. 2008. Panduan Lengkap Pemrograman Visual Basic 6.0, Jakarta : Cerdas Pustaka Publisher.
SOURCE PROGRAM
Dim mili, dtk, mnt, jm
Dim Tabu(1000) As Integer, Cek_Solusi(1000) As Integer, Solusi2(1000) As Integer, Solusi3(1000) As Integer
Dim Index_Tukar As Integer, Tukar As Integer, Pnjg As Integer, Index_No_Iterasi As Integer, Tabu_Cek(1000) As Integer
Private Declare Function SendMessageByNum _ Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal _ wParam As Long, ByVal lParam As Long) As Long Const LB_SETHORIZONTALEXTENT = &H194
Dim Solusi1(1000) As Integer, Index_Solusi As Integer, MaxItr1 As Integer, MaxItr2 As Integer
Dim brs_Tabu As Integer, brs_Iterasi As Integer, brs_Laporan As Integer, Index_No_Tabu As Integer
Dim Jarak(1000, 1000) As Integer, Index_Jarak As Integer, Index_Daftar_Jarak As Integer
Dim Nama(1000) As String, Index_Nama As Integer, Respon As Integer, Titik As Integer, Index_Hapus As Integer
'--- Tombol Ambil Data untuk input ke titik awal dan tujuan'
Private Sub Ambil_Data_Click()
Titik_Awal.Enabled = True Titik_Tujuan.Enabled = True Text_Jarak.Enabled = True Awal.Enabled = True
Akhir.Enabled = True Cek_Data.Enabled = True
46
Titik_Awal.Text = "Titik awal" Titik_Tujuan.Text = "Titik tujuan" Text_Jarak.Text = "Ketik jarak Enter" Awal.Text = "Awal"
Akhir.Text = "Akhir"
End Sub
'--- Tombol Cek Data untuk mengecek kesiapan data untuk diproses'
Private Sub Cek_Data_Click() Tampil_Proses.Enabled = True If Index_Nama - 1 < 5 Then
'--- Deklarasi variabel awal saat aplikasi diaktifkan'
Private Sub Form_Activate()
Static x As Long brs_Laporan = 0
Titik_Awal.Text = "Titik awal" Titik_Tujuan.Text = "Titik tujuan" Text_Jarak.Text = "Ketik jarak Enter" Awal.Text = "Awal"
'--- Tombol Ganti Jarak untuk mengganti jarak yang dipilih'
Private Sub Ganti_Jarak_Click()
If Titik_Awal.ListIndex <> Titik_Tujuan.ListIndex And Text_Jarak <> "Ketik jarak Enter" Then
Jarak(Titik_Awal.ListIndex + 1, Titik_Tujuan.ListIndex + 1) = Val(Text_Jarak)
Daftar_Jarak.RemoveItem Daftar_Jarak.ListIndex
Daftar_Jarak.AddItem " Jarak " & Nama(Titik_Awal.ListIndex + 1) & " ---> " _
& Nama(Titik_Tujuan.ListIndex + 1) & " = " _
& Jarak(Titik_Awal.ListIndex + 1, Titik_Tujuan.ListIndex + 1) End If
If Titik_Awal.Text = "Titik awal" And Titik_Tujuan.Text = "Titik tujuan" And Text_Jarak.Text = "Ketik jarak Enter" Then
Respon = MsgBox(" Tentukan data yang akan diganti !", _ vbOKOnly + vbInformation, "Aplikasi Pencarian Jalur Terpendek")
Respon = vbOKOnly End If
If Titik_Awal.Text = Titik_Tujuan.Text Then
Respon = MsgBox(" Titik awal dan tujuan harus berbeda !", _ vbOKOnly + vbInformation, "Aplikasi Pencarian Jalur
Terpendek")
Respon = vbOKOnly End If
If Text_Jarak.Text = "Ketik jarak Enter" Then
Respon = MsgBox(" Berikan jarak yang akan diganti !", _ vbOKOnly + vbInformation, "Aplikasi Pencarian Jalur Terpendek")
Respon = vbOKOnly End If
48
Titik_Tujuan.Text = "Titik tujuan" Text_Jarak.Text = "Ketik jarak Enter"
End Sub
'--- Tombol Hapus Daftar Jarak membersihkan layar daftar jarak sekaligus memori jarak'
Private Sub Hapus_Daftar_Jarak_Click()
Daftar_Jarak.Clear
Daftar_Jarak.Enabled = False
End Sub
'--- Tombol Hapus Daftar Nama membersihkan layar daftar nama sekaligus memori nama'
Private Sub Hapus_Daftar_Nama_Click()
Respon = MsgBox(" Apakah anda yakin hapus semua nama ?", vbYesNo + vbQuestion, "Aplikasi Pencarian Jalur Terpendek")
End If
End If
Index_Nama = 1 End Sub
'--- Tombol Hapus membersihkan layar semua laporan iterasi'
Private Sub Hapus_Laporan_Click()
Form_Proses_Iterasi.Layar_Tabu.Clear Form_Proses_Iterasi.Layar_Iterasi.Clear Laporan_Hasil.Clear
End Sub
'--- Tombol Hapus untuk menghapus nama yang dipilih'
Private Sub Hapus_Nama_Click() Daftar_Nama.RemoveItem Daftar_Nama.ListIndex
'--- Tombol Data untuk memberikan semua nilai awal index variabel'
Input_Nama.Enabled = True Jumlah_Titik.Enabled = True Mdetik.Caption = "00"
'--- Tombol Input untuk memberikan inisial nama'
Private Sub Input_Nama_Click()
50 vbInformation, "Aplikasi Pencarian Jalur Terpendek")
Respon = vbOKOnly End If
End If
End Sub
'--- Tombol Keluar untuk menutup aplikasi'
Private Sub Keluar_Click()
Respon = MsgBox("Apakah anda yakin keluar aplikasi ?", vbYesNo + vbQuestion, _
"Aplikasi Pencarian Jalur Terpendek") If Respon = vbYes Then
End End If End Sub
'--- Tombol Proses... untuk menjalankan proses iterasi'
Private Sub Proses_Click()
Timer1.Enabled = True Call Timer1_Timer Reset.Enabled = True
Laporan_Hasil.Enabled = True Hapus_Laporan.Enabled = True Simpan.Enabled = True
MaxItr1 = ((Titik - 2) * (Titik - 3)) / 2
Solusi1(Index_Solusi) = Awal.ListIndex + 1 For i = 1 To Titik
Solusi1(Index_Solusi + 1) = Akhir.ListIndex + 1
52
Form_Proses_Iterasi.Layar_Tabu.List(brs_Tabu) = "1. " For i = 1 To Index_Solusi
Form_Proses_Iterasi.Layar_Tabu.List(brs_Tabu) = Form_Proses_Iterasi.Layar_Tabu.List(brs_Tabu) _
& Tabu(i) & " " Next
Form_Proses_Iterasi.Layar_Tabu.List(brs_Tabu) = Form_Proses_Iterasi.Layar_Tabu.List(brs_Tabu) _
Solusi1(Index_Solusi) = Awal.ListIndex + 1 For i = 1 To Titik
Solusi1(Index_Solusi + 1) = Akhir.ListIndex + 1
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) = "Tetangga (Jalur lain yang mungkin):"
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) = ""
54
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) = _
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) & Solusi2(k) & " "
Next
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) = _
Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) & " ---->" & " Total jarak = " & p
DoEvents
'--- bagian cetak layar pada form aplikasi'
DoEvents
Laporan_Hasil.List(brs_Laporan) = "" brs_Laporan = brs_Laporan + 1
Laporan_Hasil.List(brs_Laporan) = "Maka Diperoleh Jalur Terpendek : "
brs_Laporan = brs_Laporan + 1
Laporan_Hasil.List(brs_Laporan) = "" For k = 1 To n7
DoEvents
Laporan_Hasil.List(brs_Laporan) =
Laporan_Hasil.List(brs_Laporan) & Nama(Tabu(k)) & " " Next
56
SendMessageByNum Form_Proses_Iterasi.Layar_Tabu.hwnd, _ LB_SETHORIZONTALEXTENT, x, 0
SendMessageByNum Form_Proses_Iterasi.Layar_Iterasi.hwnd, _
LB_SETHORIZONTALEXTENT, x, 0 End If
End Sub
'--- Tombol Reset mengembalikan nilai waktu pada posisi nol'
Private Sub Reset_Click()
'--- Tombol Simpan untuk menyimpan hasil laporan iterasi dalam file text notepad'
Private Sub Simpan_Click()
Form_Proses_Iterasi.CommonDialog1.Filter = "Text file | *.txt" Form_Proses_Iterasi.CommonDialog1.ShowSave
If Form_Proses_Iterasi.CommonDialog1.FileName <> "" Then
Print #2, Laporan_Hasil.List(i)
'--- Tombol Tampil/Urut untuk menampilkan nama dan mengurutkannya sesuai indeks nomor'
Private Sub Tampil_Daftar_Nama_Click()
Daftar_Nama.Enabled = True
Hapus_Daftar_Nama.Enabled = True
'--- Tombol Tampilkan Proses untuk membuka layar proses iterasi dan tabulist'
58
'--- bagian pengosongan karakter text input jarak saat di klik'
Private Sub Text_Jarak_Click() Text_Jarak.Text = ""
End Sub
'--- bagian input jarak saat text ditekan enter'
Private Sub Text_Jarak_KeyDown(KeyCode As Integer, Shift As Integer)
If Text_Jarak <> "" And KeyCode = 13 And Titik_Awal.ListIndex <> Titik_Tujuan.ListIndex Then
Daftar_Jarak.AddItem " Jarak " & Nama(Titik_Awal.ListIndex + 1) & " ---> " _
& Nama(Titik_Tujuan.ListIndex + 1) & " = " _
& Jarak(Titik_Awal.ListIndex + 1, Titik_Tujuan.ListIndex + 1)
If Text_Jarak <> "" And KeyCode = 13 And Titik_Awal.Text = Titik_Tujuan.Text Then
Respon = MsgBox(" Titik awal dan tujuan harus berbeda !", _ vbOKOnly + vbInformation, "Aplikasi Pencarian Jalur
Terpendek")
'--- bagian input nama saat text ditekan enter'
Private Sub Text_Nama_KeyDown(KeyCode As Integer, Shift As Integer)
'--- bagian timer pencatat waktu iterasi berjalan'
60
End If
End If
If d = 1 Then
Detik.Caption = "0" & dtk Else
Detik.Caption = dtk End If
End If
If md = 1 Then
Mdetik.Caption = "0" & mili Else
Mdetik.Caption = mili End If