Aplikasi Penentuan Jarak Terdekat Untuk Delivery Service Restoran Cepat Saji Menggunakan Metode Ant Colony Studi Kasus Restoran X.
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. 0634015090JURUSAN 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. 0634015090JURUSAN 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. 0634015090Telah 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 setiapsiklus 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 Plugins – Installed 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 Plugins – DatabasePlugins 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 ControlPanel – AdministrativeTool – DataSources (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/