• Tidak ada hasil yang ditemukan

Aplikasi Penggunaan Algoritma Tabu Search Pada Pencarian Jalur Terpendek

N/A
N/A
Protected

Academic year: 2016

Membagikan "Aplikasi Penggunaan Algoritma Tabu Search Pada Pencarian Jalur Terpendek"

Copied!
72
0
0

Teks penuh

(1)

SKRIPSI

FAJRUL HUKMI POETRA

060803009

DEPARTEMEN MATEMATIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

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

(3)

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,

(4)

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

(5)

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.

(6)

iv

ABSTRAK

(7)

APLICATION OF USED TABU SEARCH ALGORITHM TO FIND SHORTEST PATH PROBLEM

ABSTRACT

(8)

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

(9)

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

(10)

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

(11)

ABSTRAK

(12)

v

APLICATION OF USED TABU SEARCH ALGORITHM TO FIND SHORTEST PATH PROBLEM

ABSTRACT

(13)

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

(14)

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.

(15)

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.

(16)

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

(17)

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

(18)

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

(19)

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

(20)

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

(21)

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

(22)

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

(23)

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, n1. 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

(24)

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)

(25)

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

(26)

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

(27)

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

(28)

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.

(29)

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

(30)

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

(31)

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 :

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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,

(41)

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

(42)

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

(43)

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

(44)

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.

(45)

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

(46)

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 :

(47)

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.

(48)

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

(49)

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

:

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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

(55)

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

(56)

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.

(57)

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

(58)

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

(59)

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

(60)

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")

(61)

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

(62)

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

(63)

MaxItr1 = ((Titik - 2) * (Titik - 3)) / 2

Solusi1(Index_Solusi) = Awal.ListIndex + 1 For i = 1 To Titik

Solusi1(Index_Solusi + 1) = Akhir.ListIndex + 1

(64)

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):"

(65)

Form_Proses_Iterasi.Layar_Iterasi.List(brs_Iterasi) = ""

(66)

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

(67)

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

(68)

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

(69)

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'

(70)

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)

(71)

'--- bagian timer pencatat waktu iterasi berjalan'

(72)

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

Gambar

Gambar 1.1 graf berarah dan berbobot 123456
Gambar 1.1 merupakan sampel lintasan yang diketahui terdapat 6 titik lokasi dengan
Gambar 2.1 Graf tak berarah dan berbobot
Gambar 2.3 Graf tidak berarah dan tidak berbobot
+7

Referensi

Dokumen terkait

Patient Monitor adalah alat yang digunakan untuk memantau kondisi berbagai kondisi sinyal tubuh pada pasien, di dalam Patient Monitor terdapat suatu parameter yaitu SPO2 dan BPM

We used CMEM model to simulate carbon dioxide emissions in real time, then the time delay error of the measured carbon dioxide emissions can be estimated by the

Zoning dilakukan dengan cara melakukan survei lapangan secara langsung untuk melihat kondisi pembuangan lumpur Lapindo di Sungai Porong. Setelah dilakukan

Puji dan Syukur kepada Tuhan Yang Maha Esa atas berkatnya yang berlimpah kepada penulis sehingga penulis dapat menyelesaikan penulisan skripsi ini sebagai salah satu syarat

The performance test of mini combine rice harvesting machine for tidal swamp land is done on the tidal swampland rice field located in Batang River Village,

 Karya ilmiah berbentuk buku dari hasil penelitian atau pemikiran yang original dapat berupa buku referensi atau monograf atau buku jenis lainnya yang diterbitkan dan

Transaksi sewa menyewa jasa dalam bentuk ijarah untuk transaksi multijasa, berdasarkan persetujuan atau kesepakatan antara Bank Syariah (BS) dan atau Unit Usaha Syariah (UUS)

Proses produksi biogas juga dapat menghasilkan pupuk organic yang memiliki nilai ekonomi yang tinggi (Winarso,2020). Sasaran dalam pelartihan pembuatan biogas dan pupuk di