Penentuan Rute Terpendek Untuk Order Picking Pada Hypermarket Menggunakan Algoritma A* (A Star)
PENENTUAN RUTE TERPENDEK UNTUK
ORDER PICKING
PADA
HYPERMARKET
MENGGUNAKAN
ALGORITMA A* (A STAR)
SKRIPSI
DENNY PRATAMA
091402077
PROGRAM STUDI TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2014
(2)
PENENTUAN RUTE TERPENDEK UNTUK
ORDER PICKING
PADA
HYPERMARKET
MENGGUNAKAN
ALGORITMA A* (A STAR)
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi
DENNY PRATAMA 091402077
PROGRAM STUDI TEKNOLOGI INFORMASI
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2014
(3)
PERSETUJUAN
Judul : PENENTUAN RUTE TERPENDEK UNTUK
ORDER PICKING PADA HYPERMARKET MENGGUNAKAN ALGORITMA A* (A STAR)
Kategori : SKRIPSI
Nama : DENNY PRATAMA
Nomor Induk Mahasiswa : 091402077
Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI
Departemen : TEKNOLOGI INFORMASI
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI
Diluluskan di Medan, Juli 2014
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
M. Anggia Muchtar, ST.,MM.IT NIP. 19800110 200801 1 010
Sajadin Sembiring, S.Si.,M.Comp.Sc NIP.
Diketahui/Disetujui oleh
Program Studi Teknologi Informasi Ketua,
M. Anggia Muchtar, ST.,MM.IT NIP. 19800110 200801 1 010
(4)
PERNYATAAN
PENENTUAN RUTE TERPENDEK UNTUK ORDER PICKING PADA HYPERMARKET MENGGUNAKAN ALGORITMA A* (A STAR)
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Juli 2014
DENNY PRATAMA 091402077
(5)
UCAPAN TERIMA KASIH
Puji dan syukur penulis panjatkan kepada Allah SWT Yang Maha Pengasih dan Maha Penyayang, dengan segala rahmat dan karuniaNya penulisan tugas akhir ini berhasil diselesaikan dalam waktu yang telah ditetapkan. Selama penyelesaian tugas akhir ini, banyak bantuan dan kerja sama serta doa dan dukungan dari berbagai pihak, oleh karena itu penulis sampaikan ucapan terima kasih sedalam-dalamnya dan penghargaan kepada :
1. Kedua orang tua dan sanak saudara penulis yang telah memberikan dukungan dan motivasi baik materil dan spiritual, Ayahanda H. Edi Saputra dan Ibunda Hj. Atminingsih yang selalu sabar dalam mendidik dan membesarkan penulis. Untuk adik penulis Indra Maulana dan Amelia S Utami yang selalu memberikan semangat kepada penulis.
2. Bapak Sajadin Sembiring, S.Si.,M.Comp.Sc dan Bapak M. Anggia Muchtar, ST.,MM.IT selaku pembimbing yang telah banyak meluangkan waktu dan pikirannya, memotivasi dan memberikan kritik dan saran kepada penulis.
3. Ibu Dr. Erna Budhiarti Nababan, M.IT dan Bapak Dani Gunawan, ST.,MT yang telah bersedia menjadi dosen pembanding yang telah memberikan kritik dan saran kepada penulis.
4. Ketua dan Sekretaris Program Studi Teknologi Informasi, Bapak M. Anggia Muchtar, ST.,MM.IT dan Bapak M. Fadly Syahputra, B.Sc.,M.Sc.IT.
5. Dekan dan Pembantu Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara, semua dosen serta pegawai di Fakultas Ilmu Komputer dan Teknologi Informasi.
6. Carrefour Plaza Medan Fair telah membantu dan membimbing penulis dalam melakukan riset.
7. Seluruh sahabat terbaik penulis yang selalu memberikan dukungan, Ahmad Najam, Wildan Afifi, Satrya Prayudi, Mahathir Febrian, Darma Warista, Fachriza Fahmi, Andre H Lubis, M Taufiqul Hadi, Anthea Ria M, Reyza Mirwanda, Suhil, Boho, Yogi, Dedek, Razky, Ranap, Donny, Erfahd, Adha, Mulki, Yudhi, Muslim, Syarah, Mitha, Ari Rifki, Antoni, Lili, Bang Aulia, Bang Ridho, Bang Irwanta, Bang Bayu serta seluruh angkatan 09, teman-teman SRC, teman-teman GG, teman-teman Telkom, teman-teman PIM, serta teman-teman seluruh angkatan mahasiswa USU lainnya yang tidak dapat penulis sebutkan satu persatu.
Semoga segala kebaikan dan bantuannya dibalas oleh Allah SWT dan semoga tugas akhir ini dapat bermanfaat bagi semua pihak yang memerlukannya.
(6)
ABSTRAK
Efesiensi waktu sangat dibutuhkan dalam perjalan pengambilan barang yang berada didalam sebuah hypermarket. Banyak waktu yang terbuang dalam penenetuan arah pengambilan barang dan lamanya proses pelatihan kerja untuk pegawai tentang tata letak barang dalam proses order picking pada hypermarket menjadi hal yang harus diselesaikan. Untuk menyelesaikan permasalahan ini dapat diselesaikan dengan menerapkan pencarian lintasan terpendek dalam proses pencarian barang. Algoritma yang digunakan untuk menentukan jalur terpendek yang akan dilalui pada penelitian ini adalah algoritma A*. Algoritma ini mempunyai fungsi heuristik dalam membantu pencarian. Untuk mendapatkan nilai optimum global bergantung pada kinerja fungsi heuristik. Metode yang diperkenalkan sebagai langkah untuk mendapatkan nilai fungsi heuristik adalah dengan menggunakan jarak Manhattan. Berdasarkan pengujian yang telah dilakukan, algoritma A* dapat menghasilkan jalur yang memiliki bobot dengan jumlah terkecil yang merupakan hasil terpendek serta memiliki komputasi waktu yang cepat.
(7)
DETERMINATION OF SHORTEST ROUTE FOR ORDER PICKING IN HYPERMARKET BY USING A * (A STAR) ALGORITHM
ABSTRACT
Time eficiency is needed for getting several goods that placed in hypermarket. There are so many time have wasted to set the direction for getting several goods and also to train employee for taking a place in order picking process base on the layout of the goods in hypermarket be things to be resolved. To resolve this problem, it could be resolved by implementing the shortest path searching in goods search process. Algorithm that will be used to determine the shortest path to be traversed on this study is an A* Algorithm. This algorithm has a heuristic function in searching process. To obtain the global optimum value depends on the performance of the heuristic function. The method is introduced as a step to get the value of the heuristic function is to use the Manhattan distance. Based on the testing that has been done, the A * algorithm can produce a path that has a small amount of weight with the result of computing the shortest path and has a fast time.
(8)
DAFTAR ISI
Hal.
PERSETUJUAN ... ii
PERNYATAAN ... iii
UCAPAN TERIMA KASIH ... iv
ABSTRAK ... v
ABSTRACT ... vi
DAFTAR ISI ... vii
DAFTAR TABEL ... ix
DAFTAR GAMBAR ... x
BAB 1 PENDAHULUAN ... 1
1.1. Latar Belakang ... 1
1.2. Rumusan Masalah ... 2
1.3. Batasan Masalahs ... 2
1.4. Tujuan Penelitian ... 3
1.5. Manfaat Penelitian ... 3
1.6. Metodologi Penelitian ... 3
1.7. Sistematika Penulisan ... 4
BAB 2 LANDASAN TEORI... 5
2.1. Graf ... 5
2.2. Shortest Path... 10
2.3. Algoritma A* ... 10
2.4. PHP ... 12
2.5. JavaScript ... 12
2.6. MySQL ... 13
2.7. Pemodelan dan Unified Modeling Language (UML)... 13
2.8. Penelitian Terdahulu ... 16
BAB 3 ANALISIS DAN PERANCANGAN ... 17
3.1. Analisis Sistem ... 17
3.1.1 Analisis Masalah ... 17
(9)
viii
3.1.2.1 Kebutuhan Fungsional ... 18
3.1.2.2 Kebutuhan Nonfungsional ... 19
3.2. Penerapan Algoritma A* ... 19
3.3. Perancangan Graf ... 21
3.4. Use Case Diagram ... 24
3.5. Flowchart ... 26
3.5.1 Flowchart Sistem ... 26
3.5.2 Flowchart A* ... 28
3.6. Perancangan Aplikasi dan Antarmuka Pemakai ... 30
3.6.1 Perancangan Database ... 30
3.6.2 Perancangan Relasi Antar Tabel ... 32
3.6.3 Rancangan Home ... 33
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM... 35
4.1. Spesifikasi Perangkat Keras dan Perangkat Lunak ... 35
4.2. Antarmuka Pengguna (User Interface) ... 36
4.3. Pengujian Sistem Secara Menyeluruh ... 40
BAB 5 KESIMPULAN DAN SARAN ... 45
5.1. Kesimpulan ... 45
5.2. Saran ... 45
DAFTAR PUSTAKA ... 46
LAMPIRAN KODE PROGRAM ... 550 49 LAMPIRAN SAMPEL DAFTAR PRODUK ... 53
(10)
DAFTAR TABEL
Hal.
Tabel 2.1 Tabel Penelitian Terdahulu 16
Tabel 3.1 Tabel tbl_path 30
Tabel 3.2 Tabel tbl_perjalanan 31
Tabel 3.3 Tabel tbl_posisi 31
Tabel 3.4 Tabel tbl_produk 32
Tabel 3.5 Tabel tbl_rak 32
Tabel 4.1 Tabel Rencana Pengujian 36
Tabel 4.2 Tabel Hasil Evaluasi pada Tampilan Halaman Home 38 Tabel 4.3 Tabel Hasil Evaluasi pada Tampilan Halaman Output 40 Tabel 4.4 Tabel Pengujian Waktu Pencarian Berdasarkan Jumlah Barang 44
(11)
DAFTAR GAMBAR
Hal.
Gambar 2.1 Contoh Graf Sederhana 6
Gambar 2.2 Contoh Graf Ganda 6
Gambar 2.3 Contoh Graf Semu 7
Gambar 2.4 Contoh Graf Berarah 7
Gambar 2.5 Contoh Graf Tidak Berarah 8
Gambar 2.6 Contoh Graf Berhingga 8
Gambar 2.7 Contoh Graf Tidak Berhingga 9
Gambar 2.8 Contoh Graf Tidak Berbobot 9
Gambar 2.9 Contoh Graf Berbobot 9
Gambar 3.1 Diagram Fishbone 18
Gambar 3.2 Proses Pencarian Algoritma A* 20
Gambar 3.3 Potongan dari Bidang Peta yang diperoleh dari Carrefour 22
Gambar 3.4 Lintasan dan Koordinat Peta 22
Gambar 3.5 Peta yang telah dilakukan Proses Remapping 23
Gambar 3.6 Legenda Peta 23
Gambar 3.7 Diagram Use Case untuk Pencarian Posisi Barang 25
Gambar 3.8 Flowchart Sistem 27
Gambar 3.9 Flowchart A* 29
Gambar 3.10 Relasi Database 33
Gambar 3.11 Rancangan Home 34
Gambar 4.1 Tampilan Halaman Home Sebelum dilakukan Pencarian 37
Gambar 4.2 Tampilan Kolom Input 37
Gambar 4.3 Tampilan Kolom Keterangan Hasil Pencarian 38 Gambar 4.4 Tampilan Halaman Home Sesudah dilakukan Pencarian 39
Gambar 4.5 Tampilan Menu Print 39
Gambar 4.6 Sampel Data Produk 41
Gambar 4.7 Sampel Relasi vertex (path) dalam Database 41
(12)
Gambar 4.9 Hasil Pencarian untuk Sampel 1 43
(13)
ABSTRAK
Efesiensi waktu sangat dibutuhkan dalam perjalan pengambilan barang yang berada didalam sebuah hypermarket. Banyak waktu yang terbuang dalam penenetuan arah pengambilan barang dan lamanya proses pelatihan kerja untuk pegawai tentang tata letak barang dalam proses order picking pada hypermarket menjadi hal yang harus diselesaikan. Untuk menyelesaikan permasalahan ini dapat diselesaikan dengan menerapkan pencarian lintasan terpendek dalam proses pencarian barang. Algoritma yang digunakan untuk menentukan jalur terpendek yang akan dilalui pada penelitian ini adalah algoritma A*. Algoritma ini mempunyai fungsi heuristik dalam membantu pencarian. Untuk mendapatkan nilai optimum global bergantung pada kinerja fungsi heuristik. Metode yang diperkenalkan sebagai langkah untuk mendapatkan nilai fungsi heuristik adalah dengan menggunakan jarak Manhattan. Berdasarkan pengujian yang telah dilakukan, algoritma A* dapat menghasilkan jalur yang memiliki bobot dengan jumlah terkecil yang merupakan hasil terpendek serta memiliki komputasi waktu yang cepat.
(14)
DETERMINATION OF SHORTEST ROUTE FOR ORDER PICKING IN HYPERMARKET BY USING A * (A STAR) ALGORITHM
ABSTRACT
Time eficiency is needed for getting several goods that placed in hypermarket. There are so many time have wasted to set the direction for getting several goods and also to train employee for taking a place in order picking process base on the layout of the goods in hypermarket be things to be resolved. To resolve this problem, it could be resolved by implementing the shortest path searching in goods search process. Algorithm that will be used to determine the shortest path to be traversed on this study is an A* Algorithm. This algorithm has a heuristic function in searching process. To obtain the global optimum value depends on the performance of the heuristic function. The method is introduced as a step to get the value of the heuristic function is to use the Manhattan distance. Based on the testing that has been done, the A * algorithm can produce a path that has a small amount of weight with the result of computing the shortest path and has a fast time.
(15)
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Dunia teknologi informasi pada saat ini berkembang dengan sangat cepat, sejalan dengan cepatnya perkembangan teknologi informasi kebutuhan akan efisiensi waktu menjadi isu yang sangat penting saat ini. Dalam mencapai kualitas waktu yang optimal diperlukan manajemen yang baik dengan menerapkan konsep-konsep yang terarah.
Banyak hal yang memerlukan manajemen untuk efesiensi waktu, seperti efesiensi waktu dalam pengambilan permintaan akan barang yang berada didalam sebuah hypermarket. Order picking adalah sebuah fungsi utama pada setiap hypermarket dalam merespon kebutuhan display barang (Petersen & Schmenner, 1999). Order picking merupakan kegiatan pengambilan atau pendistribusian barang berdasarkan pesanan, dimana pada proses ini terjadi pengunjungan lokasi yang terdaftar pada pesanan (Daniels, 1998).
Umumnya pada pengoperasian hypermarket, proses pengambilan barang dianggap paling banyak memerlukan waktu dan biaya tambahan, seperti kurang efisiennya waktu yang diambil operator dan troll boys dalam melakukan perjalan untuk pengambilan barang yang masa berlakunya telah habis (expired) atau barang-barang yang telah habis masa display dan pelatihan kerja bagi operator dan troll boys tentang informasi tata letak barang dalam membantu penyelesaian proses order picking pada hypermarket. Pada tahun 2002, 50% total biaya operasional perusahaan untuk membayar orang-orang yang bekerja untuk menyusun dan mengambil pesanan barang (Frazelle, 2002). Dari persentase tersebut tentu ini tidak baik dalam efektifitas
(16)
pengelolaan hypermarket. Untuk itu harus ada pemecahan masalah untuk meningkatkan kecepatan dan ketepatan pelayanan, khususnya alat bantu pemilihan jalur perjalanan pada order picking berbasis teknologi informasi.
Algoritma A* (A star) adalah algoritma pencarian pada graf yang mencari jalur dari suatu vertex awal ke akhir yang telah ditentukan. A* (A star) sangat populer dikalangan developer sebagai algoritma shortest path yang baik (Aini, 2010). Tentu algoritma ini menjadi alternatif dalam mempercepat proses pencarian jarak terpendek dalam penanganan kebutuhan informasi manajemen pengambilan barang yang berada di dalam hypermarket lewat pencarian posisi user dan rak penyimpanan barang.
1.2 Rumusan Masalah
Banyaknya waktu yang terbuang dalam penenetuan arah pengambilan barang dan lamanya proses pelatihan kerja untuk pegawai baru tentang tata letak barang dalam proses order picking pada hypermarket.
1.3 Batasan Masalah
Untuk mengurangi ruang lingkup terjemahan yang terlalu besar, maka batasan masalah dalam penelitian ini, yaitu:
1. Rak promosi tidak dimasukkan.
2. Representasi grafis aplikasi adalah 2-Dimensi, objek adalah rak display pada Carrefour Medan Fair berupa peta koordinat.
3. Kapasitas alat angkut dan desain rak diabaikan.
4. Tidak menggunakan data spasial lainnya, kecuali data spasial berupa peta hypermarket Carrefour Lantai I Medan Fair Jl. Jend. Gatot Subroto No 30 Medan, Indonesia 20118.
5. Tidak menggunakan data-non spasial lainnya, kecuali data non-spasial berupa informasi barang pada rak yang direpresentasikan kedalam vertex.
(17)
3
1.4 Tujuan Penelitian
Penelitian ini memiliki tujuan yaitu membantu perusahaan, khususnya operator dan troll boys dalam manajemen pegambilan barang pada hypermarket yang telah expired atau barang yang telah habis masa dislplay. Dan terutama untuk pelatihan kerja operator gudang dan troll boys.
1.5 Manfaat Penelitian
Memberikan kemudahan pada operator dan troll boys hypermarket dalam mempercepat waktu dalam proses pengambilan barang, dengan merepresentasikan penunjuk arah yang efektif lewat penentuan jarak terpendek.
1.6 Metodologi Penelitian
Metodologi penelitian yang digunakan pada penelitian ini adalah: a. Studi Literatur
Pada tahap ini dilakukan studi kepustakaan yaitu proses pengumpulan bahan-bahan referensi yang berkaitan dengan jalur terpendek, optimasi dan algoritma A* (A Star) dari buku, artikel, paper, jurnal, makalah ataupun sumber lainnya. b. Analisis
Pada tahap ini dilakukan analisis penggunaan algoritma A* (A Star) pada penentuan jalur terpendek.
c. Perancangan
Pada tahap ini dilakukan perancangan proses jalur terpendek yang akan dilalui, seperti diagram sistem dan flowchart.
d. Implementasi
Pada tahap ini dilakukan implementasi analisis yang telah dilakukan ke dalam kode program.
e. Pengujian
Pada tahap ini dilakukan pengujian kemampuan algoritma A* (A Star) dalam menentukan jalur terpendek.
(18)
f. Penyusunan Laporan
Pada tahap ini dilakukan penulisan laporan mengenai seluruh penelitian yang telah dilakukan.
1.7 Sistematika Penulisan
Tugas akhir ini disusun dalam lima bab dengan sistematika penulisan sebagai berikut:
Bab I : Pendahuluan
Pada bab ini pendahuluan berisi tentang hal-hal yang mendasari dilakukannya penelitian serta pengidentifikasian masalah penelitian. Bagian-bagian yang terdapat dalam bab pendahuluan ini terdiri atas latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, dan manfaat penelitian.
Bab II : Landasan Teori
Pada bab ini berisi landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang diperoleh dari acuan yang mendasari dalam melakukan penelitian ini.
Bab III : Analisis dan Perancangan
Pada bab ini analisis dan perancangan berisi metodologi penelitian yang dilakukan dalam pengimplementasian algoritma A* (A Star) untuk permasalahan dalam penentuan jarak terpendek untuk order picking pada hypermarket.
Bab IV : Implementasi dan Pengujian Sistem
Pada bab ini berisi penjelasan hasil dari pengujian algoritma A* (A Star) yang telah dilakukan dalam menyelesaikan permasalahan dalam penentuan jarak terpendek untuk order picking pada hypermarket
Bab V : Kesimpulan dan Saran
Pada bab ini kesimpulan dan saran berisi kesimpulan dari hasil penelitian dan saran-saran yang berkaitan dengan penelitian yang selanjutnya.
(19)
BAB 2
LANDASAN TEORI
Pada bab ini akan dibahas landasan teori, penelitian terdahulu, kerangka pikir dan hipotesis yang mendasari penyelesaian permasalahan dalam penentuan jarak terpendek untuk order picking pada hypermarket dengan pengimplementasian algoritma A* (A Star).
2.1Graf
Graf adalah kumpulan titik (vertex) yang dihubungkan satu sama lain melalui sisi/busur (edges). Suatu graf G terdiri dari dua himpunan yaitu himpunan V dan himpunan E. (Zakaria, 2005)
a. Vertex : V adalah himpunan vertex yang terbatas dan tidak kosong
b. Edge (sisi/busur): E adalah himpunan busur yang menghubungkan sepasang vertex.
Vertex-vertex pada graf dapat merupakan obyek atau titik. Edge dapat menunjukkan hubungan (relasi). Notasi graf : G(V,E) artinya graf G memiliki V vertex dan E edge.
Dari penjelasan di atas graf adalah pasangan himpunan (V, E) yang dinotasikan dengan G = (V, E), V adalah himpunan titik, atau vertex dari G yaitu V= {v1 , v2 , v3 ,…, vn} dan E adalah himpunan edges, atau sisi dari G, yaitu E= {e1 , e2 ,
e3 ,…, em}.. Sebuah graf dimungkinkan tidak mempunyai edge satu buah pun, tetapi vertexnya harus ada minimal satu. Graf yang hanya memiliki satu buah vertex tanpa sebuah edge pun dinamakan graf trivial (Munir,2004).
(20)
2.1.1 Jenis-jenis Graf
Graf dikelompokkan menurut ada tidaknya edges-nya yang paralel atau loop, jumlah vertexnya, berdasarkan ada tidaknya arah pada edges-nya, atau ada tidaknya bobot pada edges-nya (Dina, 2012).
Berikut ini adalah jenis graf berdasarkan ada tidaknya edge yang paralel atau loop:
1. Graf Sederhana
Graf sederhana adalah graf yang tidak mempunyai edges ganda dan loop. Loop adalah edge yang menghubungkan sebuah vertex dengan dirinya sendiri. Berikut adalah contoh graf sederhana, dapat dilihat pada Gambar 2.1.
Gambar 2.1 Contoh Graf Sederhana
2. Graf Tak-Sederhana
Graf tak-sederhana adalah graf yang memiliki edges ganda dan loop. Graf tak sederhana dapat dibagi dua yaitu:
a. Graf ganda (multi graph) adalah graf yang mengandung edge ganda. Sisi ganda yang menghubungkan sepasang vertex bisa lebih dari dua buah, dapat dilihat pada Gambar 2.2.
(21)
7
b. Graf semu (pseudograph) adalah graf yang mempunyi loop, termasuk juga graf yang mempunyai loop dan edge ganda karena itu graf semu lebih umum daripada graf ganda, karena graf semu edge-nya dapat terhubung dengan dirinya sendiri, dapat dilihat pada Gambar 2.3.
Gambar 2.3 Contoh Graf Semu
Selain berdasarkan ada tidaknya edge yang paralel atau loop, graf dapat juga dikelompokkan berdasarkan orientasi arah atau panah yaitu:
1. Graf Berarah (directed graph)
Graf berarah adalah graf yang setiap edge-nya memiliki orientasi arah atau panah. Pada graf berarah (vj, vk) ≠ (vk, vj). Dapat dilihat pada Gambar 2.4.
(22)
2. Graf Tidak Berarah (undirected graph)
Graf tak berarah adalah graf yang edge-nya tidak mempunyai orientasi arah atau panah. Pada graf ini, urutan pasangan vertex yang dihubungkan oleh edge tidak diperhatikan. Jadi (vj, vk) = (vk, vj) adalah edge yang sama, dapat dilihat pada Gambar 2.5.
Gambar 2.5 Contoh Graf Tidak Berarah
Berdasarkan jumlah vertex pada suatu graf, maka secara umum graf dapat digolongkan menjadi dua jenis:
1. Graf Berhingga (limited graph)
Graf berhingga adalah graf yang jumlah vertex-nya berhingga, n. Dapat dilihat pada Gambar 2.6.
Gambar 2.6 Contoh Graf Berhingga
2. Graf Tidak Berhingga (unlimited graph)
Graf tak berhingga adalah graf yang jumlah vertex-nya, n tidak berhingga. Dapat dilihat pada Gambar 2.7.
(23)
9
Gambar 2.7 Contoh Graf Tidak Berhingga
Graf juga ada yang mempunyai bobot atau nilai. Berdasarkan bobotnya, graf dibagi menjadi dua jenis, yaitu:
1. Graf tidak berbobot (unweighted graph) adalah graf yang tidak mempunyai bobot atau nilai. Dapat dilihat pada Gambar 2.8.
Gambar 2.8 Contoh Graf Tidak Berbobot
2. Graf berbobot (weighted graph) adalah graf yang masing-masing busurnya mempunyai bobot atau nilai tertentu. Dapat dilihat pada Gambar 2.9.
(24)
2.2 Shortest Path
Lintasan Terpendek (Shortest Path) merupakan pencarian jarak minimum untuk mencapai suatu titik (node akhir) dari titik tertentu (node awal). Dalam pencarian jarak terpendek masalah yang dihadapi adalah mancari lintasan mana yang akan dilalui sehingga didapat lintasan yang paling pendek dari satu vertex ke vertex yang lain (Dina, 2012).
Ada beberapa macam persoalan lintasan terpendek, antara lain : 1. Lintasan terpendek antara dua buah vertex.
2. Lintasan terpendek antara semua pasangan vertex.
3. Lintasan terpendek dari vertex tertentu ke semua vertex yang lain
4. Lintasan terpendek antara dua buah vertex yang melalui beberapa vertex tertentu.
Pada tugas akhir ini persoalan lintasan terpendek yang menjadi masalah adalah lintasan terpendek antara dua buah atau lebih vertex dimana bobot pada setiap edge digunakan untuk menyatakan jarak antar rak display barang pada sebuah hypermarket dalam satuan meter (m) dan vertex mewakili koordinat dan informasi barang diletakkan. Algoritma yang digunakan adalah algoritma A* (A Star) dalam menentukan lintasan terpendek.
2.3 Algoritma A*
A* (A Star) adalah algoritma komputer untuk pencarian jarak terdekat dan penelusuran rute, dan dipublikasikan pada tahun 1968 oleh Peter Hart, Nils Nilsson dan Bertram Raphael (RSA) di Stanford Research Institute (sekarang SRI International).
Algoritma ini menggunakan fungsi distance – plus –cost (dinotasikan dengan f(x)) untuk menentukan urutan kunjungan pencarian titik pada graf. f(x) merupakan penjumlahan dari dua fungsi path – cost (dinotasikan dengan g(x)), dan perkiraan heuristik arak ke titik tujuan (dinotasikan dengan h(x)). h(x) mungkin mewakili garis lurus jarak ke titik tujuan, karena itu mungkin ada jarak terpendek antara dua titik.
(25)
11
Fungsi heuristik pada A* digunakan untuk memperhitungkan jarak yang didapat dari jarak sebenarnya ditambah jarak perkiraaan. Dalam notasi matematika dituliskan sebagai berikut :
f(x) = g(x) + h(x)
Keterangan :
g (x) = total jarak didapat dari vertex awal ke vertex sekarang.
h (x) = jarak estimasi vertex tujuan, sebuah fungsi heuristik utuk membuat perkiraan seberapa jauh lintasan yang akan diambil ke vertex tujuan.
f (x) = jumlah dari g(x) dan h(x).
Heuristik yang digunakan pada tulisan ini yaitu Manhattan Distance. Fungsi heuristik ini akan menjumlahkan selisih nilai x dan nilai y dari dua buah titik.
Perhitungan dapat ditulis sebagai berikut:
h(x) = abs(n.x-tujuan.x) + abs(n.y-tujuan.y)
Keterangan :
h(x) = perkiraan jarak dari vertex sekarang ke vertex tujuan.
n.x = koordinat x dari vertex n.
tujuan.x = koordinat x dari vertex tujuan.
n.y = koordinat y dari vertex n.
tujuan.y = koordinat y dari vertex tujuan.
Pada Algortima ini pencarian vertex yang paling mendekati solusi nantinya akan disimpan suksesornya kedalam list sesuai dengan ranking yang paling mendekati hasil terbaik. Algoritma ini akan mengunjungi setiap vertex selama vertex itu adalah yang terbaik. Bila vertex yang dikunjungi ternyata tidak mengarah ke hasil yang diinginkan, maka akan melakukan penelusuran balik ke arah vertex yang terakhir dikunjungi. Apabila tidak dapat ditemukan juga, maka akan terus menelusuri ulang mencari ke arah vertex awal sampai dapat ditemukan vertex yang lebih baik kemudian untuk dibandingkan dengan suksesornya (Phaneendhar R V, 2011).
(26)
2.4 PHP
PHP (Hypertext Preprocessor) merupakan skrip yang bersifat server-side yang ditambahkan ke dalam skrip HTML. PHP sendiri merupakan singkatan dari Personal Home Page Tools. Skrip ini yang akan membuat suatu aplikasi website dapat diintegrasikan ke dalam HTML sehingga website tersebut tidak lagi bersifat statis, namun menjadi bersifat dinamis. Maksud dari bersifat server-side itu sendiri adalah pengerjaan skrip di lakukan di server, baru kemudian hasilnya dikirim ke browser (Prasetyo, 2008).
Cara penulisan script PHP terbagi atas empat style, yaitu: 1. Standard Style, dengan format: <?php … ?> 2. Short Style, dengan format: <? … ?>
3. Javascript Style, dengan format: <script language=’PHP’> … </script>
4. ASP Style, dengan format: <% … %> 2.5 JavaScript
JavaScript adalah bahasa pemrograman Web. Sebagian besar situs web modern menggunakan JavaScript , dan semua web browser moderen-on desktop, konsol game, tablet, dan smartphone juga menggunakan JavaScript, Hal tersebut membuat JavaScript menjadi bahasa pemrograman yang paling banyak digunakan dimana-mana dalam sejarah perkembangannya. JavaScript adalah bagian dari berkembangan teknologi yang semua pengembang web harus mempelajarinya. HTML untuk menentukan isi web halaman, CSS untuk menentukan presentasi dari halaman tersebut, dan JavaScript untuk menentukan perilaku mereka (Flanagan, 2012).
Program JavaScript yang ditulis menggunakan karakter Unicode yang ditetapkan. Unicode merupakan superset dari ASCII dan Latin - 1 dan mendukung hampir pada setiap bahasa yang ditulis di planet ini. JavaScript adalah bahasa case-sensitive . Ini berarti bahwa bahasa kata kunci, variabel, nama fungsi, dan pengenal lainnya
(27)
13
harus selalu diketik dengan kapitalisasi konsisten. Sementara kata kunci, misalnya, harus diketik "while" tidak "While" atau "WHILE". Demikian pula “online”, OnLine , dan ONLINE merupakan empat nama variabel yang berbeda .
2.6 MySQL
MySQL merupakan server database yang mendukung perintah SQL (Structured Query Language). Perintah dalam MySQL disebut dengan pernyataan (statement) dengan ciri khas pengakhirannya yang di tutup dengan tanda titik koma (;). Prinsip kerja dari MySQL yaitu dengan mengetikkan sejumlah pernyataan dan di akhiri dengan titik koma, maka program klien MySQL akan segera mengirim perintah tersebut ke server database MySQL dan kemudian memberikan respon yang sesuai dengan pernyataan yang diberikan (Rozy, 2014).
Pernyataan-pernyataan umum yang sering digunakan dalam MySQL adalah sebagai berikut:
1. “SELECT” digunakan untuk menampilkan informasi dari sebuah table pada database.
2. “UPDATE” digunakan untuk mengubah informasi dari sebuah table pada database.
3. “DELETE” digunakan untuk menghapus informasi dari sebuah table pada database.
4. “INSERT” digunakan untuk menambah informasi baru kedalam table pada database.
2.7 Pemodelan dan Unified Modeling Language (UML)
Pemodelan merupakan gambaran sederhana dalam bentuk pemetaan dengan berbagai aturan-aturan tertentu. Pemodelan perangkat lunak digunakan untuk mempermudah tahapan berikutnya sehingga pengembangan dilakukan dengan lebih terencana..
Pada perkembangan teknik pemrograman berorientasi objek, muncullah sebuah standarisasi bahasa pemodelan untuk pembangunan perangkat lunak yang dibangun dengan menggunakan teknik pemrograman berorientasi objek, yaitu Unified Modeling Languge (UML). UML muncul karena adanya kebutuhan pemodelan visual untuk
(28)
menspesifikasikan, menggambarkan, membangun, dan dokumentasi dari sistem perangkat lunak. UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teks-teks pendukung.
UML hanya berfungsi untuk melakukan pemodelan. Jadi penggunaan UML tidak terbatas pada metodologi tertentu, meskipun pada kenyataannya UML paling banyak digunakan pada metodologi berorientasi objek (Rosa & Shalahuddin, 2011).
UML terbaru adalah UML 2.3 dan pembagian kategorinya dapat diuraikan sebagai berikut:
1. Structure Diagrams, digunakan untuk menggambarkan suatu struktur statis dari sistem yang dimodelkan. Structure Diagrams terbagi atas:
a. Class Diagram, menggambarkan struktur sistem dari segi pendefenisian kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang disebut atribut dan metode atau operasi.
b. Object Diagram, menggambarkan struktur sistem dari segi penamaan objek dan jalannya objek dalam sistem. Pada diagram objek harus dipastikan semua kelas yang sudah didefenisian pada diagram kelas harus dipakai objeknya, karena jika tidak, pendefinisian kelas itu tidak dapat dipertanggungjawabkan.
c. Component Diagram, menunjukkan organisasi dan ketergantungan di antara kumpulan komponen dalam sebuah sistem. Diagram komponen fokus pada komponen sistem yang dibutuhkan dan ada di dalam sistem. d. Composite Structure Diagram, menggambarkan struktur dari
bagian-bagian yang saling terhubung maupun mendeskripsikan struktur pada saat berjalan (runtime) dari instance yang saling terhubung.
e. Package Diagram, menyediakan cara mengumpulkan elemen-elemen yang saling terkait dalam diagram UML. Hampir semua diagram dalam UML dapat dikelompokkan menggunakan package diagram.
f. Deployment Diagram, menunjukkan konfigurasi komponen dalam proses eksekusi aplikasi. Deployment diagram juga dapat digunakan untuk memodelkan embedded system, sistem client/server, sistem terdistribusi murni dan rekayasa ulang aplikasi.
(29)
15
2. Behavior Diagrams, digunakan untuk menggambarkan kelakukan sistem atau rangkaian perubahan yang terjadi pada sebuah sistem. Behavior Diagrams terbagi atas:
a. Use Case Diagram, pemodelan untuk kelakukan sistem informasi yang akan dibuat. Use Case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem informasi yang akan dibuat. Secara kasar, use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem informasi dan siapa saja yang berhak mengunakan fungsi-fungsi itu.
b. Activity Diagram, menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis. Yang perlu diperhatikan adalah bahwa diagram aktivitas menggambarkan sistem bukan apa yang dilakukan aktor, jadi aktivitas yang dapat dilakukan oleh sistem.
c. State Machine Diagram, menggambarkan perubahan status atau transisi status dari sebuah mesin atau sistem. Perubahan tersebut digambarkan dalam suatu graf berarah. State Machine Diagram merupakan pengembangan dari diagram Finite State Automata denan penambahan beberapa fitur dan konsep baru.
3. Interaction Diagrams, digunakan untuk menggambarkan interaksi sistem dengan sistem lain maupun interaksi antarsubsistem pada suatu sistem. Interaction Diagrams terbagi atas:
a. Sequence Diagram, menggambarkan kelakukan objek pada use case dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antarobjek. Oleh karena itu, untuk menggambarkan diagram sekuen maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu.
b. Communication Diagram, menggambarkan interaksi antarobjek/bagian dalam bentuk urutan pengiriman pesan. Diagram komunikasi merepresentasikan informasi yang diperoleh dari diagram kelas, diagram sekuen dan diagram use case untuk mendeskripsikan gabungan antara struktur statis dan tingkah laku dinamis dari suatu sistem.
(30)
c. Timing Diagram, menggambarkan tingkah laku sistem dalam periode waktu tertentu. Timing Diagram biasanya digunakan untuk mendeskripsikan operasi alat digital karena penggambaran secara visual akan lebih mudah dipahami daripada dengan kata-kata.
d. Interaction Overview Diagram, menggambarkan sekumpulan urutan aktivitas. Interaction Overview Diagram adalah bentuk aktivitas diagram yang setiap titik merepresentasikan diagram interaksi. Interaksi diagram dapat meliputi diagram sekuen, diagram komunikasi, interaction overview diagram dan timing diagram.
2.8 Penelitian Terdahulu
Dalam melakukan penelitian, penulis membutuhkan beberapa bahan penelitian yang sudah pernah dilakukan peneliti-peneliti lainnya mengenai masalah penentuan jarak terpendek dan algoritma A* (A Star).
Christophe et al (2009) telah mencoba menggunakan pendekatan Travelling Salesman Problem (TSP) dalam penelitian pada pencarian order picking pada gudang. Wäscher (2011) telah mencoba menggunakan perpaduan beberapa algoritma optimasi seperti tabu search dan lainnya dalam perancangan order batching dan order picking untuk gudang. Untuk penelitian yang dilakukan oleh peneliti sebelumnya, dapat dilihat pada Tabel 2.1.
Table 2.1 Tabel Penelitian Terdahulu
No Peneliti Judul Penelitian
1 Wäscher et al (2011)
Order Batching in Order Picking Warehouse : A Survey of Solution Approach
2 Christophe et al (2009)
(31)
BAB 3
ANALISIS DAN PERANCANGAN
Dalam bab ini berisi beberapa hal diantaranya seperti data yang digunakan, penerapan algoritma dan analisis perancangan sistem dalam mengimplementasikan algoritma A* (A Star) untuk permasalahan dalam penentuan jalur terpendek untuk order picking pada hypermarket.
3.1 Analisis Sistem
Pada sistem ini akan dilakukan analisis terhadap sistem untuk melakukan penentuan jalur terpendek untuk mencari barang pada rak hypermarket Carrefour dengan menggunakan algoritma A* (A star).
3.1.1 Analisis Masalah
Dari beberapa kasus yang ditemui pada manajemen hypermarket, dimana masih banyak pegawai yang tidak mengetahui posisi barang pada rak sehingga menimbulkan terlalu lama waktu pencarian dan rute yang ingin dilalui. Jika pegawai diberikan kemudahan untuk mengetahui posisi dan jalur terpendek maka dia tidak harus mencari dengan waktu yang lama. Untuk itulah, digambarkan diagram permasalahan dalam bentuk diagram fishbone. Dengan menggunakan diagram fishbone, maka akan diketahui penyebab permasalahan yang saling berkaitan. Diagram ini membantu untuk mengetahui masalah dan penyelesaian yang akan dilakukan, sehingga akan lebih mudah dalam memahami masalah yang akan di analisis terhadap sistem. Diagram tersebut dapat kita lihat pada Gambar 3.1.
(32)
Material Method
Machine Man
Menentukan jalur terpendek / rute
optimum pada pencarian barang (order picking) Tidak mengetahui posisi barang pada rak Tidak memperhitungkan seberapa panjang perjalanan Belum ada metode untuk mencari jalur terpendek untuk pencarian barang
(order picking) Bahan atau informasi
yang kurang untuk mencari barang dan
jalur
Belum ada aplikasi yang bisa digunakan
Gambar 3.1 Diagram Fishbone
3.1.2 Analisis Kebutuhan
Kebutuhan merupakan suatu keinginan yang akan dicapai dalam melakukan perancangan. Kebutuhan menggambarkan fungsi dan batasan untuk aplikasi. Adapun analisis kebutuhan dibagi menjadi dua, antara lain adalah kebutuhan fungsional dan kebutuhan nonfungsional.
3.1.2.1 Kebutuhan Fungsional
Kebutuhan fungsional merupakan kebutuhan yang fungsi-fungsinya harus dipenuhi pada rancangan aplikasi. Kebutuhan fungsional yang harus dipenuhi pada aplikasi yang akan dirancang adalah :
1. Aplikasi harus mampu menentukan titik awal dan titik akhir dari pencarian. 2. Aplikasi harus mampu menentukan jalur terpendek yang akan dilalui.
(33)
19
3.1.2.2 Kebutuhan Nonfungsional
Kebutuhan nonfungsional terdiri dari beberapa macam karakteristik, antara lain : 1. Performa
Aplikasi yang akan dibangun dapat menampilkan hasil dari fungsi sistem untuk jalur terpendek yang akan dilalui.
2. Efisiensi
Aplikasi yang akan dibangun diharuskan sederhana, agar memudahkan pengguna untuk memakainya.
3. Ekonomi
Aplikasi yang akan dibangun tanpa mengeluarkan biaya tambahan dalam penggunaannya.
3.2 Penerapan Algoritma A*
Algoritma A* direpresentasikan menggunakan graf untuk menyelesaikan permasalahan rute terpendek. Dengan graf, arah dan perhitungan dapat diselesaikan dengan mudah karena tampilan lebih atraktif. Pada algoritma A* pencarian jarak menggunakan strategi pencarian heuristik dimana jarak yang diperhitungkan didapat dari jarak sebenarnya ditambah dengan jarak perkiraan. Dengan menggunakan fungsi heuristik algoritma ini hanya akan menguji vertex yang mendekati vertex tujuan. Dalam notasi matematika dituliskan sebagai berikut :
f (x) = g (x) + h (x)
Keterangan:
g(x)= total jarak didapat dari vertex awal ke vertex sekarang.
h (x) = jarak estimasi vertex tujuan, sebuah fungsi heuristik utuk membuat perkiraan seberapa jauh lintasan yang akan diambil ke vertex tujuan.
(34)
A * dapat juga dapat diimplementasikan, jika kebutuhan akan pencarian yang membutuhkan perulangan. Prinsip algoritma A* yaitu, akan melintasi semua graf yang berhubungan dengan starting point, mengurutkan cost terkecil dengan memperhatikan cost (f) kedalam antrian graf yang dilalui. Jika, pada titik tertentu segmen jalan yang dilalui memiliki biaya yang lebih tinggi dari segmen jalan yang lain yang sedang dihadapi, maka A* akan meninggalkan jalan dengan cost yang lebih tinggi.
Algoritma ini menggunakan dua antrian, yaitu OPEN dan CLOSED. Dimulai dengan titik awal dijadikan antrian prioritas titik untuk dilalui, dikenal sebagai OPEN SET. Semakin rendah cost untuk suatu simpul x, semakin tinggi prioritas. Pada setiap langkah dari algoritma A* simpul dengan cost tertinggi maka akan dihapus dari antrian, f dan h nilai-nilai tetangganya diperbarui sesuai dengan relasi pada graf dan tetangga ini ditambahkan ke antrian .
Algoritma A* akan terus mencari sampai titik tujuan yang memiliki nilai f lebih rendah dengan menggunakan nilai heuristik untuk mempersempit ruang pencarian yaitu dengan membatasi vertex yang akan diuji pada setiap percabangan. Jika sudah sampai ke titik tujuan maka A* akan menjumlahkan panjang path yang sebenarnya (Coppin, 2004)
.
Gambar 3.2 Proses Pencarian Algoritma A* Sumber : (Millington et al., 2009)
(35)
21
Pada Gambar 3.2 akan dilakukan pencarian rute dari A ke G, pada saat posisi berada di A vertex pilihan adalah B dan C. B dianggap lebih baik karena total cost berbobot 4.5, sedangkan C mempunyai total cost berbobot 4.8. Pada saat posisi di B, E akan diasumsikan lebih baik karena total cost berbobot 4.6 sedangkan D mempunyai total cost berbobot 5.6. Akan tetapi jika dibandingkan dengan kunjungan sebelumnya yaitu AC, vertex E melalui AC mempunyai total cost terbaik yaitu 4.2. Pada saat posisi di E, vertex tujuan sudah di temukan yaitu EG, sehingga rutenya menjadi A-C-E-G dengan total cost berbobot 4.4.
Berikut terminologi daasar yang terdapat pada algoritma A* (Andysah, 2012): 1. Starting point sebagai posisi awal sebuah benda.
2. Current adalah simpul yang sedang dijalankan pada algoritma pencarian jarak terpendek.
3. Simpul adalah petak kecil atau pixel sebagai representasi dari arah path finding. Bentuknya dapat berupa persegi, lingkaran, maupun segitiga.
4. Open list adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan.
5. Closed list adalah tempat penyimpanan data simpul sebelum Current yang juga merupakan bagian dari jalur terpendek yang telah berhasil diciptakan. 6. “f” adalah nilai yang diperoleh dari penjumlahan. ”g” merupakan jumlah nilai
tiap simpul dalam jalur terpendek dari titik awal ke Current dan “h” merupakan jumlah nilai perkiraan dari sebuah simpul ke simpul tujuan. Sehingga dapat diformulasikan dengan f(x) = g(x) + h(x).
7. Simpul tujuan adalah simpul yang dituju.
8. Halangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh Current.
3.3 Perancangan Graf
Graf yang digunakan pada penelitian ini diperoleh dengan mengambil sebuah bidang potong dari digital map yang diperoleh dari Carrefour tepatnya berada pada lantai I Carrefour Plaza Medan Fair. Lintasan pada peta dibentuk menjadi graf secara manual dengan menarik garis lurus pada jalur-jalurnya (remapping) Gambar 3.3.
(36)
Gambar 3.3 Potongan dari Bidang Peta yang diperoleh dari Carrefour
Setelah diperoleh bentuk dasar dari peta, dapat dilihat tampilan bentuk rak yang dilihat dari atas. Pada tahap berikutnya peta akan diberikan lintasan dan koordinat dengan menggunakan alat bantu gambar. Tampilan lintasan dan koordinatnya dapat dilihat pada Gambar 3.4
Gambar 3.4 Lintasan dan koordinat peta
Kemudian lintasan yang telah dibuat disatukan kedalam potongan peta digital yang dapat dilihat pada Gambar 3.5.
(37)
23
Gambar 3.5 Peta yang telah dilakukan Proses Remapping
Pada Gambar 3.5 dapat dilihat peta telah memiliki jalur yang dapat dilalui dan titik koordinat sebagai titik yang merepresentasikan rak dan titik perpotongan antar lintasan. Terdapat total 109 titik (vertex) yang merepresentasikan rak dan 162 titik (verteks) yang merepresentasikan titik perpotongan antar lintasan. Total lintasan (path) berjumlah 331 lintasan. Untuk setiap keterangan pada peta dapat dilihat pada legenda peta pada Gambar 3.6 berikut :
(38)
Berdasarkan Gambar 3.6 penempatan barang yang terdaftar pada setiap rak dijelaskan seperti berikut :
1. Rak Sayur dan Buah : Bumbu Tradisional, Buah Import, Buahl Lokal, Sayuran Import, Sayuran Lokal, Buah dan Sayuran Kaleng.
2. Rak Tumpukan : Segala jenis beras ukuran 30 kg dan Mie Instan dus
3. Rak Bertingkat : Menu Sarapan, Krimer & Gula, Selai, Sereal, Makanan Diet, Perlengkapan Kue, Mie & Pasta, Makanan Kaleng, Seafood Kering, Makanan Binatang, Snacks, Makanan Manis, Hard Candies, Permen Cokelat, Cokelat Blok, Susu Bubuk, Bir, Makanan Kering, Daging kering & Asin, Kacang-kacangan, Biskuit, Biskuit Krakers, Kue, Kue Kering, Wafer, Rolls, Sandwiches, Saus & Kecap, Dressing.
4. Rak Berpendingin : Cola dan soda, Functional driks, Air mineral, Minuman energi, Susu Cair, Minuman kemasan lainnya.
5. Rak Makanan dan Minuman Basah : Seafood, Daging, Salad Buah dan Sayur, Ikan, Gorengan, Yogurt.
6. Rak Dinding Bertingkat : Perlengkapan Bayi, Camilan Tradisional, Cake dan Roti, Beras, Minyak Sawit dan Vinegar, Mie Instan.
3.4 Use Case Diagram
Perancangan sistem digambarkan dengan menggunakan pemodelan use case. Untuk pengidentifikasian aktor berdasarkan pada tahap analisis pengguna, aktor yang berperan dalam aplikasi ini hanya satu aktor yaitu pengguna yang akan menggunakan sistem untuk melakukan pencarian posisi barang.
Use case yang terjadi adalah use case melakukan pencarian posisi barang. Diagram use case dapat memberikan gambaran interaksi yang terjadi antara aktor dengan use case di dalam sistem. Berdasarkan pengidentifikasian aktor dan use case, scenario use case yang terjadi dapat digambarkan dengan diagram use case pada Gambar 3.7
(39)
25
Pegawai
Pencarian Barang
Gambar 3.7 Diagram use case untuk pencarian posisi barang
Use Case Specification untuk Gambar 3.7 adalah sebagai berikut:
1. Brief Description
Use case ini digunakan oleh pengguna untuk melakukan pencarian posisi barang. 2. Pre Condition
Pengguna harus mengisi kolom id barang untuk diproses oleh sistem. 3. Characteristic of activation
Eksekusi hanya bisa dilakukan oleh pengguna. 4. Flow of Events
a. Basic Flow
- Use caseini akan dimulai jika pengguna menekan tombol “Search”.
- Kemudian sistem menampilkan halaman output pada peta dan kolom hasil.
- Use case ini berakhir ketika sistem menampilkan halaman output. b. Alternative Flow
- Jika user ingin menghasilkan output berupa hard copy, maka user dapat menekan tombol “Print”.
5. Post Condition
Untuk melakukan pencarian lagi, pengguna harus membuka menekan tombol
“Clear”. 6. Limitation
Untuk mendapatkan hasil yang tepat, id barang yang di input harus jelas dan terhindar dari kesalahan pengetikan kata.
(40)
3.5 Flowchart
Flowchart merupakan suatu representasi grafis dan langkah-langkah yang harus diikuti dalam menyelesaikan suatu permasalahan yang disusun dari beberapa symbol yang masing-masing symbol memiliki kegiatan tertentu (Indra Yatini B, 2010). Flowchart merupakan bagian yang menampilkan alur proses kerja yang terjadi ataupun sedang dikerjakan dalam keseluruhan sistem dengan meyusun urutan prosedur-prosedur yang akan dilakukan.
Berikut in adalah bentuk-bentuk flowchart yang menjelaskan alur proses dari aplikasi pencarian jalur terpendek dari awal hingga akhir, termasuk proses algoritma A* (A Star).
3.5.1 Flowchart Sistem
Berikut ini adalah gambaran dari flowchart sistem untuk sistem penentuan rute terpendek yang dapat di lihat pada Gambar 3.8
(41)
27
Mulai
Tampilkan Halaman openning
screen
Tampilkan Halaman Home
(peta dan input field)
Input Kode Barang
Pencarian dengan A* berhasil
tidak
Selesai Tampilkan
Rute Terpendek
ya Sorting Hasil
tidak Select * from tbl_posisi where id_produk = ‘”.id_barang.”’
Hard copy
Gambar 3.8 Flowchart Sistem
Penjelasan dari Gambar 3.8 adalah :
(42)
User akan diarahkan menuju halaman home
Pada halaman home, user akan diberikan tampilan peta dan kolom input untuk melakukan pencarian barang
Pada kolom input, user akan memasukkan kode barang yang dicari, misalkan : 1, 40, 5, 3,10
Sistem akan melakukan query pada database untuk melakukan cek ketersedian barang pada rak.
Kemudian sistem akan mencari koordinat posisi rak yang telah dilakukan query.
Koordinat pertama akan dijadikan tujuan awal dan akan dilakukan pencarian jarak dengan fungsi A*.
Setelah hasil jarak antara titik awal dan titik tujuan pertama di dapatkan. Maka proses pencarian kembali dilanjutkan ke titik tujuan selanjutnya.
Setiap jarak akan dibandingkan, jarak terpendek adalah jarak yang menjadi prioritas utama untuk dilalui.
Tampilkan jalur kedalam peta dan keterangan hasil pada kolom hasil.
Disediakan fungsi print untuk menghasilkan hard copy.
3.5.2 Flowchart A*
Berikut ini adalah gambaran dari flowchart algoritma A* untuk sistem pencarian jalur terpendek yang dapat di lihat pada Gambar 3.9
(43)
29
Mulai
Input, Goal X1, Y1, X2,Y2
ProsesManhattan H(x) = abs ((X2-X1)+(Y2-Y1))
Kirim H ke Proses A*
Proses Routing A* F(X) = G(X) + H(X)
Tampilkan Rute Terpendek
Selesai
Gambar 3.9 Flowchart A*
Penjelasan dari Gambar 3.9 adalah :
Dimasukkan input awal dan akhir berupa koordinat (x1,y1) (x2,y2).
Koordinat dilakukakan pendekatan heuristik dengan menggunakan fungsi Manhattan Distance.
Kirim nilai heuristikke proses A*.
Lalu akan dilakukan proses pencarian jalur terdekat dengan fungsi A*.
(44)
3.6 Perancangan Aplikasi dan Antarmuka Pemakai
Perancangan perangkat lunak sistem penentuan rute terpendek untuk order picking pada hypermarket terdiri dari penggambaran atau perencanaan dari beberapa elemen dalam pengembangan aplikasi. Rancangan aplikasi yang akan di buat adalah aplikasi pencarian jalur terpendek yang dapat dijalankan oleh pegawai. Aplikasi ini digunakan untuk menentukan titik barang yang dicari, kamudian akan dicari posisi barang dan rute terpendeknya. Aplikasi ini menerapkan algoritma A* (A Star) sebagai pencarian solusi terbaik.
3.6.1 Perancangan Database
Database pada aplikasi ini berfungsi untuk tempat penyimpanan data-data antara lain tabel tbl_path, tbl_perjalanan, tbl_posisi, tbl_produk serta tbl_rak.
a. Tabel tbl_path
Tabel ini berfungsi sebagai relasi antar titik yang terdaftar. Struktur tabel ini dapat dilihat pada Tabel 3.1
Table 3.1 Tabel tbl_path
No Nama Field Tipe Ukuran Keterangan
1. Id Int 5 Nomor Id Path (primary key)
2. Asal Varchar 4 Titik awal
3. Tujuan Varchar 4 Titik akhir
b. Tabel tbl_perjalanan
Tabel ini berfungsi sebagai tempat penyimpanan hasil pencarian rute. Struktur tabel ini dapat dilihat pada Tabel 3.2
(45)
31
Table 3.2 Tabel tbl_perjalanan
No Nama Field Tipe Ukuran Keterangan
1. id_perjalanan Int 11 Nomor ID Perjalanan
(primary key)
2. id_produk Int 11 Nomor ID Produk
3. id_rak_awal Int 11 Nomor ID Rak Awal (start) 4. id_rak_tujuan Int 11 Nomor ID Rak Awal (end) 5. panjang_perjalanan Int 11 Jarak
6. simpang_dilewati Varchar 100 Rute Pencarian Jarak
c. Tabel tbl_posisi
Tabel ini berfungsi sebagai tempat penyimpanan relasi antar produk dan rak. Struktur tabel ini dapat dilihat pada Tabel 3.3
Table 3.3 Tabel tbl_posisi
No Nama Field Tipe Ukuran Keterangan
1.
No Int 5 Nomor ID Posisi(primary
key)
2. id_produk Int 5 Nomor ID Produk
3. id_rak Int 11 Nomor ID Rak Penyimpanan
Produk
d. Tabel tbl_produk
Tabel ini berfungsi sebagai tempat penyimpanan daftar produk yang disimpan dalam suatu rak. Struktur tabel ini dapat dilihat pada Tabel 3.4
(46)
Table 3.4 Tabel tbl_produk
No Nama Field Tipe Ukuran Keterangan
1. id_produk Int 5 Nomor ID Posisi(primary
key)
2. nama_produk Int 5 Nomor ID Produk
3. Jenis Int 11 Nomor ID Rak Penyimpanan
Produk
e. Tabel tbl_rak
Tabel ini berfungsi sebagai tempat penyimpanan koordinat x dan y dari setiap rak dan titik bantu pada path. Struktur tabel ini dapat dilihat pada Tabel 3.5
Table 3.5 Tabel tbl_rak
No Nama Field Tipe Ukuran Keterangan
1. id_rak Int 5 Nomor ID Rak Penyimpanan
Produk
2. nama_titik varchar 4 Titik Rak dan Titik Bantu
3. pos_x Int 5 Koordinat sumbu X
4. pos_y Int 5 Koordinat sumbu Y
3.6.2 Perancangan Relasi Antar Tabel
Rancangan relasi antar tabel berfungsi untuk menampilakn informasi relasi (dependence) antara tabel pada database. Rancangan relasi antar tabel dapat dilihat seperti Gambar 3.10
(47)
33 tbl_path PK id asal tujuan FK1 id_rak tbl_perjalanan PK id_perjalanan id_barang id_rak_awal id_rak_tujuan panjang_perjalanan simpang_dilewati FK1 id tbl_posisi PK no id_produk id_rak tbl_produk PK id_produk nama_produk jenis FK1 no tbl_rak PK id_rak nama_titik pos_x pos_y FK1 no
Gambar 3.10 Relasi Database
3.6.3 Rancangan Home
Rancangan home berfungsi untuk menampilkan informasi gambar peta hypermarket serta tempat menu keberadaan program-program pendukung sistem penentuan jarak terdekat yang terdiri dari “Kolom Pencarian” dan “Keterangan Hasil”. Bentuk rancangan home terlihat seperti pada Gambar 3.11.
Rancangan halaman home pada Gambar 3.11 terdapat delapan komponen penting pada antarmuka, yaitu header(1) yang menggambarkan aplikasi penelitian ini, peta(2) yang menunjukkan gambaran peta hypermart Carrefour lantai I, text input(3) yang berisi id barang yang dimasukkan oleh pengguna, tombol “Search”(4) untuk
melakukan proses pencarian, tombol “Clear”(5) untuk melakukan proses pencarian
ulang, tombol “Print”(6) untuk melakukan proses cetak output, text output (7) yang menampilkan hasil pencarian dari input dan footer(8) tambahan untuk copyright dan.
(48)
Gambar 3.11 Rancangan Home
Header
2. Gambar Peta Carrefour Lantai 1
8. Footer
3. Input Pencarian
7. Hasil Pencarian 4. search 5. clear
6. print
(49)
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini akan diuraikan tahapan selanjutnya dalam pengembangan sistem yaitu tahap implementasi dan pengujian sistem. Di sini akan dijelaskan tentang proses pengimplementasian algoritma ke dalam sistem dan melakukan pengujian dari sistem yang dikembangkan.
4.1. Spesifikasi Perangkat Keras dan Perangkat Lunak
Spesifikasi perangkat lunak yang digunakan selama pembangunan sistem adalah sebagai berikut:
1. Operating System Windows 7 32-bit, 2. Web Server Apache 2.2.14,
3. PHP 5.3.1, 4. MySQL 5.1.41.
Agar perangkat lunak dapat berjalan dengan baik untuk para pengguna, maka spesifikasi yang dibutuhkan oleh sistem baik dari sisi perangkat keras (hardware) maupun perangkat lunak (software) dapat diuraikan sebagai berikut.
Untuk perangkat keras, yang direkomendasikan adalah sebagai berikut: 1. Processor dengan kecepatan minimal 1 GHZ,
2. Hardisk minimal 80 GB, 3. RAM minimal 1 MB,
4. Monitor 14,1” dengan resolusi layar minimum 800 x 600 pixel, 5. Mouse dan Keyboard.
(50)
Untuk perangkat lunak, yang dapat mendukung agar sistem dapat berjalan adalah sebagai berikut:
1. Operating system Microsoft Windows 7, Windows 8,
2. Browser, seperti Mozilla Firefox, Google Chrome, dan lain-lain, 3. PHP 5.3.1,
4. MySQL 5.1.41,
5. Web Server Apache 2.2.14.
4.2. Antarmuka Pengguna (User Interface)
Setelah melewati tahap analisis perancangan antarmuka pengguna, rancangan digunakan sebagai acuan untuk proses pengkodean halaman-halaman pada perangkat lunak. Rencana pengujian sistem yang akan diuji dapat dilihat pada Tabel 4.1 berikut.
Tabel 4.1 Tabel Rencana Pengujian
No. Komponen Sistem yang Diuji Butir Uji
1 Halaman Home Mencoba menu yang ada pada halaman Home, yaitu : Kolom Input, Tombol
“Search”, “Clear”, “Print” dan Kolom Output
4.2.1 Tampilan Halaman Home
Halaman home berisi tampilan peta, data input yang telah diberikan pengguna berupa id barang serta keterangan hasil (output) pencarian yang dilakukan berdasarkan pengecekan pada database. Pada halaman ini juga disediakan tombol “Print” untuk mencetak hardcopy dari hasil pencarian. Halaman home yang telah dilakukan pengkodean ditunjukkan pada Gambar 4.1.
(51)
37
Gambar 4.1 Tampilan halaman home sebelum dilakukan pencarian
Pada halaman ini disediakan kolom input untuk memasukkan id barang yang akan dilakukan pencarian. Kolom tersebut disediakan sebanyak 5 kolom, dapat dilihat pada Gambar 4.2
(52)
Pada Halaman ini juga disediakan kolom keterangan hasil pencarian yang menampilkan keterangan hasil pencarian. Kolom tersebut dapat dilihat pada Gambar 4.3
Gambar 4.3 Tampilan kolom keterangan hasil pencarian
Setelah pengkodean telah selesai dilakukan, maka selanjutnya dilakukanlah evaluasi terhadap tampilan halaman home. Hasil proses evaluasi dapat dilihat pada Tabel 4.2 berikut.
Tabel 4.2 Tabel Hasil Evaluasi pada Tampilan Halaman Home No. Sasaran Pengujian Hasil yang
Diharapkan
Hasil Pengujian
Status
1 Uji tampilan halaman home
Menampilkan Peta, kolom input, kolom keterangan hasil pencarian, button “Search”,
“Clear” dan “Print”
Menampilkan Peta, kolom input, kolom keterangan hasil pencarian,
button “Search”, “Clear” dan “Print”
Berhasil
2 Uji pemilihan Tombol
Proses button
“Search”, “Clear” dan “Print”
Proses button
“Search”, “Clear” dan “Print”
(53)
39
Gambar 4.4 Tampilan halaman home sesudah dilakukan pencarian
Halaman home seperti yang ditunjukkan pada Gambar 4.4, pada sisi kiri nantinya akan berisi tampilan peta dan lintasan yang dilalui, pada sisi kanan bawah akan menampilkan keterangan hasil dari pencarian. Keterangan tersebut berupa id barang, posisi barang yang dituju, titik asal, titik tujuan, panjang perjalanan, total waktu pencarian dan total waktu perjalanan.
User juga diberikan kemudahan untuk menghasilkan hard copy berupa hasil print yang dapat dilihat pada Gambar 4.5
(54)
Setelah proses pengkodean telah selesai dilakukan, maka selanjutnya dilakukanlah evaluasi terhadap tampilan halaman home setelah melakukan proses pencarian. Hasil proses evaluasi dapat dilihat pada Tabel 4.3. Evaluasi ditujukan untuk mengetahui apakah setiap menu pada halaman output telah berhasil diimplementasi dan digunakan saat sistem telah selesai dilakukan pengkodean.
Tabel 4.3 Tabel Hasil Evaluasi pada Tampilan Halaman Output No. Sasaran Pengujian Hasil yang
Diharapkan
Hasil Pengujian
Status
1 Uji tampilan halaman home setelah dilakukan pencarian
Menampilkan Peta, lintasan, kolom input, kolom
keterangan hasil pencarian, button
“Search”, “Clear” dan “Print
Menampilkan Peta, lintasan, kolom input, kolom
keterangan hasil pencarian, button
“Search”, “Clear” dan “Print
Berhasil
2 Uji pemilihan Tombol print
Output print Output print Berhasil
4.3. Pengujian Sistem Secara Menyeluruh
Untuk pengujian sistem data barang yang telah di input ke dalam sistem berjumlah 545 barang. Data tersebut meliputi 5 nama produk dengan jenis yang berbeda pada setiap rak yang direpresentasikan kedalam vertex. Data tersebut didapat dari divisi Supply and ChainManagement Carrefour Plaza Medan Fair.
Data juga meliputi vertex-vertex dan relasi antar vertex contoh data yang produk telah di input ke dalam database pada Gambar 4.6 berikut.
(55)
41
Gambar 4.6 Sampel data produk
Contoh data relasi antar vertex yang telah di input ke dalam database dapat di lihat pada Gambar 4.7.
(56)
Pengujian pencarian dilakukan dengan menggunakan contoh sebagai berikut: Dilakukan pencarian barang dengan melakukan input kode barang, diberikan contoh : 1, 40, 5, 3, 10 seperti yang terlihat pada Gambar 4.8 berikut.
Gambar 4.8 Sampel 1 input kode barang
Berdasarkan sampel pengujian, output yang dihasilkan sesuai dengan analisis dan perancangan yang dilakukan sebelumnya dapat dilihat pada Gambar 4.9 berikut.
(57)
43
Gambar 4.9 Hasil pencarian untuk sampel 1
ID Barang : 1 Posisi Barang : A1 Titik Asal : A Titik Tujuan : A1
Panjang Perjalanan : (11.4 m)
ID Barang : 5 Posisi Barang : A1 Titik Asal : A1 Titik Tujuan : A1
Panjang Perjalanan : (0 m)
ID Barang : 3 Posisi Barang : A1 Titik Asal : A1 Titik Tujuan : A1
Panjang Perjalanan : (0 m)
ID Barang : 10 Posisi Barang : A2 Titik Asal : A1 Titik Tujuan : A2
Panjang Perjalanan : (18.1 m)
ID Barang : 40 Posisi Barang : A8 Titik Asal : A2 Titik Tujuan : A8
Panjang Perjalanan : (89.1 m)
ID Barang : 0 Posisi Barang : A Titik Asal : A8 Titik Tujuan : A
Panjang Perjalanan : (67.6 m)
Total Waktu Pencarian 3.7023890018463 detik
Total Perjalanan 1186 meter
Kecepatan Rata-rata perjalanan 5 km/jam
(58)
Untuk menganalisis berapa lama sistem mencari barang berdasarkan banyaknya barang yang ingin dicari dapat dilihat pada Tabel 4.4.
Tabel 4.4 Tabel Pengujian Waktu Pencarian Berdasarkan Jumlah Barang
No Jumlah Input barang Waktu Pengujian
1. 1 2.41 detik
2. 2 2.83 detik
3. 3 2.99 detik
4. 4 3.34 detik
(59)
BAB 5
KESIMPULAN DAN SARAN
5.1. Kesimpulan
Berdasarkan analisis dari sistem dan pengujian sistem secara menyeluruh yang telah dilakukan pada bab sebelumnya, maka ada beberapa hal yang dapat dijadikan kesimpulan pada penelitian ini antara lain:
1. Algoritma A* (A Star) dengan modifikasi mampu menyelesaikan permasalahan dalam penentuan jarak terdekat.
2. Sistem penentuan jalur terpendek dengan menggunakan algoritma A* (A Star) mampu mempercepat pencarian barang pada kegiatan order picking pada hypermarket Carrefour.
5.2. Saran
Penulis menyarankan dalam pengembangan penelitian lebih lanjut untuk sistem penentuan rute terpendek sebagai berikut:
1. Sistem ini selanjutnya diharapkan dapat memberikan informasi terperinnci tentang penentuan yang lebih tepat dengan adanya aturan-aturan yang menjadi parameter dalam pencarian barang, seperti desain rak, maximum beban alat angkut (trolley) dan lain-lain.
2. Sistem ini dapat mendukung pencarian jarak dengan merepresentasikan grafis 3-Dimensi.
(60)
DAFTAR PUSTAKA
Aini, Dewi Yusra. 2012. Analisis Algoritma A Star (A*) dan Implementasinya dalam Pencarian Jalur Terpendek pada Jalur Lintas Sumatera di provinsi Sumatera Utara. Universitas Sumatera Utara. Medan.
Andysah, Putera Utama Siahaan. 2012. Pengaruh Fungsi Heuristik Terhadap Nilai Optimum Global Pada Pencarian Jalur Terpendek. Universitas Sumatera Utara. Medan.
Christophe, Theys, Olli, Braysy, Wout, Dullaert, Birger, Raa. 2009. Using a TSP heuristic for routing order pickers in warehouses. European Journal of Operational Research 200 (2010) 755–763
Coppin, Ben. 2004. Artificial Intelligent Illuminated. Jones and Bartlett Publishers.
Daniels, Richard L, Christophe, Jeffrey L, Robert, Schantz. 1998. A Model For Warehouse Order Picking. European Journal of Operational Research 105 (1998) 1–17
Dina, Syahfitri. 2010. Simulasi Pencarian Jarak Terdekat (Shortest Path) dengan Menggunakan Algoritma A* (Studi Kasus pada Perpustakaan Politeknik Negeri Medan). Universitas Sumatera Utara. Medan.
Flanagan, David. 2012. JavaScript Pocket Reference Third Edition. Published by
O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA
95472. ISBN: 978-1-449-31685-3
Frazelle, E. 2002. World-Class Warehousing and Material Handling. McGraw_Hill : New York.
(61)
47
Hart, P. E, Nilsson, N. J, Raphael, B. 1968. A Formal Basis for the Heuristic Determination of Minimum Cost Paths. IEEE Transactions on Systems Science and Cybernetics SSC4 4 (2): 100–107. doi:10.1109/TSSC.1968.300136
Indra, Yatini B. 201. Flowchart, Algoritma dan Pemrograman menggunakan Bahasa C++ Bulider. Jakarta : Graha Ilmu.
Millington, Ian, Jhon Funge. 2009. Artificial Intelligence For Games. Morgan Kaufmann Publisher.
Munir, Rinaldi. 2004. Matematika Diskrit. Departemen Teknik Informatika Bandung.
Petersen, C.G, Schmenner, R.W. 1999. An Evaluation of Routing and Volume-based Storage Policies in an Order Picking Operation. Decision Sciences 30(2), 481-501
Phaneendhar, Reddy Vanam. 2011. Shortest path using A_Algorithm. Computer Science, Indiana State University, Terre Haute. USA
Prasetyo, E. 2008. Pemrograman Web PHP & MySQL untuk Sistem Informasi Perpustakaan. Yogyakarta: Graha Ilmu.
Rosa, A.S. & Shalahuddin, M. 2011. Modul Pembelajaran Rekayasa Perangkat Lunak (Terstruktur dan Berorientasi Objek). Bandung: Penerbit Modula.
Rozy, Muhammad Lubis. 2014. Implementasi Algoritma Brute Force Untuk Permasalahan Dalam Penerjemahan Idiom Bahasa Inggris. Universitas Sumatera Utara. Medan.
Wäscher, G, Henn, S, Koch, S. Order Batching in Order Picking Warehouse : A Survey of Solution Approach. Working Paper. 01/2011
(62)
Zakaria, Teddy Marcus. 2005. Konsep dan Implementasi Struktur Data. Bandung : Informatika.
(63)
LAMPIRAN I LISTING PROGRAM
//proses query barang dan pencarian a* <?php
include '../../include/sqldb.php'; include '../astar/a-star.php';
// mencari posisi rak untuk masing-masing barang $barang = array();
foreach($_POST["input1"] as $key => $id_barang) {
if(!empty($id_barang)) {
// lakukan query utk mencari rak barang tsb
$query = mysql_query("select * from tbl_posisi where id_produk = '".$id_barang."'") or die(mysql_error());
if(mysql_num_rows($query)) {
$fetch = mysql_fetch_assoc($query); $barang[$id_barang] = $fetch["id_rak"]; }
} }
// setelah rak utk msg2 barang ditemukan, implementasi algoritma A* // Proses perjalanan dimulai dari sini
$width = 750; $height = 350;
(64)
$total_jarak = 0;
mysql_query("truncate tbl_perjalanan"); $map = bentuk_map($width, $height); $titik_awal = 1; // titik A sebagai start awal while(!empty($barang))
{
$rak_terdekat = 0; $barang_terdekat = 0;
$jarak_terdekat = 999999999999; $path_terdekat = array();
foreach($barang as $id_barang => $id_rak) {
$path = pencarian_terpendek($titik_awal, $id_rak); // pencarian_terpendek(id_rak_awal, id_rak_tujuan)
$pjg_path = panjang_path($path); if($pjg_path<$jarak_terdekat) {
$rak_terdekat = $id_rak;
$barang_terdekat = $id_barang; $jarak_terdekat = $pjg_path; $path_terdekat = $path; }
}
$simpang_dilalui = simpang_dilalui($path_terdekat); $simpang_dilalui_teks = "";
foreach($simpang_dilalui as $key => $id_simpang) $simpang_dilalui_teks .= $id_simpang.","; $simpang_dilalui_teks = substr($simpang_dilalui_teks, 0, strlen($simpang_dilalui_teks)-1);
$perjalanan[] = array($barang_terdekat, $titik_awal, $rak_terdekat, $jarak_terdekat, $simpang_dilalui_teks);
(65)
51
$query = mysql_query("insert into tbl_perjalanan values(null, '$barang_terdekat', '$titik_awal', '$rak_terdekat', '$jarak_terdekat',
'$simpang_dilalui_teks')") or die(mysql_error());
$titik_awal = $rak_terdekat; // titik awal = rak terdekat yg baru saja ditemukan
unset($barang[$barang_terdekat]); // membuang titik awal dari array
$total_jarak += $jarak_terdekat; }
$path = pencarian_terpendek($titik_awal, 1); $pjg_path = panjang_path($path);
$simpang_dilalui = simpang_dilalui($path); $simpang_dilalui_teks = "";
foreach($simpang_dilalui as $key => $id_simpang) $simpang_dilalui_teks .= $id_simpang.","; $simpang_dilalui_teks = substr($simpang_dilalui_teks, 0, strlen($simpang_dilalui_teks)-1);
$query = mysql_query("insert into tbl_perjalanan values(null, '', '$titik_awal', '1', '$pjg_path', '$simpang_dilalui_teks')") or die(mysql_error());
?>
//proses menamilkan keterangan hasil <?php
//Menampilkan Keterangan Hasil
$query = mysql_query("select * from tbl_perjalanan"); if(mysql_num_rows($query)){
(66)
{
$fetch_rak_awal = mysql_fetch_assoc(mysql_query("select * from tbl_rak where id_rak = '".$fetch["id_rak_awal"]."'"));
$fetch_rak_tujuan = mysql_fetch_assoc(mysql_query("select * from tbl_rak where id_rak = '".$fetch["id_rak_tujuan"]."'"));
echo "
ID Barang : ".$fetch["id_barang"]."<br>
Posisi Barang : ".$fetch_rak_tujuan["nama_titik"]."<br> Titik Asal : ".$fetch_rak_awal["nama_titik"]."<br> Titik Tujuan : ".$fetch_rak_tujuan["nama_titik"]."<br> Panjang Perjalanan : (".($fetch["panjang_perjalanan"]*0.1)." m)<br><br>";
//Simpang Dilalui : ".$fetch["simpang_dilewati"]."<br><br> }
echo "Total Waktu Pencarian ".$_GET["time"]." detik <br>"; echo "Total Perjalanan ".$_GET["total_jarak"]." meter <br>";
echo "Kecepatan Rata-rata perjalanan ".$_GET["kecepatan"]." km/jam <br>";
$kecepatan_ms = $_GET["kecepatan"]*1000/3600;
$waktu = $_GET["total_jarak"]/$kecepatan_ms; //satuan second echo "Waktu Perjalanan : ".$waktu." detik<br>";
} ?>
(67)
LAMPIRAN II
SAMPEL DAFTAR PRODUK
id_produk nama_produk Jenis
1. Mamypoko perlengkapan bayi
2. Dryhumps perlengkapan bayi
3. Pampers perlengkapan bayi
4. Sweety perlengkapan bayi
5. cfd diapers baby perlenkapan bayi
6. Picnic Dodol K 500 Gr camilan tradisional
7. Golden Sail Sha Ho Fun 280g camilan tradisional
8. Kabita Pisang Sale Keju Bag 170 Gr camilan tradisional
9. Cf Kacang Telor Medan Bag 230gr camilan tradisional
10. Cf Keripik Pisang Bag 250gr camilan tradisional
11. Del Monte Fruit Cocktail makanan kaleng
12. Dm Fiesta Tropical Fruit makanan kaleng
(68)
14. Maling Green Peas 397gr makanan kaleng
15. Sozzis Sapi Siap Makan 450gr makanan kaleng
16. Daging Ayam Daging
17. Daging Bebek Daging
18. Daging Sapi Lokal Daging
19. Daging Sapi Wagiyu Daging
20. Daging Ham Daging
21. Ikan Salmon 500gr Ikan
22. Ikan Asin Cakallang 500gr Ikan
23. Ikan Pari 500gr Ikan
24. Ikan Teri Medan Ikan
25. Ikan Tongkol Fillet 500gr Ikan
26. Bolu Gulung Coklat Keju Cake dan Roti
27. Pastel Ayam Cake dan Roti
28. Mini Tart Strawberry Cake dan Roti
29. Roti Klatak Cake dan Roti
(69)
55
31. Mama Rice Vermicelli 400 Gr Mie dan Pasta
32. San Remo Elbow 500gr Mie dan Pasta
33. La Fonte Sp Fusilli 500gr Mie dan Pasta
34. Pilihan Bunda Bihun 500gr Mie dan Pasta
35. Ayam 2 Telor Mie Telor 200gr Mie dan Pasta
36. Sipulen Pandan Wangi 10 Kg Beras
37. Muria Beras Merah 500g* Beras Merah Beras
38. Topi Koki Pandan Wangi 5kg Beras
39. Murai Indah Harum 5 kg Beras
40. Beras Cap Guci Emas 5 kg Beras
41. Tropical Jerigen 5000 Ml Minyak Sawit
42. Filma Minyak Goreng 5 Lt Minyak Sawit
43. Bimoli Special 5 lt Minyak Sawit
44. Fortune 5 lt Minyak Sawit
45. Cfd Minyak Goreng 5 lt Minyak Sawit
46. Kikkoman Premium Soy Sauce Saus dan kecap
(70)
48. Tabasco Sauce 60ml Saus dan kecap
49. Sasa Sambal Asli Saus dan kecap
(1)
$query = mysql_query("insert into tbl_perjalanan values(null, '$barang_terdekat', '$titik_awal', '$rak_terdekat', '$jarak_terdekat',
'$simpang_dilalui_teks')") or die(mysql_error());
$titik_awal = $rak_terdekat; // titik awal = rak terdekat yg baru saja ditemukan
unset($barang[$barang_terdekat]); // membuang titik awal dari array
$total_jarak += $jarak_terdekat; }
$path = pencarian_terpendek($titik_awal, 1); $pjg_path = panjang_path($path);
$simpang_dilalui = simpang_dilalui($path); $simpang_dilalui_teks = "";
foreach($simpang_dilalui as $key => $id_simpang) $simpang_dilalui_teks .= $id_simpang.","; $simpang_dilalui_teks = substr($simpang_dilalui_teks, 0, strlen($simpang_dilalui_teks)-1);
$query = mysql_query("insert into tbl_perjalanan values(null, '', '$titik_awal', '1', '$pjg_path', '$simpang_dilalui_teks')") or die(mysql_error());
?>
(2)
52
{
$fetch_rak_awal = mysql_fetch_assoc(mysql_query("select * from tbl_rak where id_rak = '".$fetch["id_rak_awal"]."'"));
$fetch_rak_tujuan = mysql_fetch_assoc(mysql_query("select * from tbl_rak where id_rak = '".$fetch["id_rak_tujuan"]."'"));
echo "
ID Barang : ".$fetch["id_barang"]."<br>
Posisi Barang : ".$fetch_rak_tujuan["nama_titik"]."<br> Titik Asal : ".$fetch_rak_awal["nama_titik"]."<br> Titik Tujuan : ".$fetch_rak_tujuan["nama_titik"]."<br> Panjang Perjalanan : (".($fetch["panjang_perjalanan"]*0.1)." m)<br><br>";
//Simpang Dilalui : ".$fetch["simpang_dilewati"]."<br><br> }
echo "Total Waktu Pencarian ".$_GET["time"]." detik <br>"; echo "Total Perjalanan ".$_GET["total_jarak"]." meter <br>";
echo "Kecepatan Rata-rata perjalanan ".$_GET["kecepatan"]." km/jam <br>";
$kecepatan_ms = $_GET["kecepatan"]*1000/3600;
$waktu = $_GET["total_jarak"]/$kecepatan_ms; //satuan second echo "Waktu Perjalanan : ".$waktu." detik<br>";
} ?>
(3)
LAMPIRAN II
SAMPEL DAFTAR PRODUK
id_produk
nama_produk
Jenis
1.
Mamypoko
perlengkapan bayi
2.
Dryhumps
perlengkapan bayi
3.
Pampers
perlengkapan bayi
4.
Sweety
perlengkapan bayi
5.
cfd diapers baby
perlenkapan bayi
6.
Picnic Dodol K 500 Gr
camilan tradisional
7.
Golden Sail Sha Ho Fun 280g
camilan tradisional
8.
Kabita Pisang Sale Keju Bag 170 Gr
camilan tradisional
(4)
54
14.
Maling Green Peas 397gr
makanan kaleng
15.
Sozzis Sapi Siap Makan 450gr
makanan kaleng
16.
Daging Ayam
Daging
17.
Daging Bebek
Daging
18.
Daging Sapi Lokal
Daging
19.
Daging Sapi Wagiyu
Daging
20.
Daging Ham
Daging
21.
Ikan Salmon 500gr
Ikan
22.
Ikan Asin Cakallang 500gr
Ikan
23.
Ikan Pari 500gr
Ikan
24.
Ikan Teri Medan
Ikan
25.
Ikan Tongkol Fillet 500gr
Ikan
26.
Bolu Gulung Coklat Keju
Cake dan Roti
27.
Pastel Ayam
Cake dan Roti
28.
Mini Tart Strawberry
Cake dan Roti
29.
Roti Klatak
Cake dan Roti
(5)
31.
Mama Rice Vermicelli 400 Gr
Mie dan Pasta
32.
San Remo Elbow 500gr
Mie dan Pasta
33.
La Fonte Sp Fusilli 500gr
Mie dan Pasta
34.
Pilihan Bunda Bihun 500gr
Mie dan Pasta
35.
Ayam 2 Telor Mie Telor 200gr
Mie dan Pasta
36.
Sipulen Pandan Wangi 10 Kg
Beras
37.
Muria Beras Merah 500g* Beras Merah
Beras
38.
Topi Koki Pandan Wangi 5kg
Beras
39.
Murai Indah Harum 5 kg
Beras
40.
Beras Cap Guci Emas 5 kg
Beras
41.
Tropical Jerigen 5000 Ml
Minyak Sawit
42.
Filma Minyak Goreng 5 Lt
Minyak Sawit
43.
Bimoli Special 5 lt
Minyak Sawit
(6)
56