Aplikasi Penentuan Jarak Terdekat Untuk Delivery Service Restoran Cepat Saji Menggunakan Metode Ant Colony Studi Kasus Restoran X.

(1)

APLIKASI PENENTUAN JARAK TERDEKAT

UNTUK DELIVERY SERVICE RESTORAN CEPAT SAJI

MENGGUNAKAN METODE ANT COLONY

STUDI KASUS RESTORAN X

TUGAS AKHIR

Diajukan kepada Jurusan Teknik Informatika Fakultas Teknologi Industri

Universitas Pembangunan Nasional "Veteran" Jawa Timur Untuk menyusun Skripsi S-I

Disusun Oleh:

GALUH WIRASMARA DEWI

NPM. 0634015090

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JATIM 2010


(2)

APLIKASI PENENTUAN JARAK TERDEKAT

UNTUK DELIVERY SERVICE RESTORAN CEPAT SAJI

MENGGUNAKAN METODE ANT COLONY

STUDI KASUS RESTORAN X

TUGAS AKHIR

Diajukan Guna Memenuhi Sebagian Persyaratan Untuk Memperoleh Gelar Sarjana Komputer

Jurusan Teknik Informatika

Universitas Pembangunan Nasional "Veteran" Jawa Timur

Disusun Oleh:

GALUH WIRASMARA DEWI

NPM. 0634015090

JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JATIM SURABAYA


(3)

LEMBAR PENGESAHAN

APLIKASI PENENTUAN JARAK TERDEKAT

UNTUK DELIVERY SERVICE RESTORAN CEPAT SAJI

MENGGUNAKAN METODE ANT COLONY

STUDI KASUS RESTORAN X

Disusun Oleh:

GALUH WIRASMARA DEWI

NPM. 0634015090

Telah disetujui untuk mengikuti Ujian Negara Lisan Gelombang I Tahun Akademik 2010/2011

Pembimbing Utama Pembimbing Pendamping

Basuki Rahmat, S.Si., MT M. Irwan Afandi, ST, M.Sc NPT. 269 070 640 209 NPT. 376 070 702 20

Mengetahui,

Ketua Jurusan Teknik Informatika

Fakultas Teknologi Industri UPN ”Veteran” Jawa Timur

Basuki Rahmat, S.Si., MT NPT. 269 070 640 209


(4)

Pembimbing II : M. Irwan Affandi, ST, M.Sc Penyusun : Galuh Wirasmara Dewi

i

ABSTRAK

Telepon seluler saat ini telah menjadi media untuk berkomunikasi bagi masyarakat pada umumnya. Salah satu layanan yang sering digunakan adalah SMS (Short Message Service). Layanan ini sudah menjadi sebuah kebutuhan dan gaya hidup populer. Hal ini pulalah yang memicu industri-industri untuk menggunakan SMS Gateway sebagai salah satu media pemasaran, salah satunya industri restoran makanan cepat saji. Restoran makanan cepat saji banyak menawarkan delivery service sebagai nilai tambah. Untuk memaksimalkan delivery service, diperlukan suatu pemetaan lokasi untuk menemukan lokasi customer dan rute terpendek yang dapat ditempuh.

Algoritma ant colony merupakan solusi yang ditawarkan untuk mengatasi masalah tersebut. Algoritma ant colony menggunakan jejak intensitas pheromon semut untuk menemukan titik-titik jalur yang harus dilalui sehingga menghasilkan blocking titik-titik yang merupakan rute terpendek yang bisa dilalui. Penemuan rute terpendek dengan menggunakan metode ini mampu memberikan perbedaan yang signifikan.

Dengan adanya penerapan algoritma ant colony untuk penentuan jarak terdekat, aplikasi ini mampu meminimalkan biaya pemasaran dan meningkatkan efektifitas sumber daya yang dimiliki oleh restoran. Selain itu dengan adanya integrasi penerapan teknologi SMS dan algoritma ant colony untuk sistem delivery service, layanan ini mampu memberikan kepuasan tersendiri bagi customer.


(5)

ii

Segala puji syukur penyusun panjatkan ke hadirat Allah SWT atas segala limpahan rahmat dan hidayahNya sehingga akhirnya penyusun dapat menyelesaikan Tugas Akhir dengan judul Aplikasi Penentuan Jarak Terdekat Untuk Delivery Service Restoran Cepat Saji Menggunakan Metode Ant Colony dengan Studi Kasus Restoran X.

Penulisan Tugas Akhir ini disusun sebagai salah satu syarat untuk menyelesaikan program Strata Satu (S1) pada jurusan Teknik Informatika, Fakultas Teknologi Industri, UPN

VETERAN

Jawa Timur. Walaupun banyak kesulitan yang harus dihadapi penyusun dalam menyelesaikan tugas akhir ini, namun berkat bantuan dan dorongan dari berbagai pihak, akhirnya tugas akhir ini dapat terselesaikan dengan baik.

Akhir kata, penyusun menyadari bahwa Tugas Akhir ini masih jauh dari sempurna, tak lebih karena berbagai keterbatasan yang dimiliki penyusun. Oleh karena itu penyusun mengharapkan kritik dan saran yang bersifat membangun dari para pembaca untuk pengembangan aplikasi lebih lanjut.

Surabaya, September 2010


(6)

iii

Penyusun menyadari bahwa dalam menyelesaikan Tugas Akhir ini banyak mendapatkan bantuan dan dukungan dari berbagai pihak, untuk itu pada kesempatan yang berharga ini penyusun ingin mengucapkan terima kasih kepada : 1. Bapak Basuki Rahmat, S.Si, MT selaku Ketua Jurusan Teknik Informatika

Universitas Pembangunan Nasional “Veteran” Jawa Timur Surabaya dan Dosen Pembimbing I, yang telah meluangkan waktu untuk memberikan arahan dan motivasi kepada penyusun.

2. Bapak M. Irwan Affandi, ST, M.Sc selaku Dosen Pembimbing II dan Penguji Seminar TA I, yang telah meluangkan waktu untuk memberikan bimbingan serta mencarikan solusi atas kesulitan yang dihadapi penyusun dalam membuat Tugas Akhir ini.

3. Ibu Syurfah Ayu I. S,Kom selaku Penguji Seminar TA 2, yang telah memberikan saran dan kritik untuk memperbaiki program dan laporan Tugas Akhir ini.

4. Bapak Prof. Dr. Ir. H. Akhmad Fauzi, MMT selaku Dosen Penguji Lesan I. 5. Bapak Nur Cahyo Wibowo S.Kom., M.Kom. selaku Dosen Penguji Lesan II. 6. Bapak Yusron Rizal, S.Si., MT selaku Dosen Tamu dan Penguji Lesan III. 7. Kedua orang tua, Ganang, Garin, Eyang Ti, Bude Rum, Mbak Tiwik, Mas

Arie, Mbak Endah dan keluarga besar yang tidak bisa disebutkan satu per-satu, yang senantiasa memberikan dukungan dan doa kepada penyusun.


(7)

iv

terima kasih telah memberikan bantuan dan dukungan menyelesaikan Tugas Akhir ini.

Tiada untaian kata yang cukup yang dapat penyusun sampaikan sebagai balas atas jasa yang penyusun terima melainkan hanya harapan semoga ALLAH SWT membalas semua amal tersebut. Jazakumullah Khairan Katsiran.


(8)

iv   

ABSTRAK ... i

KATA PENGANTAR... ii

UCAPAN TERIMA KASIH ... iii

DAFTAR ISI... iv

DAFTAR GAMBAR... vi

DAFTAR TABEL ... viii

BAB I PENDAHULUAN ... 1

1.1 Latar Belakang... 1

1.2 Perumusan Masalah... 2

1.3 Batasan Masalah... 3

1.4 Tujuan... 4

1.5 Manfaat... 4

1.6 Metodologi Pembuatan Skripsi ... 5

1.7 Sistematika Penulisan... 6

BAB II TINJAUAN PUSTAKA ... 9

2.1 SMS Gateway... 9

2.2 Teori Graf ... 11

2.2.1 Definisi Graf ... 11

2.2.2 Representasi Graf... 13

2.3 Permasalahan Optimasi ... 15

2.3.1 Penyelesaian Masalah Optimasi... 15

2.3.2 Permasalahan Jalur Terpendek... 16

2.4 Algoritma Semut ... 17

2.5 Bahasa Java ... 24

2.6 UML (Unified Modelling Languange)... 29

BAB III ANALISA DAN PERANCANGAN SISTEM ... 30

3.1 Analisis Permasalahan... 30

3.2 Perancangan Sistem... 30

3.2.1 Deskripsi Umum Sistem ... 31

3.2.2 Kebutuhan Sistem ... 32

A. Kebutuhan Perangkat Keras ... 32

B. Kebutuhan Perangkat Lunak ... 32

C. Kebutuhan Fungsional... 33


(9)

v   

3.2.5 Perancangan Antarmuka ... 46

BAB IV IMPLEMENTASI SISTEM ... 49

4.1 Lingkungan Implementasi ... 49

4.2 Instalasi JDK dan JRE ... 50

4.3 Instalasi NetBeans ... 50

4.4 Instalasi MySQL... 50

4.5 Instalasi SMS Gateway... 51

4.6 Trigger ... 54

4.7 Implementasi Algoritma Semut... 59

4.8 Implementasi Antarmuka ... 67

BAB V UJI COBA DAN EVALUASI... 70

5.1 Skenario Uji Coba ... 70

5.2 Pelaksanaan Uji Coba... 70

5.2.1 Uji Coba Processing SMS... 70

A. Uji Coba Koneksi SMS Gateway... 70

B. Uji Coba Pengiriman dan Penerimaan SMS ... 71

5.2.2 Uji Coba Routing Shortest Path ... 75

5.2.3 Uji Coba Update Status... 78

BAB VI PENUTUP ... 80

6.1 Kesimpulan... 80

6.2 Saran ... 80


(10)

vi   

DAFTAR GAMBAR

Gambar 2.1 Arsitektur SMS Gateway... 10

Gambar 2.2 Graf Berarah dan Berbobot ... 12

Gambar 2.3 Graf Tidak Berarah Dan Berbobot ... 13

Gambar 2.4 Graf Berarah dan Tidak Berbobot ... 13

Gambar 2.5 Graf Tidak Berarah dan Tidak Berbobot... 13

Gambar 2.6 Senarai Kedekatan Graf ABCDEFG ... 15

Gambar 2.7 Graf ABCDEFG ... 16

Gambar 2.8 Perjalanan Semut Menemukan Sumber Makanan... 18

Gambar 2.9 Flowchart Algoritma Semut ... 24

Gambar 2.10 Arsitektur Java... 25

Gambar 3.1 Deskripsi Arsitektur Sistem... 31

Gambar 3.2 Workflow Sistem... 34

Gambar 3.3 Use Case Diagram Aplikasi Penentuan Jarak Terdekat ... 35

Gambar 3.4 Activity diagram Processing SMS... 36

Gambar 3.5 Activity diagram Routing Shortest Path... 38

Gambar 3.6 Activity diagram Update Status... 39

Gambar 3.7 Class Diagram ... 40

Gambar 3.8 Perancangan Antarmuka... 46

Gambar 3.9 Rancangan Sub Menu Klik Kanan ... 47

Gambar 4.1 Test Connection... 51

Gambar 4.2 Konfigurasi GSM Modem... 52

Gambar 4.3 Konfigurasi Data Link Properties... 53

Gambar 4.4 Test Connection... 54

Gambar 4.5 Test Connection ODBC... 58

Gambar 4.6 Halaman Utama ... 67

Gambar 4.7 Sub Menu... 67

Gambar 4.8 Group Menu Customer ... 68

Gambar 4.9 Group New Branches ... 69

Gambar 4.10 Window Map ... 69

Gambar 5.1 Status Koneksi SMS Gateway... 71

Gambar 5.2 Balasan Informasi Cara Pemesanan ... 72

Gambar 5.3 Balasan Format Salah ... 72


(11)

vii   

Gambar 5.8 Balasan Peringatan Status Pemesanan Salah... 75

Gambar 5.9 Tampilan Aplikasi Saat Stand By... 75

Gambar 5.10 Tampilan Aplikasi Saat Load Branch... 76

Gambar 5.11 Tampilan Aplikasi Saat Load Customer... 77

Gambar 5.12 Tampilan Routing... 77


(12)

viii   

Tabel 2.1 Matriks Kedekatan Graf ABCDEFG ... 14

Tabel 3.1 Format SMS ... 37

Tabel 3.2 Struktur OzekiMessageIn... 41

Tabel 3.3 Struktur OzekiMessageOut ... 41

Tabel 3.4 Struktur Customer ... 42

Tabel 3.5 Struktur Menu ... 42

Tabel 3.6 Struktur Status Info ... 43

Tabel 3.7 Struktur Pesan ... 43

Tabel 3.8 Struktur Pesain Detail ... 44

Tabel 3.9 Struktur Warning... 44

Tabel 3.10 Struktur Branch ... 44

Tabel 3.11 Struktur TempSplittedMessage ... 45

Tabel 3.12 Struktur TempTableOrder ... 45

Tabel 3.13 StrukturErrorInfo... 46

Tabel 4.1 Format SMS ... 57


(13)

1

Dalam bab ini dijelaskan beberapa hal dasar yang meliputi latar belakang, permasalahan, batasan masalah, tujuan dan manfaat, metodologi pelaksanaan serta sistematika penulisan buku tugas akhir ini. Dari uraian tersebut diharapkan, gambaran umum permasalahan dan pemecahan yang diambil dapat dipahami. 1.1 Latar Belakang

Seiring dengan perkembangan era globalisasi yang semakin pesat, sebagian besar masyarakat merasakan informasi telah menjadi salah satu kebutuhan pokok. Informasi telah berubah bentuk menjadi suatu komoditi yang dapat diperdagangkan sehingga mengakibatkan semakin tingginya tingkat persaingan dalam dunia usaha. Dan tidak dapat dipungkiri bahwa pengaruh kemajuan teknologi informasi sudah tidak dapat dihindarkan lagi, seperti penggunaan telepon, faksimili, komputer, dan satelit dalam berbagai aktivitas sarana berkomunikasi perusahaan.

Teknologi informasi muncul sebagai akibat semakin merebaknya globalisasi dalam kehidupan organisasi, semakin kerasnya persaingan bisnis, semakin singkatnya siklus hidup barang dan jasa yang ditawarkan, serta meningkatnya tuntutan selera konsumen terhadap produk dan jasa yang ditawarkan. Untuk mengantisipasi semua ini, perusahaan harus mencari berbagai terobosan baru dengan memanfaatkan teknologi informasi yang memungkinkan manusia untuk memperoleh informasi dari tempat yang berjauhan dalam waktu yang singkat dan dengan biaya yang murah.


(14)

Salah satu penerapan teknologi informasi dan komunikasi di bidang pemasaran produk atau jasa yaitu penggunaan telepon seluler. Telepon seluler atau lebih dikenal dengan ponsel saat ini telah menjadi media atau saluran untuk berkomunikasi bagi masyarakat pada umumnya. Salah satu layanan yang sering digunakan adalah SMS (Short Message Service).

Layanan ini sudah menjadi sebuah kebutuhan dan gaya hidup yang populer. Hal ini pulalah yang memicu perusahaan kecil dan menengah untuk menggunakan layanan SMS sebagai media pemasaran produknya, salah satunya yaitu industri restoran makanan cepat saji.

Di satu sisi, selama ini layanan pemesanan yang dikembangkan hanya sebatas melalui telepon dan menggunakan sumber daya manusia sebagai media pengolah informasi. Untuk meminimalkan biaya pemasaran dan demi efektifitas, dirasa perlu untuk menerapkan teknologi komunikasi seluler yang sudah ada. Selain itu ada kalanya layanan pengiriman makanan ini terhambat dengan faktor informasi lokasi customer, dimana pemilik restoran harus melihat peta secara manual dan menentukan lokasi restoran mana yang paling dekat dengan customer. Faktor ini dapat menghambat pengiriman barang yang nantinya akan berdampak pada ketidakpuasan calon pembeli.

Karena faktor-faktor inilah yang mendorong penulis untuk merancang tugas akhir dengan judul Aplikasi Penentuan Jarak Terdekat Untuk Delivery

Service Restoran Cepat Saji Menggunakan Metode Ant Colony dengan studi kasus


(15)

1.2 Perumusan Masalah

Berdasarkan latar belakang yang telah dijelaskan diatas, maka dapat dirumuskan masalah dalam Tugas Akhir ini, yaitu :

1. Bagaimana membuat aplikasi yang bisa menangani pemesanan online dari

customer melalui sms gateway?

2. Bagaimana mencari dan menentukan posisi customer di peta berdasarkan sms yang dikirim ke server?

3. Bagaimana mendapatkan jarak terdekat antara lokasi restoran dengan

customer berdasarkan optimasi algoritma ant colony?

1.3 Batasan Masalah

Pada pembuatan aplikasi ini perlu didefinisikan batasan masalah mengenai sejauh mana pembuatan aplikasi ini akan dikerjakan. Beberapa batasan masalah tersebut antara lain:

1. Aplikasi ini dibuat berbasis desktop dengan menggunakan bahasa Java sebagai bahasa pemrograman.

2. Aplikasi ini merupakan simulasi, sehingga studi kasus yang diambil adalah restoran X yang bukan merupakan restoran sebenarnya.

3. Aplikasi ini hanya difokuskan pada sms gateway dan penentuan jarak terdekat antara lokasi restoran dengan posisi pembeli, tidak untuk Sistem Informasi Inventory.

4. Aplikasi ini bukan merupakan Sistem Informasi Geografis ataupun bagian dari SIG, tetapi hanya menggunakan pemetaan sebagai sebagai fungsi utama dalam aplikasi ini.


(16)

5. Aplikasi ini menggunakan peta Surabaya yang merupakan peta opensource dengan keterbatasan resolusi.

6. Layanan pengantaran diasumsikan menggunakan kendaraan roda dua atau sepeda motor sehingga faktor kemacetan tidak diperhitungkan.

7. Bobot antar titik yang ditentukan hanyalah bobot jarak, dengan mengabaikan bobot-bobot lainnya. Sehingga jalur terpendek ditentukan berdasarkan jarak terpendek antar titik.

8. Alamat customer hanya terbatas pada nama jalan, tidak dengan nomor, blok, RT RW, nama perumahan maupun gang-gang kecil, dengan pertimbangan data koordinat lokasi yang disediakan pada peta terbatas pada nama jalan utama atau protokol.

9. Routing yang dilakukan dimulai dari ujung jalan yang berbatasan dengan

intersection jalan lain. Tidak mengarah tepat pada lokasi jalan yang dimaksud.

1.4 Tujuan

Tujuan dari membuat Aplikasi Penentuan Jarak Terdekat Untuk Delivery

Service Restoran Cepat Saji Menggunakan Metode Ant Colony dengan studi kasus

Restoran X adalah sebagai berikut :

1. Mengimplementasikan algoritma Ant Colony dan sms gateway untuk studi kasus jarak terdekat antar dua lokasi dengan menggunakan bahasa pemrograman Java.

2. Untuk menghasilkan jarak terdekat antara lokasi restoran dengan customer sehingga proses pengantaran memiliki waktu tempuh minimal.


(17)

1.5 Manfaat

Adanya tugas akhir ini diharapkan dapat memberikan manfaat bagi

customer dan pemilik restoran, yaitu diantaranya:

1. Customer dapat melakukan pemesanan dengan mudah menggunakan fasilitas

sms gateway.

2. Petugas pengantaran dapat menghemat waktu karena aplikasi penentuan jarak terdekat ini memberikan jarak tempuh minimal.

1.6 Metodologi Pembuatan Skripsi

Dalam pembuatan Tugas Akhir kali ini, penulis akan menjelaskan tentang metode yang digunakan selama penulis menyusun dan membuat Tugas Akhir ini. 1. Studi literatur.

Mengumpulkan referensi baik dari internet, maupun sumber-sumber yang lainnya mengenai algoritma Ant Colony serta optimasi-optimasi yang telah ada sebagai tambahan referensi Tugas Akhir ini.

2. Analisa dan perancangan Aplikasi.

Menganalisa dan merancang suatu aplikasi penentuan jarak terdekat menggunakan algoritma Ant Colony dengan membandingkan atau melihat aplikasi sejenis yang ada pada GoogleMaps.

3. Pembuatan Aplikasi.

Pada tahap ini merupakan tahap yang paling banyak memerlukan waktu karena model dan rancangan aplikasi yang telah dibuat di implementasikan dengan menggunakan bahasa pemrograman Java.


(18)

4. Uji coba dan evaluasi aplikasi.

Pada tahap ini setelah aplikasi selesai dibuat maka dilakukan pengujian aplikasi untuk mengetahui apakah aplikasi tersebut telah bekerja dengan benar sesuai dengan konsep yang diajukan.

5. Pembuatan Kesimpulan.

Pada tahap ini dibuat kesimpulan dari hasil pembuatan aplikasi yang diperoleh sesuai dengan dasar teori yang mendukung dalam pembuatan aplikasi tersebut, yang telah dikerjakan secara keseluruhan.

6. Penyusunan Buku Tugas Akhir.

Tahap ini merupakan tahap terakhir dari pengerjaan Tugas Akhir. Buku disusun sebagai laporan dari seluruh proses pengerjaan Tugas Akhir sehingga memudahkan pembaca yang ingin menyempurnakan dan mengembangkan aplikasi lebih lanjut.

1.7 Sistematika Penulisan

Pada laporan Tugas Akhir ini akan menjelaskan tentang pembuatan Aplikasi Penentuan Jarak Terdekat Untuk Delivery Service Restoran Cepat Saji Menggunakan Metode Ant Colony Studi Kasus Restoran X. Laporan Tugas Akhir ini dibagi menjadi enam bab yang dilengkapi dengan penjelasan langkah-langkah dan ilustrasinya.

BAB I PENDAHULUAN

Bab ini akan menjelaskan tentang Latar Belakang, Perumusan Masalah, Batasan Masalah, Tujuan Penulisan, Manfaat, Metodologi Penulisan, dan Sistematika Penulisan.


(19)

BAB II TINJAUAN PUSTAKA

Bab ini menjelaskan tentang dasar teori yang berkaitan dengan teori graph, teori jalur terpendek dan teori mengenai algoritma Ant Colony yang digunakan sebagai penunjang serta referensi dalam pembuatan laporan Tugas Akhir ini.

BAB III ANALISA DAN PERANCANGAN SISTEM

Dalam bab ini dijelaskan tentang analisa dan perancangan sistem informasi yang antara lain berisi tentang analisa aplikasi yang akan dibuat. Dalam bab ini juga akan dijelaskan semua kebutuhan yang diperlukan dalam membuat Aplikasi Penentuan Jarak Terdekat Untuk

Delivery Service Restoran Cepat Saji Menggunakan Metode Ant

Colony.

BAB IV IMPLEMENTASI SISTEM

Pada bab ini akan membahas tentang implementasi berdasarkan konsep perancangan yang ada pada BAB III beserta penjelasan tentang kebutuhan sistem supaya aplikasi yang dikerjakan sesuai dengan tujuan dari penulisan Tugas Akhir.

BAB V UJI COBA DAN ANALISA SISTEM

Bab ini menjelaskan tentang pengujian yang dilakukan untuk mengetahui apakah aplikasi yang dibuat bisa bekerja sesuai dengan konsep yang sebenarnya.


(20)

BAB VI PENUTUP

Bab ini akan menjelaskan tentang Kesimpulan dari keseluruhan isi dari laporan Tugas Akhir serta Saran yang disampaikan penulis untuk pengembangan aplikasi yang ada demi kesempurnaan aplikasi yang lebih baik.

DAFTAR PUSTAKA

Pada bagian ini akan dipaparkan tentang sumber-sumber literatur, tutorial, buku maupun situs-situs yang digunakan dalam pembuatan laporan Tugas Akhir ini.


(21)

9

BAB II

TINJAUAN PUSTAKA

2.1 SMS Gateway

SMS Gateway adalah sebuah perangkat lunak yang menggunakan bantuan

komputer dan memanfaatkan teknologi seluler yang diintegrasikan guna mendistribusikan pesan-pesan yang di-generate lewat sistem informasi melalui

media SMS yang di-handle oleh jaringan seluler. Secara khusus, sistem ini akan

memiliki fungsi-fungsi sebagai berikut : 1. Message Management dan Delivery

a. Pengaturan pesan yang meliputi manajemen prioritas pesan, manajemen, pengiriman pesan, dan manajemen antrian.

b. Pesan yang dilalukan harus sedapat mungkin fail safe. Artinya, jika

terdapat gangguan pada jaringan telekomunikasi, maka sistem secara otomatis akan mengirim ulang pesan tersebut.

2. Korelasi

Berfungsi untuk melakukan korelasi data untuk menghasilkan data baru hasil korelasi. Pada sistem yang terpasang saat ini, arsitektur lalu lintas data melalui SMS sudah terjalin cukup baik. Hanya saja, keterbatasan akses data dan tujuan informasi SMS yang belum terfokus menyebabkan banyaknya jawaban standar (default replies) masih banyak terjadi.

Fitur-fitur standar SMS Gateway, yaitu komunikasi SMS interaktif dua

arah, SMS info on demand, SMS service settings, SMS Automatic Registration,


(22)

Kemudian pengiriman SMS terjadwal, personalisasi SMS, antarmuka aplikasi berbasis web, buku alamat dan call group, manajemen pengguna, sistem

security access, serta sistem parameter.

Fitur-fitur advance SMS Gateway, yaitu antarmuka dinamis untuk

integrasi ke database perusahaan, SMS Remote Control, E-mail to SMS, SMS to

E-mail, ekspansi modem GSM, dan koneksi langsung ke SMSC via SMPP.

Gambar 2. 1 Arsitektur SMS Gateway

SMSC (Short Message Service Center) merupakan jaringan telepon selular

yang menangani pengiriman SMS. Jadi, pada saat seseorang mengirimkan sebuah pesan SMS melalui ponselnya, SMSC-lah yang bertugas mengirimkan pesan tersebut ke nomor tujuan. Jika nomor tujuan tidak aktif, maka SMSC akan menyimpan pesan tersebut dalam jangka waktu tertentu. Jika SMS tetap tidak dapat terkirim sampai jangka waktu tersebut berakhir, maka SMS tersebut akan dihapus dari penyimpanan SMSC.

Sebuah aplikasi SMS gateway dapat menggunakan jalur SMSC untuk

pengoperasiannya. Keuntungannya adalah penggunaan nomor pendek yang mungkin dapat terdiri dari 3 atau 4 digit saja, misalnya 222, 9090, dan seterusnya.


(23)

Contohnya seperti saat kita mengikuti polling SMS, nomor pendek ini

disediakan oleh operator jaringan SMSC. Jalur SMSC juga dapat mengirim SMS dalam jumlah banyak dalam waktu yang relatif singkat. Hanya saja, untuk membuat SMS gateway dengan menggunakan jalur SMSC, kita harus memiliki

jalur koneksi ke operator selular, dan ini bukan hal yang mudah untuk pelaku bisnis dalam skala kecil ataupun individu. Umumnya layanan ini digunakan jika aplikasi Anda dapat menghasilkan lalu lintas SMS yang tinggi.

Selain itu ada alternatif infrastruktur yang lebih sederhana dan mudah didapatkan, yaitu membuat SMS gateway yang menggunakan ponsel ataupun

modem GSM/CDMA sebagai media pengirim/penerima SMS, di mana ponsel atau modem GSM/CDMA tersebut terpasang pada sebuah komputer.

Berikut ini peralatan yang dibutuhkan dalam membangun SMS Gateway

adalah sebagai berikut : 1. PC Server

2. Modem GSM/CDMA

3. Simcard (kartu) GSM/CDMA

4. Modul SMS Gateway

2.2 Teori Graf 2.2.1 Definisi Graf

Graf adalah kumpulan simpul (nodes) yang dihubungkan satu sama lain

melalui sisi/busur (edges) (Zakaria, 2006). Suatu Graf G terdiri dari dua


(24)

a. Verteks (simpul) :V = himpunan simpul yang terbatas dan tidak

kosong.

b. Edge (sisi/busur):E = himpunan busur yang menghubungkan sepasang

simpul.

Simpul-simpul pada graf dapat merupakan objek sembarang seperti node,

atom-atom suatu zat, nama anak, jenis buah, komponen alat elektronik dan sebagainya. Busur dapat menunjukkan hubungan (relasi) sembarang seperti rute penerbangan, jalan raya, sambungan telepon, ikatan kimia, dan lain-lain. Notasi graf: G(V,E) artinya graf G memiliki V simpul dan E busur.

Menurut arah dan bobotnya, graf dibagi menjadi empat bagian, yaitu : a. Graf berarah dan berbobot : tiap busur mempunyai anak panah dan

bobot. Gambar 2.2 menunjukkan graf berarah dan berbobot yang terdiri dari tujuh titik yaitu titik A,B,C,D,E,F,G. Titik menujukkan arah ke titik B dan titik C, titik B menunjukkan arah ke titik D dan titik C, dan seterusnya. Bobot antar titik A dan titik B pun telah diketahui.

Gambar 2.2 Graf Berarah dan Berbobot

b. Graf tidak berarah dan berbobot : tiap busur tidak mempunyai anak panah tetapi mempunyai bobot. Gambar 2.3 menunjukkan graf tidak berarah dan berbobot. Graf terdiri dari tujuh titik yaitu titik A,B,C,D,E,F,G. Titik A tidak menunjukkan arah ke titik B atau C,


(25)

namun bobot antara titik A dan titik B telah diketahui. Begitu juga dengan titik yang lain.

Gambar 2.3 Graf Tidak Berarah dan Berbobot

c. Graf berarah dan tidak berbobot: tiap busur mempunyai anak panah yang tidak berbobot. Gambar 2.4 menunjukkan graf berarah dan tidak berbobot.

Gambar 2.4 Graf Berarah dan Tidak Berbobot

d. Graf tidak berarah dan tidak berbobot: tiap busur tidak mempunyai anak panah dan tidak berbobot

Gambar 2.5 Graf Tidak Berarah dan Tidak Berbobot 2.2.2 Representasi Graf


(26)

a. Matriks Kedekatan (AdjacencyMatrix)

Untuk suatu graf dengan jumlah simpul sebanyak n, maka matriks kedekatan mempunyai ukuran n x n (n baris dan n kolom). Jika antara dua buah simpul terhubung maka elemen matriks bernilai 1, dan sebaliknya bernilai 0 jika tidak terhubung. Tabel matriks kedekatan untuk graf ABCDEFG dapat dilihat pada Matrik Adjency berikut :

Tabel 2.1 Matriks Kedekatan Graf ABCDEFG

Pada tabel di atas, elemen matriks kedekatan bernilai 0 untuk diagonal dan elemen yang tidak terhubung dengan simpul lain (elemen matriks bernilai 0 jika simpul tidak terhubung dengan simpul lainnya).

b. Senarai Kedekatan (Adjency List)

Pada simpul x dapat dianggap sebagai suatu senarai yang terdiri dari simpul pada graf yang berdekatan dengan x. Representasi senarai kedekatan mempunyai kesamaan fleksibilitas dengan matriks kedekatan.


(27)

Senarai kedekatan untuk graf ABCDEFG dapat dilihat pada gambar berikut :

Gambar Error! No text of specified style in document..6 Senarai Kedekatan Graf ABCDEFG

2.3 Permasalahan Optimasi

2.3.1 Penyelesaian Masalah Optimasi

Secara umum, penyelesaian masalah pencarian jalur terpendek dapat dilakukan dengan menggunakan dua metode, yaitu metode konvensional dan metode heuristik. Metode konvensional diterapkan dengan perhitungan matematis biasa, sedangkan metode heuristik diterapkan dengan perhitungan kecerdasan buatan.

Ada 2 metode penyelesaian masalah optimasi, yaitu : a. Metode Konvensional

Metode konvensional adalah metode yang menggunakan perhitungan matematis biasa. Ada beberapa metode konvensional yang biasa digunakan untuk melakukan pencarian jalur terpendek, diantaranya:


(28)

algoritma Djikstra, algoritma Floyd-Warshall, dan algoritma Bellman

-Ford.

b. Metode Heuristik

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

dan lain-lain.

2.3.2 Permasalahan Jalur Terpendek (Shortest Path Problem)

Jalur terpendek adalah suatu jaringan pengarahan perjalanan dimana sesorang pengarah jalan ingin menentukan jalur terpendek antara dua node,

berdasarkan beberapa jalur alternatif yang tersedia, dimana titik tujuan hanya satu. Gambar berikut menunjukkan suatu graf ABCDEFG yang berarah dan tidak berbobot :

Gambar 2.7 Graf ABCDEFG

Pada gambar diatas, misalkan kita dari node A ingin menuju Node G.

Untuk menuju node G, dapat dipilih beberapa jalur yang tersedia :


(29)

A → B → C → D → F → G A → B → C → D → G A → B → C → F → G A → B → D → E → G A → B → D → F → G A → B → D → G A → B → E → G A → C → D → E → G A → C → D → F → G A → C → D → G A → C → F → G

Berdasarkan data diatas, dapat dihitung jalur terpendek dengan mencari jarak antara jalur-jalur tersebut. Apabila jarak antar jalur belum diketahui, jarak dapat dihitung berdasarkan koordinat node-node tersebut, kemudian menghitung

jalur terpendek yang dapat dilalui.

2.4 Algoritma Semut

Algoritma Semut diadopsi dari perilaku koloni semut yang dikenal sebagai sistem semut (Dorigo, 1996). Secara alamiah koloni semut mampu menemukan rute terpendek dalam perjalanan dari sarang ke tempat-tempat sumber makanan. Koloni semut dapat menemukan rute terpendek antara sarang dan sumber makanan berdasarkan jejak kaki pada lintasan yang telah dilalui. Semakin banyak semut yang melalui suatu lintasan, maka akan semakin jelas bekas jejak kakinya. Hal ini akan menyebabkan lintasan yang dilalui semut dalam jumlah sedikit,


(30)

semakin lama akan semakin berkurang kepadatan semut yang melewatinya, atau bahkan akan tidak dilewati sama sekali.

Sebaliknya lintasan yang dilalui semut dalam jumlah banyak, semakin lama akan semakin bertambah kepadatan semut yang melewatinya, atau bahkan semua semut akan melalui lintasan tersebut.

Gambar 2.8 Perjalanan Semut Menemukan Sumber Makanan

Gambar 2.8. di atas menunjukkan ada dua kelompok semut yang akan melakukan perjalanan. Satu kelompok bernama L yaitu kelompok yang berangkat dari arah kiri yang merupakan sarang semut dan kelompok lain yang bernama kelompok R yang berangkat dari kanan yang merupakan sumber makanan. Kedua kelompok semut dari titik berangkat sedang dalam posisi pengambilan keputusan jalan sebelah mana yang akan diambil. Kelompok semut L membagi dua kelompok lagi. Sebagian melalui jalan atas dan sebagian melalui jalan bawah. Hal ini juga berlaku pada kelompok semut R. Kelompok semut berjalan pada


(31)

kecepatan yang sama dengan meninggalkan pheromone atau jejak kaki di jalan

yang telah dilalui.

Pheromone yang ditinggalkan oleh kumpulan semut yang melalui jalan

atas telah mengalami banyak penguapan karena semut yang melalui jalan atas berjumlah lebih sedikit. Hal ini dikarenakan jarak yang ditempuh lebih panjang daripada jalan bawah. Sedangkan pheromone yang berada di jalan bawah,

penguapannya cenderung lebih lama. Karena semut yang melalui jalan bawah lebih banyak daripada semut yang melalui jalan atas. Sehingga semut-semut yang lain pada akhirnya memutuskan untuk melewati jalan bawah karena pheromone

yang ditinggalkan masih banyak.

Sedangkan pheromone pada jalan atas sudah banyak menguap sehingga

semut-semut tidak memilih jalan atas tersebut. Semakin banyak semut yang melalui jalan bawah maka semakin banyak semut yang mengikutinya. Demikian juga dengan jalan atas, semakin sedikit semut yang melalui jalan atas, maka

pheromone yang ditinggalkan semakin berkurang bahkan hilang. Dari sinilah

kemudian terpilihlah jalur terpendek antara sarang dan sumber makanan.

Dalam algoritma semut, diperlukan beberapa variabel dan langkah-langkah untuk menentukan jalur terpendek, yaitu:

Langkah 1 :

a. Inisialisasi harga parameter-parameter algoritma. Parameter-parameter yang diinisialisasikan adalah :

1. Intensitas jejak semut antar node dan perubahannya (

τ

ij)

2. Banyak node (n) termasuk koordinat (x,y) atau jarak antar node (dij)


(32)

4. Tetapan siklus-semut (Q)

5. Tetapan pengendali intensitas jejak semut (α), nilai α≥ 0 6. Tetapan pengendali visibilitas (β), nilai β≥ 0

7. Visibilitas antar node = 1/dij (ηij)

8. Banyak semut (m)

9. Tetapan penguapan jejak semut (ρ) , nilai ρ harus > 0 dan < 1 untuk mencegah jejak pheromone yang tak terhingga.

10. Jumlah siklus maksimum (NCmax) bersifat tetap selama algoritma

dijalankan, sedangkan

τ

ij akan selalu diperbaharui harganya pada setiap

siklus algoritma mulai dari siklus pertama (NC=1) sampai tercapai jumlah siklus maksimum (NC=NCmax) atau sampai terjadi konvergensi.

b. Inisialisasi node pertama setiap semut.

Setelah inisialisasi τij dilakukan, kemudian m semut ditempatkan pada node

pertama tertentu secara acak.

Langkah 2 :

Pengisian node pertama ke dalam tabu list. Hasil inisialisasi node pertama

setiap semut dalam langkah 1 harus diisikan sebagai elemen pertama tabu list.

Hasil dari langkah ini adalah terisinya elemen pertama tabu list setiap semut

dengan indeks node tertentu, yang berarti bahwa setiap tabuk(1) bisa berisi indeks

node antara 1 sampai n sebagaimana hasil inisialisasi pada langkah 1.

Langkah 3 :

Penyusunan rute kunjungan setiap semut ke setiap node. Koloni semut


(33)

perjalanan dari node pertama masing-masing sebagai node asal dan salah satu

node-node lainnya sebagai node tujuan.

Kemudian dari node kedua masing-masing, koloni semut akan

melanjutkan perjalanan dengan memilih salah satu dari node-node yang tidak

terdapat pada tabuk sebagai node tujuan selanjutnya. Perjalanan koloni semut

berlangsung terus menerus sampai semua node satu persatu dikunjungi atau telah

menempati tabuk. Jika s menyatakan indeks urutan kunjungan, node asal

dinyatakan sebagai tabuk(s) dan node-node lainnya dinyatakan sebagai {N-tabuk},

maka untuk menentukan node tujuan digunakan persamaan probabilitas node

untuk dikunjungi sebagai berikut :

untuk j∈{N-tabuk} …………... (1)

dan = 0, untuk j lainnya …... (2)

dengan i sebagai indeks node asal dan j sebagai indeks node tujuan.

Langkah 4 :

a. Perhitungan panjang rute setiap semut.

Perhitungan panjang rute tertutup (length closed tour) atau Lk setiap semut

dilakukan setelah satu siklus diselesaikan oleh semua semut. Perhitungan ini dilakukan berdasarkan tabukmasing-masing dengan persamaan berikut :


(34)

dimana dij adalah jarak antara node i ke node j yang dihitung berdasarkan

persamaan :

b. Pencarian rute terpendek.

Setelah Lk setiap semut dihitung, akan didapat harga minimal panjang rute

tertutup setiap siklus atau LminNC dan harga minimal panjang rute tertutup secara

keseluruhan adalah atau Lmin.

c. Perhitungan perubahan harga intensitas jejak kaki semut antar node.

Koloni semut akan meninggalkan jejak-jejak kaki pada lintasan antar node

yang dilaluinya. Adanya penguapan dan perbedaan jumlah semut yang lewat, menyebabkan kemungkinan terjadinya perubahan harga intensitas jejak kaki semut antar node. Persamaan perubahan ini adalah :

Dengan adalah perubahan harga intensitas jejak kaki semut antar node

setiap semut yang dihitung berdasarkan persamaan :

, untuk (i,j) א node asal dan node tujuan dalam tabuk

= 0 , untuk (i,j) lainnya ……….(6)


(35)

a. Perhitungan harga intensitas jejak kaki semut antar node untuk siklus

selanjutnya. Harga intensitas jejak kaki semut antar node pada semua

lintasan antar node ada kemungkinan berubah karena adanya penguapan

dan perbedaan jumlah semut yang melewati. Untuk siklus selanjutnya, semut yang akan melewati lintasan tersebut harga intensitasnya telah berubah.

Harga intensitas jejak kaki semut antar node untuk siklus selanjutnya

dihitung dengan persamaan :

τij = ρ⋅ τij + Δτij ……….. (8)

b. Atur ulang harga perubahan intensitas jejak kaki semut antar node. Untuk

siklus selanjutnya perubahan harga intensitas jejak semut antar node perlu

diatur kembali agar memiliki nilai sama dengan nol.

Langkah 6 :

Pengosongan tabu list, dan ulangi langkah 2 jika diperlukan. Tabu list

perlu dikosongkan untuk diisi lagi dengan urutan node yang baru pada siklus

selanjutnya, jika jumlah siklus maksimum belum tercapai atau belum terjadi konvergensi. Algoritma diulang lagi dari langkah 2 dengan harga parameter intensitas jejak kaki semut antar node yang sudah diperbaharui.

Berikut aliran flowchart untuk menerapkan algoritma semut pada


(36)

Gambar 2.9 Flowchart Algoritma Semut

2.5 Bahasa Java

Java merupakan suatu bahasa pemrograman dan sekaligus suatu platform,

yang dikenal sebagai bahasa pemrograman tingkat tinggi. Java mudah dipelajari, terutama bagi programmer yang telah mengenal C/C++.

Java merupakan bahasa pemrograman berorientasi objek yang merupakan paradigma pemrograman masa depan. Sebagai bahasa pemrograman Java dirancang menjadi handal dan aman. Java juga dirancang agar dapat dijalankan di semua platform.


(37)

Java bersifat neutral architecture, karena Java Compiler yang digunakan

untuk mengkompilasi kode program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat keras yang disebut sebagai Java

Bytecode.

Sebagai sebuah platform, Java terdiri atas dua bagian utama, yaitu Java

Virtual Machine (JVM) dan Java Application Programming Interface (Java API).

SUN yang merupakan pengembang Java, membagi arsitektur Java menjadi tiga bagian, yaitu

1. Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem

tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi (server). J2EE merupakan superset dari Standar Java.

2. Standart Java (J2SE), ini yang biasa dikenal sebagai bahasa Java, yang

biasanya digunakan untuk desktopprogramming dan database.

3. Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya

yang banyak dipakai adalah untuk wirelessdevice / mobiledevice.


(38)

Java memiliki karakteristik berikut : 1. Sederhana

Bahasa pemrograman Java menggunakan sintaks mirip dengan C++ namun sintaks pada Java telah banyak diperbaiki terutama menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga

menggunakan automatic memory allocation dan memory garbage collection.

2. Berorientasi objek (Object Oriented)

Java mengunakan pemrograman berorientasi objek yang membuat program dapat dibuat secara modular dan dapat dipergunakan kembali. Pemrograman berorientasi objek memodelkan dunia nyata ke dalam objek dan melakukan interaksi antar objek-objek tersebut.

3. Dapat didistribusi dengan mudah

Java dibuat untuk membuat aplikasi terdistribusi secara mudah dengan adanya

libraries networking yang ter-integrasi pada Java.

4. Interpreter

Program Java dijalankan menggunakan interpreter yaitu Java Virtual Machine

(JVM). Hal ini menyebabkan source code Java yang telah dikompilasi

menjadi Java bytecodes dapat dijalankan pada platform yang berbeda-beda.

5. Robust

Java mempuyai reliabilitas yang tinggi. Compiler pada Java mempunyai

kemampuan mendeteksi error secara lebih teliti dibandingkan bahasa

pemrograman lain. Java mempunyai runtime-Exception handling untuk


(39)

6. Aman

Sebagai bahasa pemrograman untuk aplikasi internet dan terdistribusi, Java memiliki beberapa mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak sistem komputer yang menjalankan aplikasi tersebut.

7. ArchitectureNeutral

Program Java merupakan platform independent. Program cukup mempunyai

satu buah versi yang dapat dijalankan pada platform yang berbeda dengan

Java Virtual Machine.

8. Portable

Source code maupun program Java dapat dengan mudah dibawa ke platform

yang berbeda-beda tanpa harus dikompilasi ulang.

9. Performance

Performance pada Java sering dikatakan kurang tinggi. Namun performance

Java dapat ditingkatkan menggunakan kompilasi Java lain. Contohnya seperti buatan Inprise, Microsoft ataupun Symantec yang menggunakan Just In Time

Compilers (JIT).

10.Multithreaded

Java mempunyai kemampuan untuk membuat suatu program yang dapat melakukan beberapa pekerjaan secara sekaligus dan simultan.

11.Dinamis

Java didesain untuk dapat dijalankan pada lingkungan yang dinamis. Perubahan pada suatu class dengan menambahkan properties ataupun method


(40)

Aplikasi dengan teknologi Java secara umum adalah aplikasi serba guna yang dapat dijalankan pada seluruh mesin yang memiliki Java Runtime

Environment (JRE). Berikut beberapa tools dan fitur dalam bahasa pemrograman

Java :

1. JVM (JavaVirtualMachine)

JVM inilah yang merupakan jantung dari Java Platform. JVM ini adalah

pihak yang bertanggung jawab untuk mengeksekusi program Java menjadi bahasa mesin untuk diproses oleh prosesor. JVM mampu menerjemahkan

code-code Java ke hampir semua platform. JVM ini-lah yang membuat

Java "write once, run everywhere" alias multi-platform.

2. JRE (JavaRuntimeEnvironment)

JRE inilah yang memungkinkan sebuah program Java dapat berjalan di mesin Anda. JRE ini mengeksekusi binary-binary dari class-class dan

mengirimnya ke JVM untuk diproses lagi ke prosesor. Setiap JRE pasti memiliki sebuah JVM di dalamnya untuk melakukan pemrosesan selanjutnya.

3. JDK (JavaDevelopmentKit)

Seperti namanya, JDK adalah semacam kotak peralatan (kit) yang

digunakan untuk development. JDK ini berguna saat Anda menulis code

program. Seperti halnya JRE, JDK juga memiliki JVM di dalamnya, yaitu:  javac, yaitu program untuk meng-compile kode sumber


(41)

4. SDK (SoftwareDevelopmentKit)

SDK ini biasanya adalah kumpulan dari tools yang dibutuhkan untuk

membuat serta menjalankan program. Jadi di dalam SDK itu ada JDK-nya, ada JRE-nya serta mungkin IDE-nya juga.

Jadi kesimpulannya : JVM ada di dalam JRE dan JDK, JRE untuk "membaca" program Java, JDK untuk "menulis" program Java sedangkan SDK umumnya berisi JDK & JRE.

2.6 UML (Unified Modelling Language)

UML (Unified Modelling Language) adalah bahasa standar untuk

melakukan spesifikasi, visualisasi, konstruksi, dan dokumentasi dari komponen-komponen perangkat lunak, dan digunakan untuk pemodelan bisnis. UML menggunakan notasi grafis untuk menyatakan suatu desain. Pemodelan dengan UML berarti menggambarkan yang ada dalam dunia nyata ke dalam bentuk yang dapat dipahami dengan menggunakan notasi standar UML.

Pemodelan dengan UML mempunyai beberapa tipe diagram yang berbeda

untuk memodelkan sistem perangkat lunak. Tipe diagram yang digunakan pada

tugas akhir ini adalah :

1. Use case Diagram

2. Activity Diagram


(42)

30

BAB III

ANALISA DAN PERANCANGAN SISTEM

3.1 Analisis Permasalahan

Aplikasi yang akan dibuat pada Tugas Akhir ini adalah sebuah aplikasi penentuan jarak terdekat untuk layanan delivery service makanan cepat saji yang melayani proses pemesanan makanan melalui sms, langsung dari mobile phone

customer ke restoran. Aplikasi ini dapat mengkoneksikan sms dari customer

tersebut ke aplikasi melalui sms gateway dimana berdasarkan sms yang dikirim, dapat ditentukan posisi customer untuk kemudian dicari jarak terdekat yang dapat ditempuh dari lokasi cabang restoran ke lokasi customer.

Dengan memanfaatkan aplikasi ini diharapkan restoran mampu meningkatkan kecepatan proses pengantarannya sehingga tingkat kepuasaan

customer lebih terjamin dan dapat memberikan keuntungan dari segi finansial.

Aplikasi penentuan jarak terdekat ini diharapkan dapat dijalankan dengan pemrograman Java.

3.2 Perancangan Sistem

Perancangan sistem berisikan penjelasan tentang deskripsi umum sistem, proses-proses akan dijabarkan dalam use case diagram, activity diagram, class

diagram dan perancangan antarmuka aplikasi.

3.2.1 Deskripsi Umum Sistem

Berikut gambar deskripsi arsitektur sistem yang akan dibangun pada aplikasi penentuan jarak terdekat :


(43)

Gambar 3.1 Deskripsi Arsitektur Sistem

Penjelasan dari gambar deskripsi arsitektur sistem pada Gambar 3.1 adalah sebagai berikut :

1. Customer mengirimkan sms dengan format tertentu ke sms gateway

melalui jaringan GSM untuk melakukan pemesanan makanan.

2. Sms dari customer diterima oleh sms gateway melalui modem gsm dan diteruskan ke aplikasi Ozeki Message Server untuk kemudian diparsing untuk mendapatkan data yang dibutuhkan dari customer.

3. Data yang sudah diparsing akan divalidasi formatnya apakah sudah benar atau belum. Data yang formatnya sudah benar akan disimpan ke dalam

database.

4. Aplikasi akan mengambil data alamat customer yang telah disimpan di dalam database. Data ini akan dipetakan pada aplikasi.

5. Aplikasi akan melakukan optimasi perhitungan menggunakan algoritma


(44)

lokasi cabang restoran. Hasil perhitungan yang menghasilkan jarak terdekat akan ditampilkan dalam bentuk simulasi pada aplikasi.

3.2.2 Kebutuhan Sistem

Dengan mengidentifikasi deskripsi pada gambar 3.1 telah diketahui bahwa kebutuhan sistem terbagi menjadi 2 yaitu kebutuhan perangkat keras dan kebutuhan proses.

A. Kebutuhan Perangkat Keras

Perangkat keras yang digunakan adalah perangkat keras yang dapat mendukung perangkat lunak yang memiliki kemampuan atau tampilan grafis yang cukup baik. Adapun perangkat keras yang dibutuhkan untuk membangun aplikasi berdasarkan arsitektur pada gambar 3.1, yaitu di antaranya komputer atau laptop dengan spesifikasi minimum kecepatan RAM yang disarankan 512 MB dengan kapasitas harddisk 2 GB, handphone dengan fitur standar sms serta modem gsm semua merk.

B. Kebutuhan Perangkat Lunak

Untuk memenuhi kebutuhan pengguna dalam berinteraksi dengan sistem diperlukan perangkat lunak sebagai jembatan untuk mengimplementasikan teori algoritma Ant Colony ke dalam perangkat keras. Perangkat lunak yang akan digunakan dalam perancangan aplikasi ini adalah :

1. Java Development Kit (JDK) 2. Java Runtime Environment (JRE) 3. NetBeans IDE


(45)

4. MySQL Server 5. MySQL Workbench 6. MySQL Connector ODBC

7. Software SMS Gateway

C. Kebutuhan Fungsional

Kebutuhan fungsional adalah kebutuhan yang harus diimplementasikan pada saat pembuatan aplikasi atau sistem. Spesifikasi kebutuhan fungsional untuk pengguna diantaranya :

1. Penentuan format sms yang dikirimkan customer untuk mengetahui informasi cara pemesanan, melakukan pemesanan dan status pemesanan untuk customer ketika akan menggunakan layanan

delivery service ini.

2. Proses parsing informasi yang diperoleh dari sms customer untuk diambil data-data customer yang diperlukan.

3. Proses validasi format sms yang diambil dari data yang telah diparsing sebelumnya.

4. Proses penyimpanan data yang formatnya sudah tepat ke dalam

database.

5. Penentuan format sms balasan dari aplikasi untuk pembeli, dimana ada 2 format yaitu yaitu format untuk informasi cara pemesanan, format sms balasan status pemesanan dan format sms untuk peringatan kesalahan jika format sms yang dikirimkan customer salah. 6. Proses pemetaan alamat customer pada aplikasi dimana data alamat


(46)

7. Proses perhitungan masing-masing siklus dari alamat customer ke lokasi cabang restoran terdekat sampai mendapatkan optimasi jarak terdekat.

8. Proses untuk menampilkan simulasi jarak terdekat dari restoran terdekat ke customer.

9. Proses update status pemesanan jika proses pengantaran pesanan selesai dilakukan.

3.2.3 Perancangan Proses A. Use Case Diagram

Pemodelan use case mengidentifikasi dan menggambarkan fungsi – fungsi sistem yang merupakan hasil penyusunan kembali lingkup fungsionalitas sistem menjadi banyak pernyataan fungsionalitas yang lebih kecil.

Dalam aplikasi penentuan jarak terdekat dengan algoritma ant colony ini, ada beberapa proses yang dirancang. Rancangan proses dibuat dalam bentuk

workflow sebagai berikut :

Receiving SMS from Customer

Mapping Customer’s Address Routing Shortest

Path Parsing SMS

Content

Check SMS Content

Insert into Database

Reply SMS to Customer

Update Status


(47)

Sedangkan use case berikut menjelaskan tentang aktivitas yang dilakukan oleh pengguna aplikasi penentuan jarak terdekat dengan algoritma ant colony.

Processing SMS

Routing Shortest Path <<include>> Shortest Path

Application

Update Status

<<include>>

Gambar 3.3 Use Case Diagram Aplikasi Penentuan Jarak Terdekat

Actor pada diagram di atas adalah sistem, yaitu sistem aplikasi penentuan

jarak terdekat. Sistem disini berperan sebagai aktor karena aplikasi ini merupakan otomatisasi dari beberapa proses. Ada 2 proses utama yang terjadi, yaitu processing sms dan routing shortest path. Processing sms berkaitan dengan pengolahan sms yang dikirim dari user ke sistem sehingga dihasilkan data-data yang dibutuhkan untuk proses routing shortest path. Sedangkan proses routing shortest path merupakan proses optimasi perhitungan jarak terdekat dengan menggunakan algoritma ant colony. Penjelasan lebih lanjut mengenai masing-masing proses dijelaskan dalam activity diagram berikut.


(48)

B. Activity Diagram

Activity diagram berikut menggunakan swimlane untuk mengelompokkan aktivitas yang dilakukan oleh actor dan aktivitas yang dilakukan oleh sistem.

B.1 Activity Diagram Processing SMS

Gambar 3.4 Activity Diagram Processing SMS

Dalam activity diagram processing sms terdapat 3 swimlane atau

peran yang melakukan aktivitas dalam processing sms, yaitu sms

gateway, shortest path application dan database. Shortest path

application berperan sebagai aktor utama dalam sistem. Aktivitas dimulai

dengan state waiting sms. Aplikasi akan menunggu sms dari customer. Jika ada sms yang dikirimkan oleh customer maka akan dilanjutkan aktivitas berikutnya yaitu parsing sms.


(49)

Jika tidak ada, maka aplikasi akan melakukan aktivitas waiting for sms lagi. Pada aktivitas parsing sms, sms yang dikirim oleh customer akan dipisah-pisah menggunakan tanda titik koma. Hasil parsing berupa teks yang disimpan pada field-field sesuai dengan format sms. Khusus untuk

field Menu, dilakukan proses parsing lagi untuk memisahkan antara kode

menu dan jumlah pesanan. Parsing akan menghasilkan kumpulan field-field, field ini kemudian akan dicek apakah sesuai dengan format yang

ditentukan. Jika format benar, aktivitas selanjutnya adalah mengecek isi dari content. Tetapi jika format salah maka aplikasi akan mengirimkan

warning text melalui SMS Gateway. Berikut rancangan format sms untuk

semua kondisi yang terjadi saat customer mengirimkan sms ke aplikasi : Tabel 3.1 Format SMS

Condition Send Text Receive Text Warning Text

Informasi cara pemesanan info Ketik pesan;nama;alamat;kodemenu-jumlah;kodemenu2-jumlah2 untuk pemesanan atau ketik status;kodepesanan untuk melihat status pesanan Anda

Maaf format sms anda salah, ketik info untuk mendapatkan informasi cara pemesanan Pesan pesan;nama; alamat;kode menu-jumlah;menu pesanan2-jumlah2

Terima kasih, kode pesanan anda: ', IDPesanan, '. Ketik status;kode pesanan anda untuk melihat status pesanan anda

Maaf, menu dengan kode (kodeMenu) telah habis. Silahkan ulangi pesanan anda

Informasi

menu menu

01 Makanan 02 Minuman

Maaf format sms anda salah, ketik info untuk mendapatkan informasi cara pemesanan Status pemesanan status;IDPes anan

Pesanan anda sedang dalam proses : (kondisi status pemesanan)

Pesanan dengan no (IDPesanan), tidak terdapat dalam database kami


(50)

Saat mengecek isi content sms, akan ada 3 kondisi percabangan yang dijadikan parameter untuk proses pengecekan ini. Pertama, jika isi content sms adalah teks “info”, maka aplikasi akan mengirimkan sms yang berisi informasi cara pemesanan melalui SMS Gateway ke customer. Jika bukan, isi content kembali dicek, apakah itu adalah teks “pesan”? Jika iya, maka isi content tersebut akan disimpan ke dalam database. Jika bukan akan dicek lagi apakah teks “status”? Jika iya, maka aplikasi akan mengecek ke dalam database untuk mendapatkan informasi status pemesanan customer. Setelah status pemesanan didapatkan, aplikasi akan mengirimkan status pemesanan melalui sms gateway ke customer.

Tetapi jika isi content bukan “status”, maka aplikasi akan mengirimkan kembali konfirmasi bahwa customer belum melakukan pemesanan apapun.

B.1 Activity Diagram Routing Shortest Path


(51)

Dalam activity diagram routing shortest path terdapat 2 swimlane, yaitu Shortest path application dan database. Aktivitas pertama yang dilakukan adalah mengecek ke dalam database untuk mendapatkan data alamat customer yang sudah melakukan pemesanan. Dari database diperoleh data alamat yang kemudian akan dicek kembali apakah data alamat customer pada database adalah data baru atau bukan, jika merupakan data customer baru maka aplikasi akan melakukan aktivitas

route shortest path yang merupakan simulasi dari hasil optimasi

perhitungan jarak terdekat dengan menggunakan algoritma ant colony. B.1 Activity Diagram Routing Update Status

Gambar 3.6 Activity Diagram Update Status

Dalam activity diagram update status terdapat 2 swimlane, yaitu

Shortest path application dan database. Aktivitas pertama yang dilakukan

adalah memilih record mana yang akan di-update statusnya. Aplikasi akan memilih record tersebut, kemudian mengecek ke dalam database untuk mendapatkan data ID Pesanan dari record yang dipilih.


(52)

3.2.4 Perancangan Database

Salah satu poin penting dalam pembuatan Aplikasi Penentuan Jarak Terdekat ini adalah perancangan database untuk menyimpan data-data dalam bentuk tabel-tabel yang terintegrasi dalam satu database. Proses perancangan database ini dilakukan dengan membuat Class Diagram. Berikut Class Diagram untuk database aplikasi penentuan jarak terdekat :

Agent

moveOneStep()

(from servlet)

<<Interface>>

RandomChooser objectList : List

weightingList : List rnd : Random

addObject()

randomChooseOneWithWeighting() randomChooseOneWithoutWeighting() clear()

Ant pheromoneStrength : Double rndChooser : RandomChooser InertialStrength : Double

moveOneStep() releasePheromoneAtLocation() targetDirection() randomChooseOne() randomChooseOneWithWeighting() Pheromone DecayRate : Double State

releasePheromone : Pheromone seekPheromone : Pheromone

Gambar 3.7 Class Diagram

Berikut struktur tabel untuk perancangan database aplikasi penentuan jarak terdekat :

1. Nama Tabel : OzekiMessageIn Primary Key : ID

Foreign Key : -


(53)

Tabel 3.2 Struktur OzekiMessageIn

NO Field Type Length Key

1 ID Int 11 PK

2 Sender Varchar 30

3 Receiver Varchar 30

4 Msg Varchar 160

5 SentTime Varchar 100

6 ReceivedTime Varchar 100

7 Operator Varchar 100

8 MsgType Varchar 160

9 Reference Varchar 100

2. Nama Tabel : OzekiMessageOut Primary Key : ID

Foreign Key : -

Fungsi Tabel : Menyimpan sms yang dikirim oleh aplikasi ke customer. Tabel 3.3 Struktur OzekiMessageOut

NO Field Type Length Key

1 ID Int 11 PK

2 Sender Varchar 30

3 Receiver Varchar 30

4 Msg Varchar 160

5 SentTime Varchar 100

6 ReceivedTime Varchar 100

7 Reference Varchar 100

8 Status Varchar 20

9 MsgType Varchar 160


(54)

3. Nama Tabel : Customer Primary Key : custID Foreign Key : -

Fungsi Tabel : Menyimpan data customer yang mengirimkan sms ke aplikasi.

Tabel 3.4 Struktur Customer

NO Field Type Length Key

1 CustID Int 11 PK

2 CustNM Varchar 30

3 CustPhone Varchar 30

4 CustAddress Varchar 160

4. Nama Tabel : Menu Primary Key : menuID Foreign Key : -

Fungsi Tabel : Menyimpan data menu yang tersedia di restoran. Tabel 3.5 Struktur Menu

NO Field Type Length Key

1 MenuID Int 11 PK

2 MenuCode Varchar 2

3 MenuNM Varchar 45

4 Quantity Varchar 11

5. Nama Tabel : StatusInfo Primary Key : idstatusinfo Foreign Key : -


(55)

Fungsi Tabel : Menyimpan informasi status pemesanan customer. Tabel 3.6 Struktur Status Info

NO Field Type Length Key

1 IDStatusInfo Int 11 PK

2 StatCode Int 11

3 StatNote Varchar 45

6. Nama Tabel : Pesan Primary Key : pesanID Foreign Key : custID

Fungsi Tabel : Menyimpan informasi semua pemesanan yang dilakukan oleh customer.

Tabel 3.7 Struktur Pesan

NO Field Type Length Key

1 PesanID Int 11 PK

2 CustID Int 11 FK

3 StatusPesan Int 11

4 WaktuPesan Varchar 45

7. Nama Tabel : PesanDetail Primary Key : pesandetailID Foreign Key : pesanID,menuID

Fungsi Tabel : Menyimpan detail pemesanan menu yang dilakukan oleh

customer.


(56)

NO Field Type Length Key

1 PesanDetailID Int 11 PK

2 PesanID Int 11 FK

3 MenuID Int 11 FK

4 Quantity Varchar 45

8. Nama Tabel : Warning Primary Key : warningID Foreign Key : -

Fungsi Tabel : Menyimpan pesan-pesan peringatan yang akan dikirimkan ke customer.

Tabel 3.9 Struktur Warning

NO Field Type Length Key

1 WarningID Int 11 PK

2 WarningCode Varchar 20

3 WarningMessage Varchar 160

9. Nama Tabel : Branch Primary Key : branchID Foreign Key : -

Fungsi Tabel : Menyimpan data lokasi cabang restoran. Tabel 3.10 Struktur Branch

NO Field Type Length Key

1 ID Int 11 PK

2 BranchName Varchar 45

3 BranchAddress Varchar 100


(57)

Primary Key : ID Foreign Key : -

Fungsi Tabel : Menyimpan data parsing sms pesan pertama dari

customer yang bersifat sementara.

Tabel 3.11 Struktur TempSplittedMessage

NO Field Type Length Key

1 ID Int 11 PK

2 StringVal Varchar 1000

11. Nama Tabel : TempTableOrder Primary Key : ID

Foreign Key : -

Fungsi Tabel : Menyimpan data hasil parsing menu (untuk melihat jumlah pesanan masing-masing menu) yang bersifat sementara.

Tabel 3.12 Struktur TempTableOrder

NO Field Type Length Key

1 ID Int 11 PK

2 stringVal Varchar 1000

12. Nama Tabel : TblErrorInfo Primary Key : errID

Foreign Key : -


(58)

Tabel 3.12 Struktur TblErrorInfo

NO Field Type Length Key

1 errID Int 11 PK

2 errMessage Varchar 160

3.2.5 Perancangan Antarmuka

Perancangan antarmuka merupakan perancangan halaman aplikasi yang nantinya akan berinteraksi secara langsung dengan pengguna. Adapun gambar rancangan antarmuka aplikasi yang akan dibuat adalah sebagai berikut:

Map

Surabaya Map

Help

Import Map File Exit

About

Branches

Cabang 1 Cabang 2

Save Branch Load Branch

Customer

Get New Orders Process Order

Update Status delivered

Update Status


(59)

Rancangan aplikasi akan dibuat satu window yang mencakup semua fungsi yang tersedia dalam menu-menu maupun tombol yang ada di dalamnya. Penjelasan masing-masing menu dan tombol adalah sebagai berikut :

1. Menu

Ada 2 menu yang tersedia, yaitu Map dan Help. Map berisi sub menu

Import Map File dan Exit. Import Map File adalah sub menu yang

menyediakan fasilitas untuk meng-import file-file map atau peta yang akan digunakan dalam aplikasi. Map default yang digunakan adalah peta Surabaya. Semua map yang akan digunakan berekstensi .osm, .xml, .osc atau .diff.xml. Sub menu Exit digunakan jika user ingin keluar dari aplikasi. Menu Help berisi sub Menu About yang berisi informasi pembuat aplikasi dan email yang dapat dihubungi jika user menemukan kesulitan dalam menggunakan aplikasi penentuan jarak terdekat ini.

2. Window Map

Window Map akan berisi file peta yaitu peta Surabaya. Peta akan

dilengkapi dengan fasilitas Zoom In (memperkecil skala peta) dan Zoom

Out (memperbesar skala peta). Untuk menambahkan lokasi cabang baru,

user dapat meng-klik kiri pada lokasi yang diinginkan di peta, kemudian

klik kanan untuk memunculkan sub menu yang ingin dipilih. Ada 1 sub menu yang tersedia jika user klik kanan pada window map, yaitu sebagai berikut :


(60)

3. Group

Ada 2 group yang tersedia dalam rancangan aplikasi, yaitu:

a. Group Customer

Group Customer akan berisi data pembeli yang melakukan

pemesanan yaitu meliput data nama, alamat, dan detail pesanan. Data-data ini ditampilkan agar user dapat mengingat kembali Data-data pembeli dan detail pesanan saat routing sedang dilakukan.

Dalam Group Customer ada 2 tombol yang disediakan, yaitu tombol Process Order dan Get New Orders. Process Order digunakan untuk melakukan proses routing, dan tombol Get New Orders digunakan untuk melihat data baru.

Update Order Status akan digunakan untuk meng-update status pemesanan customer berdasarkan data order ID customer. Ada 1

combo box, yang akan memuat status delivered dan not delivered.

Untuk mengupdate status tekan tombol Update Status.

b. Group Branches

Group branches akan berisi data lokasi cabang-cabang restoran.

Ada 3 tombol dalam group ini yaitu Load Branch dan Save Branch. Tombol Load Branch digunakan untuk mengambil data lokasi cabang restoran yang disimpan di dalam database.

Sedangkan tombol Save Branch digunakan untuk menyimpan data

branch atau lokasi restoran baru yang sebelumnya ditambahkan oleh

user. Sedangkan tombol “X” digunakan untuk menghapus data lokasi


(61)

49

BAB IV

IMPLEMENTASI SISTEM

4.1 Lingkungan Implementasi

Pada bagian ini akan dijelaskan mengenai perangkat keras dan perangkat lunak yang digunakan pada implementasi sistem ini. Perangkat keras yang digunakan adalah sebagai berikut :

1. Komputer atau laptop, untuk pengujian aplikasi ini spesifikasi yang

digunakan adalah Intel Core 2 Duo @1.50 GHz, memori 1 GB dan harddisk 120 GB.

2. Handphone, menggunakan menggunakan provider telekomunikasi

IndosatMentari untuk uji coba sebagai customer, dengan spesifikasi dasar

memiliki fitur SMS.

3. Modem GSM, untuk pengujian aplikasi ini digunakan modem handphone

merk ZTE dengan operator IndosatIM3.

Sedangkan perangkat lunak yang digunakan dalam perancangan aplikasi ini adalah sebagai berikut :

1. Java DevelopmentKit (JDK) versi 6 Update 20

2. Java RuntimeEnvironment (JRE) versi 6 Update 16

3. NetBeans IDE 6.8 4. MySQL Server versi 5.1

5. MySQL Workbench versi 5.2

6. MySQL Connector ODBC 5.1.6


(62)

4.2 Instalasi JDK dan JRE

Paket JDK dan JRE untuk Windows disediakan dalam bentuk installer

MSI (Microsoft Installer) atau dalam format zip file. Installer JDK v6.20 dan JRE

v6.16 bisa didownload di http://java.sun.com/ secara gratis. Jalankan langsung file

installer dan ikuti proses instalasi JDK dan JRE. Setelah proses instalasi selesai,

JDK dan JRE secara otomatis terintegrasi langsung ke dalam Windows.

4.3 Instalasi Netbeans

Sebelum menginstal Netbeans pastikan JDK dan JRE sudah terinstal terlebih dahulu. File installer NetBeans IDE 6.8 dapat kita download di situs

http://netbeans.org/downloads/index.html secara gratis. Setelah didownload,

jalankan langsung file tersebut dan ikuti proses instalasinya.

4.4 Instalasi MySQL

Ada 3 installer yang dijalankan untuk MySQL, yaitu program MySQL

sendiri, MySQL Workbench sebagai GUI untuk mempermudah melakukan

query-query dan connector ODBC untuk mengkoneksikan MySQL ke NetBeans. Ketiga

file installer ini bisa didapatkan dari http://dev.mysql.com/downloads/ secara

gratis.

Instal MySQL terlebih dahulu. Paramater yang harus diseting saat melakukan instalasi yaitu server type : developer machine, multifunctional,

OLAP, enable TCP IP, no firewall, user : root, password: (blank). Setelah server

sudah terinstal, lanjutkan untuk menginstal workbench dan connector ODBC.

Setelah selesai menginstal MySQL di atas, masuk ke MySQL Workbench, coba lakukan tes koneksi ke server dengan cara berikut :


(63)

1. Buka MySQL Workbench, klik pada tab NewConnection. Beri nama koneksi

yang diinginkan.

2. Pada tab Parameter, username isikan root, store in vault password dikosongi,

kemudian klik TestConnection. Jika berhasil muncul window berikut :

Gambar 4.1 Test Connection

3. Kemudian klik OK. Nama koneksi kita akan tampil di listOpenConnection to

StartQuerying. Double klik pada nama koneksi untuk memulai query sql.

4.5 Instalasi SMS Gateway

Perangkat lunak yang digunakan untuk SMS gateway adalah Ozeki

Message Server 6. Perangkat lunak ini merupakan perangkat lunak shareware.

Install Ozeki Message Server dan jalankan Ozeki Server Manager jika instalasi berhasil. Koneksi GSM Modem dengan Ozeki Message Server pada aplikasi ini terjalin dengan bluetooth. Nyalakan bluetooth GSM Modem, dan bluetooth pada

komputer atau laptop. Koneksikan keduanya.

Kemudian masuk ke Ozeki Server Manager. Pada menu Drivers pilih

Installed Drivers. Klik Install Drivers, pilih GSM Modem dan klik Install. Setelah

itu pilih kembali menu Drivers, akan ada GSM Modem 1, kemudian klik


(64)

Gambar 4.2 Konfigurasi GSM Modem

COM Port bisa dilihat dari Bluetooth Setting pada komputer atau laptop.

Setelah memilih Driver COM Port yang digunakan, klik AutoDetect. Maka model

dan tipe GSM Modem terdeteksi otomatis. Begitu juga dengan Phone Settings

akan terdeteksi secara otomatis.

Selanjutnya pilih menu PluginsInstalled Plugins. Klik pada Install

Plugins. Jika sudah terinstall pilih Configure. Klik pada tab Connection

Information, pilih Build database connection. Pilih Use Connection String dan


(65)

Pilih Microsoft OLE DB Provider for ODBC Drivers, kemudian klik Next.

Konfigurasi selanjutnya yang dibutuhkan adalah sebagai berikut :

Gambar 4.3 Konfigurasi Data Link Properties

Klik Test Connection untuk mencoba koneksi. Jika berhasil tekan OK dan

script build telah ada pada window Connection String sebelumnya. Klik OK dan

kembali ke Ozeki Server Manager.

Untuk mengkoneksikan, pilih menu Drivers kemudian GSM Modem 1 –

Connect. Kemudian pilih PluginsDatabasePlugins 1 – Connect. Untuk melihat

koneksi berjalan atau tidak ada pada window status di kiri bawah. Koneksi yang


(66)

Gambar 4.4 Test Connection

Dengan demikian, sms gateway sudah dalam keadaan stand by dan

terkoneksi ke database serta siap menerima dan mengirimkan sms ke customer.

4.6 Trigger

Pada aplikasi ini juga dibuat trigger. Berikut query trigger yang dibuat

pada database Semut :

1. Trigger untuk update stok menu.

-- clear table temp order dulu -- DELETE FROM tempTableOrder; SET rowcount = 0;

OPEN curSplitMsg; splitloop: LOOP

FETCH curSplitMsg INTO tempID, tempString; IF done THEN LEAVE splitloop;

END IF;

SET rowcount = rowcount + 1; IF rowcount = 1 THEN SET NamaPemesan = ''; ELSEIF rowcount = 2 THEN SET NamaPemesan = tempString; ELSEIF rowcount = 3 THEN SET AlamatPemesan = tempString; ELSE

-- masukin pesanan yg masih berupa kode-jumlah ke temp tabel INSERT INTO tempTableOrder VALUES (NULL, tempString); END IF;

END LOOP; CLOSE curSplitMsg;

CALL show_error(CONCAT('rowcount: ', rowcount)); IF rowcount < 4 THEN

CALL send_warning(NEW.receiver, NEW.sender, 'format'); ELSE


(67)

SET IDCustomer = -1;

-- cek pesanan dan jumlahnya, klo available, masukkan ke detail pesanan, -- klo gak ada delete record di tabel pesan sesuai pesanID

SET kodeMenu = SUBSTRING_INDEX(tempString, '-', 1); SET OrderQuantity = SUBSTRING_INDEX(tempString, '-', -1); SET IDMenu = -1;

SET MenuAvailableQuantity = -1; -- menu available, masukkan detail

SELECT menuID, quantity INTO IDMenu, MenuAvailableQuantity FROM menu WHERE menuCode = kodeMenu;

IF (IDMenu > 0) AND (OrderQuantity <= MenuAvailableQuantity) AND (IDPesanan > 0) THEN

INSERT INTO pesandetail VALUES (NULL, IDPesanan, IDMenu, OrderQuantity); CALL update_menu(kodeMenu, OrderQuantity);

ELSEIF (IDMenu < 0) THEN

CALL send_warning(NEW.receiver, NEW.sender, CONCAT('ID menu ', IDMenu)); ELSEIF (OrderQuantity > MenuAvailableQuantity) THEN

CALL send_warning(NEW.receiver, NEW.sender, CONCAT('Maaf, menu dengan kode ', kodeMenu, ' telah habis. Silahkan ulangi pesanan anda'));

DELETE FROM pesan WHERE pesanID = IDPesanan; SET IDPesanan = -1;

SET done = true;

ELSEIF (IDPesanan < 0) THEN

CALL send_warning(NEW.receiver, NEW.sender, CONCAT('ID pesanan ', IDPesanan));

END IF; END LOOP; CLOSE curPesanan; IF IDPesanan > 0 THEN

CALL send_warning(NEW.receiver, NEW.sender, CONCAT('Terima kasih, kode pesanan anda: ', IDPesanan, '. Ketik status;kode pesanan anda untuk melihat status pesanan anda'));

END IF; END IF; ELSE

CALL send_warning(NEW.receiver, NEW.sender, 'format'); END IF;

-- clear temp table --

DELETE FROM tempSplittedMessage; DELETE FROM tempTableOrder; END

2. Trigger untuk menyaring nomor telepon customer yang sama.

-- apakah pemesan udah ada di dalam tabel customer?

SELECT custID INTO IDCustomer FROM customer WHERE custPhone = NEW.sender;

CALL show_error(CONCAT('custID : ', IDCustomer)); IF IDCustomer < 0 THEN

-- klo belum ada, masukkan ke tabel customer dulu

INSERT INTO customer VALUES (NULL, NamaPemesan, NEW.sender, AlamatPemesan);

-- data pemesan sekarang sudah ada di dalam tabel customer

SELECT custID INTO IDCustomer FROM customer WHERE custPhone = NEW.sender;


(68)

-- ambil idstatusinfo SET IDStatusInfo = -1;

SELECT statCode INTO IDStatusInfo FROM statusinfo WHERE statNote = 'order'; -- masukkan pesanan ke dalam tabel pesan

INSERT INTO pesan VALUES (NULL, IDCustomer, IDStatusInfo, NEW.receivedtime);

-- get ID pesanan SET IDPesanan = -1;

SELECT pesanID INTO IDPesanan FROM pesan WHERE statuspesan = IDStatusInfo AND custID = IDCustomer;

IF IDPesanan > 0 THEN SET done = false;

CALL show_error(CONCAT('pesanid : ', IDPesanan, ', time : ', now())); ELSE

SET done = true;

CALL show_error(CONCAT('pesanid tidak ada, time : ', now())); END IF;

-- sekarang masukkan detail pesanan ke tabel pesanan detail OPEN curPesanan;

orderloop: LOOP

FETCH curPesanan INTO tempString; IF done THEN LEAVE orderloop; END IF;

3. Trigger untuk menampilkan status pesanan.

IF rowcount <> 2 THEN

CALL send_warning(NEW.receiver, NEW.sender, 'format'); ELSE

SELECT (SELECT si.statNote FROM statusinfo si where si.statCode = p.statuspesan) INTO StatusOrder FROM pesan p WHERE p.pesanID = IDPesanan;

IF StatusOrder = '' THEN

INSERT INTO ozekimessageout (sender,receiver,msg,status)

values (NEW.receiver, NEW.sender,CONCAT('Pesanan dengan no: ', IDPesanan, ' tidak terdapat dalam database kami'),'send');

ELSE

INSERT INTO ozekimessageout (sender,receiver,msg,status)

values (NEW.receiver, NEW.sender,CONCAT('Pesanan anda sedang dalam proses : ', StatusOrder),'send');

END IF; END IF;

ELSEIF (LOWER(NEW.msg) LIKE LOWER('PESAN%')) THEN CALL split_message(NEW.msg, ';');

Trigger di atas dijalankan di saat ada sms masuk ke aplikasi. Trigger


(69)

Tabel 4.1 Format SMS

Condition Send Text Receive Text Warning Text

Informasi cara pemesanan info Ketik pesan;nama;alamat;kodemenu -jumlah;kodemenu2-jumlah2 untuk pemesanan atau ketik status;kodepesanan untuk melihat status pesanan Anda

Maaf format sms anda salah, ketik info untuk mendapatkan informasi cara pemesanan

Pesan

pesan;nama;alamat; kode pesanan-jumlah;kode menu2-jumlah2

Terima kasih, kode pesanan anda: ', IDPesanan, '. Ketik status;kode pesanan anda untuk melihat status pesanan anda

Maaf, menu dengan kode (kodeMenu) telah habis. Silahkan ulangi pesanan anda

Informasi

menu menu

01 Makanan 02 Minuman

Maaf format sms anda salah, ketik info untuk

mendapatkan informasi cara pemesanan

Status

pemesanan status;IDPesanan

Pesanan anda sedang dalam proses : (kondisi status pemesanan)

Pesanan dengan no (IDPesanan), tidak terdapat dalam database kami

Selain trigger, juga dibuat procedure untuk melengkapi kondisi dalam

trigger yang belum terpenuhi. Procedure yang dibuat diantaranya sebagai berikut:

1. ProcedureSendWarning

USE `semut`;

DROP PROCEDURE IF EXISTS send_warning;

CREATE PROCEDURE send_warning(vSender varchar(20), vReceiver varchar(20), vInfo varchar(160))

BEGIN

IF LOWER(vInfo) = LOWER('MENU') THEN

INSERT INTO ozekimessageout (sender,receiver,msg,status) values (vSender,vReceiver,(SELECT getMenu()),'send');

ELSEIF LOWER(vInfo) = LOWER('INFO') OR LOWER(vInfo) = LOWER('FORMAT') THEN

INSERT INTO ozekimessageout (sender,receiver,msg,status)

values (vSender,vReceiver,(SELECT warningMessage from warning WHERE

warningCode = vInfo),'send'); ELSE

INSERT INTO ozekimessageout (sender,receiver,msg,status) values (vSender,vReceiver,vInfo,'send');

END IF;


(70)

2. Procedure ShowError

USE `semut`;

DROP PROCEDURE IF EXISTS show_error;

CREATE PROCEDURE show_error(vInfo varchar(160)) BEGIN

INSERT INTO tblerrorinfo values (null, vInfo); END;

3. Procedure UpdateMenu

USE `semut`;

DROP PROCEDURE IF EXISTS update_menu $$

CREATE PROCEDURE update_menu (kodeMenu VARCHAR(5), orderedQuantity INT) BEGIN

DECLARE quant INT DEFAULT -1; DECLARE hasil INT DEFAULT -1;

SELECT menuID, quantity INTO hasil, quant FROM menu WHERE menuCode = kodeMenu;

UPDATE menu SET quantity = (quant - orderedQuantity) WHERE menuCode = kodeMenu;

END;

Jangan lupa untuk mengkonfigurasikan koneksi ODBC setelah membuat

database. Masuk ke ControlPanelAdministrativeToolDataSources (ODBC)

utnuk mengkonfigurasikan koneksi ODBC. Pada tab User DSN klik tombol Add,

pilih driver MySQL ODBC 5.1 klik Finish. Isikan paramater berikut:


(71)

4.7 Implementasi Algoritma Semut

Pada simulasi algoritma semut pada aplikasi ini, dilakukan optimasi terhadap teori dan perhitungan dasar algoritma semut. Optimasi yang dilakukan berdasarkan perhitungan dan iterasi yang ada pada landasan teori adalah sebagai berikut :

1. Variabel yang tidak digunakan adalah α (tetapan pengendali intensitas jejak semut) dan ß (tetapan pengendali visibilitas). Kedua variabel ini tidak digunakan karena berdasarkan riset yang telah dilakukan sebelumnya untuk studi kasus penentuan jarak terdekat, nilai α dan ß bisa dihilangkan.

2. Rumus-rumus yang digunakan adalah sebagai berikut :

ij=1/dij

Tij = Tij * (1-ρ)

Pij = ∑( Tij + ij ) > REF

Ref = rand * ∑ ij

∆ Tij = Tij – (Q-ρ)

Sedangkan penerapannya dalam aplikasi terdapat pada potongan source

code berikut ini :

public void moveOneStep(Space space) { gatherAroundInfo(space);

if (seeTargetAround()) { moveTo(targetDirection()); switchStateAtTarget(); } else {

moveTo(nextStepDirection()); if(releasePheromone()){

releasePheromoneAtLocation(); if(loseMyWay())

switchStateAtLost(); }

} }


(1)

72

Gambar 5.11 Tampilan Aplikasi Saat Load Customer

Untuk memulai proses routing, pilih row data pelanggan yang diinginkan, kemudian tekan tombol Process Order. Hasil routing ditampilkan dalam peta berupa garis, seperti gambar berikut :


(2)

perbandingan dengan menggunakan pengukuran jarak secara manual, seperti yang ditampilkan pada tabel berikut :

Tabel 5.1 Uji Coba Perbandingan Rute

N

o Cabang Tujuan Rute Acak

Jarak Tempuh Acak (m) Rute Semut Jarak Tempuh Semut (m) 1 Pasar Wonokro mo Nginden Semolo Pasar Wonokromo - Margorejo -

Prapen - Nginden Semolo 9697 Pasar Wonokromo - Jagir Wonokromo - Raya Nginden - Nginden Semolo 4568 2 Pasar Wonokro mo Indragiri Pasar Wonokromo - Diponegoro - Dr Sutomo -

Indragiri 4316 Pasar Wonokromo - Diponegoro - Indragiri 3955 3 Pasar Wonokro mo Prapen Pasar Wonokromo - Jagir Wonokromo - Prapen 4910 Pasar Wonokromo - Ahmad Yani -

Prapen

4444

5.2.3 Uji Coba Update Status

Setelah proses routing selesai ditampilkan, uji coba berikutnya yaitu update status pengiriman. Klik pada baris yang ada pada Customer, pilih pada baris pesanan mana yang ingin di-update statusnya. Kemudian klik combo box Update Status, pilih Delivered jika pesanan sudah diantarkan atau not delivered jika pesanan belum diantarkan. Klik button Update Status. Status telah berubah dan ditunjukkan pada kolom Status pada baris yang dimaksud di group Customer.


(3)

74


(4)

6.1 Kesimpulan

Dari pelaksanaan uji coba didapatkan kesimpulan sebagai berikut :

1. Customer dapat melakukan pemesanan langsung dari ponsel masing-masing dimana sms yang dikirim tersebut dapat diterima oleh sms gateway.

2. Berdasarkan sms yang dikirim oleh customer, posisi customer dapat ditunjukkan langsung pada peta.

3. Arah dari posisi customer ke restoran dapat ditampilkan dimana petunjuk arah tersebut merupakan jarak terdekat, dengan efisiensi jarak yang dihasilkan 5% dibanding dengan jarak alternatif sehingga otomatis waktu tempuhnya menjadi lebih cepat.

6.2 Saran

Berikut beberapa saran yang dapat diberikan berdasarkan hasil perancangan, implementasi, dan uji coba yang telah dilakukan sebelumnya, yaitu :

1. Aplikasi yang dibuat tidak hanya berbasis desktop tetapi bisa dikembangkan berbasis web dengan bahasa pemrograman JavaScript atau bahasa pemrograman lainnya.

2. Studi kasus yang diambil bukan hanya simulasi tetapi bisa mengambil studi kasus yang sebenarnya.


(5)

76

3. Aplikasi ini dapat dikembangkan atau diintegrasikan dengan aplikasi lain sehingga bisa menjadi Sistem Inventory yang kompleks

4. Untuk pengembangan lebih lanjut, pemetaan pada aplikasi ini dapat dikembangkan lagi menjadi suatu Sistem Informasi Geografis yang lebih kompleks dimana peta yang digunakan ruang lingkupnya lebih luas dan lebih detail.

5. Peta yang digunakan tidak hanya peta Surabaya tetapi bisa peta daerah lain atau peta keseluruhan Jawa Timur yang resolusinya lebih bagus. 6. Asumsi kendaraan yang digunakan tidak hanya dengan kendaraan roda

dua atau sepeda motor, tetapi dengan kendaraan roda empat sehingga tingkat kemacetan jadi sangat diperhitungkan.

7. Bobot antar titik yang ditentukan tidak hanya bobot jarak, tapi bisa ditambahkan dengan variabel-variabel yang lain seperti seperti tingkat kemacetan, arah jalan, atau kondisi jalan dan lain sebagainya sehingga lebih mendekati kasus realnya.

8. Alamat customer yang dapat dijangkau tidak terbatas pada nama jalan

utama atau protokol tetapi bisa menjangkau gang, blok, ataupun perumahan.

9. Routing yang dilakukan dapat mengarah tepat pada lokasi jalan yang


(6)

77

[1] Tekno Jurnal. “Pemahaman Sederhana si SMS Gateway”, diakses online 10-08-2010 dari http://www.teknojurnal.com/2010/08/09/pemahaman-sederhana-si-sms-gateway/

[2] Basuki, Abdullah. “Graf”, diakses online 12-06-2010 dari http://abdullahbasuki.files.wordpress.com/2010/05/graf.ppt

[3] I’ing Mutakhiroh, Indrato, Taufiq Hidayat. “Pencarian Jalur Terpendek Menggunakan Algoritma Semut”, diakses online 13-06-2010 dari http://journal.uii.ac.id/

[4] Asep HS. “MODUL PEMROGRAMAN JAVA/MODUL FINAL”, diakses online 12-06-2010 dari www.asep-hs.web.ugm.ac.id/

[5] Tessy Badriyah, SKom. MT. “UML Class Diagram”, diakses online 27-09-2010 dari http://lecturer.eepis-its.edu/~tessy/tutorial/java/5UMLClassDiagram.pdf

[6] Ozeki. “Ozeki Message Server”, diakses online 18-06-2010 dari http://www.ozeki.hu/

[7] OpenStreetMap. “Open Street Map”, diakses online 29-06-2010 dari http://www.openstreetmap.org/