• Tidak ada hasil yang ditemukan

Pencarian jalur terpendek dalam graf multi-constrained dengan Self Adapting Multiple Constraints Routing Algorithm (SAMCRA) - USD Repository

N/A
N/A
Protected

Academic year: 2019

Membagikan "Pencarian jalur terpendek dalam graf multi-constrained dengan Self Adapting Multiple Constraints Routing Algorithm (SAMCRA) - USD Repository"

Copied!
110
0
0

Teks penuh

(1)

Disusun oleh : CICILIA SARASWATI

NIM : 055314119

JURUSAN TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA

(2)

PENCARIAN JALUR TERPENDEK DALAM GRAF

MULTI-CONSTRAINED DENGAN SELF ADAPTING MULTIPLE

CONSTRAINTS ROUTING ALGORITHM (SAMCRA)

Tugas Akhir

Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika

Disusun Oleh : CICILIA SARASWATI

NIM : 055314119

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

(3)

SHORTEST PATH FINDING IN MULTI-CONSTRAINED

GRAPH USING SELF ADAPTING MULTIPLE

CONSTRAINTS ROUTING ALGORITHM (SAMCRA)

Final Project

Submitted as Partial Fulfillment Of the Requirement For the Undergreduate Degree of Sarjana Teknik

In Informatics Engineering Department

Arranged by : CICILIA SARASWATI Student number : 055314119

INFORMATICS ENGINEERING STUDY PROGRAM

INFORMATICS ENGINEERING DEPARTMENT

SCIENCE AND TECHNOLOGY FACULTY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

(4)
(5)
(6)

HALAMAN PERSEMBAHAN

Karya ini kupersembahkan kepada

Allah Bapa di Surga

(Kaulah penuntun hidupku, Kaulah kasih yang tak pernah berkesudahan)

Mama, Bapak, mbak Desi dan adikku Frans

(Kalian adalah sumber motivasiku, anugerah terindah yang Bapa berikan untukku)

Teman-temanku

(7)

HALAMAN MOTTO

Perjalanan satu mill harus dimulai dengan satu langkah

(Lao-Tzu)

Tidak ada yang tidak mungkin di dunia ini bagi hati yang bersedia

(Abraham Lincoln)

(8)

INTISARI

Algoritma SAMCRA merupakan algoritma yang digunakan untuk memecahkan permasalahan optimasi jalur terpendek pada graf multi-constrained. Masalah optimasi multi-constraints adalah untuk menemukan jalur terpendek dari vertex sumber A ke vertex tujuan B, yang meminimalkan nilai bobot vektor,

dalam penelitian ini komponen bobot vektornya adalah jarak dan kemacetan. Untuk mendapatkan nilai minimal bobot jarak dan kemacetan, maka diperlukan panjang maksimal jalur untuk dapat membandingkan jalur ketika sebuah graf memiliki bobot lebih dari satu pada setiap linknya. Panjang maksimal merupakan nilai minimal dari perbandingan nilai maksimal penjumlahan setiap bobot dari satu simpul ke simpul lain dibagi dengan batas atas nilai setiap bobot.

Sistem ini dibangun untuk satu sisi saja, yaitu sisi pengguna. Pengguna dapat membuat graf yang sesuai dengan kebutuhan, yaitu dengan cara menambahkan, mengubah, dan menghapus data vertex, kemudian pengguna dapat membuat relasi antar vertex dengan cara menambah, mengubah, dan menghapus data edge. Setelah graf terbentuk maka pengguna dapat melakukan pencarian jalur terpendek pada graf, pencarian dilakukan dengan cara memasukkan vertex sumber dan vertex tujuan, hasil pencarian jalur terpendek berupa jalur yang dilalui, jarak jalur, dan kemacetan pada jalur.

(9)

ABSTRACT

SAMCRA algorithm is an algorithm used to solve optimization problems in graph the shortest path multi-constrained. Multi-constraints optimization problem is to find the shortest path from source vertex A to vertex B destination, which minimizes the value of the weight vector, in this research component of weight vector is the distance and congestion. To get the minimum value weighted distance and congestion, the maximum length needed to compare track to track when a graph has a weight of more than one on each link. The maximum length is the minimum value of the ratio of the maximum value the sum of each weight from one node to another node divided by the upper limit value of each weight.

The system is built to one side only, namely the user. Users can make graph in accordance with needs, that is by adding, modifying, and deleting data vertex, then the user can make the relation between the vertices by adding, modifying, and deleting the data edges. After a graph is formed then the user can search the shortest path in a graph, the search is done by inserting a source vertex and destination vertex, the shortest path search results of the path, the distance lanes, and congestion on the path.

(10)

LEMBAR PERNYATAAN PERSETUJUAN

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma : Nama : Cicilia Saraswati

NIM : 055314119

Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul :

PENCARIAN JALUR TERPENDEK DALAM GRAF MULTI-CONSTRAINED DENGAN SELF ADAPTING MULTIPLE

CONSTRAINTS ROUTING ALGORITHM (SAMCRA)

Beserta Perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakaan Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya dalam bentuk pangkalan data, mendistribusikannya secara terbatas, dan mempublikasikannya di Internet untuk kepentingan akademis tanpa perlu meminta ijin dari saya selama mencatumkan nama saya sebagai penulis.

Demikian pernyataan ini yang saya buat dengan sebenarnya. Dibuat di Yogyakarta

Pada tanggal : Oktober 2010 Yang menyatakan,

(11)

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya orang lain, kecuali yang telah disebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah.

Yogyakarta, Oktober 2010 Penulis

(12)

KATA PENGANTAR

Puji dan syukur kepada Tuhan yang Maha Esa atas rahmat dan penyertaan Nya sehingga penulis dapat menyelesaikan Tugas Akhir dengan judul “Pencarian Jalur Terpendek dalam Graf Multi-constrainted dengan Self Adapting Multiple Constraints Routing Algorithm (SAMCRA)”. Tugas Akhir ini disusun guna memenuhi salah satu syarat untuk memperoleh gelar sarjana Teknik di Jurusan Teknik Informatika, Universitas Sanata Dharma.

Penyusunan Tugas Akhir ini tidak terlepas dari doa, bantuan, bimbingan, serta dukungan dari berbagai pihak yang sangat bermanfaat bagi penulis. Dalam kesempatan ini, penulis mengucapkan terima kasih yang tak terhingga kepada : 1. Bapak Bambang Soelistijanto, S.T., M.Sc. selaku dosen pembimbing atas

segala kesabaran, bimbingan, dan bantuannya dalam membimbing penulis dalam menyelesaikan Tugas Akhir ini.

2. Bapak Eko Hari Parmadi, S.Si., M.Kom. dan Bapak Puspaningtyas Sanjoyo Adi, S.T., M.T. selaku dosen penguji atas saran dan masukan demi kesempurnaan Tugas Akhir ini.

3. Para dosen Universitas Sanata Dharma yang telah membantu dan memberi bekal pengetahuan kepada penulis.

4. Para karyawan dan staff Fakultas Sains dan Teknologi, khususnya Jurusan Teknik Informatika, atas segala bantuan yang diberikan kepada penulis.

(13)

6. Gabrelia Bonino, Ni Putu Feronika, Putri Ratnawati, Yuvenalis Andarwati, Agnes Putri, Floriska Nuhan, dan Maria Yesse atas dukungan, doa, bantuan yang sangat bermanfaat, atas kesediaan untuk mendengarkan keluh kesah, serta menjadi tempat penghiburan bagi penulis.

7. Lusia Yuliani, Margaretha Rosita, Marsela Lotjita, dan Yuliana Rosi atas kesediaan mendengarkan keluh kesah, memberikan dukungan, terima kasih untuk menjadi tempat menghilangkan penat.

8. Semua pihak yang telah membantu penulis dalam menyelesaikan studi dan Tugas Akhir, yang tidak dapat disebutkan satu persatu.

Semoga segala kebaikan yang telah penulis terima menjadi berkat dan bekal yang sangat berguna di kehidupan penulis nantinya. Penulis menyadari bahwa penulisan Tugas Akhir ini masih jauh dari kesempurnaan, oleh sebab itu penulis mengharapkan kritik dan saran dari pembaca yang bersifat membangun. Atas kritik dan saran yang diberikan, penulis mengucapkan terima kasih.

Yogyakarta, Oktober 2010 Penulis,

(14)

Daftar Isi

PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ... ix

PERNYATAAN KEASLIAN KARYA ... x

I.3. Tujuan dan Manfaat Penelitian ... 2

I.4. Batasan Masalah... 2

I.5. Metodologi Penelitian ... 3

I.6. Sistematika Penulisan ... 4

Bab II. Landasan Teori ... 6

II.1. Pengenalan Graf ... 6

II.2. Graf tidak berarah ... 7

II.3. Graf Multi-Constraints ... 8

II.4. Jalur Terpendek ... 9

II.5. Matriks untuk Graf Berlabel ... 9

II.6. Algoritma Dijkstra ... 10

II.7. SAMCRA (Self Adapting Multiple Constraints Routing Algorithm) .. 11

II.8. Contoh operasi algoritma SAMCRA ... 19

Bab III. Analisis dan Perancangan Sistem... 27

III.1. Analisis Sistem ... 27

III.1.1. Gambaran Umum Sistem ... 27

III.1.2. Konsep Kerja Sistem ... 27

III.1.3. Kebutuhan Sistem ... 28

III.1.4. Use Case Diagram ... 28

III.1.5. Pemodelan Proses... 30

III.1.6. Pemodelan Data ... 37

III.2. Perancangan Antarmuka ... 39

III.2.1. Rancangan Antarmuka Utama Sistem ... 39

III.2.2. Rancangan Masukan Sistem ... 40

III.2.3. Rancangan Antarmuka Keluaran Sistem ... 46

(15)

IV.1. Pembuatan Database ... 49

IV.2. Pembuatan Tabel ... 50

IV.2.1. Tabel Vertex... 50

IV.2.2. Tabel Edge ... 50

IV.3. Pembuatan Store Procedure ... 51

IV.4. Implementasi Koneksi Java dengan MySQL ... 54

IV.5. Implementasi Antarmuka ... 57

IV.5.1. Implementasi Antarmuka Halaman Utama ... 57

IV.5.2. Implementasi Antarmuka Halaman Komponen Vertex ... 58

IV.5.3. Implementasi Antarmuka Halaman Komponen Edge ... 68

IV.5.4. Implementasi Antarmuka Operation SAMCRA ... 78

IV.5.5. Implementasi Antarmuka About Software ... 85

Bab V. Uji Coba dan Analisis Hasil ... 86

V.1. Uji Coba Algoritma dengan Perhitungan Manual ... 86

V.1.1. Uji Coba Algoritma dengan Perhitungan Manual ke-1 ... 86

V.1.2. Uji Coba Algoritma dengan Perhitungan Manual ke-2 ... 87

V.2. Uji Algoritma dengan Menggunakan Aplikasi ... 88

V.2.1. Uji Coba Algoritma dengan Aplikasi ke-1 ... 88

V.2.2. Uji Coba Algoritma dengan Aplikasi ke-2 ... 89

V.3. Analisis Hasil ... 90

Bab VI. Penutup ... 91

VI.1. Kesimpulan ... 91

VI.2. Saran ... 91

(16)

Daftar Gambar

Gambar 2.1 Graf ... 6

Gambar 2.2 Graf multi-constraints ... 8

Gambar 2.3 Representasi graf tidak berarah ke dalam matriks ... 10

Gambar 2.4 Dominated paths : skenario (a) dan (b) ... 13

Gambar 2.5 Meta-Code Fase Inisialisasi ... 15

Gambar 2.6 Meta-Code Feasibility ... 16

Gambar 2.7 Meta-Code Update Antrian... 17

Gambar 2.8 Meta-Code SAMCRA ... 18

Gambar 2.9 Graf yang setiap linknya memiliki dua komponen bobot vektor. ... 20

Gambar 2.10 Jaringan pada fase inisialiasi ... 21

Gambar 2.11 Langkah 1 dan 2 dalam operasi SAMCRA ... 22

Gambar 2.12 Langkah 3 dan 4 dalam operasi SAMCRA ... 23

Gambar 2.13 Langkah 5 dan 6 dalam operasi SAMCRA ... 24

Gambar 2.14 Langkah 7 dan 8 dalam operasi SAMCRA ... 25

Gambar 3.1 Graf multi-constraints ... 27

Gambar 3.2 Use Case Diagram ... 29

Gambar 3.3 Diagram konteks ... 30

Gambar 3.4 Diagram berjenjang sistem pencarian jalur terpendek... 31

Gambar 3.5 Diagram Alir Data level 0... 32

Gambar 3.6 Diagram Alir Data level 1... 33

Gambar 3.7 Algoritma Dijkstra ... 34

Gambar 3.8 Algoritma SAMCRA ... 36

Gambar 3.11 Rancangan Antarmuka Utama Sistem ... 40

Gambar 3.12 Rancangan Antarmuka Form Setup Vertex ... 41

Gambar 3.14 Rancangan Antarmuka Form Edit Vertex ... 42

Gambar 3.15 Rancangan Antarmuka Form Delete Vertex ... 43

Gambar 3.16 Rancangan Antarmuka Form Setup Edge ... 43

Gambar 3.17 Rancangan Antarmuka Form Add Edge ... 44

Gambar 3.18 Rancangan Antarmuka Form Edit Edge ... 45

Gambar 3.19 Rancangan Antarmuka Form Delete Edge ... 45

Gambar 3.20 Rancangan Antarmuka Form Operasi ... 46

Gambar 3.21 Rancangan Antarmuka Keluaran Form Setup Vertex ... 46

Gambar 3.22 Rancangan Antarmuka Hasil Keluaran dari Setup Edge ... 47

Gambar 3.23 Rancangan Antarmuka Keluaran Hasil Pencarian ... 47

Gambar 3.24 Rancangan Antarmuka Form about software ... 48

Gambar 4.1 Implementasi Pembuatan Database ... 50

Gambar 4.2 Implementasi Tabel vertex ... 50

Gambar 4.3 Implementasi Tabel edge ... 51

Gambar 4.4 Implementasi Halaman Utama Sistem ... 57

Gambar 4.5 Implementasi Antamuka Add vertex ... 58

Gambar 4.6 Pesan jika data vertex berhasil ditambahkan ... 59

(17)

Gambar 4.8 Konfirmasi Pengubahan Data Vertex ... 62

Gambar 4.9 Pesan jika data vertex berhasil diubah ... 62

Gambar 4.10 Implementasi Delete vertex ... 65

Gambar 4.11 konfirmasi penghapusan data vertex ... 65

Gambar 4.12 Pesan jika data berhasil dihapus ... 66

Gambar 4.12 Implementasi Antarmuka Add edge ... 68

Gambar 4.13 Pesan jika data edge berhasil ditambahkan ... 69

Gambar 4.14 Implementasi Antarmuka Edit edge ... 71

Gambar 4.15 Konfirmasi Pengubahan Data edge ... 72

Gambar 4.16 Pesan jika data edge berhasil diubah ... 72

Gambar 4.17 Implementasi Antarmuka Delete edge ... 75

Gambar 4.18 Konfirmasi Penghapusan Data edge ... 76

Gambar 4.19 Pesan jika data edge berhasil dihapus ... 76

Gambar 4.17 Implementasi Antarmuka operation SAMCRA... 79

Gambar 4.18 Implementasi Antarmuka about software ... 85

Gambar 5.1 Graf 1 ... 86

Gambar 5.2 Graf 2 ... 87

Gambar 5.3 Uji algoritma menggunakan aplikasi ke-1 ... 89

(18)

Daftar Tabel

Tabel 2.1 Tabel Aktivitas Operasi SAMCRA ... 26

Tabel 3.1 Struktur tabel vertex ... 38

Tabel 3.2 Struktur tabel edge ... 38

Tabel 3.2 Struktur tabel undirect ... 39

Tabel 5.1 Tabel Aktivitas Operasi SAMCRA gambar 5.1 ... 86

(19)

Bab I.

Pendahuluan

I.1. Latar Belakang

Pencarian jalur terpendek dalam graf multi-constraints merupakan permasalahan yang sering ditemui dalam kehidupan sehari-hari dalam berbagai aspek kehidupan. Tidak seperti pencarian jalur terpendek pada umumnya, yang biasanya dalam penentuan jalur terpendek hanya memperhitungkan satu kendala saja yang biasanya berupa jarak, ada beberapa kasus yang kurang tepat jika pencarian jalur terpendeknya menggunakan satu kendala saja, karena ada kendala lain yang berpengaruh dalam penentuan jalur terpendek dalam kasus tersebut. Salah satu gambaran permasalahan pencarian jalur terpendek dengan kendala lebih dari satu adalah pengendara bermotor yang menempuh perjalanan dari suatu tempat ke tempat tujuan, tentu pencarian jalur terpendeknya tidak hanya memperhitungkan kendala jarak, tetapi harus memperhitungkan pula kepadatan lalu lintas jalan yang akan dilalui, karena kepadatan lalu lintas setiap jalan berbeda-beda, bisa saja sebuah jalan memiliki jarak yang lebih dekat tetapi lalu lintas pada jalan tersebut lebih padat dibanding jalan lain yang jaraknya lebih jauh.

(20)

Berdasarkan permasalahan di atas penulis tertarik untuk membuat perangkat lunak yang dapat memecahkan permasalahan pencarian jalur terpendek dalam graf multi-constraints dengan menggunakan algoritma SAMCRA.

I.2. Rumusan Masalah

Rumusan masalah dari penelitian ini adalah bagaimana mencari jalur terpendek dalam graf multi-constraints dengan menggunakan algoritma SAMCRA?

I.3. Tujuan dan Manfaat Penelitian

Tujuan penelitian adalah membuat perangkat lunak untuk memudahkan pencarian jalur terpendek dalam graf multi-constraints dengan algoritma SAMCRA.

Manfaat dari penelitian ini adalah

 Memudahkan pencarian jalur terpendek dari satu tempat ke tempat lain yang mempunyai kendala lebih dari satu.

 Memahami algoritma SAMCRA dan pengimplementasiannya ke dalam pemrograman komputer.

I.4. Batasan Masalah

Batasan masalah dari penelitian ini adalah

(21)

Routing Algorithm (SAMCRA).

2. Bahasa pemrograman yang digunakan adalah Java. 3. Basis data yang digunakan adalah MySQL.

4. Graf yang digunakan merupakan graf tidak berarah.

5. Banyaknya kendala yang diperhitungkan adalah 2, yaitu jarak antar vertex atau distance dan tingkat kemacetan atau congestion.

I.5. Metodologi Penelitian

1. Melakukan studi kepustakaan untuk mempelajari algoritma SAMCRA, serta mencari dan mempelajari bahan kajian yang sesuai dengan sistem yang dibuat dari berbagai sumber, dapat berasal dari buku, artikel, dan internet.

2. Mengembangkan sistem menggunakan metode Rekayasa Perangkat Lunak (RPL) secara terstruktur (Whitten, 2004) yaitu :

1. Analisis Sistem

Pada tahap ini hal yang dilakukan adalah menganalisis permasalahan yang dihadapi dan kebutuhan dari sistem. Mencari dan mengumpulkan data-data secara lengkap untuk pembuatan program.

2. Desain Sistem

(22)

interface.

3. Implementasi

Pada tahap ini membuat program sesuai dengan rancangan. 4. Pengujian

Pada tahap ini dilakukan pengujian program yang telah dibuat.

I.6. Sistematika Penulisan

Laporan ini secara garis besar dibagi menjadi beberapa bab dengan perincian sebagai berikut :

BAB I PENDAHULUAN

Bab ini meliputi latar belakang, batasan masalah, tujuan dan manfaat penelitian, rumusan masalah, metodologi penelitian, serta sistematika penulisan.

BAB II LANDASAN TEORI

Bab ini berisi teori-teori yang berhubungan erat dan yang digunakan dalam penelitian.

BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab ini berisi analisis sistem serta perancangan sistem secara mendetail, yang meliputi perancangan input dan output, perancangan proses, dan juga perancangan interface.

BAB IV IMPLEMENTASI SISTEM

(23)

BAB V UJI COBA DAN ANALISIS HASIL

Bab ini berisi analisis dari hasil uji coba algoritma SAMCRA dengan menggunakan perhitungan manual dan uji coba algoritma dengan menggunakan sistem.

BAB VI PENUTUP

(24)

Bab II. Landasan Teori

II.1. Pengenalan Graf

Secara informal, graf adalah himpunan dari benda-benda yang disebut simpul (vertex atau node) yang terhubung oleh sisi (edge-edge) atau busur (arc). Biasanya suatu graf digambarkan sebagai kumpulan titik-titik yang melambangkan vertex dan dihubungkan oleh garis-garis yang melambangkan edge. Secara formalnya, Suatu graph G dapat dinyatakan sebagai G = < V,E >.

Graph G terdiri atas himpunan V yang berisikan simpul pada graf tersebut dan himpunan dari E yang berisi sisi pada graf tersebut. Himpunan E dinyatakan sebagai pasangan dari simpul yang ada dalam V. Berikut merupakan contoh graf pada gambar 2.1 :

v1

v2

v4

v3

e1

e2

e3

e4

Gambar 2.1 Graf

Graf pada gambar 2.1 terdiri dari empat titik yaitu v1, v2, v3, v4 dan empat garis

e1=(v1,v2), e2=(v2,v3), e3=(v3,v4), dan e4=(v1,v4).

Beberapa istilah berkaitan dengan graf yang akan digunakan dalam laporan Tugas Akhir ini antara lain :

(25)

2. Edge atau arc, merupakan garis yang menghubungkan dua vertex.

3. Walk (perjalanan), walk atau perjalanan pada suatu graf G adalah barisan simpul dan ruas secara berganti-ganti. Contoh

v1, e1, v2, e2, v3, en-1, vn

Perjalanan dengan notasi di atas dapat ditulis dengan menuliskan himpunan ruas saja e1, e2, en-1 atau dengan menuliskan himpunan simpul-simpulnya

yaitu v1, v2, v3, vn-1, vn.

4. Path (jalur). Path atau jalur adalah suatu walk atau perjalanan dimana semua simpul dalam himpunannya adalah berbeda.

II.2. Graf tidak berarah

Graf tidak berarah G didefinisikan secara abstrak sebagai suatu pasangan terurut (V, E), V merupakan vertex dan E merupakan edge, dengan V suatu himpunan dan E himpunan yang unsur-unsurnya berupa multi himpunan dengan dua unsur dari V. Graf tidak berarah dapat direpresentasikan secara geometrik sebagai suatu himpunan titik-titik V dengan suatu himpunan garis-garis E antara titik-titik tersebut, graf tidak berarah tidak memperhatikan arah sisi yang menghubungkan dua vertex. Graf tidak berarah terdiri dari :

1. Graf Sederhana, graf sederhana merupakan graf yang tidak boleh mempunyai loop dan garis paralel.

2. Graf Lengkap dengan n titik (Kn), graf dengan n titik dan setiap dua titik

(26)

II.3. Graf Multi-Constraints

Gambar 2.2 Graf multi-constraints

Gambar 2.2 merupakan gambar graf multi-constraints, graf multi-constraints merupakan graf yang mempunyai bobot edge lebih dari satu.

Diasumsikan sebuah graf G yang setiap edge uv dari vertex u ke vertex v ditandai dengan m dimensional edge vektor, m dimensional edge vektor merupakan jumlah bobot pada edge w(u→v) = [w1(u→v), w2(u→v),....,

wm(u→v)], dimana komponen wi>0 merupakan ukuran mutu layanan (Quality of Service(QoS)), pada penelitian ini komponen bobot setiap edge yaitu w1>0

merupakan jarak dan w2>0 merupakan tingkat kemacetan. Algoritma routing QoS menghitung jalur P yang mempunyai banyak kendala wi(P) ≤ Li untuk semua

1≤im. Li merupakan mutu layanan yang diminta user dan L disebut sebagai vektor kendala.

(27)

bobot mutu layanan pada link yang mendefinisikan jalur. Contoh dari ukuran tambahan mutu layanan adalah tingkat kemacetan, biaya, dan lainnya. Untuk ukuran min-max mutu layanan bobot jalur, ukuran mutu layanan adalah minimum (maksimum) dari bobot mutu layanan pada link yang terdapat pada jalur. Mutu Layanan jalur PA→Badalah jalur antara vertex A dan vertex B yang wi(PA→B) ≤ Li untuk 1 i ≤ m.

II.4. Jalur Terpendek

Jalur terpendek merupakan bagian dari teori graf. Pada graf multi-constraints masalah jalur terpendek adalah bagaimana kita mencari sebuah jalur

pada graf yang meminimalkan panjang maksimal jalur tersebut.

II.5. Matriks untuk Graf Berlabel

Di dalam matriks suatu graf tidak berarah, jumlah successor sama dengan jumlah predeccessor. Successor vertex N disimpan dalam baris N dan predeccessor untuk vertex/node disimpan pada kolom N. Sebagai contoh lihat

(28)

Gambar 2.3 Representasi graf tidak berarah ke dalam matriks

II.6. Algoritma Dijkstra

Algoritma Dijkstra merupakan algoritma yang ditemukan oleh E. W. Dijkstra dan merupakan algoritma yang akan digunakan untuk mencari jalur terpendek dari titik awal ke titik tujuan. Langkah-langkah algoritma Dijkstra adalah sebagai berikut :

Langkah 1 : Tandai titik awal yang telah dipilih dan beri beban 0 dan beban yang sangat besar untuk titik lainnya.

Langkah 2 : Tandai sementara titik yang bisa dicapai secara langsung dari titik awal.

 Pilih jalur terpendek diantara titik yang ditandai sementara.

 Jika ada panjang jalur yang sama pilih salah satunya.

 Tandai titik yang terpilih.

(29)

II.7. SAMCRA (Self Adapting Multiple Constraints Routing Algorithm)

SAMCRA merupakan algoritma routing yang biasa digunakan untuk memecahkan masalah optimasi multi constraints, SAMCRA didasarkan pada empat konsep, yaitu: (1) definisi non-linear panjang jalur l(P), (2) k-shortest paths, (3) non-dominated paths, (4) look-ahead.

1. Definisi non-Linear Panjang Jalur l(P)

Bobot vektor jalur didefinisikan dalam penjumlahan vektor. Seperti pada aljabar linear, panjang vektor dibutuhkan, dimana bobot vektor didefinisikan dalam penjumlahan vektor. Definisi panjang jalur l(P) dibutuhkan untuk dapat membandingkan jalur ketika komponen bobot pada link memiliki ukuran mutu layanan yang berbeda pada spesifik unit. Berikut merupakan rumus panjang jalur :

l(P) =

(30)

Dijkstra. Algoritma Dijkstra digunakan untuk mengurangi graf yang akan dikembalikan sebagai jalur terpendek P yang meminimalkan panjang jalur l(P) yang didefinisikan oleh (2.1).

2. k-Shortest Paths

Algoritma k-shortest path mirip dengan algoritma Dijkstra. Penyimpanan pada setiap vertex lanjutan hanya merupakan loncatan dari vertex sebelumnya dan panjang dari jalur terpendek dari sumber ke vertex lanjutan, kita dapat menyimpan jalur terpendek pertama, kedua, ketiga, hingga k jalur terpendek bersama dengan panjang yang sesuai. Ini memungkinkan untuk tidak menyimpan sama sekali k jalur pada sebuah vertex. Pada kasus dimana nilai k tidak terbatas, algoritma k jalur terpendek mengembalikan semua kemungkinan jalur yang

diminta pada panjang antara sumber dan tujuan. Pada kasus tersebut selalu ada kemungkinan bahwa end-to-end jalur terpendek tidak dapat ditemukan. SAMCRA memilih „self-adaptively’ yang dibutuhkan nilai dari knpada setiap vertex n dari graf G, yang kontras dengan algoritma k jalur terpendek dimana pada setiap vertex n nilai sama dari k dialokasikan dan oleh karena itu tempat penyimpanan yang sama dalam antrian dari jalur per vertex. Didefinisikan sebagai kSAMCRA=

maxn G(kn) atau disebut juga sebagai ukuran kompleksitas SAMCRA.

(31)

3. Dominated paths

Dominated path pada dasarnya adalah teknik pengurangan tempat

secara drastis yang dapat meningkatkan efisiensi proses perhitungan.

”Kekuasaan jalur” dapat dianggap sebagai relaksasi multidimensional.

Relaksasi merupakan properti kunci dari satu parameter algoritma jalur terpendek seperti Dijkstra dan Bellman-Ford.

Definisi non-dominated

Dibatasi m = 2 dimensi, diasumsikan dua jalur P1 dan P2 dari vertex

sumber ke vertex lanjutan, setiap dengan bobot vektor jalur (w1(P1),w2(P1)) = (x1,y1) dan (w1(P2), w2(P2)) = (x2,y2)), pada

gambar 2.4 ditunjukan dua skenario yang mungkin dari dua jalur.

Gambar 2.4 Dominated paths : skenario (a) dan (b)

Pada gambar 2.4, dalam skenario (a), P1 mendominasi P2, tapi

dalam skenario (b) P1 dan P2 tidak saling mendominasi satu sama

lain. Pada skenario (a), P1 lebih pendek daripada P2 dan w1(P1) <

w1(P2) untuk semua komponen 1≤ i ≤ m. Pada skenario (b) kedua

(32)

w1(P1) < w2(P2) untuk beberapa indikasi i, tapi wj(P1) > wj(P2)

untuk setidak-tidaknya satu indeks j.

Sebuah jalur P disebut non-dominated jika tidak ada jalur P‟ untuk wi(P‟) ≤ wi(P) untuk semua bobot komponen link i kecuali untuk

setidak-tidaknya satu j untuk wj(P‟) < wj(P).

4. Look- Ahead

Di samping jalur dominasi, konsep look-ahead dapat dilihat sebagai penambahan mekanisme untuk mengurangi tempat pencarian jalur yang mungkin. Konsep look-ahead membatasi kelompok jalur yang mungkin dengan menggunakan informasi jalur yang tersisa untuk mencapai vertex tujuan. Konsep look ahead mengajukan untuk menghitung jalur terpendek akar pohon pada tujuan untuk setiap vertex n dalam graf G untuk setiap m link yang terpisah. Prinsip dasar yang

(33)

Meta-Code SAMCRA

Gambar 2.5 Meta-Code Fase Inisialisasi

(34)

FEASIBILITY(G, u, i, v, counter, d, w, maxlength)

Pada tahap FEASIBILITY (gambar 2.6), dilakukan pengecekan jalur terdominasi satu sama lain atau memaksa nilai maxlength. Sub jalur u[i] menunjuk i jalur yang disimpan pada vertex u. FEASIBILITY selanjutnya jalur i pada vertex u terhadap vertex tetangga v, dimana counter[v] vertex sudah disimpan. Untuk setiap counter[v] sub jalur v[j] disimpan pada vertex v (pada baris 2-3). Jika semua komponen dari vektor yang berbeda tidak negatif, kemudian sub jalur v[j] memaksa nilai maxlength maka tandai dengan warna hitam pada baris 4. Jalur yang telah ditandai dengan warna hitam menjadi nilai lama dan mungkin dapat ditempatkan kembali dengan jalur yang baru. Baris 5 mengecek jika jalur selanjutnya merupakan dirinya sendiri terdominasi oleh sub jalur v[j]. Jika

(35)

UPDATEQUEUE(Q, u, i, j, d, w, , counter[v], predicted_length) 3 DECREASE-KEY(Q, v, j, predicted_length) 4 d[v[j]]

8 INSERT(Q, v, counter[v], predicted_length)

9 d

Gambar 2.7 Meta-Code Update Antrian

(36)

(baris 7-10). Bukan panjang asli yang disimpan, tapi ini merupakan predicted_length.

Algoritma utama pada gambar 2.8 dimulai dengan mengeksekusi fase inisialisasi (baris 1). Antrian Q tidak kosong, fungsi extract-min pada baris 3

13 if(v = B AND predicted_length < maxlength)

14 maxlength ← predicted_length

(37)

Dengan angka tersebut dan predesessor list , jalur selanjutnya ditandai dengan warna abu-abu pada baris 4. jika vertex u, berkoresponden ke jalur selanjutnya u[i], jumlah tujuan B, jalur terpendek dikembalikan. Jika u B, pembacaan prosedur dikenali pada baris 8. Baris 8 menjelaskan bagaimana i jalur sampai vertex u diperpanjang terhadap vertex tetangga v, kecuali untuk asal vertex sebelumnya. Vertex sebelumnya pada jalur u[i] disimpan pada predecessor list . Pengembalian vertex sebelumnya yang dapat menyebabkan loop, harus dapat dihindari. Sejak bobot link non-negatif, jalur yang mempunyai loop selalu didominasi oleh jalur tanpa dominasi. Baris 9 meminta tahap FEASIBILITY untuk mengecek dimana seluruh jalur disimpan pada vertex v yang tidak terdominasi oleh jalur yang disimpan sebelumnya pada vertex v. Pada baris 10, length dari prediksi end-to-end bobot vektor jalur dihitung. Baris 11 mengetes jika jalur baru selanjutnya tidak non-dominated dan predicted_length ≤ maxlength. Jika kasus ini dapat disimpan dan antriannya harus bisa diupdate (baris 12). Hapus jalur yang predicted_lengthnya > maxlength adalah pengurangan tempat pencarian dari konsep look-ahead. Terakhir, maxlength dapat diupdate pada baris 13-14.

II.8. Contoh operasi algoritma SAMCRA

(38)

Gambar 2.9 Graf yang setiap linknya memiliki dua komponen bobot vektor.

Sebelum memulai langkah-langkah pencarian jalur terpendek pada graf dalam gambar 2.9, diperlukan fase inisialisasi untuk mendapatkan informasi mengenai batas bawah bobot setiap vektor dan panjang maksimal (maxlength) baru yang sebelumnya adalah 1, keduanya digunakan sebagai acuan pencarian jalur terpendek.

Fase inisialisasi

(39)

Gambar 2.10 Jaringan pada fase inisialiasi

o Menentukan panjang maksimal baru untuk menentukan jalur terpendek, jalur terpendek yang uji sesuai dengan m-dimensional edge. Untuk graf pada gambar 2.10 terdapat 2 komponen bobot, maka jalur terpendek yang diuji adalah 2 jalur Dijkstra yaitu P

1

dari vertex 1 ke vertex 7, dimana bobot komponen pertama mempunyai jalur terpendek P

(40)

Gambar 2.11 Langkah 1 dan 2 dalam operasi SAMCRA

diperkirakan panjang untuk vertex 3 adalah max(

20 diperkirakan tidak melebihi panjang maksimal maka keduanya disimpan dalam antrian.

Pada langkah 2, perkiraan panjang yang disimpan dalam antrian yaitu pada vertex 2 dengan panjang 0,6. Prosedur pembacaan vertex-vertex tetangga

diulangi, tetangga vertex 2 adalah vertex 1 dan vertex 4. Untuk vertex sebelumnya tidak perlu dibaca, jadi hanya satu jalur P1→4= 1→ 2 → 4 dengan panjang yang diperkirakan adalah l(P1→4) = max( 0,6) = 0,6 ditambahkan dalam antrian.

(41)

Tetangga vertex 4 adalah vertex 3, vertex 6, dan vertex 7. Perkiraan panjang

Karena nilai panjang yang paling minimum pada ketiga tetangga adalah vertex 3, maka vertex 3 ada untuk kedua kalinya. Dua jalur dari vertex 1 ke vertex 3 adalah P melebihi panjang maksimal.

Gambar 2.12 Langkah 3 dan 4 dalam operasi SAMCRA

(42)

Pada langkah 5 pada gambar 2.13, didapat jalur kedua yang disimpan dalam vertex 3 dan membaca tetangga vertex 3. Bagaimanapun jalur P

4 1 1

= 1 → 3

→ 4 terhadap vertex 4 dengan bobot (10,7) didominasi oleh jalur sebelumnya

yaitu 1 → 2 → 4 dengan bobot (3,6). Juga jalur terhadap vertex 5 tidak dapat disimpan, karena panjang yang diperkirakan max(

20 0,45) = 0,8 lebih besar dibanding dengan panjang maksimal = 0,7.

Gambar 2.13 Langkah 5 dan 6 dalam operasi SAMCRA

(43)

Gambar 2.14 Langkah 7 dan 8 dalam operasi SAMCRA

Pada langkah 8, diperoleh vertex 7 dengan panjang minimum yang diperkirakan dalam antrian, dan hasilnya ditemukan jalur terpendek dari vertex 1 ke vertex 7 P

7 1 *

= 1→ 2 → 4 → 3 → 6 → 7 dengan bobot vektor

w(P

7 1 *

) = (13,12) dan panjang l(P

7 1 *

) = 0,65.

(44)

Tabel 2.1 Tabel Aktivitas Operasi SAMCRA - P(previous), merupakan vertex sebelumnya.

- l(length), merupakan perkiraan panjang yang melebihi panjang maksimal. - D(dominated), merupakan jalur yang didominasi.

(45)

Bab III. Analisis dan Perancangan Sistem

III.1. Analisis Sistem

III.1.1. Gambaran Umum Sistem

Sistem yang dikembangkan adalah sistem pencarian jalur terpendek pada graf multi-constraints dengan menggunakan algoritma SAMCRA. Graf terdiri dari vertex-vertex yang dihubungkan oleh edge yang memiliki bobot jarak (distance) dan bobot kemacetan (congestion).

Gambar 3.1 Graf multi-constraints

III.1.2. Konsep Kerja Sistem

(46)

III.1.3. Kebutuhan Sistem

Sistem dikembangkan pada aplikasi desktop. Sistem dikembangkan dengan sistem operasi microsoft windows dengan perangkat pembantu Java.

Untuk menyimpan data vertex dan jalur serta pendukung sistem yang lain digunakan SQL server sebagai basis data, sehingga data menjadi lebih dinamis karena dapat diubah.

III.1.4. Use Case Diagram

Use case diagram untuk pencarian jalur terpendek dapat dilihat pada

(47)

Sistem Pencarian jalur terpendek

Cari jalur terpendek user

Hapus edge Tambah vertex

Hapus vertex Ubah vertex

Tambah edge

Ubah edge

Gambar 3.2 Use Case Diagram

Use case pada gambar 3.2 terdapat satu entitas user. Untuk dapat

(48)

III.1.5. Pemodelan Proses

III.1.5.1. Diagram Alir Data

Sistem pencarian jalur terpendek dapat dimodelkan dengan menggunakan DFD sebagai berikut :

1. Diagram Konteks / level 0

0

user Sistem

pencarian jalur terpendek

Data vertex, data edge, vertex sumber, vertex tujuan, L

Jalur terpendek, jarak jalur terpendek, kemacetan jalur

terpendek

Gambar 3.3 Diagram konteks

(49)

2. Diagram berjenjang

(50)

3. Diagram Alir Data level 0

1

Kelola vertex

2

Kelola edge

3p

Mencari jalur terpendek

D1

D2 user

vertex

edge Data vertex

Data edge

Vertex sumber, vertex tujuan, L

Validasi, konfirmasi

Jalur terpendek, jarak jalur terpendek, kemacetan jalur

terpendek Validasi, konfirmasi

Data vertex

Data edge

(51)

4. Diagram Alir Data level 1

Gambar 3.6 Diagram Alir Data level 1

III.1.5.2. Diagram Alir

(52)

III.1.5.2.1. Diagram Alir Dijkstra

Diagram alir pada operasi algoritma Dijkstra dalam pencarian jalur terpendek pada sistem dapat dilihat pada gambar 3.7.

Mulai

Set u sebagai vertex sebelum v d(v) = d(u)+w(u,v) SALAH

Graf G(V,E), vertex sumber

(53)

III.1.5.2.2. Diagram Alir SAMCRA

Diagram alir operasi algoritma SAMCRA dalam pencarian jalur terpendek pada sistem dapat dilihat pada gambar 3.8.

(54)

1

Masukkan vertex sumber ke dalam antrian Q

Selama Q tidak kosong

u merupakan vertex dengan nilai predicted_length minimum dalam

Set u sebagai vertex sebelum vertex v

Tambahkan v ke dalam antrian Q

(55)

III.1.6. Pemodelan Data

III.1.6.1. Conceptual Design

Perancangan ERD digunakan untuk menggambarkan relasi antar entitas dalam sistem, dalam sistem ini terdapat relasi memiliki antara entitas vertex dengan entitas edge. Ilustrasi ERD dapat dilihat pada gambar 3.9.

vertex

Gambar 3.9 Entity Relational Diagram Sistem

III.1.6.2. Logical Design

Penulis merancang basis data yang sesuai dengan ERD yang telah dibuat sebelumnya, basis data ini dibuat untuk menyimpan entitas vertex dan entitas edge. Ilustrasi relasi antar tabel dapat dilihat pada gambar 3.10.

Vertex

(56)

III.1.6.3. Physical Design

Dari hasil rancangan basis data terbentuk tabel vertex, tabel edge, dan terdapat tambahan tabel undirect sebagai tabel pembantu. Penulis merancang struktur data setiap tabel sebagai berikut :

1. Struktur tabel vertex

Tabel 3.1 Struktur tabel vertex

Nama field Tipe Ukuran

id_vertex Int 100

nama_vertex Varchar 200

2. Struktur tabel edge

Tabel 3.2 Struktur tabel edge

Nama field Tipe Ukuran

id_edge Int 100

id_vertexpertama Int 100

id_vertexkedua Int 100

jarak Int 200

(57)

3. Struktur tabel undirect

Tabel 3.2 Struktur tabel undirect

Nama field Tipe Ukuran

id_undirect Int 100

id_firstvertex Int 100

id_secondvertex Int 100

distance Int 200

congestion Int 200

III.2. Perancangan Antarmuka

Aplikasi dapat diakses langsung oleh user setelah melakukan installasi, user dapat menggunakan semua tools yang tersedia dalam aplikasi. Berikut merupakan rancangan antarmuka :

(58)

Gambar 3.11 Rancangan Antarmuka Utama Sistem

Pada menu bar terdapat menu :

- Menu file yang mempunyai submenu exit yang digunakan untuk keluar dari aplikasi.

- Menu component mempunyai submenu graf, submenu graf digunakan untuk mengolah data vertex dan data edge.

- Menu Operation yang mempunyai submenu operation SAMCRA, digunakan untuk melakukan operasi pencarian jalur menggunakan SAMCRA.

- Menu help mempunyai submenu yaitu menu about software. About software digunakan untuk memberi informasi berkaitan dengan pembuatan software.

III.2.2. Rancangan Masukan Sistem

(59)

rancangan antarmuka masukan component dan masukan operasi.

III.2.2.1. Rancangan Antarmuka Form Setup Vertex

Rancangan antarmuka form setup vertex dapat dilihat pada gambar 3.12.

Gambar 3.12 Rancangan Antarmuka Form Setup Vertex

Pada form Setup vertex terdapat form add vertex, edit vertex, dan delete vertex. Form add vertex digunakan untuk menambah data vertex, form edit vertex digunakan untuk mengubah data vertex, dan form delete vertex digunakan untuk menghapus data vertex pada database. Pada form ini terdapat juga tombol reset vertex, tombol ini berguna untuk menghapus semua data vertex dan data edge pada database.

a. Rancangan Antarmuka Form Add Vertex

(60)

Gambar 3.13 Rancangan Antarmuka Form Add Vertex

Form Add vertex digunakan untuk menambahkan data vertex baru yaitu vertex id dan vertex name pada database.

b. Rancangan Antarmuka Form Edit Vertex

Rancangan antarmuka form edit vertex dapat dilihat pada gambar 3.14.

Gambar 3.14 Rancangan Antarmuka Form Edit Vertex

Form Edit vertex digunakan untuk mengubah data vertex lama dengan data vertex baru pada database.

c. Rancangan Antarmuka Form Delete Vertex

(61)

Gambar 3.15 Rancangan Antarmuka Form Delete Vertex Form delete vertex digunakan untuk menghapus data vertex dalam database berdasarkan vertex id-nya.

III.2.2.2. Rancangan Antarmuka Form Setup Edge

Rancangan antarmuka form setup edge dapat dilihat pada gambar 3.16.

Gambar 3.16 Rancangan Antarmuka Form Setup Edge

(62)

database, form edit edge digunakan untuk mengubah data edge lama dengan data edge baru, dan form delete edge digunakan untuk menghapus data edge dalam database. Pada rancangan antarmuka form edge ini terdapat juga tombol reset edge, tombol ini berguna untuk menghapus semua data edge pada database.

a. Rancangan Antarmuka Form Add Edge

Rancangan form add edge dapat dilihat pada gambar 3.17.

Gambar 3.17 Rancangan Antarmuka Form Add Edge

Form add edge digunakan untuk menambah data edge baru berupa edge id, first vertex atau vertex pertama, second vertex atau vertex kedua, distance, serta congestion pada database.

b. Rancangan Antarmuka Form Edit Edge

(63)

Gambar 3.18 Rancangan Antarmuka Form Edit Edge

Form Edit Edge digunakan untuk mengubah data edge lama dengan data edge baru.

c. Rancangan Antarmuka Form Delete Edge

Rancangan form delete edge dapat dilihat pada gambar 3.19.

Gambar 3.19 Rancangan Antarmuka Form Delete Edge

Form delete edge digunakan untuk menghapus data edge dari database berdasarkan edge id-nya.

(64)

III.2.2.3. Rancangan Antarmuka Form Operasi Pencarian

Rancangan antarmuka form opeasi pencarian dapat dilihat pada gambar 3.20.

Gambar 3.20 Rancangan Antarmuka Form Operasi

Form operation pada gambar 3.20 digunakan untuk melakukan pencarian jalur terpendek dari vertex sumber ke vertex tujuan.

III.2.3. Rancangan Antarmuka Keluaran Sistem

III.2.3.1. Rancangan Antarmuka Form Setup Vertex

Gambar 3.21 Rancangan Antarmuka Keluaran Form Setup Vertex

(65)

pada gambar 3.12.

III.2.3.2. Rancangan Antarmuka Form Setup Edge

Gambar 3.22 Rancangan Antarmuka Hasil Keluaran dari Setup Edge Gambar 3.22 merupakan tabel keluaran dari hasil penambahan, pengubahan, serta penghapusan data edge dari form setup edge pada gambar 3.16.

III.2.3.3. Rancangan Antarmuka Form Result

Gambar 3.23 Rancangan Antarmuka Keluaran Hasil Pencarian

(66)

terpendek dari form operasi pencarian. Form result berisi jalur yang dilewati dari vertex source ke vertex destination, jarak jalur, serta kemacetan pada jalur. Vertex yang dilewati dalam jalur terpendek akan ditampulkan pada tabel, jarak jalur akan ditampilkan pada textfield distance, dan kemacetan jalur akan ditampilkan pada textfield congestion.

III.2.3.3. Rancangan Antarmuka Form About Software

Gambar 3.24 Rancangan Antarmuka Form about software

(67)

Bab IV.

Implementasi Sistem

Implementasi merupakan tahap dimana hasil analisis dan perancangan pada bab III diubah ke dalam bahasa pemrograman. Pada bab ini akan dijelaskan mengenai implementasi sistem yang meliputi implementasi database dan antarmuka (interface) sistem. Adapun perangkat lunak (software) yang digunakan dalam pembuatan sistem ini adalah :

Sistem Operasi : Windows XP Profesional Service pack 2 Server Database : MySQL 5.0

Database tool : SQLyog Community 5.22a Bahasa Pemrograman : Java

Editor : Netbean 5.5

IV.1. Pembuatan Database

Pada tahap ini dilakukan pembuatan database pada MySQL dengan menggunakan tool SQLyog. Database yang dibuat berisi tabel-tabel yang akan diperlukan oleh sistem. Listing program 4.1 merupakan sintaks pembuatan database yang diberi nama “db_samcra” :

create database if not exists `db_samcra`;

(68)

Gambar 4.1 Implementasi Pembuatan Database

IV.2. Pembuatan Tabel

IV.2.1. Tabel Vertex

Tabel vertex digunakan untuk menyimpan data vertex. Sintaks pembuatan tabel vertex dapat dilihat pada listing program 4.2.

CREATE TABLE `vertex` (

`id_vertex` int(100) NOT NULL auto_increment, `nama_vertex` varchar(200) NOT NULL, PRIMARY KEY (`id_vertex`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

Listing 4.2 Pembuatan Tabel vertex

Gambar 4.2 Implementasi Tabel vertex

IV.2.2. Tabel Edge

Tabel edge digunakan untuk menyimpan data edge. Sintaks pembuatan tabel edge dapat dilihat pada listing program 4.3.

CREATE TABLE `edge` (

(69)

`kemacetan` int(200) NOT NULL, PRIMARY KEY (`id_edge`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1

Listing 4.3 Pembuatan Tabel edge

Gambar 4.3 Implementasi Tabel edge

IV.3. Pembuatan Store Procedure

Pada database db_samcra terdapat prosedur insert_vertex, update_vertex, delete_vertex, insert_edge, update_edge, dan delete_edge.

a. insert_vertex

Store prosedur insert_vertex digunakan untuk menambahkan data vertex baru ke dalam table vertex. Sintaks store prosedur insert_vertex dapat dilihat pada listing 4.4.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`insert_vertex`$$

CREATE PROCEDURE `insert_vertex`(p_id_vertex int, p_nama_vertex varchar(100))

BEGIN

INSERT INTO vertex values (p_id_vertex,p_nama_vertex); END$$

DELIMITER ;

Listing 4.4 Store Prosedur insert_vertex b. update_vertex

(70)

dilihat pada listing 4.5.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`update_vertex`$$

CREATE PROCEDURE `update_vertex`(p_id_vertex int, p_nama_vertex

varchar(20))

BEGIN

UPDATE vertex set nama_vertex = p_nama_vertex where

id_vertex = p_id_vertex;

END$$

DELIMITER ;

Listing 4.5 Store Prosedur update_vertex c. delete_vertex

Store prosedur delete_vertex digunakan untuk menghapus data vertex dari table vertex. Sintaks store prosedur delete_vertex dapat dilihat pada listing 4.6.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`delete_vertex`$$

CREATE PROCEDURE `delete_vertex`(p_id_vertex int)

BEGIN

DELETE FROM vertex where id_vertex = p_id_vertex ;

DELETE FROM edge WHERE id_vertexpertama = p_id_vertex

OR id_vertexkedua = p_id_vertex;

END$$

DELIMITER ;

Listing 4.6 Store Prosedur delete_vertex d. insert_edge

(71)

ke dalam table edge. Sintaks store prosedur insert_edge dapat dilihat pada listing 4.7.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`insert_edge`$$

CREATE PROCEDURE `insert_edge`(p_id_edge int,p_id_vertexpertama

int, p_id_vertexkedua int, p_jarak int, p_kemacetan int)

BEGIN

INSERT INTO Edge VALUES(p_id_edge,p_id_vertexpertama,

p_id_vertexkedua,p_jarak,p_kemacetan);

INSERT INTO undirect VALUES(p_id_edge,p_id_vertexkedua,

p_id_vertexpertama,p_jarak,p_kemacetan);

END$$

DELIMITER ;

Listing 4.7 Store Prosedur insert_edge e. update_edge

Store prosedur update_edge digunakan untuk mengubah data edge lama dengan data edge baru. Sintaks store prosedur update_edge dapat dilihat pada listing 4.8.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`update_edge`$$

CREATE PROCEDURE `update_edge`(p_id_edge int, p_id_vertexpertama

int, p_id_vertexkedua int, p_jarak int, p_kemacetan int)

BEGIN

UPDATE Edge set id_vertexpertama = p_id_vertexpertama,

id_vertexkedua = p_id_vertexkedua, jarak = p_jarak,

kemacetan = p_kemacetan where id_edge = p_id_edge;

UPDATE undirect set id_firstvertex = p_id_vertexkedua,

id_secondvertex = p_id_vertexpertama, distance = p_jarak,

(72)

END$$

DELIMITER ;

Listing 4.8 Store Prosedur update_edge

f. delete_edge

Store prosedur delete_edge digunakan untuk menghapus data edge dari table edge. Sintaks store prosedur delete_edge dapat dilihat pada listing 4.9.

DELIMITER $$

DROP PROCEDURE IF EXISTS `db_samcra`.`delete_edge`$$

CREATE PROCEDURE `delete_edge`(p_id_edge int)

BEGIN

DELETE FROM edge where id_edge = p_id_edge;

DELETE FROM undirect where id_undirect = p_id_edge;

END$$

DELIMITER ;

Listing 4.9 Store Prosedur delete_edge

IV.4. Implementasi Koneksi Java dengan MySQL

Untuk melakukan koneksi dengan server database MySQL, java membutuhkan library connector/j, tambahkan library connector/j dengan cara

melakukan klik kanan pada project→properties→library→compile : tambahkan

jar ; run : tambahkan jar. Langkah-langkah yang harus dilakukan untuk melakukan koneksi adalah sebagai berikut :

(73)

import java.sql.*;

Listing 4.10 import package java.sql 2. Memanggil driver JDBC

connector/j menyediakan pemanggilan driver JDBC, pada sistem ini digunakan driver yang digunakan adalah com.mysql.jdbc.Driver. Sintaks pemanggilan driver JDBC dapat dilihat pada listing 4.11. public class Koneksi

{

public Koneksi() { }

public static String getUrl()

{

String url="jdbc:mysql://localhost:3306/db_samcra";

(74)

}

}

}

Listing 4.11 Pemanggilan driver JDBC

3. Membangun koneksi java dengan MySQL

Untuk membangun koneksi dengan database, digunakan class DriverManager dan dengan menggunakan method getConnection. Sintaks untuk membangun koneksi antara java dengan MySQL dapat dilihat pada listing 4.12.

try

{

Koneksi.connect();

String url = Koneksi.getUrl();

String user = Koneksi.getUser();

String pwd = Koneksi.getPasswd();

Connection conn = DriverManager.getConnection(url,user,pwd);

System.out.println("Koneksi ok");

}

catch(java.sql.SQLException ex)

{

System.out.println("Error "+ex);

}

(75)

IV.5. Implementasi Antarmuka

Implementasi antarmuka pada sistem ini meliputi halaman utama, halaman komponen untuk menambah, mengubah, serta menghapus data vertex dan data edge, halaman operasi untuk melakukan operasi pencarian jalur terpendek, dan help.

IV.5.1. Implementasi Antarmuka Halaman Utama

Gambar 4.4 Implementasi Halaman Utama Sistem

(76)

IV.5.2. Implementasi Antarmuka Halaman Komponen Vertex

Pada antarmuka halaman komponen vertex terdapat menu add vertex yang digunakan untuk menambah data vertex baru, menu edit vertex digunakan untuk mengubah data vertex lama dengan data vertex baru, menu delete vertex digunakan untuk menghapus data vertex.

a. Implementasi Antarmuka Add vertex

Implementasi antarmuka add vertex dapat dilihat pada gambar 4.5.

Gambar 4.5 Implementasi Antamuka Add vertex

(77)

menambahkan data vertex baru maka kita mengisikan data vertex id dan vertex name lalu klik tombol add, jika penambahan data vertex berhasil maka akan tampil kotak dialog seperti pada gambar 4.6.

Gambar 4.6 Pesan jika data vertex berhasil ditambahkan

Sintaks untuk menambah data vertex baru dapat dilihat pada listing 4.13. /* method ini digunakan untuk menambahkan data vertex pada tabel vertex */

public static void add_vertex(int vertex_id, String vertex_name)

{

try

{

Koneksi.connect();

String url = Koneksi.getUrl();

String user = Koneksi.getUser();

String pwd = Koneksi.getPasswd();

Connection conn = DriverManager.getConnection(url,user,pwd);

System.out.println("Koneksi ok");

String sqlInsertVertex ="{call insert_vertex(?,?)}";

CallableStatement cs = conn.prepareCall(sqlInsertVertex);

cs.setInt(1,vertex_id);

(78)

int help=cs.executeUpdate();

JOptionPane.showMessageDialog(null,"Adding data vertex failed");

System.out.println("Error "+ex);

}

}

---

private void Add_VertexMouseClicked(java.awt.event.MouseEvent evt)

{

If(tb _addvertexid.getText().length()==0 ||

tb_addvertexname.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"please enter data vertex");

(79)

}

---

Listing 4.13 Penambahan data vertex

b. Implementasi Antarmuka Edit Vertex

Implementasi antarmuka edit vertex dapat dilihat pada gambar 4.7.

Gambar 4.7 Implementasi Antarmuka Edit vertex

(80)

vertex seperti pada gambar 4.8, jika data berhasil diubah maka akan muncul pesan seperti pada gambar 4.9.

Gambar 4.8 Konfirmasi Pengubahan Data vertex

Gambar 4.9 Pesan jika data vertex berhasil diubah

Sintaks untuk mengubah data vertex dapat dilihat pada listing 4.14. /* method ini digunakan untuk mengubah data vertex pada tabel vertex */

public static void update_vertex(int vertex_id, String vertex_name)

{

try

{

Koneksi.connect();

String url = Koneksi.getUrl();

String user = Koneksi.getUser();

String pwd = Koneksi.getPasswd();

Connection conn = DriverManager.getConnection(url,user,pwd);

(81)

String sqlUpdateEdge = "{ call update_vertex(?,?)}";

private void bt_editVertexMouseClicked(java.awt.event.MouseEvent evt)

{

if(tb_editvertexid.getText().length()==0 ||

tb_editvertexname.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"please enter new data vertex");

}

else

{

(82)

String vertex_name = tb_editvertexname.getText();

String message = "Are you sure to edit data vertex?";

int pesan = JOptionPane.showConfirmDialog(null,message,"Edit Data

Vertex",JOptionPane.YES_NO_OPTION);

if(pesan == 0)

{

db_graph.update_vertex(vertex_id, vertex_name);

tb_editvertexid.setText("");

tb_editvertexname.setText("");

refresh_tvertex();

}

}

}

---

Listing 4.14 Pengubahan data vertex

c. Implementasi Antarmuka Delete Vertex

(83)

Gambar 4.10 Implementasi Delete vertex

Untuk melakukan penghapusan data vertex, pilih data yang akan dihapus pada tabel. Id vertex yang akan dihapus akan dimunculkan pada textbox vertex id, klik tombol delete untuk menghapus data. Setelah tombol delete ditekan maka akan muncul konfirmasi penghapusan data seperti pada gambar 4.11, jika data berhasil dihapus maka akan muncul pesan seperti pada gambar 4.12.

(84)

Gambar 4.12 Pesan jika data berhasil dihapus

Sintaks untuk menghapus data vertex dapat dilihat pada listing 4.15. /* method ini digunakan untuk menghapus data vertex dari tabel vertex */

public static void delete_vertex(int vertex_id)

{

try

{

Koneksi.connect();

String url = Koneksi.getUrl();

String user = Koneksi.getUser();

String pwd = Koneksi.getPasswd();

Connection conn = DriverManager.getConnection(url,user,pwd);

String sqlDeleteVertex = "{ call delete_vertex(?)}";

CallableStatement cs = conn.prepareCall(sqlDeleteVertex);

cs.setInt(1,vertex_id);

int help = cs.executeUpdate();

cs.close();

JOptionPane.showMessageDialog(null,"Deleting data vertex

successful");

}

catch(java.sql.SQLException ex)

(85)

JOptionPane.showMessageDialog(null,"Deleting data vertex failed");

System.out.println("error " + ex);

}

}

---

private void bt_deletevertexMouseClicked(java.awt.event.MouseEvent evt)

{

if(tb_deletevertexid.getText().length()==0) {

JOptionPane.showMessageDialog(null,"please enter vertex id");

}

Else {

int vertex_id = Integer.parseInt(tb_deletevertexid.getText());

String message = "Are you sure to delete data vertex?";

int pesan = JOptionPane.showConfirmDialog(null,message,"Delete Data

Vertex",JOptionPane.YES_NO_OPTION);

if(pesan == 0)

{

db_graph.delete_vertex(vertex_id);

tb_deletevertexid.setText("");

refresh_tvertex();

refresh_tedge();

}

}

}

---

(86)

IV.5.3. Implementasi Antarmuka Halaman Komponen Edge

Pada antarmuka halaman komponen edge terdapat menu add edge yang digunakan untuk menambah data edge baru, menu edit edge digunakan untuk mengubah data edge lama dengan data edge baru, menu delete edge digunakan untuk menghapus data edge.

a. Implementasi Antarmuka Add Edge

Implementasi antarmuka add edge dapat dilihat pada gambar 4.12.

Gambar 4.12 Implementasi Antarmuka Add edge

(87)

penambahan data edge berhasil maka akan tampil kotak dialog seperti pada gambar 4.13.

Gambar 4.13 Pesan jika data edge berhasil ditambahkan Sintaks penambahan vertex baru dapat dilihat pada listing 4.16. /* method ini digunakan untuk menambah data edge pada tabel edge */

public static void add_edge(int edge_id,String first_vertex, String second_vertex,

int length, int congestion)

{

try

{

Koneksi.connect();

String url = Koneksi.getUrl();

String user = Koneksi.getUser();

String pwd = Koneksi.getPasswd();

Connection conn = DriverManager.getConnection(url,user,pwd);

System.out.println("Koneksi ok");

String sqlInsertPath = "{call insert_edge(?,?,?,?,?)}";

CallableStatement cs = conn.prepareCall(sqlInsertPath);

cs.setInt(1,edge_id);

cs.setString(2,first_vertex);

(88)

cs.setInt(4,length);

private void bt_addedgeActionPerformed(java.awt.event.ActionEvent evt)

{

if(tb_addedgeid.getText().length()==0 || tb_addlength.getText().length()==0

|| tb_addcongestion.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"please enter data edge");

}

else

{

int edge_id = Integer.parseInt(tb_addedgeid.getText());

String first_vertex = cb_addfirstvertex.getSelectedItem().toString();

String second_vertex = cb_addsecondvertex.getSelectedItem().toString();

int f_vertex = Integer.parseInt(first_vertex);

int s_vertex = Integer.parseInt(second_vertex);

(89)

int congestion = Integer.parseInt(tb_addcongestion.getText());

db_graph.add_edge(edge_id,f_vertex,s_vertex,length,congestion);

tb_addedgeid.setText("");

tb_addlength.setText("");

tb_addcongestion.setText("");

refresh_tedge();

}

}

---

Listing 4.16 Penambahan data edge

b. Implementasi Antarmuka Edit Edge

Implementasi antarmuka edit edge dapat dilihat gambar 4.14.

(90)

Antarmuka edit edge digunakan untuk mengubah data edge. Untuk melakukan pengubahan data, maka klik data yang akan diubah pada tabel . Nilainya akan ditampilkan pada textbox, ubah data pada textbox, tekan tombol edit untuk mengubah data edge. Setelah menekan tombol edit maka akan muncul konfirmasi pengubahan data edge seperti pada gambar 4.15. Jika data berhasil diubah maka akan muncul pesan seperti pada gambar 4.16.

Gambar 4.15 Konfirmasi Pengubahan Data edge

Gambar 4.16 Pesan jika data edge berhasil diubah

Sintaks pengubahan data edge dapat dilihat pada listing 4.17. /* method ini digunakan untuk mengubah data edge */

public static void update_edge(int edge_id, int first_vertex, int second_vertex, int

length, int congestion)

(91)

try

JOptionPane.showMessageDialog(null,"Editing data edge failed");

System.out.println("Error " + ex);

}

}

(92)

private void bt_editedgeMouseClicked(java.awt.event.MouseEvent evt)

{

// fungsi ini untuk mengubah data edge

if(tb_editedgeid.getText().length()==0 || tb_editlength.getText().length()==0 ||

tb_editcongestion.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"please enter new data edge");

}

else

{

int edge_id = Integer.parseInt(tb_editedgeid.getText());

String first_vertex = cb_editfirstvertex.getSelectedItem().toString();

String second_vertex = cb_editsecondvertex.getSelectedItem().toString();

int f_vertex = Integer.parseInt(first_vertex);

int s_vertex = Integer.parseInt(second_vertex);

int length = Integer.parseInt(tb_editlength.getText());

int congestion = Integer.parseInt(tb_editcongestion.getText());

String message = "Are you sure to edit data edge?";

int pesan = JOptionPane.showConfirmDialog(null,message,"Edit Data

Edge",JOptionPane.YES_NO_OPTION);

if(pesan == 0)

{

db_graph.update_edge(edge_id,f_vertex,s_vertex,length,congestion);

tb_editedgeid.setText("");

tb_editlength.setText("");

(93)

refresh_tedge();

}

}

}

---

Listing 4.17 Pengubahan data edge

c. Implementasi Antarmuka Delete Edge

Implementasi antarmuka delete edge dapat dilihat pada gambar 4.17.

Gambar 4.17 Implementasi Antarmuka Delete edge

(94)

edge yang akan dihapus akan dimunculkan pada textbox edge id, tekan tombol delete untuk menghapus data. Setelah tombol delete ditekan maka akan muncul konfirmasi penghapusan data edge seperti pada gambar 4.18, jika data berhasil dihapus maka akan muncul pesan seperti pada gambar 4.19.

Gambar 4.18 Konfirmasi Penghapusan Data edge

Gambar 4.19 Pesan jika data edge berhasil dihapus

Sintaks penghapusan data vertex dapat dilihat pada listing 4.18. /* method ini digunakan untuk menghapus data edge dari tabel edge */

public static void delete_edge(int edge_id)

{

try

{

Koneksi.connect();

(95)

String user = Koneksi.getUser();

JOptionPane.showMessageDialog(null,"Deleting data edge failed");

System.out.println("error " + ex);

}

}

---

private void bt_deleteedgeMouseClicked(java.awt.event.MouseEvent evt)

{

if(tb_deleteedgeid.getText().length()==0)

{

JOptionPane.showMessageDialog(null,"please enter edge id");

}

else

{

Gambar

Gambar 2.5 Meta-Code Fase Inisialisasi
Gambar 2.6 Meta-Code Feasibility
Gambar 2.7 Meta-Code Update Antrian
Gambar 2.8 Meta-Code SAMCRA
+7

Referensi

Dokumen terkait

Kawasan Rumah Pangan lestari di kelurahan ledok ini mempunyai partisipasi sangat tinggi dimana pembangunan Green Haouse tidak menggunakan tenaga tukang tidak seperti

(14) Hasil evaluasi usulan penerima bantuan sosial yang layak direkomendasikan oleh pimpinan PD terkait sebagaimana dimaksud pada ayat (10) disampaikan

Kabupaten Gorontalo Utara terletak di wilayah pesisir pantai utara Provinsi Gorontalo, disahkan menjadi daerah otonom berdasarkan Undang-Undang Nomor 11 tahun 2006 tanggal 8

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

Manajemen Perhotelan, Universitas Kristen Petra, Surabaya, Indonesia Abstrak: Penelitian ini dilakukan untuk mengetahui kepuasan konsumen dilihat dari dimensi transaction

Kode LED berkedip ini merupakan kode dasar yang nantinya dapat dipakai untuk menghidupkan relay shield yang akan digunakan dalam sistem kendali yang akan

“(Untuk mengetahui Kualitas Pelayanan Program Listrik Pintar PT. PLN Surabaya Selatan tentang Pelayanan Pasang Baru Listrik Prabayar Berdasarkan Indeks Kepuasan

Esimer- kiksi rentovihvilä ( Juncus bulbosus ) voi muodos- taa upoksiin hieman vastaavasti valekiehkuraisia kasvustoja, mutta se on kauttaaltaan näkinruohoja vahvempitekoinen,