Skripsi
Oleh:
Trivaldi Rahardja
1111091000038
2018 M / 1438 H
PENERAPAN ALGORITMA ANT COLONY OPTIMIZATION DALAM
MENYELESAIKAN TRAVELING SALESMAN PROBLEM
Skripsi
Oleh :
Trivaldi Rahardja
1111091000038
2018 M / 1438 H
ii
iii
iv
v
HALAMAN PERNYATAAN PERSETUJUAN PUBLIKASI SKRIPSI
UNTUK KEPENTINGAN AKADEMIS
Sebagai civitas akademik UIN Syarif Hidaytaullah Jakarta, saya yang bertanda
tangan di bawah ini:
Dibuat di : Jakarta
Pada tanggal : 25 Juni 2018
Yang menyatakan
(Trivaldi Rahardja)
vi
KATA PENGANTAR
vii
5. Seluruh Dosen di Program Studi Teknik Informatika UIN Syarif Hidayatullah
Jakarta yang telah memberikan ilmu, pengalaman, bantuan, dan kerjasama
yang sangat berharga bagi penulis.
6. Bapak Novel Zulham selaku General Marketing Operasional PT Wahana
Prestasi Logistik yang selalu membimbing penulis dalam melakukan
penelitian di kantor perusahaan.
7. Seluruh sahabat sahabati PMII Komisariat Fakultas Sains dan Teknologi
yang penulis cintai, dan Faiz Nur Faiqoh yang selalu memberikan semangat
dan support selama ini untuk mengerjakan skripsi.
8. Seluruh teman-teman Program Studi Teknik Informatika Fakultas Sains dan
Teknologi UIN Syarif Hidayatullah.
9. Semua pihak yang secara langsung maupun tidak langsung membantu penulis
dalam menyelesaikan skripsi ini.
Semoga kebaikan dan bantuan yang sudah diberikan kepada penulis kiranya
dicatat sebagai amal baik oleh Allah SWT. Penulis menyadari bahwa skripsi ini jauh
dari kata sempurna, oleh karena itu penulis sangat mengharapkan kritik dan saran
yang bersifat membangun dari pembaca ke alamat email
trivaldirahardja.tr@gmail.com.
Akhir kata, semoga skripsi ini dapat memberi manfaat bagi semua. Amiin
Amiin ya Robbal ‘alamiin.
Wassalamu’alaikum Wr. Wb.
Trivaldi Rahardja
1111091000038
viii
Penulis : Trivaldi Rahardja
Program Studi : Teknik Informatika
Judul : Penerapan Algoritma Ant Colony Optimization Dalam
Menyelesaikan Traveling Salesman Problem (Studi Kasus: PT
Wahana Prestasi Logistik)
ABSTRAK
ix
DAFTAR ISI
ABSTRAK .................................................................................................................. ix
x
2.3.1. Metode Pengumpulan Data .................................................................... 5
2.3. Graf.............................................................................................................. 14
2.4. Android........................................................................................................ 16
xi
2.9. SQLite ......................................................................................................... 26
2.12. Flowchart................................................................................................. 30
xii
3.2.3. Tahap Implementasi ............................................................................. 44
xiii
5.2.1. Perangkat Pengembangan Sistem ........................................................ 91
6.1. Kesimpulan.................................................................................................. 97
xiv
DAFTAR GAMBAR
xv
Gambar 5. 6 Hasil Tampilan Halaman Rute Pengiriman Berbentuk Maps ............... 86
Gambar 5.7 Rute Terpendek 10 Lokasi ..................................................................... 96
xvi
DAFTAR TABEL
xvii
BAB 1
PENDAHULUAN
1
2
Sistem Operasi
25%
Android
BlackBerry
1.3.1. Metode
1.3.2. Tools
1.3.3. Proses
2. Untuk memenuhi salah satu syarat dalam menempuh gelar Strata Satu
(S1) program studi Teknik Informatika Fakultas Sains dan Teknologi
Universitas Islam Negeri Syarif Hidayatullah Jakarta.
1. Studi Pustaka
Penulis melakukan studi pustaka terkait dengan hal-hal yang
bekaitan dengan penelitian ini. Studi pustaka dilakukan dengan
berbagai literatur sejenis, membaca buku-buku referensi, jurnal
ilmiah, dan situs internet yang dibutuhkan dalam penelitian.
2. Studi Lapangan
Penulis melakukan studi lapangan dengan metode wawancara
dan kuesioner. Wawancara dilakukan kepada Bapak Novel Zulham
selaku General Manager Operasional PT Wahana Prestasi Logistik,
6
BAB I PENDAHULUAN
BAB VI PENUTUP
8
Uin Syarif Hidayatullah Jakarta
9
hanya sekali, lalu berkahir di kota yang sama dimana dia memulai perjalanannya.
Berikut merupakan ilustrasi TSP:
feromon lebih rendah. Hal Ini menyiratkan dua hal. Satu, semut mulai terakumulasi
pada jalur yang lebih pendek (lebih menguntungkan). Dua, jalur yang lebih panjang
(kurang menguntungkan) mengakibatkan semut lebih menjadi sedikit dengan seiring
berjalannya waktu, hingga tidak ada semut lagi yang mengunjungi jalan ini.
Berdasarkan fenomena di atas, ACO cukup baik untuk memecahkan berbagai
masalah seperti memilih rute yang efisien untuk kendaraan, jadwal kegiatan lantai,
mengatur hidroelektrik Generasi, analisis pengelompokan, penjadwalan kursus,
optimalisasi waktu sinyal lalu lintas dan manajemen aset perkerasan.
Gambar 2. 2 (a) Semut melewati setiap jalur dengan probabilitas sama, (b)Seiring berjalannya waktu,
rute terpendek akan lebih menguatkan, (c), Semua semut melewati rute terpendek. (Sumber: Ali, Kar,
2018)
𝛼 𝛽
[τ𝑖𝑗 ] . [ƞ𝑖𝑗 ]
𝑃𝑖𝑗𝑘 =
∑[τ𝑖𝑘 ]𝛼 . [ƞ𝑖𝑘 ]𝛽
1 2 2
rumus , dimana 𝑑𝑖𝑗 = √(x𝑖 − x𝑗 ) + (y𝑖 − 𝑦𝑗 ) dengan syarat apabila
𝑑𝑖𝑗
𝛥Ʈ𝑖𝑗 = ∑ 𝛥 Ʈ𝑘𝑖𝑗
𝑘=1
inisialisasi kota, koordinat, kota sebagai depot, parameter ACO dan TSP
menyusun rute kunjungan setiap semut ke setiap depot
while proses belum memenuhi kriteria pemberhentian, lakukan
for setiap depot, lakukan
for setiap pedagang keliling pada depot, lakukan
proses probabilitas transisi hingga kembali ke depot
end for
end for
hitung total jarak perjalanan pedagang keliling
for setiap sisi, lakukan
ubah nilai Pheromone
end for
end while
return rute terpendek yang ditemukan
2.3. Graf
Sebuah busur selalu memiliki dua endpoint, misalnya busur {H,I} memiliki
endpoint H dan I. Graf biasanya digunakan untuk memodelkan objek-objek diskrit
dan hubungan antar objek-objek tersebut.
Gambar 2.4 (a) Graf tak-berarah semi-Hamilton, (b) Graf tak-berarah Hamilton, (c) Graf berarah
semi-Hamilton, (d) Graf berarah Hamilton (Sumber: Perdana, 2018)
Hingga saat ini belum ada teorema yang menyatakan syarat perlu dan syarat
cukup yang sederhana untuk menentukan suatu graf memiliki lintasan/ sirkuit
Hamilton. Akan tetapi, terdapat beberapa teorema umum tentang keberadaan
lintasan/ sirkuit Hamilton dengan menggunakan beberapa syarat cukup (bukan syarat
perlu), yaitu:
• Teorema Dirac. Jika G adalah graf sederhana dengan n buah simpul (n≥3)
sedemikian sehingga derajat setiap simpul paling sedikit n/2 (yaitu, d(v) ≥ n/2
untuk setiap simpul v di G), maka G adalah graf Hamilton.
• Teorema Ore. Jika G adalah graf sederhana dengan n buah simpul (n≥3)
sedemikian sehingga d(v) + d(u) ≥ n untuk setiap pasang simpul tidak
bertetangga u dan v, maka G adalah graf Hamilton.
• Di dalam graf lengkap G dengan n buah simpul (n≥3) terdapat sebanyak (n-
1)!/2 sirkuit Hamilton.
• Di dalam graf lengkap G dengan n buah simpul (n≥3 dan n gasal), terdapat
(n-1)/2 sirkuit Hamilton yang saling lepas (tidak ada sisi yang beririsan). Jika
n genap dan n≥4, maka di dalam G terdapat (n-2)/2 sirkuit Hamilton yang
saling lepas.
2.4. Android
2.4.2.1. Antarmuka
Antarmuka pengguna pada Android didasarkan pada manipulasi
langsung, menggunakan masukan sentuh yang serupa dengan tindakan di
dunia nyata, misalnya menggesek (swiping), mengetuk (tapping), dan
mencubit (pinching), untuk memanipulasi objek di layar. Masukan pengguna
Gambar 2. 6 Layar notifikasi Android yang diakses dengan menggeser layar (swipe) dari bagian atas
layar (Sumber: Wikipedia, 2018)
2.4.2.2. Aplikasi
Android memungkinkan penggunanya untuk memasang aplikasi
pihak ketiga, baik yang diperoleh dari toko aplikasi seperti Google Play,
Amazon Appstore, ataupun dengan mengunduh dan memasang berkas APK
dari situs pihak ketiga. Di Google Play, pengguna bisa menjelajah,
mengunduh, dan memperbarui aplikasi yang diterbitkan oleh Google dan
pengembang pihak ketiga, sesuai dengan persyaratan kompatibilitas Google.
Google Play akan menyaring daftar aplikasi yang tersedia berdasarkan
2.5. Java
• Sederhana.
• Berorientasi objek.
• Dapat didistribusikan dengan mudah.
• Intepreter.
• Robust.
• Aman.
• Architecture Neutral.
• Portable.
• Permormance.
• Multithreaded.
• Dinamis.
Pada Google Map API terdapat 4 jenis pilihan model peta yang disediakan
oleh Google, diantaranya adalah:
2.8. JSON
Menurut Firando (2014) JSON (javaScript Object Notation) adalah format
pertukaran data yang ringan, mudah dibaca dan ditulis oleh manusia, serta mudah
diterjemahkan dan dibuat (generate) oleh komputer. Format ini dibuat berdasarkan
bagian dari Bahasa Pemograman Javascript, Standar ECMA-262 Edisi ke-3 –
Desember 1999. JSON merupakan format teks yang tidak bergantung pada bahasa
pemograman apapun karena menggunakan gaya bahasa yang umum digunakan oleh
programmer keluarga C termasuk C, C++, C#, Java, JavaScript, Perl, Python, dll.
Oleh karena itu sifat-sifat tersebut, menjadikan JSON ideal sebagai bahasa
pertukaran-data.
JSON terbuat dari dua struktur:
• Kumpulan pasangan nama/nilai. Pada beberapa bahasa, hal ini dinyatakan
sebagai objek (object), rekaman (record), struktur (struct), kamus
(dictionary), tabel hash (hash table), daftar berkunci (keyed list), atau
associative array.
• Daftar nilai terurutkan (ordered list of values). Pada kebanyakan bahasa, hal
ini dinyatakan sebagai larik (array), vektor (vector), daftar (list), atau urutan
(sequence).
2.9. SQLite
Menurut Ramadani, Tammam, Setyo, dkk (2017) SQLite merupakan sebuah
sistem manajemen basisdata relasional yang bersifat ACID-compliant dan memiliki
ukuran pustaka kode yang relatif kecil, ditulis dalam bahasa C. SQLite merupakan
proyek yang bersifat public domain yang dikerjakan oleh D. Richard Hipp.
SQLite ini adalah mesin database SQL yang tertanam pada sistem yang kita
gunakan. Tidak seperti pada paradigma client-server umumnya, Inti SQLite bukanlah
sebuah sistem yang mandiri yang berkomunikasi dengan sebuah program, melainkan
sebagai bagian integral dari sebuah program secara keseluruhan.
Sehingga protokol komunikasi utama yang digunakan adalah melalui
pemanggilan API secara langsung melalui bahasa pemrograman. Mekanisme seperti
ini tentunya membawa keuntungan karena dapat mereduksi overhead, latency times,
dan secara keseluruhan lebih sederhana. Seluruh elemen basisdata (definisi data,
tabel, indeks, dan data) disimpan sebagai sebuah file. Kesederhanaan dari sisi disain
tersebut bisa diraih dengan cara mengunci keseluruhan file basis data pada saat
sebuah transaksi dimulai.
SQLite dapat digunakan di Windows Phone, Android, iPhone, PHP, Firefox,
Chrome dan lain – lain yang dapat dilihat di: http://www.sqlite.org/famous.html.
Pada browser, biasanya SQLite ini digunakan untuk menyimpan kongfigurasi seperti
history, bookmark, dan cache, sedangkan pada mobile, penggunaan SQLite ini
sangat banyak seperti kontak, database tabel dsb.
SQLite adalah produk public domain. Artinya tidak punya lisensi, anda boleh
mengambil binary atau source codenya secara free / gratis. Berikut merupakan tipe
data yang didukung SQLite :
adalah sesuatu yang mendefinisikan cara dua entitas untuk berkomunikasi. Entitas di
sini adalah sebuah software yang nyata berbeda (dalam layanan) dengan software
lain.
Dengan API, panggilan-panggilan yang bolak-balik antar aplikasi diatur
melalui web service. Web service adalah kumpulan standar teknis dan protokol,
termasuk XML (Extensible Markup Language), bahasa umum yang digunakan oleh
aplikasi-aplikasi tersebut selama berkomunikasi di Internet.
Dengan demikian, API adalah standar komunikasi yang dibuka oleh
perusahaan software, agar dapat dimanfaatkan oleh pengembang pihak ketiga untuk
mendesain aplikasi yang memanfaatkan layanan mereka dengan mudah (Wulandari,
2013).
1. Pemodelan Bisnis
Pemodelan bisnis ini merupakan pemodelan yang digunakan untuk
memodelkan fungsi bisnisnya, seperti apa saja yang berhubungan dengan
proses bisnis, informasi apa saja yang harus dihasilkan dan siapa yang
membuatnya, serta bagaimana alur dan proses informasi tersebut.
2. Pemodelan Data
Dalam pemodelan data ini, dapat ditentukan data-data yang
dibutuhkan dari pemodelan bisnisnya, menentukan atribut dan relasi dengan
data-data yang lain.
3. Pemodelan Proses
Pemodelan proses ini merupakan tahapan dalam menerapkan fungsi
bisnis yang sudah didefinisikan sebelumnya, terutama yang berkaitan dengan
data.
4. Pemodelan Aplikasi
Dalam tahapan ini, aplikasi program yang sudah dibuat berdasarkan
pemodelan data dan proses siap diimplementasikan.
5. Pengujian dan Pergantian
Setelah tahapan pemodelan aplikasi, maka perlu dilakukan pengujian
terhadap komponen-komponen yang dibuat. Apabila pengujian ini dapat
dilakukan dengan baik, maka tim pengembang komponen dapat menuju ke
pengembangan komponen berikutnya.
Secara normal, seandainya pengembangan sistem membutuhkan waktu
sebanyak 180 hari, maka dengan adanya metode RAD ini, waktu tersebut dapat
dipersingkat menjadi 30-90 hari untuk menyelesaikan sistem perangkat lunak
tersebut. Keterlibatan pengguna dalam proses analisa dan perancangan sistemnya,
sangat diperlukan dalam model RAD. Dengan demikian dapat memnuhi kebutuhan
pengguna dengan baik dan secara nyata akan dapat meningkatkan tingkat kepuasan
pengguna sistem (Hidayati, 2018).
2.12. Flowchart
2.13.3. Wawancara
2.13.4. Kuesioner
• Mencari teori atau hasil penelitian yang akan digunakan sebagai sandaran
atau tempat berpijak. Misalnya bila permasalahan kita mengenai siswa
terhadap matematika, maka teori atau hasil penelitian yang akan digunakan
sebagai landasan adalah mengenai sikap atau faktor yang dapat
mempengaruhi sikap.
• Dengan telah dilakukannya studi literatur, peneliti dapat melihat seberapa
jauh hasil penelitian yang telah ditemukan orang lain yang berhubungan
dengan masalah yang akan kita teliti.
• Studi literatur bertujuan melihat strategi, prosedur, dan alat-alat ukur
(instrumen) yang sudah terbukti berhasil atau tidak (gagal) baik dalam
penelitian yang serupa atau berhubungan dengan penelitian yang akan kita
lakukan.
• Studi literatur dapat membantu peneliti dalam mengartikan atau
menterjemahkan hasil penelitian (E. M. Sangadji & Sopiah, 2013).
METODOLOGI PENELITIAN
Bab ini akan membahas tentang metode penelitian yang penulis gunakan
dalam menyusun skripsi ini. Metode penelitian yang digunakan terbagi menjadi dua
yaitu metode pengumpulan data dan metode pengembangan sistem. Penjelasan lebih
lanjutnya adalah sebagai berikut:
41
Uin Syarif Hidayatullah Jakarta
42
3.1.2.1. Wawancara
Penulis telah melakukan wawancara dengan narasumber Bapak Novel
Zulham selaku General Manager Operasional PT Wahana Prestasi Logistik.
Wawancara ini dilakukan pada tanggal 22 November 2017, dan berlokasi di
kantor PT Wahana Prestasi Logistik Rempoa, Ciputat. Penulis melakukan
wawancara untuk memperoleh dan mengumpulkan data yang dibutuhkan
antara lain permasalahan yg dialami oleh tim operasional khususnya kurir
dalam upaya mencari rute terpendek pengiriman paket. Belum ada sistem
yang memudahkan para kurir untuk menemukan rute terpendek mereka
sehingga kurir diharuskan memilih sendiri rute nya dan mengakibatkan dapat
terjadi pemborosan waktu, biaya, dan tenaga. Hasil Wawancara dapat dilihat
pada lampiran 3.
3.1.2.2. Kuesioner
Peneliti membuat kuesioner yang berisi pertanyaan-pertanyaan untuk
memastikan latar belakang dari pembuatan penelitian ini yaitu untuk
mendapatkan presentase dari responden yang kesulitan dalam menemukan
rute paling pendek pada pengiriman paket ke setiap alamat tujuan, lalu
presentase minat mereka terhadap dibuatnya aplikasi pencarian rute terpendek
ini. Data-data tersebut penulis gunakan untuk memperkuat latar belakang
penelitian ini.
Responden dari kuesioner ini ditujukan kepada para kurir PT Wahana
Prestasi Logistik sebagai pengguna akhir aplikasi yang akan penulis bangun.
Kuesioner ini dilakukan pada tanggal 22 November 2017, dan berlokasi di
kantor PT Wahana Prestasi Logistik Rempoa, Ciputat. Dari hasil penyebaran
kuesioner didapat data seluruh kurir yang beroperasi di wilayah Kecamatan
Ciputat sejumlah 12 kurir sebagai responden. Hasil kuesioner dapat dilihat
pada lampiran 2.
3.2.2.4. Pengkodean
Untuk tahap pengkodean (coding), bahasa pemrograman yang
digunakan adalah java dengan menggunakan tools Android Studio.
4.1.2.1. Wawancara
Penulis melakukan wawancara kepada 1 narasumber, yaitu Pak Novel
Zulham selaku General Manager Operasional PT Wahana Prestasi Logistik.
General Manager Operasional membawahi berberapa divisi yang ada,
diantaranya ialah: kurir yang mengantarkan paket ke alamat penerima, supir
yang mengantarkan paket dari agen atau kantor menuju ke kantor lain, dan
tim sorting barang yang melakukan penyortiran barang sesuai dengan
wialyah alamat yang dituju.
Wawancara dilakukan seputar pertanyaan mengenai permasalahan
pencarian rute terpendek. Berdasarkan diskusi tersebut diketahui secara rinci
mengenai alur kerja kurir dalam melakukan pengiriman paket. Menurut Pak
Novel, tim kurir akan sangat terbantu bila ada aplikasi yang dapat
46
Uin Syarif Hidayatullah Jakarta
47
4.1.2.2. Kuesioner
Responden yang mengisi kuesioner ini adalah kurir PT Wahana
Prestasi Logistik. Kuesioner ini dilakukan pada tanggal 22 November 2017,
dan berlokasi di kantor PT Wahana Prestasi Logistik Rempoa, Ciputat. Dari
hasil penyebaran kuesioner didapatkan data sebanyak 12 kurir yang menjadi
responden dalam penelitian ini. Tabel dibawah ini merupakan berberapa
pertanyaan yang ada dalam kuesioner:
Responden
No. Cara Menentukan Lintasan Pengiriman Paket
n %
1 Dari terdekat hingga ke yang terjauh 7 orang 58,3 %
Alamat yang diketahui akan lebih
2 2 orang 16,67 %
diutamakan
3 Tidak tentu 3 orang 25 %
Jumlah 12 orang 100 %
Responden
No. Sulit dalam Menemukan Lintasan Terpendek
n %
1 Ya 10 orang 83,3 %
2 Tidak 2 orang 16,7 %
Jumlah 12 orang 100 %
Responden
No. Sistem Operasi yang digunakan
n %
1 Android 8 orang 66,7 %
2 Blackberry 1 orang 8,3 %
3 Symbian 3 orang 25 %
Jumlah 12 orang 100 %
No Fitur Keterangan
Login Fitur ini berfungsi untuk membuat kurir
1
masuk ke dalam menu utama
Register Fitur ini berfungsi untuk mendaftarkan
2
user kurir yang belum terdaftar.
Lihat Surat Jalan Fitur ini berfungsi untuk menampilkan
3
surat jalan yang telah diinput
Lihat Rute Fitur ini berfungsi untuk menampilkan
Pengiriman rute pengiriman barang hasil dari
4
Berbentuk Maps pencarian rute terpendek dalam bentuk
maps
No Fitur Keterangan
Lihat Rute Fitur ini berfungsi untuk menampilkan
Pengiriman rute pengiriman barang hasil dari
5
Berbentuk List pencarian rute terpendek dalam bentuk list
/ daftar
Mengulang Proses Fitur ini berfungsi untuk mengulang
Pencarian Rute kembali proses pencarian rute terpendek
6
Terpendek yang telah tersimpan dalam basisdata local
sebelumnya
Logout Fitur ini berfungsi untuk membuat kurir
7
keluar dari menu utama
contoh kasus TSP dari 10 lokasi berbeda. Penentuan jumlah lokasi ini penulis
gunakan agar lebih mudah dalam memahaminya.
1. Mendefinisikan Lokasi
Pada sistem yang penulis bangun, untuk mendapat koordinat dari
lokasi alamat pengiriman, penulis menggunakan salah satu fungsi
google maps API yaitu geocode(). Dengan menggunakan fungsi ini,
sistem dapat mendapatkan koordinat latitude dan longitude dari suatu
alamat. Untuk hasil lokasi alamat beserta koordinatnya dapat dilihat
pada tabel berikut:
Koordinat
Id
Alamat
Lokasi
Latitude Longitude
0 PT. Wahana Prestasi Logistik -6.290973 106.758483
1 Depok, sawangan, jawa barat -6.4085961 106.76474
2 Pondok indah jakarta -6.2656714 106.78314
3 Srengseng jakarta barat -6.20427 106.75295
4 Jalan Medan Merdeka Selatan -6.18157 106.82838
No. 8-9 Blok B Lt. 3,
RT.11/RW.2, Gambir,
RT.11/RW.2, Gambir, Kota
Jakarta Pusat, Daerah Khusus
Ibukota Jakarta 10110
5 Kantor Walikota Jakarta Timur -6.21406 106.94425
6 Jalan Prapanca Raya kebayoran -6.24887 106.80701
baru
7 Kebon Bawang Tanjung Priok -6.11946 106.89011
8 Jalan Raya Kembangan No.2 -6.18447 106.73656
jakarta barat
Koordinat
Id
Alamat
Lokasi
Latitude Longitude
9 Jalan Tanah Abang I No.1, -6.172455 106.82057
Petojo Selatan, Gambir
Id
0 1 2 3 4 5 6 7 8 9
Lokasi
0 0.0 13.02 13.02 9.60 14.35 9.60 22.24 23.91 12.02 14.79
1 13.02 0.0 15.93 22.63 26.07 18.27 29.27 34.85 24.98 26.83
2 13.02 15.93 0.0 7.56 10.56 3.22 18.71 20.04 10.35 11.10
3 9.60 22.63 7.56 0.0 8.71 7.75 21.19 17.84 2.84 8.26
4 14.35 26.07 10.56 8.71 0.0 7.80 13.31 9.68 10.16 1.32
5 9.60 18.27 3.22 7.75 7.80 0.0 15.66 17.01 10.56 8.58
6 22.24 29.27 18.71 21.19 13.31 15.66 0.0 2.05 23.21 14.44
7 23.91 34.85 20.04 17.84 9.68 17.01 2.05 0.0 18.45 9.67
8 12.02 24.98 10.35 2.84 10.16 10.56 23.21 18.45 0.0 9.39
9 14.79 26.83 11.10 8.26 1.32 8.58 14.44 9.67 9.39 0.0
3. Menetapkan Parameter
Terdapat berberapa parameter yang perlu didefinisikan diawal
sebelum menjalankan algoritma ini, diantaranya ialah:
• Banyak kota beserta koordinat. Sudah dijelaskan pada langkah
1
Id
Banyak semut
Lokasi
0 97
1 74
2 88
3 102
4 92
5 84
6 91
7 92
8 100
9 80
Jumlah 900
Id
Rute Total Jarak (km)
Semut
0 2-5-3-8-9-4-7-6-0-1-2 97.5
1 2-5-0-3-8-9-4-7-6-1-2 100.46
2 0-2-5-3-8-4-9-7-6-1-0 93.26
3 4-9-7-6-5-2-0-3-8-1-4 109.37
4 9-4-7-2-5-0-3-8-1-6-9 122.54
Id
Rute Total Jarak (km)
Semut
5 9-4-5-2-0-3-8-7-6-1-9 115.35
6 2-0-5-3-8-4-9-7-6-1-2 100.05
7 5-2-0-9-4-3-8-7-6-1-5 112.88
8 4-9-5-2-0-3-8-7-6-1-4 115.36
9 2-5-3-8-4-9-7-6-0-1-2 98.26
10 5-2-0-3-8-9-4-7-6-1-5 99.6
11 2-5-4-9-8-3-0-1-7-6-2 112.86
12 2-5-3-8-4-9-7-6-0-1-2 98.26
13 3-8-9-4-5-2-0-1-6-7-3 100.71
14 4-9-7-3-8-2-5-0-1-6-4 108
15 9-4-5-2-0-3-8-7-6-1-9 115.35
16 5-2-0-3-8-4-9-7-6-1-5 100.36
17 4-9-3-8-5-2-0-1-6-7-4 94.19
18 2-5-4-9-7-6-0-3-8-1-2 109.71
19 2-5-9-4-3-8-0-1-7-6-2 115.38
20 2-0-5-3-8-9-4-7-6-1-2 99.29
21 5-2-0-4-9-7-6-1-3-8-5 109.87
22 2-5-0-3-8-9-4-7-6-1-2 100.46
23 4-9-5-2-0-3-8-7-6-1-4 115.36
24 9-4-8-3-2-5-0-1-6-7-9 96.28
25 2-5-0-3-8-9-4-7-6-1-2 100.46
26 9-4-3-8-5-2-0-1-6-7-9 94.62
27 0-2-5-4-9-7-6-8-3-1-0 99.72
28 8-3-9-4-5-2-0-1-6-7-8 100.2
29 4-9-3-8-5-2-0-1-6-7-4 94.19
Lalu untuk pheromone dari setiap sisi antar lokasi yang tidak
dilalui oleh semut, dihitung dengan persamaan:
𝑝ℎ𝑒𝑟𝑜𝑚𝑜𝑛𝑒 = ƿ . 𝑝ℎ𝑒𝑟𝑜𝑚𝑜𝑛𝑒
Id
0 1 2 3 4 5 6 7 8 9
Lokasi
0 0.0 0.0194 0.0192 0.0188 0.0174 0.0183 0.0197 0.0180 0.0181 0.0178
1 0.0194 0.0 0.0195 0.0188 0.0174 0.0196 0.0187 0.0187 0.0180 0.0173
2 0.0192 0.0195 0.0 0.0189 0.0166 0.0194 0.0177 0.0180 0.0201 0.0171
3 0.0188 0.0188 0.0189 0.0 0.0192 0.0196 0.0190 0.0191 0.0194 0.0188
4 0.0174 0.0174 0.0166 0.0192 0.0 0.0190 0.0190 0.0189 0.020 0.0194
5 0.0183 0.0196 0.0194 0.0196 0.0190 0.0 0.0178 0.0174 0.0190 0.0174
6 0.0197 0.0187 0.0177 0.0190 0.0190 0.0178 0.0 0.0196 0.0158 0.0186
7 0.0180 0.0187 0.0180 0.0191 0.0189 0.0174 0.0196 0.0 0.0175 0.0196
8 0.0181 0.0180 0.0201 0.0194 0.020 0.0190 0.0158 0.0175 0.0 0.0197
9 0.0178 0.0173 0.0171 0.0188 0.0194 0.0174 0.0186 0.0196 0.0197 0.0
4.3.1.1. Login
Merupakan hal pertama yang harus dilakukan oleh user untuk dapat
masuk ke dalam menu utama aplikasi ini. Bila user belum memiliki akun,
user dapat masuk ke menu utama dengan melakukan register. Setelah user
melakukan login atau register maka sistem akan memulai sesi yang berfungsi
untuk menyimpan informasi akun user.
4.3.1.2. Resgister
Merupakan proses pendaftaran akun baru oleh user yang belum
memiliki akun untuk dapat masuk ke dalam menu utama aplikasi ini.
4.3.1.7. Logout
Merupakan proses yang berfungsi untuk menghapus sesi yang
sebelumnya dibuat oleh proses login maupun register. Setelah sesi dihapus,
maka untuk dapat masuk ke dalam menu utama user diharuskan untuk
melakukan login atau register kembali.
Keterangan Gambar
Keterangan Gambar
Keterangan Gambar
4.3.4. Pengkodean
Untuk tahap pengkodean (coding), bahasa pemrograman yang digunakan
adalah java dengan menggunakan tools Android Studio.
4.3.4.1. Login
Berikut merupakan code yang digunakan untuk menjalankan fungsi
login. Nama fungsi utama untuk melakukan login ialah checkLogin() dengan
paramater yang digunakan nik dan password kurir. Didalam fungsi ini
terdapat dialog yang berfungsi untuk menampilkan pop up “Logging in” saat
program melakukan request API login untuk memvalidasi akun user. API
login ini menggunakan paramater nik dan password yang diisi oleh user lalu
mengirimnya dengan method POST. Hasil request API login ini dikirim
dalam bentuk JSON.
Bila berhasil maka program akan menyimpan sesi lalu pindah
halaman ke menu utama dengan menggunakan fungsi intent dan menutup pop
up, bila login gagal maka sistem akan menampilkan pesan kesalahan dengan
menggunakan fungsi Toast.makeText().
private void checkLogin(final String nik, final String password) {
String tag_string_req = "req_login";
pDialog.setMessage("Logging in ...");
showDialog();
StringRequest strReq = new StringRequest(Method.POST,
AppConfig.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
if (!error) {
JSONObject user = jObj.getJSONObject("user");
String id_kurir = user.getString("id");
String name = user.getString("name");
session.setKurir(id_kurir, nik, name);
session.setLogin(true);
hideDialog();
Intent intent = new Intent(LoginActivity.this,MainActivity.class);
startActivity(intent);
finish();
} else {
hideDialog();
String errorMsg = jObj.getString("error_msg");
Toast.makeText(getApplicationContext(),errorMsg,
Toast.LENGTH_LONG).show();
}
} catch (JSONException e) {
hideDialog();
e.printStackTrace();
Toast.makeText(getApplicationContext(), "Json error: " +
e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hideDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("nik", nik);
params.put("password", password);
return params;
}
};
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
4.3.4.2. Register
Berikut merupakan code yang digunakan untuk menjalankan fungsi
register. Nama fungsi utama untuk melakukan register ialah registerUser()
dengan paramater yang digunakan name, nik, dan password kurir. Didalam
fungsi ini terdapat dialog yang berfungsi untuk menampilkan pop up
“Registering” saat program melakukan request API register untuk
mendaftarkan akun user. API register ini menggunakan paramater name, nik
dan password yang diisi oleh user lalu mengirimnya dengan method POST.
Hasil request API register ini dikirim dalam bentuk JSON.
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("name", name);
params.put("nik", nik);
params.put("password", password);
return params;
}
};
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
}
obj.getString("nama_kurir"),
obj.getInt("id_kurir"),
obj.getInt("id"),
obj.getInt("jumlah_barang")
);
arraylist.add(wp);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
Collections.sort(arraylist, new Comparator<GetSuratJalanModel>() {
@Override
public int compare(GetSuratJalanModel lhs, GetSuratJalanModel
rhs) {
return rhs.getIdSJ().compareTo(lhs.getIdSJ());
}
});
adapter = new GetSuratJalanAdapter(GetSuratJalan.this, arraylist);
list.setAdapter(adapter);
hidePDialog();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
hidePDialog();
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<>();
params.put("id_kurir", session.getIdKurir());
return params;
}
};
AppController.getInstance().addToRequestQueue(SuratJalanReq,
"get_surat_jalan");
}
lokasi yang terdapat pada surat jalan dengan mengirim id surat jalan dalam
method POST. Lokasi yang ditangkap berupa bentuk JSON. Setelah sistem
mendapat semua lokasi yang tersedia, selanjutnya sistem akan mencari geo
lokasinya yang berupa longitude dan latitude dengan fungsi
geocoder.getFromLocationName(). Setelah geo lokasi-nya didapat, kemudian
sistem akan menjalankan algoritma ACO dengan menggunakan fungsi
runTSP().
Didalam fungsi runTSP() terdapat pemanggilan fungsi dari class
TravelingSalesman untuk mengeksekusi algoritma ACO dengan
menggunakan parameter ants yaitu jumlah semut, gen yaitu jumlah siklus
semut, evap yaitu nilai penguapan jejak kaki semut, alpha yaitu nilai
pengendali jejak kaki semut, dan beta sebagai nilai pengendali jarak. Setelah
algoritma berhasil mendapatkan rute terpendek, maka sistem akan
menampilkan garis penghubung sebagai rute dengan menggunakan fungsi
routeVertice.add().
private void showMap(){
mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(GetRuteSJ.this);
} private void getPaketSJ(){
StringRequest strReq = new StringRequest(Request.Method.POST,
AppConfig.URL_GET_RUTE_SJ, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
JSONArray jArr = null;
try {jArr = new JSONArray(response); } catch (JSONException e) {
e.printStackTrace();
}if (jArr != null) {
for (int i = 0; i < jArr.length(); i++) {
try {
JSONObject obj = jArr.getJSONObject(i);
GetRuteSJModel wp = new GetRuteSJModel(
obj.getString("nama_kurir"),
obj.getString("sj_created_at"),
obj.getString("nomor"),
obj.getString("tanggal_kirim"),
obj.getString("nama_barang"),
obj.getString("alamat_penerima"),
obj.getString("nama_penerima"),
obj.getString("nama_pengirim"),
obj.getString("jumlah_barang"),
obj.getInt("id_surat_jalan"),
obj.getInt("id_kurir")
);
arraylist.add(wp);
List<Address> addresses = null;
try {
addresses =
geocoder.getFromLocationName(obj.getString("alamat_penerima"), 1);
}
} catch (IOException e) {e.printStackTrace();}
} catch (JSONException e) { e.printStackTrace(); }}
runTSP();
showMap();
}}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
error.getMessage(), Toast.LENGTH_LONG).show();
hidePDialog(); } }) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("sj_id", sj_intent[0]);
return params;
}};
AppController.getInstance().addToRequestQueue(strReq, "get_rute_sj");
}
private void runTSP(){
mst = setM.main(routeArray);
int ants = routeArray.size()*3
int gen = routeArray.size()*3;
double evap = 0.5;
int alpha = 2;
int beta = 7;
TravelingSalesman travelingSalesman = new TravelingSalesman(ants, gen,
evap, alpha, beta, mst, routeArray);
travelingSalesman.run(this);
for (int i = 0; i < best_route.length; i++) {
routeVertice.add(routeArray.get(best_route[i]));
};
}
5.3.5.7. Logout
Berikut merupakan code yang digunakan untuk melakukan logout.
Nama fungsi utamanya ialah logoutUser(). Ketika user menekan tombol
logout pada menu utama, maka sistem akan menjalankan fungsi ini lalu
menghapus sesi dengan menggunakan fungsi session.setLogin(false),
kemudian pindah ke halaman login dengan menggunakan fungsi intent().
private void logoutUser() {
session.setLogin(false);
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
Pengujian Fitur /
No Hasil yang diharapkan Hasil Pengujian
Menu
Pengujian Fitur /
No Hasil yang diharapkan Hasil Pengujian
Menu
5.1. Hasil
Keterangan Gambar
Berikut merupakan hasil tampilan
halaman login. Halaman login
merupakan halaman yang pertama kali
dilihat oleh user saat membuka aplikasi.
83
84
Keterangan Gambar
Berikut merupakan hasil tampilan
halaman register. Halaman register
merupakan halaman saat user menekan
tombol register pada halaman login.
Keterangan Gambar
Berikut merupakan hasil tampilan
halaman lihat surat jalan. Halaman lihat
surat jalan merupakan halaman yang
dilihat oleh user saat memilih menu lihat
surat jalan pada halaman menu utama.
Keterangan Gambar
Berikut merupakan user interface
halaman rute pengiriman berbentuk
maps. Halaman ini dapat diakses oleh
user setelah memilih surat jalan dengan
bentuk maps pada halaman lihat surat
jalan.
Koordinat
Id Alamat
Longitude Latitude
0 PT Wahana Prestasi Logistik -6.290973 106.758483
-6.320615 106.760968
Jl. Lestari Pisangan Ciputat
1 Tim. Kota Tangerang Selatan
Banten 15419
87
Koordinat
Id Alamat
Longitude Latitude
Jl. Legoso Raya No.80a, -6.316703 106.753654
Pisangan, Ciputat Tim., Kota
2
Tangerang Selatan, Banten
15419
Jl. Legoso Raya 16-36 Pisangan -6.315913 106.753792
3 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
JL.MURISALIM NO.27A -6.319242 106.75590
RT.006/02 KEL.PISANGAN,
4
KEC.CIPUTAT TIMUR,
TANGERANG SELATAN
Jl. H. Muri Salim II 49-52 -6.318785 106.756842
Pisangan Ciputat Tim. Kota
5
Tangerang Selatan Banten
15419
Jl Boyong (Gg Boyong) no -6.320352 106.755685
8 RT 2 RW 2 Pisangan, Ciputat
6
Timur, Tangerang Selatan
15419
JL.H MURI SALIM II NO.45 A -6.318836 106.757053
7
CIPUTAT TIMUR, TANGSEL
-6.318865 106.756658
Koordinat
Id Alamat
Longitude Latitude
Jl. Legoso Raya No.41, -6.319974 106.754548
Pisangan, Ciputat Tim., Kota
9
Tangerang Selatan, Banten
15419
Jl. Puri Intan No.46 Pisangan -6.312643 106.758182
10 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Gg. Baping 26-57 Pisangan -6.321985 106.758148
11 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Tarumanegara Cireundeu -6.316167 106.763984
12 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Legoso Raya 125 Pisangan -6.321478 106.75509
13 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Legoso Raya 9-15 Pisangan -6.322140 106.75589
14 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Nurul Huda No.115 Cemp. -6.305727 106.75375
Putih Ciputat Tim. Kota
15
Tangerang Selatan
Banten 15412
-6.311689 106.753514
Jl. Ir H. Juanda No.40A Cemp.
Putih Ciputat Tim. Kota
16
Tangerang Selatan
Banten 15412
89
Koordinat
Id Alamat
Longitude Latitude
Jl. Lurah Disah No.23 Pisangan -6.3215219 106.754172
17 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Legoso Raya, Pisangan, -6.32284680 106.756937
18. Ciputat Tim., Kota Tangerang
Selatan, Banten 15419
: JALAN LEGOSO RAYA -6.30850700 106.7565242
NO.36 RT003 RW01 CIPUTAT
19
TIMUR KOTA TANGERANG
SELATAN BANTEN
Jl. Dahu Pisangan Ciputat Tim. -6.3183811 106.7537722
20 Kota Tangerang Selatan Banten
15419
Jl. Semanggi II 2 Cemp. Putih -6.3096067 106.7550756
21 Ciputat Tim. Kota Tangerang
Selatan Banten 15412
Jl. Ir H. Juanda No.40, Cemp. -6.311782 106.753445
Putih, Ciputat Tim., Kota
22
Tangerang Selatan,
Banten 15412
Jl.Ciputat Molek V no.54a. -6.314470 106.753157
Pisangan, Ciputat Timur, Kota
23
Tangerang Selatan, Banten
15419
-6.3154756 106.752773
Jl. H. Koweng No.54 Pisangan
24 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
90
Koordinat
Id Alamat
Longitude Latitude
Jl. Pondok Hijau Raya Blok A2 -6.31794 106.7512069
No.18 Pisangan Ciputat Tim.
25
Kota Tangerang Selatan Banten
15419
Jl. Pondok Hijau Raya Kota -6.3189492 106.75110330000001
26
Tangerang Selatan Banten
Jl. Hijau Lestari Raya Pisangan -6.3188059 106.7515736
27 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jalan Batan 35 Pisangan Ciputat -6.311889 106.756091
28 Tim. Kota Tangerang Selatan
Banten 15419
Jl. H. Limun 39-36 Pisangan -6.308994 106.757534
29 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. H. Limun No.26A Pisangan -6.308377 106.75723
30 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
Jl. Kertamukti Gg. H.Asen -6.3064288 106.75859
Saimin Pisangan Ciputat Tim.
31
Kota Tangerang Selatan Banten
15419
jl legoso raya no 1 rt 001/01 -6.3232168 106.758126
32 pisangan, ciputat timur,
tangerang selatan 15419
Jl. Lurah Disah No.9 Pisangan -6.321488 106.754167
33 Ciputat Tim. Kota Tangerang
Selatan Banten 15419
91
0 -31 - 30 -29 - 21 - 19 - 28 - 10 - 12 - 1 - 32 - 11 - 18 - 14 - 13 - 33 - 17 - 9 - 6 - 8 - 5
- 7 - 4 - 25 - 27 - 26 - 20 - 2 - 3 - 24 - 23 - 22 - 16 - 15 - 0
Hasil tampilan rute pengiriman terpenden dengan 34 lokasi dapat dilihat pada
gambar 5.8.
5.2. Pembahasan
berdasarkan hasil kuesioner rata-rata jumlah pengiriman yang dilakukan oleh kurir
PT Wahana Prestasi Logistik dalam satu hari yaitu 33 pengiriman ditambah 1 lokasi
awal. Lalu nilai p (pengendali penguapan pheromone) sebesar 0.5. Berikut
merupakan hasil uji coba parameter nilai α dan β dengan 3 kali pengujian:
Berdasarkan hasil uji coba tersebut, terdapat 3 kandidat nilai α dan β dengan
nilai rata-rata yang paling optimal, diantaranya ialah 1 dan 5, 2 dan 6, serta 2 dan 7.
Selanjutnya, untuk lebih mengoptimalkan hasil proses dari algoritma ACO, penulis
akan melakukan uji coba dengan menggunakan parameter ants dan generations
sebesar 2 kali lipat dan 3 kali lipat dari besaran yang dipakai sebelumnya, yaitu 34
ants dan generations menjadi 68 dan 102, dengan menggunakan besar parameter α
dan β dari 3 kandidat terbaik sebelumnya. Berikut merupakan hasil uji coba
parameter nilai ants, α dan β dengan 3 kali pengujian:
93
Tabel 5.6 Besaran Parameter yang Digunakan Dalam Proses Algoritma ACO
Variabel Nilai
α (alpha) 2
β (beta) 7
Berdasarkan hasil uji coba tersebut, didapatkan hasil jarak terpendek dan
lintasan terpendek yang sama, tetapi dengan lama waktu proses yang berbeda.
Berikut merupakan hasil tampilan rute terpendek dengan 10 lokasi:
PENUTUP
6.1. Kesimpulan
Penerapan algoritma Ant Colony Optimization (ACO) bertujuan
menyelesaikan Traveling Salesman Problem (TSP) terkait dengan pencarian rute
pengiriman terpendek di PT Wahana Prestasi Logistik berbasis sistem operasi
Android. Penelitian dilakukan dengan metode wawancara, kemudian kuesioner,
hingga melakukan pengujian terhadap aplikasi. Selanjutnya, dapat diambil sejumlah
kesimpulan sebagai berikut:
• Aplikasi yang dibangun sudah berjalan pada perangkat Android dan bisa
mengakses data surat jalan yang berada di PT Wahana Prestasi Logstik API,
serta berhasil menunjukkan rute pengiriman terpendek dalam bentuk maps
maupun list.
• Algoritma Ant Colony Optimization (ACO) mampu mencari rute terpendek
dari 34 lokasi berbeda dengan total jarak 10.18 kilometer dan lama waktu
eksekusi algoritma selama 59 detik.
• Aplikasi pencari rute pengiriman terpendek ini sudah bisa menampilkan
berberapa fitur yaitu login, logout, lihat surat jalan, lihat rute pengiriman
berbentuk maps, lihat rute pengiriman berbentuk list, mengulang proses
pencarian rute terpendek, dan melakukan register.
6.2. Saran
Berdasarkan kekurangan serta keterbatasan ilmu yang dimiliki oleh penulis
dalam mengembangkan aplikasi ini, maka ada beberapa hal yang penulis sarankan
dalam pengembangan aplikasi selanjutnya, yaitu:
97
Uin Syarif Hidayatullah Jakarta
98
DAFTAR PUSTAKA
Abdul Aziz, Wiharto, Bayu W. (2013). Pemanfaatan Web Service Moodle berbasis
Rest-Json untuk Membangun Moodle Online Learning Extension berbasis
Android. Surakarta: Universitas Sebelas Maret.
Achmad Ridwan, Aisyatul Karima, S.Kom, MCS (2015), Perbandingan Algoritma
Djikstra dan Algoritma Ant Colony Optimation dalam Traveling Salesman
Problem (TSP) Pada Kota Semarang. Semarang: Universitas Dian
Nuswantoro.
Aldio Firando (2014). Pemanfaatan Teknologi GPS dan Kompas Dalam
Pembangunan Aplikasi Friend Finder Berbasis Mobile Pada Platform
Android. Bandung: Perpustakaan UNIKOM.
Artha Johar (2016). Mengenal Perusahaan Jasa Pengiriman Barang (Online).
(http://www.arthanugraha.com/mengenal-perusahaan-jasa-pengiriman-
barang), diakses pada tanggal 18 Januari 2018.
Corinne Brucato (2013). The Traveling Salesman Problem. University of Pittsburgh.
Dewi Gayatri (2018). Teknik Pengambilan Sampel (Online).
(http://staff.ui.ac.id/system/files/users/dewi_g/material/teknikpengambilansa
mpel.pdf), diakses pada tanggal 27 Juni 2018.
Farnanda Herda Perdana (2018). Modul Ajar Teori Graf dan Otomata (Online).
(https://edoc.site/modul-tgo-pdf-free.html), diakses pada tanggal 15 Juni
2018.
Hardianto (2013), Implementasi Algoritma Heuristik untuk Optimasi Rute Terpendek
Bontang.: Sekolah Tinggi Teknologi Bontang.
Hasnain Ali, Arpan Kumar Kar (2018), Discriminant Analysis using Ant Colony
Optimization – An Intra Algorithm Exploration. Procedia Computer Science:
International Conference on Computational Inteligence and Data Science
(ICCIDS).
Kairanbay Magzhan, Hajar Mat Jani. (2013). A Review And Evaluations Of Shortest
Path Algorithms. International Journal of Scientific & Tecknology Research.
LAMPIRAN
1. Responden Kuesioner
2. Hasil Kuesioner
Jumlah Paket
60
53 52
50
40
40
34
31 32
28 29
30 26
24 Jumlah Paket
22
20
20
10
0
1 2 3 4 5 6 7 8 9 10 11 12
16.70%
Ya Tidak
83.30%
16.70%
Ya Tidak
83.30%
Sistem Operasi
25%
Android
BlackBerry
8.30%
Ya Tidak
91.70%
3. Hasil Wawancara
4. Permohonan Riset
5. SK Penelitian
6. Pernyataan Wawancara
7. Blackbox Testing