BAB 4 IMPLEMENTASI DAN PENGUJIAN
4.3 Running Time
Untuk mengetahui running time harus dilakukan proses pengujian sistem dengan melakukan pencarian rute terpendek, pengujian akan dilakukan pada semua titik tempat wisata yang telah ditentukan yaitu sebanyak 18 titik. Akan dilakukan 17 kali proses pengujian karena titik awal tidak boleh dijadikan titik tujuan dan titik awalnya ditetapkan Danau Siombak, jadi akan dilakukan pencarian rute terpendek dari Danau Siombak menuju 17 tempat wisata lainnya serta akan dicatat running time nya. Berikut ini adalahtable hasil running timedangrafiknya.
Tabel 4.3Hasil Running Time
No Titik Awal Titik Tujuan Running Time
(ms) 1 Danau Siombak Graha Maria Annai Valengkanni 1035
2 Danau Siombak Hairos Waterpark 1014
3 Danau Siombak Istana Maimun 1013
4 Danau Siombak Kolam Renang Citra Garden 1013 5 Danau Siombak Kolam Renang Kenanga 1019 6 Danau Siombak Kolam Renang Paradiso 1013 7 Danau Siombak Kolam Renang Selayang 1014 8 Danau Siombak Kuil Shri Mariamman 1016 9 Danau Siombak Masjid Raya Al Mashun 1014
10 Danau Siombak Mora Indah 1015
11 Danau Siombak Rahmat International Museum
and Wildlife Galery 1012
12 Danau Siombak Taman Ahmad Yani 1015
13 Danau Siombak Taman Gajah Mada 1015
14 Danau Siombak Taman Kebun Bunga 1013
15 Danau Siombak Taman Sri Deli 1013
16 Danau Siombak Taman Teladan 1012
17 Danau Siombak Tjong A Fie 1013
Rata-rata running time 1015.2
Gambar 4.8 Grafik Running Time
1000 1005 1010 1015 1020 1025 1030 1035 1040
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Waktu (ms)
Pencarian ke
Grafik Running Time
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan hasil studi literatur, implementasi, dan pengujian sistem, maka kesimpulan yang didapat dari penelitian ini adalah sebagai berikut:
1. Algoritma Genetika mampu melakukan pencarian dan menghasilkan rute terpendek dengan baik.
2. Berdasarkan hasil running time, Algoritma Genetika dengan crossover rate 0,3 dan mutation rate 0,3 bisa melakukan pencarian rute terpendek dengan cepat dengan rata-rata waktu pencarian 1015,2ms yang sama dengan 1,015s.
3. Algoritma Genetika merupakan suatu Algoritma yang powerfull tetapi juga membutuhkan resource yang besar.
5.2Saran
Aplikasi pencarian rute terpendek wisata Kota Medan yang dirancang masih dapat dikembangkan lebih jauh lagi untuk memperoleh hasil yang lebih baik. Beberapa hal yang perlu dikembangkan untuk penelitian lebih lanjut antara lain:
1. Menambahkan fitur-fitur penunjang sebuah aplikasi wisata seperti pencarian hotel atau penginapan, pusat pembelian oleh-oleh, dan rekomendasi kuliner khas kota medan.
2. Mengkombinasikan Algoritma Genetika dengan Algoritma lain agar bisa melakukan pencarian rute terpendek dari lokasi terkini pengguna menuju tempat wisata yang di inginkan.
DAFTAR PUSTAKA
Almuzakki, M.A. 2013. Rancang Bangun Aplikasi Location-Based Service Pencarian Lokasi Wisata Di Kota Semarang Berbasis Android.
Barakbah, A.R., Karlita, T. & Ahsan, A.S. 2013. Logika dan Algoritma : Surabaya Egham. 2016. Gartner Says Five of Top 10 Worldwide Mobile Phone Vendors
Increased Sales in Second Quarter of 2016. Gartner.com, 19 Agustus 2016 (diakses 22 November 2016).
Hayati, E.N. & Setiawan, A. 2013. Program Dinamis Untuk Penentuan Lintasan Terpendek Dengan Pendekatan Algoritma Floyd-Warshall. Dinamika Teknik 7(1): 17-25.
Hayati, E.N. & Yohanes, A. 2014. Pencarian Rute Terpendek Menggunakan Algoritma Greedy. Seminar Nasional IENACO : 391-397.
Hidayatno, A., Darjat. & H L T, Hendry. 2016. Penerapan Algoritma Genetika Pada Perencanaan Lintasan Kendaraan.
Joni, I.D.M.A.B. & Nurcahyawati, V. 2012. Penentuan Jarak Terpendek Pada Jalur Pendistribusian Barang Di Pulau Jawa Dengan Menggunakan Algoritma Genetika. Jurnal Nasional Pendidikan Teknik Informatika (JANAPATI) 1(3):
244-258.
Looper, C.D. 2016. From Android 1.0 To Android 7.0 Here’s How The Top Mobile OS Has Evolved Over The Years. Digitaltrends.com, 16 Oktober 2016 (diakses 18 November 2016).
Pratama, Iosi. 2015. Ciri-ciri Algoritma Menurut Donald Ervin Knuth. Iosinotes.com, 29 Juni 2015 (diakses 11 Januari 2016).
Roza, Imelda., Narwen., Zulakmal. 2014. Graf Garis (Line Graph) Dari Graf Siklus , Graf Lengkap Dan Graf Bintang. Jurnal Matematika UNAND 3 (2). 1-4.
Siboro, R. 2010. Penerapan Algoritma Genetika Untuk Menentukan Jalur Terpendek (Shortest Path). Skripsi. Universitas Sumatera Utara.
Sukaton, R.M. 2011. Penggunaan Algoritma Genetika Dalam Masalah Jalur Terpendek Pada Jaringan Data. Skripsi. Universitas Indonesia.
Verma, V.K. & Kumar, B. 2014. Genetic algorithm: an overview and its application.
International Journal of advanced studies in Computer Science and Engineering 3(2): 21-27.
Walde, N., Khatri, P., Mehta, D. & Avinash, A.V. 2014. Android Location Based Service. International Journal of Advanced Research in Computer and Communication Engineering 3(3): 5269-5272.
Widodo, A.W. & Mahmudy, W.F. 2010. Penerapan Algoritma Pada Sistem Rekomendasi Wisata Kuliner. Jurnal Ilmiah KURSOR 5(4): 205-211.
LISTING PROGRAM
a. Source Code Halaman Utama
#Region Project Attributes
#ApplicationLabel: WM
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
SubProcess_Globals
Dim GMAP AsGoogleMap Public S AsSQL
Public C AsCursor Public DB AsString Public Proses AsBoolean Private Timer1 AsTimer EndSub
SubGlobals
Private MF AsMapFragment PrivateMK(18) AsMarker Private TH AsTabHost
Private SP_KATEGORI AsSpinner Private LV_KATEGORI AsListView Dim LOKASI AsList
Dim MDS, MDT AsList Dim INDEX AsInt Dim T1, T2 AsDouble EndSub
SubActivity_Create(FirstTime AsBoolean) Activity.LoadLayout("main")
Activity.AddMenuItem("Graph", "GRP")
If MF.IsGooglePlayServicesAvailable = FalseThen
ToastMessageShow("Please install Google Play Services", True)
EndIf
DB = CopyDBFromAssets("db.db") S.Initialize(DB, "db.db", True) Timer1.Initialize("Timer1", 500) Buat_Menu : Ambil_Data_Lokasi EndSub
SubActivity_Resume
If S.IsInitialized = FalseThen
S.Initialize(DB, "db.db", True) EndIf
EndSub
SubCopyDBFromAssets(FileName AsString) AsString Dim TargetDir AsString
TargetDir = File.DirInternal
File.Copy(File.DirAssets, FileName, TargetDir, FileName) Return TargetDir
GMAP = MF.GetMap
Dim cp AsCameraPosition
cp.Initialize(3.567852, 98.657435, 12) GMAP.AnimateCamera(cp)
GMAP.Clear
Dim NAMA, LAT, LON, KAT AsString
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA` ORDER BY `NAMA`
ASC")
For i = 0To C.RowCount - 1 C.Position = i
NAMA = C.GetString("NAMA") LAT = C.GetString("LATITUDE") LON = C.GetString("LONGITUDE") KAT = C.GetString("KATEGORI")
MK(i) = GMAP.AddMarker(LAT, LON, NAMA) MK(i).Snippet = KAT
Next
LoadBitmap(File.DirAssets, "ic_action_refresh.png"), True) Activity.AddMenuItem("Bantuan", "Bantuan")
Activity.AddMenuItem("Tentang", "Tentang")
TH.AddTab("Beranda", "home")
TH.AddTab("Lokasi Wisata", "lokasi_wisata") EndSub
SubAmbil_Data_Lokasi Dim LBL AsLabel
LBL = LV_KATEGORI.SingleLineLayout.Label LBL.TextSize = 14
LBL.TextColor = Colors.DarkGray
SP_KATEGORI.Clear
C = S.ExecQuery("SELECT `KATEGORI` FROM `LOKASI WISATA` GROUP BY `KATEGORI` ORDER BY `KATEGORI` ASC")
For i = 0To C.RowCount - 1 C.Position = i
SP_KATEGORI.Add(C.GetString("KATEGORI")) Next
LV_KATEGORI.Clear
C = S.ExecQuery("SELECT `NAMA` FROM `LOKASI WISATA` WHERE
`KATEGORI` = '"& SP_KATEGORI.SelectedItem &"' ORDER BY `NAMA` ASC") For i = 0To C.RowCount - 1
C.Position = i
LV_KATEGORI.AddSingleLine(C.GetString("NAMA")) Next
LOKASI.Initialize
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA` ORDER BY `NAMA`
ASC")
SubSP_KATEGORI_ItemClick (Position AsInt, Value AsObject) LV_KATEGORI.Clear
C = S.ExecQuery("SELECT `NAMA` FROM `LOKASI WISATA` WHERE
`KATEGORI` = '"& SP_KATEGORI.SelectedItem &"' ORDER BY `NAMA` ASC") For i = 0To C.RowCount - 1
C.Position = i
LV_KATEGORI.AddSingleLine(C.GetString("NAMA")) Next
EndSub
SubLV_KATEGORI_ItemClick (Position AsInt, Value AsObject) TH.CurrentTab = 0
Dim LAT, LON AsString
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA` WHERE `NAMA` = '"& Value &"'")
C.Position = 0
LAT = C.GetString("LATITUDE") LON = C.GetString("LONGITUDE") Dim cp AsCameraPosition
cp.Initialize(LAT, LON, 18) GMAP.AnimateCamera(cp) For i = 0To MK.Length - 1
IfMK(i).Title = Value Then
MK(i).InfoWindowShown = True Exit
EndIf Next
EndSub
SubBTN_CARI_Click
Dim TA AsInt = InputList(LOKASI, "Pilih Titik Awal:", -1) If TA >= 0Then
Dim TT AsInt = InputList(LOKASI, "Pilih Titik Tujuan:", -1)
If TT >= 0Then
ProgressDialogShow2("Loading...", False) Sleep(0)
T1 = DateTime.Now
Algoritma_Genetika(LOKASI.Get(TA), LOKASI.Get(TT)) T2 = DateTime.Now
EndIf EndIf
EndSub
SubTimer1_Tick
If Proses = FalseAnd INDEX < MDS.Size Then Map_Drawer.Sumber = MDS.Get(INDEX) Map_Drawer.Tujuan = MDT.Get(INDEX) StartService(Map_Drawer)
Proses = True INDEX = INDEX + 1 ElseIf INDEX = MDS.Size Then
ProgressDialogHide Timer1.Enabled = False
Msgbox((T2 - T1) &" ms", "Waktu Proses") EndIf
EndSub
SubH(XS AsDouble, YS AsDouble, XT AsDouble, YT AsDouble) AsDouble ReturnAbs((XT - XS) + (YT - YS))
EndSub
SubAlgoritma_Genetika(TA AsString, TT AsString) Dim NA, NT AsAntNode
DimNmrAsString
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA` WHERE `NAMA` = '"& TT &"'")
C.Position = 0 Dim X, Y AsDouble
X = C.GetString("LATITUDE") Y = C.GetString("LONGITUDE")
'Isi Node
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA` ORDER BY ID ASC")
DimN(C.RowCount) AsAntNode For i = 0To C.RowCount - 1
C.Position = i
Nmr = C.GetString("ID") Dim Lat, Lon AsDouble
Lat = C.GetString("LATITUDE") Lon = C.GetString("LONGITUDE")
N(i).Initialize(Nmr, H(Lat, Lon, X, Y))
'Isi TA DAN TT
IfC.GetString("NAMA") == TA Then NA = N(i)
EndIf
IfC.GetString("NAMA") == TT Then
NT = N(i) EndIf
Next
'Isi Edge
For i = 0To N.Length - 1
C = S.ExecQuery("SELECT * FROM `DATA JARAK` WHERE
`LOKASI1` = '"& i &"'")
DimE(C.RowCount) AsAntEdge
N(i).adjacencies = E Next
'GA
Dim GA AsACO
GA.AcoSearch(NA, NT)
Dim Hasil AsList = GA.printPath(NT) Dim Sumber, Tujuan AsString
MDS.Initialize : MDT.Initialize
If Hasil.Size >= 2Then
For i = 1To Hasil.Size - 1 Dim Temp AsAntNode
Temp = Hasil.Get(i-1) : Sumber = Temp.value Temp = Hasil.Get(i) : Tujuan = Temp.value
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA`
WHERE ID = '"& Sumber &"'") C.Position = 0
MDS.Add(C.GetString("LATITUDE") &", "&
C.GetString("LONGITUDE"))
C = S.ExecQuery("SELECT * FROM `LOKASI WISATA`
WHERE ID = '"& Tujuan &"'") C.Position = 0
MDT.Add(C.GetString("LATITUDE") &", "&
C.GetString("LONGITUDE")) Next
EndIf
Timer1.Enabled = True Proses = False
INDEX = 0 EndSub
b. Source Code Map Drawer
#Region Service Attributes
#StartAtBoot: False
#End Region
SubProcess_Globals
Dim Sumber, Tujuan AsString Dim travelduration AsInt = 0 Dim traveldistance AsInt = 0 Dim pline AsPolyline
Dim polyPoints AsString EndSub
SubService_Create EndSub
SubService_Start (StartingIntent AsIntent) GetDirections(Sumber, Tujuan)
EndSub
SubService_Destroy
Main.Proses = False EndSub
SubGetDirections(source AsString, destination AsString) Dim j AsHttpJob
j.Initialize("Directions", Me)
j.Download2("https://maps.googleapis.com/maps/api/directions/j son", ArrayAsString("origin", source,"destination", destination,
"key", "AIzaSyBdMuhy4YpjnPYizmcoi7d8jV9Skggw7SE")) EndSub
SubJobDone(j AsHttpJob) If j.Success Then
Dim parser AsJSONParser
parser.Initialize(j.GetString) Dim root AsMap = parser.NextObject Ifroot.Get("status") = "OK"Then
Dim routes AsList = root.Get("routes") ForEach colroutes AsMapIn routes
Dim legs AsList = colroutes.Get("legs") ForEach collegs AsMapIn legs
Dim steps AsList = collegs.Get("steps")
ForEach colsteps AsMapIn steps Dim duration AsMap = colsteps.Get("duration")
travelduration = travelduration + duration.Get("value")
Dim distance AsMap = colsteps.Get("distance")
traveldistance = traveldistance + distance.Get("value")
Next
Dim overview_polyline AsMap = colroutes.Get("overview_polyline")
ToastMessageShow("Error: "& root.Get("status"), True)
EndIf Dim Points AsList Points.Initialize jo.InitializeContext
Points = jo.RunMethod("decodePoly", Array(polyPoints)) If Points.Size >0Then
pline = Main.GMAP.AddPolyline pline.Points = Points
pline.Color = Colors.Black
Dim Lat1, Lon1, Lat2, Lon2 AsString Dim DLat1, DLon1, DLat2, DLon2 AsDouble Dim Skip AsBoolean = False
For i = 0To Sumber.Length - 1
IfSumber.CharAt(i) <>","And Skip = FalseThen Lat1 = Lat1 &Sumber.CharAt(i)
ElseifSumber.CharAt(i) = ","Then Skip = True
Else
Lon1 = Lon1 &Sumber.CharAt(i) EndIf
Next
Skip = False
For i = 0To Tujuan.Length - 1
IfTujuan.CharAt(i) <>","And Skip = FalseThen Lat2 = Lat2 &Tujuan.CharAt(i)
ElseifTujuan.CharAt(i) = ","Then Skip = True
Else
Lon2 = Lon2 &Tujuan.CharAt(i) EndIf
Next
DLat1 = Lat1 : DLat2 = Lat2 DLon1 = Lon1 : DLon2 = Lon2
Main.GMAP.AddMarker(DLat1, DLon1,
"Sumber").InfoWindowShown = True
Main.GMAP.AddMarker(DLat2, DLon2, "Tujuan")
Dim cp AsCameraPosition
cp.Initialize(DLat1, DLon1, 14) Main.GMAP.AnimateCamera(cp) EndIf
EndSub
c. Source Code Halaman Bantuan
#Region Activity Attributes
#FullScreen: False
d. Source Code Halaman Tentang
#Region Activity Attributes
#FullScreen: False
e. Source Code Halaman Graph
#Region Activity Attributes
#FullScreen: False
#IncludeTitle: False
#End Region
SubProcess_Globals
Dim GMAP AsGoogleMap EndSub
SubGlobals
Private MF AsMapFragment Private LL AsLatLng Private PL AsPolyline Private Point AsList Private LV AsList PrivateMK(18) AsMarker EndSub
SubActivity_Create(FirstTime AsBoolean) Activity.LoadLayout("graph")
If MF.IsGooglePlayServicesAvailable = FalseThen
ToastMessageShow("Please install Google Play Services.", True)
EndIf EndSub
SubMF_Ready
GMAP = MF.GetMap
Dim cp AsCameraPosition
cp.Initialize(3.567852, 98.657435, 12) GMAP.AnimateCamera(cp)
Buat_Vertex : Buat_Edge EndSub
SubBuat_Vertex
GMAP.Clear : LV.Initialize
Dim NAMA, LAT, LON, KAT AsString
Main.C = Main.S.ExecQuery("SELECT * FROM `LOKASI WISATA` ORDER BY `NAMA` ASC")
For i = 0To Main.C.RowCount - 1 Main.C.Position = i
NAMA = Main.C.GetString("NAMA") LAT = Main.C.GetString("LATITUDE") LON = Main.C.GetString("LONGITUDE") KAT = Main.C.GetString("KATEGORI") MK(i) = GMAP.AddMarker(LAT, LON, NAMA) MK(i).Snippet = KAT
LL.Initialize(LAT, LON) LV.Add(LL)
Next EndSub
SubBuat_Edge
PL = GMAP.AddPolyline Point.Initialize
Main.C = Main.S.ExecQuery("SELECT * FROM 'DATA JARAK' ORDER BY 'LOKASI1' ASC")
For i = 0To Main.C.RowCount - 1 Main.C.Position = i
Point.Add(LV.Get(Main.C.GetInt("LOKASI1"))) Point.Add(LV.Get(Main.C.GetInt("LOKASI2"))) Next
PL.Points = Point EndSub
DAFTAR RIWAYAT HIDUP
Curriculum Vitae
Data Pribadi / Personal Details
Nama / Name : Ilham Saputra
Tempat Kelahiran / Place of Birth : Durian Tinggi Tanggal Kelahiran / Date of Birth : 13 Oktober 1994 Jenis Kelamin / Gender : Laki- Laki
Agama / Religion : Islam
Warga Negara / Nationality : Indonesia
Alamat / Address : Jl. Setia Budi Pasar 2, Gg. Bunga Dewi VIII, Kelurahan Tanjung Sari,kecamatan Medan Selayang, Medan
Kode Post / Postal Code : 20132
Nomor Telepon / Phone : 082287221337
Email : 21.ilhamsaputra@gmail.com
Informasi Pendidikan /Education Information
Periode Institusi Pendidikan
2000-2006 SD Negeri 02 Kenagarian Durian Tinggi
2006-2009 SMP Negeri 1 Kecamatan Pangkalan Koto Baru 2009-2012 SMK Negeri 2 Kota Payakumbuh
2012 - Selesai S1 Ilmu Komputer, Universitas Sumatera Utara
Pengalaman Kerja / Work Experience
Pengalaman Organisasi / Organization Experience Pendidikan Non Formal / Non Formal Educati
Periode/Tahun Jabatan Nama Organisasi
2015-2016 Pengurus
IMILKOM (Ikatan Mahasiswa S-1 Ilmu Komputer) Universitas
Sumatera Utara
No Pekerjaan Tempat/Instansi
1
Praktek Kerja Industri
(PRAKERIN) Sekolah Menengah Kejuruan
SO Service Electronic, Medan
2 Praktek Kerja Lapangan (PKL) Tingkat Perguruan Tinggi
Staf Fraksi Partai Amanat Nasional, Dewan Perwakilan Rakyat Daerah Provinsi Riau
3 Pelayan/waitress Kedai Kopi Refresho
4 Pelayan/waitress Warung Ijo Excellence
5 Pelayan/waitress Taichand Warkop Medan
6 Pelayan/waitress Cut Dewi Kopi Ulee Kareng &
Gayo