Implementasi Mobile Tracking Menggunakan Metode Ant Colony Optimization Dan Google Maps Api

(1)

DAN GOOGLE MAPS API

SKRIPSI

DONNY SANJAYA

111421056

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2014


(2)

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

DONNY SANJAYA 111421056

PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA MEDAN


(3)

PERSETUJUAN

Judul : IMPLEMENTASI MOBILE TRACKING MENGGUNAKAN METODE ANT COLONY OPTIMIZATION DAN GOOGLE MAPS API

Kategori : SKRIPSI

Nama : DONNY SANJAYA

Nomor Induk Mahasiswa : 111421056

Program Studi : EKSTENSI S1 ILMU KOMPUTER Departemen : ILMU KOMPUTER

Fakultas : FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

Komisi Pembimbing:

Dosen Pembimbing II Dosen Pembimbing I

Drs. Dahlan Sitompul, M.Eng Ade Candra S.T, M.Kom NIP. 19670725 200501 1 002 NIP. 19790904 200912 1 002

Diketahui/Disetujui oleh

Program Studi S1 Ilmu Komputer Ketua,

Dr. Poltak Sihombing, M.Kom

NIP. 19620217 199103 1 001


(4)

PERNYATAAN

IMPLEMENTASI MOBILE TRACKING MENGGUNAKAN METODE ANT COLONY OPTIMIZATION DAN GOOGLE MAPS API

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Januari 2014

Donny Sanjaya 111421056


(5)

PENGHARGAAN

Alhamdulillah saya ucapkan kepada Allah SWT yang telah melimpahkan rahmat dan karunia-NYA serta salawat dan salam kepada junjungan atas Nabi Muhammad SAW karena skripsi ini telah berhasil diselesaikan dalam waktu yang telah ditentukan.

Dalam penulisan skripsi ini penulis banyak mendapatkan bantuan serta dorongan dari pihak lain. Sehingga dengan segala kerendahan hati penulis mengucapkan terimakasih kepada:

1. Bapak Prof Dr Syahril Pasaribu, DTMH, MSc (CTM), SpA(K) selaku Rektor Universitas Sumatera Utara.

2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi.

3. Bapak Drs. Poltak Sihombing, M.Kom selaku Ketua Program Studi Ilmu Komputer Universitas Sumatera Utara dan sekaligus sebagai Dosen Pembanding I.

4. Ibu Dian Rachmawati S.Si, M.Kom selaku koordinator Ekstensi S1 Ilmu Komputer Universitas Sumatera Utara.

5. Dosen Pembimbing Bapak Ade Candra, ST, M.Kom dan Drs. Dahlan Sitompul, M.Eng yang bersedia meluangkan waktu, pikiran, saran, panduan serta memberikan pengetahuan dan motivasi dalam penyelesaian skripsi ini.

6. Dosen Pembanding II Bapak Drs. Marihat Situmorang, M.Kom.

7. Seluruh staf-staf Pengajar (Dosen) Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.

8. Ayahanda Sunardi dan ibunda Nadrah selaku orang tua kandung penulis yang telah memberikan semangat, dorongan, serta doanya dalam menyelesaikan skripsi ini.

9. Sahabat-sahabat penulis dan semua sahabat seangkatan yang sudah membantu dan memberi semangat kepada penulis selama ini.

Dalam penyusunan skripsi ini, penulis menyadari bahwa masih banyak kekurangan, untuk itu penulis mengharapkan saran dan kritik yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini. Akhir kata penulis mengharapkan semoga skripsi ini dapat bermanfaat dan membantu semua pihak yang memerlukannya.


(6)

ABSTRAK

Mobile tracking adalah suatu kemajuan teknologi dalam perangkat lunak ponsel yang memungkinkan bagi pengguna ponsel untuk melacak individu mendapatkan posisi melalui teknologi Global Positioning System (GPS) yang dimilikinya. Koordinat yang diterima oleh GPS ponsel akan disimpan kedalam database dan ditampilkan pada sebuah peta menggunakan Google Maps API, kemudian dicari route terpendeknya. Dalam pencarian route terpendek ini digunakan algoritma Ant Colony Optimization (ACO). Algoritma ACO merupakan teknik probabilistik untuk menyelesaikan masalah komputasi yang terinspirasi oleh perilaku semut dalam menemukan jalur dari koloninya menuju makanan. Dalam algoritma ACO terdapat sejumlah semut buatan, yang ditugaskan untuk mencari solusi terhadap suatu masalah optimisasi. Hasil uji coba pada tugas akhir ini juga menunjukkan adanya efisiensi waktu dengan menggunakan aplikasi karena terdapat perkiraan waktu yang disediakan oleh Google Map sehingga berguna bagi user. Algoritma ACO adalah salah satu algoritma alternatif yang dapat digunakan untuk penentuan jalur terpendek. Kecepatan menampilkan suatu rute sebuah map tergantung pada jumlah kota yang diinputkan, provider dan kestabilan koneksi internet.

Katakunci : Ant Colony Optimization, Global Positioning System, Google Maps API,


(7)

IMPLEMENTATION OF MOBILE TRACKING USING ANT COLONY OPTIMIZATION AND GOOGLE MAPS API

ABSTRACT

Mobile tracking is a technological advancement in mobile phone software that makes it possible for mobile users to track individuals gain positions througlh the technology of Global Positioning System (GPS). Coordinates received by the GPS phone will be stored into the database and displayed on a map using the Google Maps API, then look for the shortest path. In the search for the shortest path is used Ant Colony Optimization algorithm (ACO). ACO algorithm is a probabilistic technique for solving computational problems that are inspired by the behavior of ants in finding paths from the colony to the food. In ACO algorithms are a number of artificial ants, which is assigned to find a solution to an optimization problem. Results of trials in this final project also shows the time efficiency by using the application because there are an estimated time provided by Google Map so useful for the user. ACO algorithm is one of the alternative algorithm that can be used to determine the shortest path. Speed display a map of a route depends on the number of cities is entered, the provider and the stability of the internet connection.

Keywords : Ant Colony Optimization. Google Maps API, Global Positioning System, Mobile Tracking.


(8)

DAFTAR ISI

PERSETUJUAN ... iii

PERNYATAAN ... iv

PENGHARGAAN ... v

ABSTRAK ... vi

ABSTRACT ... vii

DAFTAR ISI ... viii

DAFTAR TABEL ... x

DAFTAR GAMBAR ... xi

BAB 1 PENDAHULUAN ... 1

1.1Latar Belakang ... 1

1.2Rumusan Masalah ... 2

1.3Batasan Masalah ... 2

1.4Tujuan Penelitian ... 3

1.5Manfaat Penelitian ... 3

1.6Metodologi Penelitian ... 3

1.7Sistematika Penulisan ... 4

BAB 2 TINJAUAN PUSTAKA ... 6

2.1Teori Graf ... 6

2.1.1 Defenisi Graf ... 6

2.1.2 Graf Berbobot ... 8

2.1.3 Representasi Graf Pada Komputer ... 8

2.2Algoritma Ant colonyOptimization ... 10

2.2.1 Ant Colony Optimization ... 10

2.2.1.1Aturan transisi status ... 13

2.2.1.2Aturan pembaruan feromone global ... 14

2.2.1.3Aturan pembaruan feromone lokal ... 15

2.3Google Maps API ... 15

2.3.1 Request URL Google Map ... 16

2.3.2 Geocoding ... 16

2.3.3 Waypoint ... 17

2.3.3.1Perhitungan jarak antara dua waypoints ... 17

2.4GPS ... 18

2.4.1 Sumber Kesalahan ... 19

2.4.2 Kesalahan pada GPS ... 20

2.4.3 Tracking ... 20

BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 21

3.1Analisis Sistem ... 21

3.1.1 Analisis Masalah ... 22

3.1.2 Analisis Kebutuhan Sistem ... 22


(9)

3.1.2.2 Analisis Kebutuhan Non-Fungsional ... 23

3.1.3 Pemodelan ... 24

3.1.3.1Use Case Diagram ... 24

3.1.3.2Activity Diagram ... 25

3.1.3.3Class Diagram ... 27

3.1.3.4Sequence Diagram ... 27

3.2Perancangan Sistem ... 28

3.2.1 Flowchart Sistem ... 28

3.2.2 Pseudocode Algorima ACO ... 30

3.2.3 Perancangan Database... 31

3.2.4 Perancangan Tampilan ... 32

3.2.4.1Halaman Login ... 32

3.2.4.2Halaman User ... 33

3.2.4.3Halaman Admin ... 34

3.2.4.4Halaman Data User ... 36

3.2.4.5Halaman About ... 37

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 38

4.1Implementasi Sistem ... 38

4.1.1 Implementasi Algoritma Ant Colony Optimization... 38

4.2Pengujian sistem ... 53

4.2.1 Pengujian Aplikasi User ... 54

4.2.2 Pengujian Aplikasi Admin ... 56

4.2.3 Pengujian Sistem Dengan 3 Buah Koordinat ... 60

BAB 5 KESIMPULAN DAN SARAN ... 62

5.1Kesimpulan ... 62

5.2Saran ... 62 DAFTAR PUSTAKA


(10)

DAFTAR TABEL

Tabel 3.1 Pseudocode Algoritma ACO... 30

Tabel 3.2 Table Admin ... 31

Tabel 3.3 Tabel Client ... 31

Tabel 3.4 Tabel Track ... 32

Tabel 4.1. Koordinat Ponsel Yang Terlacak Oleh Apliaksi Mobile Tracking ... 39

Tabel 4.2 Jarak Antar Kota ... 41

Tabel 4.3 Visibilitas Antar Kota ... 42

Tabel 4.4 Feromon Antar Titik ... 42

Tabel 4.5 Hasil Siklus I Algoritma Semut ... 48

Tabel 4.6 Feromon Antar Titik Pada Graf ... 48


(11)

DAFTAR GAMBAR

Gambar 2.1 Graf G ... 7

Gambar 2.2 Graf Berbobot ... 8

Gambar 2.3 Diagram dan Matriks Keterhubungan Graf G ... 9

Gambar 2.4 Mekanisme Pergerakan Koloni Semut ... 12

Gambar 2.5 Flowchart Request URL Google Maps ... 16

Gambar 2.6 Konstelasi Dua Puluh Empat GPS Satelit Dalam Enam Bidang Orbit. . 18

Gambar 3.1 Ilustrasi Jalur Terpendek dengan Jarak ... 21

Gambar 3.2 Diagram Ishikawa Untuk Analisis Permasalahan Sistem ... 22

Gambar 3.3 Use-Case Diagram Pada Sistem ... 24

Gambar 3.4 Activity Diagram Pada Sistem ... 26

Gambar 3.5 Class Diagram Pada Sistem ... 27

Gambar 3.6 Sequence Diagram Pada Sistem ... 28

Gambar 3.7 Flowchart Sistem ... 29

Gambar 3.8 Halaman Login ... 33

Gambar 3.9 Halaman User ... 34

Gambar 3.10 Halaman Admin ... 35

Gambar 3.11 Halaman Data User ... 36

Gambar 3.12 Halaman About ... 37

Gambar 4.1 Graf Dengan Empat Vertex ... 41

Gambar 4.2 Tampilan Posisi Koordinat Dalam Google Maps ... 52

Gambar 4.3 Tampilan Route Perjalanan ... 53

Gambar 4.4 Tampilan Eksport ... 53

Gambar 4.5 Tampilan Login ... 54

Gambar 4.6 Tampilan Pendaftaran ... 54

Gambar 4.7 Tampilan Pemberitahuan Aktifasi... 54

Gambar 4.8 Tampilan Halaman User ... 55

Gambar 4.9 Tampilan Halaman Perubahan Data User ... 56

Gambar 4.10 Tampilan Login Admin ... 56

Gambar 4.11 Tampilan Halaman Admin ... 57

Gambar 4.12 Tampilan Hasil Tracking Koordinat User ... 57

Gambar 4.13 Tampilan Hasil Perhitungan ... 58

Gambar 4.14 Tampilan Urutan Titik Sebelum Perhitungan ... 58

Gambar 4.15 Tampilan Urutan Titik Setelah Perhitungan ... 59

Gambar 4.16 Tampilan Hasil Perhitungan Dalam Matrix ... 59

Gambar 4.17 Pengujian 3 buah Koordinat ... 60

Gambar 4.18 Fitur Oneway Trip dan Directions ... 60


(12)

ABSTRAK

Mobile tracking adalah suatu kemajuan teknologi dalam perangkat lunak ponsel yang memungkinkan bagi pengguna ponsel untuk melacak individu mendapatkan posisi melalui teknologi Global Positioning System (GPS) yang dimilikinya. Koordinat yang diterima oleh GPS ponsel akan disimpan kedalam database dan ditampilkan pada sebuah peta menggunakan Google Maps API, kemudian dicari route terpendeknya. Dalam pencarian route terpendek ini digunakan algoritma Ant Colony Optimization (ACO). Algoritma ACO merupakan teknik probabilistik untuk menyelesaikan masalah komputasi yang terinspirasi oleh perilaku semut dalam menemukan jalur dari koloninya menuju makanan. Dalam algoritma ACO terdapat sejumlah semut buatan, yang ditugaskan untuk mencari solusi terhadap suatu masalah optimisasi. Hasil uji coba pada tugas akhir ini juga menunjukkan adanya efisiensi waktu dengan menggunakan aplikasi karena terdapat perkiraan waktu yang disediakan oleh Google Map sehingga berguna bagi user. Algoritma ACO adalah salah satu algoritma alternatif yang dapat digunakan untuk penentuan jalur terpendek. Kecepatan menampilkan suatu rute sebuah map tergantung pada jumlah kota yang diinputkan, provider dan kestabilan koneksi internet.

Katakunci : Ant Colony Optimization, Global Positioning System, Google Maps API,


(13)

IMPLEMENTATION OF MOBILE TRACKING USING ANT COLONY OPTIMIZATION AND GOOGLE MAPS API

ABSTRACT

Mobile tracking is a technological advancement in mobile phone software that makes it possible for mobile users to track individuals gain positions througlh the technology of Global Positioning System (GPS). Coordinates received by the GPS phone will be stored into the database and displayed on a map using the Google Maps API, then look for the shortest path. In the search for the shortest path is used Ant Colony Optimization algorithm (ACO). ACO algorithm is a probabilistic technique for solving computational problems that are inspired by the behavior of ants in finding paths from the colony to the food. In ACO algorithms are a number of artificial ants, which is assigned to find a solution to an optimization problem. Results of trials in this final project also shows the time efficiency by using the application because there are an estimated time provided by Google Map so useful for the user. ACO algorithm is one of the alternative algorithm that can be used to determine the shortest path. Speed display a map of a route depends on the number of cities is entered, the provider and the stability of the internet connection.

Keywords : Ant Colony Optimization. Google Maps API, Global Positioning System, Mobile Tracking.


(14)

BAB 1

PENDAHULUAN

1.1Latar Belakang

Mobile Tracking adalah suatu kemajuan teknologi dalam perangkat lunak ponsel yang dapat membuat telepon bukan hanya alat untuk sekedar menelpon atau sms saja. Namun ponsel telah menjadi alat multifungsi dengan berbagai fitur dan telah menjadi kebutuhan yang wajib dimiliki berbagai lapisan masyarakat. Teknologi GPS terbaru telah memungkinkan bagi pengguna ponsel untuk melacak individu mendapatkan posisi mobile user.

Google Maps (GM) merupakan sebuah aplikasi pemetaan on-line yang cukup popular. Pada GM, titik koordinat suatu tempat ditunjukan dengan sistem koordinat geografis. Saat ini Google Maps adalah layanan pemetaan berbasis web yang populer. Layanan Google Maps dapat ditambahkan kedalam sebuah website menggunakan Google Maps API (Application Programming Interface). Google Maps API dapat ditambahkan ke website menggunakan JavaScript. API tersebut menyediakan banyak fasilitas dan utilitas untuk memanipulasi peta dan menambahkan konten ke peta melalui berbagai layanan, memungkinkan untuk membuat aplikasi peta yang kuat pada sebuah website.[8]

Ant Colony Optimization (ACO) diadopsi dari perilaku koloni semut yang dikenal sebagai sistem semut. Secara alamiah koloni semut mampu menemukan rute


(15)

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, 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.[3]

Ant Colony Optimization (ACO) adalah salah satu algoritma alternatif yang dapat digunakan untuk penentuan jalur terdekat. Selain prosesnya cepat dan memberikan hasil yang bisa diterima, ACO juga mampu memberikan suatu solusi pada waktu kapanpun. Mengingat prinsip algoritma yang didasarkan pada perilaku koloni semut dalam menemukan jarak perjalanan paling pendek tersebut, ACO sangat tepat digunakan untuk diterapkan dalam penyelesaian masalah optimasi, salah satunya adalah untuk pengguna perangkat mobile dalam penentuan posisi dan jarak terdekat.

1.2Rumusan masalah

Bagaimana menentukan jarak terdekat antara mobile user satu dengan yang lain pada aplikasi mobile tracking menggunakan Google Maps API dengan Algoritma ACO.

1.3Batasan masalah

Batasan masalah pada aplikasi ini sebagai berikut: 1. Mendeteksi posisi mobile user (Handphone).

2. Menentukan jarak terdekat antara mobile user satu dengan yang lain dengan ACO.

3. Bahasa pemrograman yang digunakan adalah PHP menggunakan framework CodeIgniter & Mysql, JavaScript, Jquery.


(16)

1.4Tujuan penelitian

Menerapkan konsep dan cara kerja algoritma Ant Colony Optimization (ACO) pada aplikasi mobile tracking untuk menentukan jarak terdekat.

1.5Manfaat penelitian

Diharapkan dapat membantu pengguna perangkat mobile dalam penentuan posisi dan jarak terdekat.

1.6Metodologi Penelitian

Penelitian ini akan dilaksanakan dengan mengikuti beberapa langkah yang akan digunakan penulis, yaitu:

1. Studi Literatur

Tahap ini dilakukan dengan mencari jurnal, buku, tulisan ilmiah, e-book, maupun artikel lain yang berhubungan dengan Algoritma Ant Colony, Google Maps API, serta Pemrograman PHP pada Framework Codeigniter.

2. Analisis dan Perancangan Sistem

Dengan tahap ini digunakan untuk mengolah data dari hasil studi literatur dan kemudian melakukan analisis dan perancangan sistem yang sudah disimpulkan pada tahap analisis kedalam algoritma program, flowchart sistem, rancangan aplikasi, dan pembuatan user interface aplikasi.

3. Implementasi Sistem

Mengimplemntasikan model dan skema pada tahap perancangan sistem. Model dan skema diimplementasikan kedalam bahasa pemrograman PHP menggunakan framework codeigniter yang dipadukan dengan penggunaan


(17)

javascript sebagai pemrograman Google Maps API. Program yang dihasilkan merupakan sebuah aplikasi berbasis web untuk mendeteksi latitude dan longitude sebuah handphone.

4. Pengujian Sistem

Menguji apakah aplikasi yang dibuat telah berhasil berjalan sesuai dengan keinginan dan melakukan perbaikan kesalahan jika masih terdapat error pada aplikasi.

5. Dokumentasi

Tahap akhir dari penelitian yang dilakukan, yaitu membuat kesimpulan dan laporan tentang penelitian yang telah dilakukan.

1.7Sistematika Penulisan

Sistematika penulisan dari skripsi ini terdiri dari:

BAB 1 : PENDAHULUAN

Bab ini menjelaskan mengenai latar belakang pemilihan judul skripsi ”Implementasi Mobile Tracking Menggunakan Metode Ant Colony Optimazion Dan Google Maps API”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian dan sistematika penulisan.

BAB 2 : TINJAUAN PUSTAKA

Bab ini membahas teori-teori yang berkaitan dengan Teori graf, Algoritma Ant Colony, Google Maps API, serta Global Positioning System.

BAB 3 : ANALISIS DAN PERANCANGAN SISTEM

Bab ini akan membahas mengenai analisis kebutuhan sistem yang meliputi analisis masalah, analisis kebutuhan sistem, pemodelan dan perancangan sistem.


(18)

BAB 4 : IMPLEMENTASI DAN PENGUJIAN

Bab ini akan membahas mengenai implementasi sistem dan pengujian sistem agar aplikasi yang dirancang berjalan dengan baik.

BAB 5 : KESIMPULAN DAN SARAN

Bab ini memuat kesimpulan dari uraian bab-bab sebelumnya dan hasil penelitian yang diperoleh. Bab ini juga memuat saran yang diharapkan dapat bermanfaat untuk pengembangan selanjutnya.


(19)

BAB 2

TINJAUAN PUSTAKA

2.1. Teori Graf

2.1.1 Definisi Graf

Graf G adalah pasangan (V(G),E(G)) dengan (V(G)) adalah himpunan tidak kosong dan berhingga dari objek-objek yang disebut titik, (E(G)) adalah himpunan (mungkin kosong) pasangan tak berurutan dari titik- titik berbeda di (V(G)) yang disebut sisi. Banyaknya unsur di V(G) disebut order dari G dan dilambangkan dengan p(G), dan banyaknya unsur di E(G) disebut ukuran dari G dan dilambangkan dengan q(G). Jika graf yang dibicarakan hanya graf G, maka order dan ukuran dari G masing-masing cukup ditulis p dan q. Graf dengan order p dan q disebut graf-(p,q).[1]

Nama “Graf” diberikan karena graf dapat disajikan secara grafik atau gambar, dan justru dengan bentuk gambar inilah sifat-sifat graf dapat dikenali secara detail. Titik disajikan dalam bentuk noktah atau lingkaran kecil dan sisi disajikan dalam bentuk garis atau kurva yang memasangkan dua titik. [1]

Perhatikan graf G yang memuat himpunan titik V(G) dan himpunan sisi E(G) seperti berikut ini.

V(G) = {a,b,c,d,e}


(20)

Graf G tersebut secara lebih jelas dapat digambar sebagai berikut.

Gambar 2.1 Graf G

Graf G mempunyai 5 titik sehingga order G adalah p = 5. Graf G mempunyai 6 sisi sehingga ukuran graf G adalah 6.

Graf G dengan himpunan titik dan sisi masing-masing V(G) = {a, b, c, d, e}

E(G) = {(a, b), (a, c), (a, d), (b, d), (b, c), (d, e)} Dapat juga ditulis dengan

V(G) = {a, b, c, d, e} E(G) = {e1, e2, e3, e4, e5, e6} Dengan

e1 = (a, b)

e2 = (a, c)

e3 = (a, d)

e4 = (b, d)

e5 = (b, c)

e6 = (d, e)

Sisi e = (a, b) dikatakan menghubungkan titik a dan b. Jika e = (a, b) adalah sisi graf G, maka a dan b disebut terhubung langsung (adjacent), a dan e serta b dan e disebut terkait langsung (incident), dan titik a dan b disebut ujung dari e. Dua sisi

G :

a c

d b

e e1

e2

e3


(21)

berbeda e1 dan e2 disebut terhubung langsung (adjacent), jika terkait langsung pada

satu titik yang sama. Untuk selanjutnya, sisi e = (a, b) akan ditulis e = ab.

2.1.2 Graf Berbobot

Graf berbobot adalah graf yang setiap sisinya diberi sebuah nilai atau bobot. Bobot pada setiap sisi graf dapat berbeda-beda bergantung pada masalah yang dimodelkan. Bobot dapat menyatakan jarak antara dua buah kota, biaya perjalanan antara dua buah kota, waktu tempuh antara dua buah kota, waktu tempuh pesan antara simpul komunikasi dengan simpul komunikasi lainya, ongkos produksi dan sebagainya. Graf berbobot juga sering dikaitkan dengan istilah graf berlabel.[7]

Untuk membuat label, masing-masing vertex diberi sebuah label dan setiap edge diberikan sebuah nilai atau bobot. Tampilan graf berlabel dapat dilihat pada Gambar 2.2.

Gambar 2.2 Graf Berbobot

2.1.3 Representasi Graf Pada Komputer

Meskipun menggambar merupakan cara yang mudah untuk menjelaskan suatu graf, cara ini tentunya mempunyai kelemahan ketika akan menyimpan data tentang graf dalam komputer, atau ketika akan mengkaji sifat-sifat sutau graf melalui hitungan matematis. Merepresentasikan graf dalam bentuk matriks akan memberikan

P Q

R S

T 6

9

12 7

9


(22)

V1 V2

V3

V4

v1 v2 v3 v4

v1

v2

v3

v4

kemudahan bagi sesorang yang senang menggunakan komputer ketika mengkaji informasi atau menyelesaikan permasalahan yang melibatkan graf.[1]

Matriks keterhubungan suatu graf G adalah matriks simetri dengan unsur 0 dan 1 dan memuat nilai 0 pada diagonal utamanya. Hal ini karena graf tidak memuat lup dan tidak memuat sisi parallel.

Perhatikan contoh berikut. Misalkan graf G dengan himpunan titik V(G) = {v1, v2, v3, v4}

Dan himpunan sisi

E(G) = {v1v2, v1v4, v2v3, v2v4, v3v4 }

Maka, diagram dan matriks keterhubungan graf G sebagai berikut.

=

0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0

Gambar 2.3 Diagram dan Matriks Keterhubungan Graf G

Derajat suatu simpul deg(v) adalah banyaknya ruas yang menghubungkan suatu simpul. Secara umum, jika graf G dengan order p (p ≥ 1) dengan himpunan titik V(G) = {v1,v2, … vp} dan A (G) = [aij], 1 ≤ i, j ≤ p adalah matriks keterhubungan dari G,

maka

deg (vi) =

Hal yang sama juga berlaku jika menghitung derajat titik melalui kolom, yaitu


(23)

Dengan melihat matriks keterhubungan dari graf G dapat diperoleh bahwa a11 + a12 + a13 + a14 = 0 + 1 + 0 + 1 = 2 = deg(v1),

a21 + a22 + a23 + a24 = 1 + 0 + 1 + 1 = 3 = deg(v2),

a31 + a32 + a33 + a34 = 0 + 1 + 0 + 1 = 2 = deg(v3), dan

a41 + a42 + a43 + a44 = 1 + 1 + 1 + 0 = 3 = deg(v4).

Dari diagram terlihat bahwa deg(v1) = 2,

deg(v2) = 3,

deg(v3) = 2, dan

deg(v4) = 3.

2.2 Algoritma Ant Colony Optimization

Algoritma semut (Ant Colony) yang terinspirasi oleh tingkah laku semut dalam suatu koloni. Semut mampu menemukan jalur terpendek dari sumber makanan ke sarang mereka tanpa menggunakan isyarat visual dengan memanfaatkan informasi feromon. Sambil berjalan, semut meninggalkan jejak feromon di tanah, dan feromon ini akan membimbing semut lain untuk menemukan sumber makanan. [6]

2.2.1 Ant Colony Optimization

Ant Colony Optimization (ACO) melakukan pendekatan menggunakan model probabilistik untuk membangun kombinasi baru. Dalam pendekatannya, model probabilistik berkembang selama proses pencarian dengan mengacu pada kombinasi sebelumnya yang dibangun berulang selama proses pembelajaran.[11]

Kontribusi utama algoritma ACO adalah yang meniru dari perilaku kolektif seekor semut untuk memperbarui model probabilistik. Kemungkinan memilih


(24)

komponen tergantung pada kualitas feromon yang merepresentasikan perjalanan koloni semut. Jumlah feromon berkembang dengan menggabungkan dua mekanisme. mekanisme pertama adalah langkah meletakkan feromon. Jejak feromon berhubungan dengan kombinasi terbaik yang memungkinan untuk memilih jalur tersebut. Mekanisme kedua adalah penguapan feromon. Jejak feromon akan semakin menurun pada peninggalan jejak yang tidak dikunjungi. [11]

Marco Dorigo (1992) menyatakan “Ant Colony Optimization (ACO) adalah pendekatan metaheuristik baru yang diusulkan untuk memecahkan masalah optimasi kombinatorial yang sulit. Sumber inspirasi dari ACO adalah jejak feromon peletakan dan mengikuti perilaku semut nyata yang menggunakan feromon sebagai media komunikasi. Dalam analogi dengan contoh biologi, ACO didasarkan pada komunikasi tidak langsung dari koloni agen sederhana, disebut (buatan) semut, dimediasi oleh (buatan) jejak feromon. Jalan feromon di ACO berfungsi sebagai penyampai informasi numerik yang semut gunakan untuk probabilistik membangun solusi untuk masalah yang sedang diselesaikan dan dimana semut beradaptasi selama eksekusi algoritma untuk mencerminkan pengalaman pencarian”.[5]

Perilaku semut yang cukup menarik adalah ketika mereka mencari makan, di mana mereka dapat menemukan jalur terpendek antara sumber makanan dan sarang mereka. Semut sampai pada titik keputusan di mana mereka harus memutuskan apakah akan belok kiri atau kanan. Karena mereka tidak memiliki petunjuk yang merupakan pilihan terbaik, mereka memilih acak. Hal ini dapat diharapkan bahwa rata-rata, setengah dari semut memutuskan untuk berbelok ke kiri dan yang lainnya berbelok ke kanan. Hal ini terjadi baik untuk semut bergerak dari kiri ke kanan (L) dan untuk mereka yang pindah dari kanan ke kiri (R). Ketika berjalan dari sumber makanan ke sarang dan sebaliknya, semut meletakkan suatu zat (yang disebut feromon) di sepanjang jalur yang mereka lalui. Ketika zat tersebut disekresikan sebagai isyarat seekor semut, maka semut yang lain dapat mengenalinya. Ketika mencari makan, pada awalnya semut akan berkeliling di daerah sekitar sarangnya secara acak. Begitu mengetahui ada makanan, semut akan menganalisa kualitas dan kuantitas makanan tersebut dan membawa beberapa bagian ke sarangnya. Dalam perjalanannya, mereka meninggalkan jejak berupa zat kimia, yang disebut feromon.


(25)

Feromon ini akan membimbing semut lain untuk menemukan sumber makanan. Jumlah feromon yang ditinggalkan oleh semut bergantung pada jumlah makanan yang ditemukan. Semakin banyak makanan yang didapat, semakin banyak pula jumlah feromon yang ditinggalkan. Sehingga semakin banyak semut yang melewati suatu jalur, semakin kuat pula jejak feromon yang terkumpul di jalur tersebut. Cara semut memanfaatkan feromon untuk menemukan jalur terpendek antara dua titik ditunjukkan pada Gambar 2.4[6].

Gambar 2.4 Mekanisme Pergerakan Koloni Semut.

Inisialisasi parameter-parameter algoritma.

1. Intensitas jejak semut antar kota dan perubahannya (τij).

2. Banyak kota (n) termasuk koordinat (x,y)atau jarak antar kota (dij) serta kota berangkat dan kota tujuan.

3. Tetapan siklus-semut (Q).

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

6. Visibilitas antar kota = 1/dij (ηij). 7. Banyak semut (m).

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

9. Jumlah siklus maksimum (NCmax) bersifat tetap selama algoritma dijalankan, sedangkan τij akan selalu diperbaharui harganya pada setiap


(26)

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

Aturan transisi digunakan oleh sistem semut, disebut sebagai random-proportional rule diberikan oleh persamaan (1), yang memberikan probabilitas semut k di kota r memilih untuk pindah ke kota s.

, =

"#$% & , ,! .. , ,!

0

'() * '

(1)

Dimana :

Pk(r, s) : Probabilitas semut k memilih untuk berpindah dari kota r ke kota s

τ(r,s) : jumlah feromon pada sisi dari simpul r ke simpul s. η (r,s) : (panjang sisi dari simpul r ke simpul s)-1

τ(r,u) : jumlah feromon pada sisi dari simpul r ke simpul u. η(r,u) : (panjang sisi dari simpul r ke simpul u)-1

Jk : himpunan yang berisi simpul – simpul yang telah dikunjungi oleh

semut

u : simpul yang berada dalam Jk

2.2.1.1Aturan Transisi Status

Dalam ACS (Ant Colony System) aturan transisi status adalah sebagai berikut: semut diposisikan pada node r memilih kota s untuk berpindah dengan menerapkan aturan yang diberikan oleh persamaan (2).[4]

= +max/ 0 , 1 . 2 , 1 34

5 '() 6 ≤ 68 (2)

Dimana :

τ(r,u) : jumlah feromon pada sisi dari simpul r ke simpul s. η(r,u) : (panjang sisi dari simpul r ke simpul s )-1


(27)

β : parameter perbandingan jumlah feromon relatif terhadap jarak (merupakan parameter yang telah ditentukan sebelumnya) q : bilangan random

q0 : parameter perbandingan terhadap simpul yang belum ditemuinya S : simpul berikutnya yang dipilih berdasarkan persamaan (1).

2.2.1.2Aturan Pembaruan Feromone Global

Dalam ACS hanya semut terbaik secara global (yaitu, perjalanan semut yang terpendek dari awal sebuah jejak) yang diperbolehkan untuk meninggalkan feromon. Pilihan ini, bersama-sama dengan penggunaan aturan pseudo-random-proportional, dimaksudkan untuk membuat pencarian yang lebih terarah. Semut mencari di lingkungan pada tour terbaik ditemukan sampai akhir iterasi algoritma. Pembaharuan feromon global dilakukan setelah semua semut telah menyelesaikan tour mereka. Tingkat feromon diperbarui dengan menerapkan aturan memperbarui persamaan global (3).[4]

0 , ← 1 − ; . 0 , + ;. ∆0 , (3)

Dimana:

τ(r,s) : nilai feromon akhir setelah mengalami pembaruan α : tetapan pengendali feromon.

Δτ : perubahan intensitas feromon.

Seperti halnya dalam sistem semut, pembaharuan feromon global dimaksudkan untuk menyediakan sejumlah besar feromon untuk kunjungan terpendek. Persamaan. (3) menyatakan bahwa hanya sebuah edge tour terbaik secara global akan menerima penguatan. Jenis lain aturan pembaharuan feromon global, yang disebut iteration-best, sebagai lawan di atas yang disebut global-best. Dalam persamaan (3). Juga, dengan iterasi-terbaik edge yang menerima penguatan adalah yang termasuk tour terbaik dari iterasi saat ini. Percobaan telah menunjukkan bahwa perbedaan antara dua skema


(28)

minimal, dengan preferensi sedikit untuk global terbaik, karena yang digunakan dalam percobaan berikutnya.

2.2.1.3Aturan Pembaruan Feromone Lokal

Ketika membangun solusi (yaitu, tour) sebuah TSP, semut mengunjungi edge dan mengubah tingkat feromon mereka dengan menerapkan aturan memperbarui lokal persamaan (4).[4]

0 , ← 1 − > . 0 , + >. ∆0 , (4)

dimana:

τ(r,s) : jumlah feromon pada sisi dari simpul r ke simpul s ρ : tetapan penguapan feromon.

Δτ : perubahan intensitas feromon.

Peran aturan memperbarui lokal ACS adalah untuk mengacak tour, sehingga kota-kota di awal tour seekor semut dapat dieksplorasi selanjutnya oleh tour semut lain. Dengan kata lain, efek dari pembaruan feromon lokal adalah untuk membuat edge berubah secara dinamis. setiap kali semut menggunakan edge ini menjadi sedikit kurang diinginkan (karena kehilangan beberapa feromon nya). Dengan cara ini semut akan membuat lebih baik menggunakan informasi feromon. tanpa pembaruan feromon lokal semua semut akan mencari di lingkungan yang terbatas pada tour terbaik sebelumnya.

2.3 Google Maps API

Google Maps API merupakan aplikasi antarmuka yang dapat diakses lewat javascript agar Google Maps dapat ditampilkan pada halaman web yang sedang dibangun.[8]


(29)

Developer merumuskan sebuah request URL menggunkanan PHP di remote server

Aplikasi PHP membuat request ke Google Maps

Request Valid

Google Maps mengirimkan data ke user menggunakan format data JSON

Google Maps mengirimkan error atau hasil nol

PHP dapat menggunkanan fungsi cURL untuk mengambil dan melakukan pengelolahan data JSON

Y

N

Ada 2 cara untuk mengakses data Google Maps, tergantung dari data yang ingin diambil dan diuraikan dari Google Maps.

1. Mengakses data Google Maps tanpa menggunakanAPI key. 2. Mengakses data Google Maps menggunakan API key.

Pendaftaran API key dilakukan dengan data pendaftaran berupa nama domain web yang kita bangun.

2.3.1 Request URL Google Map

Gambar 2.5 Flowchart Request URL Google Maps

2.3.2 Geocoding

Geocoding adalah proses mengubah alamat (seperti “1600 Amphitheatre Parkway, Mountain View, CA”) ke koordinat geografis (lintang 37,423021 dan bujur -122,08379), yang dapat digunakan untuk menempatkan penanda atau posisi peta.


(30)

Geocoding API Google menyediagakn cara langsung untuk mengakses geocoder melalui HTTP. Selain itu, layanan ini memungkinkan kita untuk melakukan operasi sebaliknya (berubah koordinat menjadi alamat), proses ini dikenal sebagai reverse geocoding.[8]

2.3.3 Waypoint

Waypoint adalah titik referensi dalam ruang fisik yang digunakan untuk tujuan navigasi. Waypoint merupakan koordinat yang mengidentifikasi titik dalam ruang fisik. Koordinat yang digunakan dapat bervariasi tergantung pada aplikasi. Untuk navigasi darat koordinat berupa bujur dan lintang, sedangkan untuk navigasi udara juga mencakup ketinggian. Waypoint biasanya digunakan untuk sistem navigasi pada GPS dan jenis-jenis tertentu dari radio navigasi. Waypoint yang terletak di permukaan bumi biasanya didefinisikan dalam dua dimensi (misalnya, bujur dan lintang), sedangkan yang digunakan dalam atmosfer bumi atau di luar angkasa didefinisikan dalam setidaknya tiga dimensi atau empat jika waktu merupakan salah satu koordinat untuk beberapa titik yang berada di luar bumi. Waypoint ini digunakan untuk membantu menentukan jalur routing yang tak terlihat untuk navigasi. Misalnya, artificial airways " highways in the sky" yang diciptakan khusus untuk keperluan navigasi udara dan hanya terdiri dari serangkaian waypoint abstrak di langit dimana pilot menavigasi airways ini dirancang untuk memudahkan kontrol lalu lintas udara dan routing lalu lintas antara lokasi pada saat bepergian. Waypoints abstrak semacam ini telah dibuat praktis dengan teknologi navigasi modern, seperti land-based radio beacons dan satelit berbasis GPS.[8]

2.3.3.1Perhitungan Jarak Antara Dua Waypoints

Untuk melakukan perhitungan jarak antara dua waypoints pada Google Maps menggunakan persamaan hukum kosinus koordinat bola (spherical law of cosines).


(31)

Dimana :

D : Jarak antar dua titik (km)

E : Posisi titik i(1,2,…n) pada garis lintang dalam derajat I : Posisi titik i(1,2,…n) pada garis bujur dalam derajat J : Jari-jari bumi (6371 km)

Karena untuk menggunakan persamaan ini nilai lintang dan bujur harus dalam radian, sedangkan data masukan dari pengguna dalam derajat, maka terlebih dahulu mengubah nilai derajat menjadi radian dengan membagi dengan 180 / π . π adalah konstanta matematika yaitu 3,14.[8]

2.4 GPS

Rancangan terbaru dari GPS dikembangkan dari sebuah prototype pada akhir 1960. Rancangan ini berdasarkan pada rasi dua puluh empat satelit buatan manusia yang mengorbit bumi setiap dua belas jam pada ketinggian 20.000 km dari permukaan laut. Secara kolektif, ini berdasarkan konstelasi membentuk Segmen angkasa, seperti yang ditunjukkan pada Gambar 2. setiap satelit terus mengirimkan pesan posisi, dengan ketepatan waktu antara semua komponen sistem dan antar satelit. Waktu tersebut dikelola oleh pemantauan transmisi satelit di lima stasiun darat yang dapat mengirim pembaharuan ke satelit ketika penyimpangan yang tidak diinginkan terdeteksi. Seperangkat stasiun membuat segmen ground.[10]


(32)

Segmen ketiga adalah pengguna segmen peralatan yaitu terdiri dari apa yang telah menjadi berbagai jenis penerima GPS yang dirancang untuk memanfaatkan sinyal berbasis ruang untuk posisi akurat dan penentuan waktu. semua penerima tersebut beroperasi pada prinsip yang sama yaitu estimasi waktu kedatangan sinyal dari sedikitnya empat satelit terpisah, kemudian untuk mengetahui transmisi waktu dan kecepatan cahaya untuk memperkirakan jarak antara pengguna dan satelit. Penerima GPS kemudian menggunakan rentang untuk menghitung posisi pengguna.[10]

Setiap sinyal GPS dirancang untuk membawa waktu yang tertera memungkinkan penerima untuk mengetahui kapan sinyal meninggalkan satelit GPS. Sebuah peralatan penerima yang dilengkapi dengan baik kemudian dapat mengukur ketika sinyal menjangkau pengguna. Jika jam satelit dan jam pengguna secara sempurna disinkronkan, jarak antara mereka dapat dihitung sebagai waktu tunda dikalikan dengan kecepatan cahaya. Namun, meskipun jam GPS semua sangat tepat dan disinkronkan dengan satu sama lain, jam pengguna juga dapat memiliki bias relatif yang tidak diketahui terhadap waktu sistem GPS. Istilah pseudorange digunakan untuk mengenali bahwa pengguna hanya dapat memperkirakan setiap sinyal GPS waktu kedatangan relatif terhadap jam bias.[10]

2.4.1 Sumber Kesalahan

Sumber kesalahan dari GPS pada umumnya diakibatkan oleh:[9]

a. Ionosphere and troposphere delays, signal satelite lambat dalam menembus atmosfer. Pada GPS yang baru telah dilengkapi oleh perhitungan rata-rata delays (waktu tunda) untuk mengoreksi kesalahan yang terjadi.

b. Signal multipath, Kesalahan yang terjadi akibat signal dipantulkan oleh gedung atau batuan besar, sebelum mencapai receiver.

c. Penerimaan satelite yang terganggu akibat gedung, interferensi gelombang elektro magnetik, blok signal, sehingga GPS tidak bekerja dalam rumah (indoor), dibawah permukaan air atau di bawah tanah.


(33)

2.4.2 Kesalahan pada GPS

Kesalahan-kesalahan satelite, antara lain:[9] a. Receiver clock errors,

b. Orbital Error,

c. Satellite geometry/shading dan

d. Intentional degradation of the satellite signal.

2.4.3 Tracking

Tracking dalam per-istilahan GPS adalah melakukan kuisisi data koordinat secara otomatis berdasarkan jalur yang kita lalui dan data tersebut disimpan dalam kartu memori GPS secara otomatis.[9]


(34)

BAB 3

ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis Sistem

Persoalan penentuan jarak terdekat merupakan salah satu permasalahan optimasi. Graf yang digunakan adalah suatu graf berbobot jarak antar user yang merupakan tempat-tempat yang akan dilintasi. Untuk meminimumkan waktu atau biaya dalam melintasi tempat-tempat, diperlukan informasi lintasan yang terpendek yang harus dilalui. Permasalahan pencarian lintasan yang terpendek antar lokasi dapat diselesaikan dengan algoritma ACO yang bekerja sebagai penentuan jalur terpendek antar titik, untuk selanjutnya dapat diterapkan pada pencarian jalur terpendek pada berbagai lokasi yang ingin diketahui. Contoh kasus yang akan diambil adalah pencarian jalur terpendek antara titik A dan titik D.


(35)

Pada Gambar 3.1 diketahui koordinat pengguna yang digunakan sebagai banyak kota yang dikunjungi kemudian sistem ini akan mencari jarak terdekat menggunakan algoritma ant colony optimization (ACO) dalam penentuan jarak terdekatnya.

3.1.1 Analisis Masalah

Untuk mengidentifikasi masalah menggunakan diagram ishikawa (fishbone diagram). Masalah yang akan diidentifikasi yaitu sebuah perangkat mobile yang memiliki fasilitas GPS belum digunakan secara maksimal. Bahkan untuk membeli sebuah perangkat GPS saat ini masih relatif mahal sehingga hanya orang tertentu saja yang menggunakanya. Dengan adanya fasilitas GPS jarak yang akan ditempuh dapat dihitung secara komputasi, sehingga waktu yang digunakan akan jauh lebih efektif daripada perhitungan secara manual. Permasalahan tersebut dapat dilihat melalui sebuah diagram ishikawa pada Gambar 3.2.

Gambar 3.2 Diagram Ishikawa Untuk Analisis Permasalahan Sistem

3.1.2 Analisis Kebutuhan Sistem

Analisis Kebutuhan Sistem meliputi analisis kebutuhan fungsional sistem dan analisis kebutuhan non-fungsional sistem.

Penentuan jarak terdekat dari sebuah koordinat ponsel

Method Machine

Materials Man

Kesulitan dalam pembuatan peta terbaru

Pencarian jarak terdekat masih manual Memiliki keterbatasan

dalam memproses data

Harga perangkat GPS relatif mahal


(36)

3.1.2.1Kebutuhan Fungsional Sistem

Kebutuhan fungsional yang harus dimiliki oleh aplikasi mobile tracking dalam penentuan jarak terdekat yaitu :

1. Fasilitas gps sebuah ponsel untuk membaca koordinat.

2. Sistem akan melakukan perhitungan jarak terdekat pada google maps menggunakan algoritma ant colony optimization.

3. Sistem dapat menampilkan route yang akan dilalui sebagai jarak terdekat.

3.1.2.2Kebutuhan Non-Fungsional Sistem

Kebutuhan non-fungsional adalah kebutuhan yang harus dipenuhi agar aplikasi yang dirancang mendapat umpan-balik yang baik dari pengguna aplikasi. Kebutuhan non-fungsional yang harus dipenuhi aplikasi yang dirancang adalah sebagai berikut:

a. Performa

Sistem harus mampu melaksanakan setiap tugas secara utuh dalam selang waktu yang tidak terlalu lama sesuai dengan ukuran data input yang diberikan.

b. Informasi

Sistem harus mampu menyediakan informasi tentang data-data yang akan digunakan pada sistem.

c. Ekonomi

Sistem harus dapat bekerja dengan baik tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras maupun perangkat lunak. d. Kontrol

Sistem yang telah dibangun harus tetap dikontrol setelah selesai dirancang agar fungsi dan kinerja sistem tetap terjaga dan dapat memberikan hasil yang sesuai dengan keinginan pengguna.

e. Efisiensi

Sistem harus dirancang sesederhana mungkin agar memudahkan pengguna dalam menggunakan atau menjalankan aplikasi tersebut.


(37)

Sistem yang telah dirancang bisa dikembangkan ke tingkat yang lebih kompleks lagi bagi pihak-pihak yang ingin mengembangkan sistem tersebut.

3.1.3 Pemodelan

Pemodelan aplikasi yang dirancang bertujuan untuk menggambarkan semua kondisi dan bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan aplikasi dilakukan dengan membuat use-case diagram, activity diagram, class diagram, dan sequence diagram.

3.1.3.1Use-Case Diagram

Untuk menganalisa komponen-komponen yang berperan dalam sistem yang dirancang, penulis menggunakan use-case diagram agar proses penganalisaan komponen dapat dilakukan dengan mudah. Use-case diagram sistem pada aplikasi yang dirancang dapat dilihat pada Gambar 3.3.

Gambar 3.3. Use-Case Diagram Pada Sistem

User

Daftar

Login

Admin

Hitung Perjalanan

Eksport data Kordinat Ponsel

Profil User

Data User

<< Extends >>

Long-Lat

<< Extends >>

Hasil Perhitungan

<< include >> << Include >>

Durasi Dalam Matriks

<< include >>

Peta Graph


(38)

3.1.3.2Activity Diagram

Untuk menganalisa aktivitas-aktivitas yang akan berlangsung selama aplikasi dijalankan diperlukan sebuah activity diagram. Activity diagram sistem pada aplikasi yang dirancang dapat dilihat pada Gambar 3.4.


(39)

Activity diagram


(40)

3.1.3.3Class Diagram

Class diagram untuk sistem yang dirancang dapat dilihat seperti pada Gambar 3.5.

Gambar 3.5. Class Diagram Pada Sistem

3.1.3.4 Sequence Diagram


(41)

Gambar 3.6. Sequence Diagram Pada Sistem

3.2Perancangan Sistem

3.2.1 Flowchart Sistem

Flowchart merupakan bagan yang menunjukkan arus pekerjaan secara keseluruhan dari sistem. Flowchart menjelaskan tentang urutan-urutan dari prosedur yang ada di dalam sistem dengan menggunakan simbol-simbol.

Flowchart pembuatan aplikasi mobile tracking dapat dilihat seperti pada Gambar 3.7.


(42)

(43)

3.2.2 Pseudocode Algoritma ACO

Pseudocode adalah teknik untuk menuliskan algoritma secara hight-level tanpa tergantung pada sebuah bahasa pemrograman. Penulisan pseudocode biasanya ditulis dengan menggunakan bahasa inggris dan diberi tambahan notasi matematika.

Pseudeocode Algoritma ACO ditunjukkan oleh tabel 3.1 dibawah ini:

Tabel 3.1 Pseudocode Algoritma ACO

Baris Kode Pseudocode 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

ALGORITMA Ant Colony Optimization

{algortima untuk menghitung jarak terpendek menggunakan ACO}

DEKLARASI

alfa,beta,asF:double; i,j,m,Q:integer;

DESKRIPSI

Set parameter(alfa,beta,asF,m,Q)

while stopping criterion not satisfied do

position each ant in a starting node repeat

for each ant do

choose next node by applying the state transition rule

apply local pheromone update end for

until every ant has built a solution update best solution

apply global pheromone update end while


(44)

3.2.3 Perancangan Database

Tabel yang penulis gunakan dalam pembuatan aplikasi mobile tracking yaitu tb_admin, tb_client dan tb_track. Rincian masing-masing table diuraikan pada table dibawah ini.

1. Tabel Admin

Tabel admin merupakan table yang digunakan untuk menyimpan account admin yaitu username dan password sebagai autentikasi untuk masuk ke menu admin.

Tabel 3.2 Tabel Admin

Field Type

id_admin int(10)

Nama varchar(200)

Username varchar(200)

Password varchar(200)

2. Tabel Client

Tabel Client digunakan untuk menyimpan data user dan melacak koordinatnya. Dimana setiap kali user melakukan login maka koordinat pada database selalu diperbaharui

Tabel 3.3 Tabel Client

Field Type

id_client int(10)

Nama varchar(200)

username varchar(200)


(45)

Field Type jenis_kelamin enum('Pria', 'Wanita')

no_hp varchar(15)

Alamat varchar(200)

Lat double

Long double

Gambar varchar(120)

id_session varchar(100)

Aktif enum('Y', 'N')

3. Tabel Track

Tabel track digunakan untuk menyimpan semua data perjalanan masing-masing user.

Table 3.4 Tabel Track

Field Type

id_track int(10)

id_client int(10)

Lat double

Long double

Time datetime

session_login varchar(160)

3.2.4 Perancangan Tampilan

3.2.4.1Halaman Login

Halaman login merupakan sebagai authentikasi data untuk mengakses halaman utama aplikasi. Halaman ini digunakan sebagai pembatasan hak akses terhadap fitur-fitur yang ada di aplikasi. Agar dapat masuk kedalam aplikasi, maka pengguna harus


(46)

memiliki username dan password yang sudah terdaftar sebelumnya. Kemudian setelah pengguna dapat melakukan proses login maka sistem akan mendapatkan koordinat ponsel kemudian disimpan kedalam database. Tampilan dapat dilihat pada gambar 3.8

Gambar 3.8 Halaman login

Keterangan:

1. Label yang berisi logo aplikasi 2. Label Username.

3. Label File Tujuan.

4. Text box untuk menampilkan input username. 5. Text box untuk menampilkan input password. 6. Tombol untuk memproses input login.

7. Tombol untuk menampilkan dialog pendaftaran.

3.2.4.2Halaman User

Halaman User adalah halaman yang digunakan sebagai antar-muka user setelah berhasil melakukan proses login. Halaman ini juga akan menampilkan posisinya berada berdasarkan koordinat yang diterima. Rancangan halaman user dapat dilihat seperti pada Gambar 3.7

Mobile Tracking(1)

Username(2)

Text Box(3)

Password(4)

Text Box(5)


(47)

Gambar 3.9 Halaman User Keterangan:

1. Label untuk menampilkan text proses pelacakan koordinat ponsel. 2. Label untuk menampilkan map.

3. Label untuk menampilkan alamat latitude dan longitude. 4. Tombol untuk menampilkan form edit profile.

5. Tombol untuk menampilkan form logout.

3.2.4.3Halaman Admin

Halaman admin adalah halaman yang digunakan sebagai antar-muka admin setelah berhasil melakukan proses login. Pada halaman ini digunakan untuk melakukan pelacakan posisi user dan perhitungan jarak terdekatnya. Rancangan halaman admin dapat dilihat seperti pada Gambar 3.10

Tracking location pocessing... (1)

YYYY-mm-dd

Edit profile(4) LogOut(5)

Lat : (3)

Long :


(48)

Gambar 3.10 Halaman Admin Keterangan:

1. Label untuk menampilkan tujuan.

2. Text box untuk menampilkan input tujuan. 3. Tombol untuk menampilkan form add. 4. Label untuk menampilkan pilih jalur.

5. checkbox untuk menampilkan jalur yang akan dilalui. 6. Label untuk menampilkan eksport.

7. Label untuk menampilkan edit route. 8. Label untuk menampilkan mobile tracking.

9. Tombol untuk menampilkan form perhitungan jalur yang dilewati. 10.Tombol untuk menampilkan data client.

11.Tombol untuk mengulangi proses.

12.Tombol untuk melakukan refresh halaman. 13.Tombol untuk melakukan pengujian javascript. 14.Tombol untuk menampilkan halaman about. 15.Tombol untuk keluar dari halaman login. 16.Label untuk menampilkan maps.

17.Label untuk menampilkan hasil perhitungan. 18.Label untuk menampilkan jalur yang akan dilalui.

Map(16) Tujuan(1)

Text box(2) add(3)

Pilih jalur(4)

Walking (Jalan kaki) (5)

Bicycling (Naik sepeda) Avoid highways (Hindari jalan raya) Avoid toll roads (Hindari jalan tol)

Eksport(6)

Edit Route(7)

Mobile Tracking(8)

Tracking Mobile(9)

Hitung Perjalanan TSP Hitung Perjalanan A - Z

Data Client(10)

Ulangi lagi(11)

Refresh Halaman(12)

Pengujian javascript(13)

About(14)

Logout(15)

Lama perjalanan dan panjang perjalanan(17)


(49)

3.2.4.4Halaman Data User

Halaman data user ini merupakan rancangan yang digunakan untuk manajemen data user yang sudah terdaftar sebagai user, form ini hanya ditampilkan pada menu admin sebagai manajemen data user.

Gambar 3.11 Halaman Data User Keterangan:

1. Label untuk menampilkan tujuan.

2. Text box untuk menampilkan input tujuan. 3. Tombol untuk menampilkan form add. 4. Label untuk menampilkan pilih jalur.

5. checkbox untuk menampilkan jalur yang akan dilalui. 6. Label untuk menampilkan eksport.

7. Label untuk menampilkan edit route. 8. Label untuk menampilkan mobile tracking.

9. Tombol untuk menampilkan form perhitungan jalur yang dilewati. 10.Tombol untuk menampilkan data user.

11.Tombol untuk mengulangi proses.

12.Tombol untuk melakukan refresh halaman.

Data User[16]

Tujuan(1)

Text box(2) add(3)

Pilih jalur(4)

Walking (Jalan kaki) (5)

Bicycling (Naik sepeda) Avoid highways (Hindari jalan raya) Avoid toll roads (Hindari jalan tol)

Eksport(6)

Edit Route(7)

Mobile Tracking(8)

Tracking Mobile(9)

Hitung Perjalanan TSP Hitung Perjalanan A - Z

Data Client(10)

Ulangi lagi(11)

Refresh Halaman(12)

Pengujian javascript(13)

About(14)


(50)

13.Tombol untuk melakukan pengujian javascript. 14.Tombol untuk menampilkan halaman about. 15.Tombol untuk keluar dari halaman login. 16.Label untuk menampilkan data user.

3.2.4.5Halaman About

Halaman about berfungsi untuk menampilkan informasi tentang profil penulis. Profil penulis meliputi biodata penulis serta data akademik. Rancangan about dapat dilihat seperti pada Gambar 3.12.

Gambar 3.12 Halaman About Judul Skripsi

Tentang Penulis


(51)

BAB 4

IMPLEMENTASI DAN PENGUJIAN SISTEM

4.1 Implementasi Sistem

4.1.1 Implementasi Algoritma Ant Colony Optimization

Proses yang dilakukan pertama kali adalah yaitu melacak posisi koordinat sebuah ponsel. Koordinat yang berhasil dilacak kemudian akan disimpan kedalam database. Data dapat dilihat seperti pada Tabel 4.1.

Tabel 4.1. Koordinat Ponsel Yang Terlacak Oleh Apliaksi Mobile Tracking

ID NAMA Lat Long Alamat

1 Donny Sanjaya 3,5855251 98,6312905 Jl. Merpati 2 Ridho Satrya Akbar 3,5678042 98,6422931 Jl. Setia Budi 3 Rajab Sihotang 3,5731014 98,6535551 Jl. Mesjid

4 Chandra Kurniawan 3,5673288 98,6607754 Jl. Jamin Ginting

Jika masing-masing koordinat diatas digambarkan pada tampilan graf maka dapat kita lihat titik yang akan dilewati dalam pencarian jarak terdekat. Waypoint menunjukkan lokasi dari suatu tempat, dan dihitung menggunakan latitude (lintang) dan longitude (bujur). Untuk perhitungan yang lebih tepat dari jarak antara dua tempat yang jauh, rumus jarak lingkaran besar dapat digunakan. Rumus yang menggunakan sifat trigonometri dari suatu koordinat termasuk sinus, cosinus, arccosinus dan perkiraan jari-jari bumi, maka jarak dari suatu tempat dapat dihitung.


(52)

Langkah-langkah untuk menghitung jarak antara dua waypoint adalah sebagai berikut :

Mengkonversi bujur dan lintang dua waypoint dari representasi desimal ke radian dibagi dengan 180 / π, atau 57,29578.

1. Jarak antara Jl. Merpati(1) dan Jl. Setia Budi(2)

Pengukuran lintang dan bujur untuk Jalan Merpati adalah Lintang 3,5855251, Bujur 98,6312905

Pengukuran bujur dan lintang untuk Jalan Setia Budi adalah Lintang 3,5678042, Bujur 98,6422931

Bagi dengan 180 / π, sehingga diperoleh

Jalan Merpati : Lintang radian = 0,062579218 Bujur radian = 1,721440765 Jalan Setia Budi : Lintang radian = 0,06226993

Bujur radian = 1,721632796

Hitung jarak dua waypoints dengan rumus

= (sin( . sin( + cos( . cos( . cos( − .

D = Acos(sin(0,062579218) . sin(0,06226993) + cos(0,062579218) .cos(0,06226993) . cos(1,721632796-1,721440765)) . 6371 Maka jarak = 2,318 km

2. Jarak antara Jalan Setia Budi(2) dan Jalan Mesjid(3)

Pengukuran bujur dan lintang untuk Jalan Setia Budi adalah Lintang 3,5678042, Bujur 98,6422931

Pengukuran lintang dan bujur untuk Jalan Mesjid adalah Lintang 3,5731014, Bujur 98,6535551


(53)

Bagi dengan 180 / π, sehingga diperoleh

Jalan Setia Budi : Lintang radian = 0,06226993 Bujur radian = 1,721632796 Jalan Mesjid : Lintang radian = 0,062362384 Bujur radian = 1,721829355

Hitung jarak dua waypoints dengan rumus

= (sin( . sin( + cos( . cos( . cos( − .

D = Acos(sin(0,06226993) . sin(0,062362384)+ cos(0,06226993) .cos(0,062362384) . cos(1,721829355-1,721632796)) . 6371 Maka jarak = 1,382 km

3. Jarak antara Jalan Mesjid(3) dan Jalan Jamin Ginting(4)

Jalan Mesjid : Lintang radian = 0,062362383938 Bujur radian = 1,721829355293 Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 1,027 km

4. Jarak antara Jalan Merpati(1) dan Jalan Jamin Ginting(4) Jalan Merpati : Lintang radian = 0,062579218408

Bujur radian = 1,721440764716 Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 3,847 km

5. Jarak antara Jalan Setia Budi (2) dan Jalan Jamin Ginting (4) Jalan Setia Budi : Lintang radian = 0,062269930356


(54)

Jalan Jamin Ginting : Lintang radian = 0,062261633061 Bujur radian = 1,721955373301 Maka jarak = 2,052 km

6. Jarak antara Jalan Merpati (1) dan Jalan Mesjid (3)

Jalan Merpati : Lintang radian = 0,062579218408 Bujur radian = 1,721440764716 Jalan Mesjid : Lintang radian = 0,062362383938 Bujur radian = 1,721829355293 Maka jarak = 2,830 km

Tampilan graf dapat dilihat pada Gambar 4.1.

Gambar 4.1 Graf Dengan Empat Vertex

Dari graf diatas, jarak antar kota dapat ditampilkan dimasukan kedalam sebuah tabel. Kemudian akan dicari route terpendeknya.

Tabel 4.2 Jarak Antar Kota

Kota ke- 1 2 3 4

1 0 2,318 2,830 3,847

2 2,318 0 1,381 2,052

3 2,830 1,381 0 1,027

4 3,847 2,052 1,027 0

1

2

4

3

2,318 km

2,830 km

3,847 km

2,052 km

1,027 km 1,381 km


(55)

Berikut ini langkah-langkah perhitungan route terpendek menggunakan algoritma semut.

Parameter–parameter yang digunakan adalah: Alfa (α) = 1.00

Beta (β) = 1.00 Rho (ρ) = 0.50

τij awal = 0.01

Maksimum siklus (NCmax) = 1 Tetapan siklus semut (Q) = 1 Banyak semut (m) = 3

Dari jarak kota yang telah diketahui dapat dihitung visibilitas antar kota (ηij) = 1/dij

Tabel 4.3 Visibilitas Antar Kota

Kota ke- 1 2 3 4

1 0 0,431406 0,353357 0,259943 2 0,431406 0 0,724113 0,487329 3 0,353357 0,724113 0 0,97371 4 0,259943 0,487329 0,97371 0

Intensitas feromon antar titik (τij) akan diperlihatkan pada table 4.4 dibawah ini :

Tabel 4.4 Feromon Antar Titik

Kota ke- 1 2 3 4

1 0 0,01 0,01 0,01

2 0,01 0 0,01 0,01

3 0,01 0,01 0 0,01

4 0,01 0,01 0,01 0

Nilai dari parameter visibilitas (η) dan intensitas feromon (τ) ini nantinya akan digunakan dalam persamaan probabilitas dan merupakan parameter yang mempengaruhi semut dalam pemilihan titik berikutnya ( aturan transisi).


(56)

Mencari titik tujuan berikutnya dengan perhitungan probabilitas :

Siklus ke-1 Semut ke – 1:

- Daftar semut 1 ke tujuan

- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan

( , = ( , . η( ,

!

$%&'(( ( , # . η( , # !

0

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0) + (0.01*0,431406) + (0.01*0,353357) + (0.01*0,259943)

= 0,01045

dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00

Kota 2 = (0.01)1.00 . (0,431406)1.00 / 0,01045 = 0,412829 Kota 3 = (0.01)1.00 . (0,353357)1.00/ 0,01045 = 0,338141 Kota 4 = (0.01)1.00 . (0,259943)1.00/ 0,01045 = 0.248749

- Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.679

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 3

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (1,3 )=

,-./ . 0 = ,. =0,088

τ (1,3) ← (1−0,50 ).(0,01)+(0,088)

τ (1,3) ← 0,093

Menghitung probabilitas dari titik 3 ke titik berikutnya:

( , = ( , . η( ,

!

$%&'(( ( , # . η( , # !

0

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0,353357) + (0.01*0,724113) + (0.01*0,97371)


(57)

Kota 1 = (0.01)1.00 . (0, 353357)1.00 / 0,0205118 = 0,172270 Kota 2 = (0.01)1.00 . (0,724113)1.00 / 0,0205118 = 0,353023 Kota 3 = 0

Kota 4 = (0.01)1.00 . (0, 97371)1.00/ 0,0205118 = 0,474707

- Probabilitas Komulatif = 0,172270 0,525292758 0,525292758 1,000 - Bilangan Random = 0.479

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 3 2

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (3,2 )=

,.- . 0 = 1,1 0=0,1810

τ (3,2) ← (1−0,50 ).(0,01)+(0,1810)

τ (3,2) ← 0,186

Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 3 2 4

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (2,4 )=

,/1 . 0 = -, /-=0,1218

τ (2,4) ← (1−0,50 ).(0,01)+( 0,1218)

τ (2,4) ← 0,1268

Semut ke – 2:

- Daftar semut 1 ke tujuan

- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan

( , = ( , . η( ,

!

$%&'(( ( , # . η( , # !


(58)

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0) + (0.01*0,431406) + (0.01*0,353357) + (0.01*0,259943)

= 0,01045

dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00

Kota 2 = 0,412829 Kota 3 = 0,338141 Kota 4 = 0.248749

- Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.497

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 2

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (1,2 )=

,. - . 0 = 2, 3 =0,1078

τ (1,2) ← (1−0,50 ).(0,01)+(0,1078)

τ (1,2) ← 0,1128

Menghitung probabilitas dari titik 2 ke titik berikutnya:

( , = ( , . η( ,

!

$%& ( , # . η( , # ! '((

0

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0,431406) + (0.01*0) + (0.01*0,724113) + (0.01*0,487329)

= 0,01643

Kota 1 = (0.01)1.00 . (0,431406)1.00 / 0,01643 = 0,0087 Kota 2 = 0.00

Kota 3 = (0.01)1.00 . (0,724113)1.00 / 0,01643 = 0,5926 Kota 4 = (0.01)1.00 . (0,487329)1.00 / 0,01643 = 0.3988 - Probabilitas Komulatif = 0,263 0,263 0,703 1,000 - Bilangan Random = 0.598

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 2 3

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):


(59)

Δτ ( t,v )= *++.,

Δτ (2,3 )=

, .- . 0 = 0,11 0=0,21966

τ (2,3) ← (1−0,50 ).(0,01)+(0,21966)

τ (2,3) ← 0,2247

Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 2 3 4

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (3,4 )=

,/ 3 . 0 = 0, /-=0,2434

τ (3,4) ← (1−0,50 ).(0,01)+( 0,2434)

τ (3,4) ← 0,2484

Semut ke – 3:

- Daftar semut 1 ke tujuan

- Probabilitas dari kota 1 ke setiap kota berikutnya dapat dihitung dengan persamaan

( , = ( , . η( ,

!

$%&'(( ( , # . η( , # !

0

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0) + (0.01*0,431406) + (0.01*0,353357) + (0.01*0,259943)

= 0,01045

dengan demikian dapat dihitung probabilitas dari kota 1 menuju setiap kota = Kota 1 = 0.00

Kota 2 = 0,412829 Kota 3 = 0,338141 Kota 4 = 0.248749

- Probabilitas Komulatif = 0,000 0,413 0,751 1,000 - Bilangan Random = 0.721

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 3 - Daftar semut = 1 3

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):


(60)

Δτ ( t,v )= *++.,

Δτ (1,3 )=

,-./ . 0 = ,. =0,088

τ (1,3) ← (1−0,50 ).(0,01)+(0,088)

τ (1,3) ← 0,093

Menghitung probabilitas dari titik 3 ke titik berikutnya:

( , = ( , . η( ,

!

$%&'(( ( , # . η( , # !

0

Σ[τ(r,u)]α.[η(r,u)]β = (0.01*0,353357) + (0.01*0,724113) + (0.01*0,97371)

= 0,0205118

Kota 1 = 0,172270 Kota 2 = 0,353023 Kota 3 = 0

Kota 4 = 0,474707

- Probabilitas Komulatif = 0,172270 0,525292758 0,525292758 1,000 - Bilangan Random = 0.519

- Memeriksa qk-1 < r ≤ qk → Kota yang dipilih adalah 2 - Daftar semut = 1 3 2

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,

Δτ (3,2 )=

,.- . 0 = 1,1 0=0,1810

τ (3,2) ← (1−0,50 ).(0,01)+(0,1810)

τ (3,2) ← 0,186

Titik tujuan selanjutnya hanya ke titik 4 - Daftar semut = 1 3 2 4

- Melakukan pembaruan lokal feromon menggunakan persamaan (3):

τ (t,v) ← (1−ρ ).τ (t,v)+Δτ (t,v)

Δτ ( t,v )= *++.,


(61)

Δτ (2,4 )=

,/1 . 0 = -, /-=0,1218

τ (2,4) ← (1−0,50 ).(0,01)+( 0,1218)

τ (2,4) ← 0,1268

Hasil rute semut pada siklus 1 adalah rute:

Hasil pencarian dari siklus pertama seperti yang terlihat pada tabel 4.5 berikut:

Tabel 4.5 Hasil Siklus I Algoritma Semut

Semut Route Panjang

Semut 1 1 3 2 4 6,263 Km

Semut 2 1 2 3 4 4,726 Km

Semut 3 1 3 2 4 6,263 Km

Melakukan pembaruan global feromon menggunakan persamaan (4)

τ (t,v)←(1−α ).τ (t,v) +α.Δτ (t,v)

Δτ ( t,v )= 4 5678 9:;< (=, > ∈ #=@ =@ A<:;

0

Melakukan pembaruan global untuk rute terbaik pada siklus I:

Rute terbaik adalah 1 2 3 4 dengan panjang 567 = 4,726 FG, sehingga diperoleh

Δτ ( t,v )=

0,3 H= 0,2116

τ (t,v)←(1−α ).τ (t,v) +α.Δτ (t,v)

τ (1,2)←(1−0,1 ).( 0,1128) +(0,1).( 0,2116)

τ (1,2)←0,12268

τ (2,3)←(1−0,1 ).( 0,2247) +(0,1).( 0,2116)

τ (2,3)←0,22339

τ (3,4)←(1−0,1 ).( 0,248) +(0,1).( 0,2116)

τ (3,4)←0,24436

Melakukan pembaruan global untuk rute lainnya:

τ (t,v)←(1−α ).τ (t,v) +α.Δτ (t,v)

Δτ (t,v) = 0

τ (1,3)←(1− 0,1) (0,093) +(0,1).(0)


(62)

τ (2,4)←(1− 0,1) (0,126) +(0,1).(0)

τ (2,4)←0,1143

Intensitas feromon pada setiap titik setelah diperbaharui (τij hasil dari siklus I) akan ditunjukkan oleh tabel 4.6 di bawah ini.

Tabel 4.6 Feromon Antar Titik Pada Graf

1 2 3 4

1 - 0,12268 0,0837 0

2 0,12268 - 0,22339 0,1143

3 0,0837 0,22339 - 0,24436

4 0 0,1143 0,24436 -

Dari tabel diatas terlihat bahwa terjadi perubahan nilai feromon. Untuk titik yang sering dikunjungi oleh semut terjadi penambahan intensitas feromon, sedangkan pada titik yang jarang dikunjungi semut terjadi pengurangan nilai intensitas feromon (evaporasi). Nilai intensitas feromon yang baru inilah yang akan digunakan untuk melakukan perhitungan pada siklus berikutnya.

Untuk melakukan perhitungan perjalanan, kemudian melakukan pencarian jalur terdekat, penulis melakukannya dengan cara mengimplementasikan kode program yang dapat dilihat seperti pada Tabel 4.7.

Tabel 4.7. Kode Program Untuk Penentuan Route Terpendek Baris Kode Kode Program 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

function AntColony(mode) {

var alfa = 1.0;

var beta = 1.0;

var rho = 0.5;

var asymptoteFactor = 0.01;

var pher = new Array();

var nextPher = new Array();

var prob = new Array();

var numAnts = 20;

var numWaves = 20;

for (var i = 0; i < numActive; ++i) { pher[i] = new Array();

nextPher[i] = new Array(); }


(63)

17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76

for (var i = 0; i < numActive; ++i) { for (var j = 0; j < numActive; ++j) {

pher[i][j] = 1;

nextPher[i][j] = 0.0; }

}

var lastNode = 0; var startNode = 0;

var numSteps = numActive - 1; var numValidDests = numActive; if (mode == 1) {

lastNode = numActive - 1; numSteps = numActive - 2; numValidDests = numActive - 1; }

for (var wave = 0; wave < numWaves; ++wave) {

for (var ant = 0; ant < numAnts; ++ant) { var curr = startNode;

var currDist = 0;

for (var i = 0; i < numActive; ++i) { visited[i] = false;

}

currPath[0] = curr;

for (var step = 0; step < numSteps; ++step) {

visited[curr] = true; var cumProb = 0.0;

for (var next = 1; next < numValidDests; ++next) {

if (!visited[next]) { prob[next] =

Math.pow(pher[curr][next], alfa) * Math.pow(dur[curr][next], 0.0 - beta);

cumProb += prob[next]; }

}

var guess = Math.random() * cumProb; var nextI = -1;

for (var next = 1; next < numValidDests; ++next) {

if (!visited[next]) { nextI = next;

guess -= prob[next]; if (guess < 0) {

nextI = next; break;

} } }

currDist += dur[curr][nextI]; currPath[step+1] = nextI; curr = nextI;

}

currPath[numSteps+1] = lastNode; currDist += dur[curr][lastNode]; // k2-rewire:


(64)

77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136

var lastStep = numActive; if (mode == 1) {

lastStep = numActive - 1; }

var changed = true; var i = 0;

while (changed) { changed = false;

for (; i < lastStep - 2 && !changed; ++i) {

var cost = dur[currPath[i+1]][currPath[i+2]];

var revCost = dur[currPath[i+2]][currPath[i+1]];

var iCost = dur[currPath[i]][currPath[i+1]];

var tmp, nowCost, newCost; for (var j = i+2; j < lastStep && !changed; ++j) {

nowCost = cost + iCost + dur[currPath[j]][currPath[j+1]];

newCost = revCost + dur[currPath[i]][currPath[j]]

+ dur[currPath[i+1]][currPath[j+1]];

if (nowCost > newCost) { currDist += newCost - nowCost; // Reverse the detached road segment.

for (var k = 0; k < Math.floor((j-i)/2); ++k) {

tmp = currPath[i+1+k];

currPath[i+1+k] = currPath[j-k];

currPath[j-k] = tmp; }

changed = true; --i; } cost += dur[currPath[j]][currPath[j+1]]; revCost += dur[currPath[j+1]][currPath[j]]; } } }

if (currDist < bestTrip) { bestPath = currPath; bestTrip = currDist; }

for (var i = 0; i <= numSteps; ++i) { nextPher[currPath[i]][currPath[i+1]] += (bestTrip - asymptoteFactor * bestTrip) / (numAnts *

(currDist - asymptoteFactor * bestTrip)); }

}


(65)

137 138 139 140 141 142 143 144

for (var j = 0; j < numActive; ++j) {

pher[i][j] = pher[i][j] * (1.0 - rho) + rho * nextPher[i][j];

nextPher[i][j] = 0.0; }

} } }

Keterangan:

1. Baris 1 s/d 144: Blok Algoritma Ant Colony Optimization dalam penentuan route terpendek.

Sebagai contoh, beberapa koordinat ponsel yang digunakan dapat dilihat pada Gambar 4.1, kemudian dihitung menggunakan algortima ACO untuk menhgasilkan rute perjalanan tercepat, output yang dihasilkan dapat dilihat seperti pada Gambar 4.2.


(66)

Gambar 4.3 Route Perjalanan

Pada tampilan Export merupakan hasil perhitungan jarak terdekat antar kota sesuai urutan pada menu export to csv, merupakan durasi perjalanan masing-masing kota yang ditampilkan dalam matrix. Tampilan Export dapat dilihat pada Gambar 4.4.

Gambar 4.4 Export

4.2. Pengujian Sistem

Perangkat lunak yang dirancang memerlukan pengujian data dengan melakukan pengujian dari sisi user untuk mendapatkan koordinat ponsel dan menentukan jarak


(1)

for (var i = 0; i < dir.legs.length; ++i) {

bestPathLatLngStr +=

dir.legs[i].end_location.toString() + "\n"; }

document.getElementById("exportData_hidden").innerHTML = "<textarea id='outputList' rows='10' cols='40'>"

+ bestPathLatLngStr + "</textarea><br>"; // Raw path output with labels

var labels = tsp.getLabels(); var order = tsp.getOrder(); var bestPathLabelStr = ""; if (labels[order[0]] == null) { bestPathLabelStr += order[0]; } else {

bestPathLabelStr += labels[order[0]]; }

bestPathLabelStr += ": " +

dir.legs[0].start_location.toString() + "\n"; for (var i = 0; i < dir.legs.length; ++i) { if (labels[order[i+1]] == null) {

bestPathLabelStr += order[i+1]; } else {

bestPathLabelStr += labels[order[i+1]]; }

bestPathLabelStr += ": " +

dir.legs[i].end_location.toString() + "\n"; }

document.getElementById("exportLabelData_hidden").innerHTML =

"<textarea id='outputLabelList' rows='10' cols='40'>" + bestPathLabelStr + "</textarea><br>";

// Optimal address order

var addrs = tsp.getAddresses(); var order = tsp.getOrder(); var bestPathAddrStr = ""; if (addrs[order[0]] == null) {

bestPathAddrStr += dir.legs[0].start_location.toString(); } else {

bestPathAddrStr += addrs[order[0]]; }

bestPathAddrStr += "\n";

for (var i = 0; i < dir.legs.length; ++i) { if (addrs[order[i+1]] == null) {

bestPathAddrStr += dir.legs[i].end_location.toString(); } else {

bestPathAddrStr += addrs[order[i+1]]; }

bestPathAddrStr += "\n"; }

document.getElementById("exportAddrData_hidden").innerHTML =

"<textarea id='outputAddrList' rows='10' cols='40'>" + bestPathAddrStr + "</textarea><br>";

// Optimal numeric order var bestOrderStr = "";


(2)

bestOrderStr += "" + (order[i] + 1) + "\n"; }

document.getElementById("exportOrderData_hidden").innerHTML =

"<textarea id='outputOrderList' rows='10' cols='40'>" + bestOrderStr + "</textarea><br>";

/* mengubah ke matrix*/ var durationsMatrixStr = ""; var dur = tsp.getDurations();

for (var i = 0; i < dur.length; ++i) {

for (var j = 0; j < dur[i].length; ++j) { durationsMatrixStr += dur[i][j]; if (j == dur[i].length - 1) {

durationsMatrixStr += "\n"; } else {

durationsMatrixStr += ", "; }

} }

document.getElementById("durationsData_hidden").innerHTML = "<textarea name='csvDurationsMatrix' rows='10' cols='40'>"

+ durationsMatrixStr + "</textarea><br>";

var hitung = tsp.getNumDirectionsComputed();

document.getElementById("HitungData_hidden").innerHTML = formatTime(hitung);

}

function clickedAddList() {

var val = document.listOfLocations.inputList.value; val = val.replace(/\t/g, ' ');

document.listOfLocations.inputList.value = val; addList(val);

}

function addList(listStr) {

var listArray = listStr.split("\n");

for (var i = 0; i < listArray.length; ++i) { var listLine = listArray[i];

if (listLine.match(/\(?\s*\-?\d+\s*,\s*\-?\d+/) || listLine.match(/\(?\s*\-?\d+\s*,\s*\-?\d*\.\d+/) || listLine.match(/\(?\s*\-?\d*\.\d+\s*,\s*\-?\d+/) ||

listLine.match(/\(?\s*\-?\d*\.\d+\s*,\s*\-?\d*\.\d+/)) {

// Line looks like lat, lng.

var cleanStr = listLine.replace(/[^\d.,-]/g, ""); var latLngArr = cleanStr.split(",");

if (latLngArr.length == 2) {

var lat = parseFloat(latLngArr[0]); var lng = parseFloat(latLngArr[1]);

var latLng = new google.maps.LatLng(lat, lng); tsp.addWaypoint(latLng,

addWaypointSuccessCallbackZoom); }

} else if (listLine.match(/\(?\-?\d*\.\d+\s+\-?\d*\.\d+/)) {


(3)

var latLngArr = listline.split(" "); if (latLngArr.length == 2) {

var lat = parseFloat(latLngArr[0]); var lng = parseFloat(latLngArr[1]);

var latLng = new google.maps.LatLng(lat, lng); tsp.addWaypoint(latLng,

addWaypointSuccessCallbackZoom); }

} else if (listLine.match(/\S+/)) {

// Non-empty line that does not look like lat, lng. Interpret as address.

tsp.addAddress(listLine, addAddressSuccessCallbackZoom);

} } }

function reverseRoute() { tsp.reverseSolution(); }

8.

Database Model

<?php

class M_mobile extends CI_Model { /**

* Constructor */

function __construct(){ parent::__construct(); }

/* Inisialisasi nama tabel yang digunakan */ var $table = 'tb_client';

function all_track() {

$this->db->select('*');

$this->db->from('tb_client'); $this->db->where('aktif','Y'); return $this->db->get();

}

function data_client() {

$this->db->select('*');

$this->db->from('tb_client'); return $this->db->get(); }

function get_track() {

$this->db->select('*');

$this->db->from('tb_client'); $this->db->limit(1);

$this->db->where('id_client ',$this->session->userdata('id_client'));

return $this->db->get(); }


(4)

/**

* Menghapus sebuah data kiba */

function hapus($id_client) {

$this->db->delete('tb_client', array('id_client' => $id_client));

} /**

* Tampilkan latitude */

function get_LatLong($id) {

$this->db->select('*');

$this->db->from('tb_client'); $this->db->limit(1);

$this->db->where('id_client ',$this->session->userdata('id_client'));

return $this->db->get(); }

/**

* Menambah data */

function track_lokasi($long) {

$this->db->insert('tb_track', $long); return TRUE;

} /**

* Menambah data client */

function tambah_client($profile) {

$this->db->insert('tb_client', $profile); return TRUE;

} /**

* Update data lokasi */

function update_lokasi($id_client,$lat,$long) {

$data = array('lat' => $lat, 'long' => $long); $this->db->where('id_client', $id_client);

$this->db->update('tb_client', $data); return TRUE;

} /**

* Update data profile */

function update_profile($id_client,$profile) {


(5)

$this->db->update('tb_client', $profile); return TRUE;

} /**

* Mendapatkan data sebuah kiba */

function get_client_by_id($id) {

return $this->db->get_where('tb_client', array('id_client' => $id), 1);

} /**

* Validasi lokasi */

function valid_lokasi($session_login) {

$query = $this->db->get_where('tb_track', array('session_login' => $session_login));

return $query; }


(6)

B-1

CURRICULUM VITAE

Nama

: DONNY SANJAYA

Alamat Sekarang : JALAN MERPATI NO 8 A, KEC. MEDAN SUNGGAL

KOTA MEDAN

Alamat Orang Tua : JALAN SERITI NO 89 KEL. GAMBIR BARU,

KEC. KISARAN TIMUR KAB. ASAHAN

Telp/ HP

: 085261180060

Email

: donie_sanjaya@live.com

Riwayat Pendidikan:

1997 – 2002 SEKOLAH DASAR (SD) NEGERI 010096 GAMBIR BARU KISARAN

2002 – 2005 SEKOLAH MENENGAH PERTAMA (SMP) NEGERI 1 KISARAN

2005 – 2008 SEKOLAH MENENGAH ATAS (SMA) NEGERI 1 KISARAN

2008 – 2011 D-III TEKNIK INFORMATIKA UNIVERSITAS SUMATERA UTARA

Keahlian/kursus yang diikuti:

Keahlian Bahasa Pemrograman:

-

Berbasis Web: PHP Native dan Framework, HTML & CSS, JavaScript & Jquery

-

Berbasis Windows: Visual Basic

-

Database: MSSQL & MySQL

Kursus: