Sistem Informasi Seminar Internasional ICO-APICT 2013

(1)

IMPLEMENTASI MULTI-AGENT PATH FINDING

MENGGUNAKAN ALGORITMA WHCA* PADA WEBOTS

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana

OLEH:

Fazhal Darul Farhi 10112901

PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA 2015


(2)

iii

KATA PENGANTAR

Assalamualaikum Warahmatullahi Wabarakatuh.

Alhamdulillahi Robbil ’Alamin, puji dan syukur penulis panjatkan kehadirat

Allah Subhanahu wa Ta'ala atas berkat rahmat serta kasih-Nya sehingga penulis

dapat menyelesaikan skripsi ini dengan judul “IMPLEMENTASI MULTI-AGENT

PATH FINDING MENGGUNAKAN ALGORITMA WHCA* PADA WEBOTS“. Penulisan skripsi ini bertujuan untuk memenuhi sebagian syarat memperoleh gelar sarjana pendidikan bagi mahasiswa program S1 pada program studi Teknik Informatika Universitas Komputer Indonesia, Bandung. Penulis menyadari bahwa skripsi ini masih jauh dari kesempurnaan, oleh sebab itu penulis mengharapkan kritik dan saran yang bersifat membangun dari semua pihak demi kesempurnaan skripsi ini.

Selesainya skripsi ini tidak terlepas dari bantuan berbagai pihak, sehingga pada kesempatan ini penulis dengan segala kerendahan hati dan penuh rasa hormat mengucapkan terima kasih yang sebesar-besarnya kepada semua pihak yang telah memberikan bantuan moril maupun materil secara langsung maupun tidak langsung kepada penulis dalam penyusunan skripsi ini hingga selesai, terutama kepada yang saya hormati :

1. Yang tercinta ibunda dan ayahanda yang telah memberikan dorongan, mencurahkan segenap perhatian dan doa untuk keberhasilan penulis dan bantuannya dari segi moril maupun materil.

2. Bapak Irawan Afrianto, S.T., M.T., selaku Ketua Program Studi Teknik Informatika, Fakultas Teknik dan ilmu Komputer, UNIKOM.

3. Bapak Irfan Maliki, S.T., M.T., selaku dosen wali yang telah memberikan saran, arahan dan bimbingan kepada penulis.

4. Ibu Nelly Indriani Widiastuti, S.Si., M.T. selaku dosen pembimbing yang telah memberikan saran, arahan, dorongan dan bimbingan kepada penulis dalam menyelesaikan skripsi ini

5. Ibu Kania Evita Dewi., S.Pd., M.Si. selaku penguji satu yang telah memberikan saran, arahan dan bimbingan kepada penulis dalam menyelesaikan skripsi ini.


(3)

iv

6. Seluruh dosen pengajar dan staf UNIKOM yang telah membekali ilmu. 7. Teman-teman seperjuangan di Program Studi Teknik Informatika.

8. Terima kasih juga kepada semua pihak yang telah membantu dalam penyelesaian skripsi ini yang tidak dapat disebutkan satu per satu.

Akhir kata penulis mengucapkan terimakasih kepada semua pihak yang telah membantu dan penulis berharap semoga skripsi ini dapat bermanfaat bagi kita semua dan menjadi bahan masukan bagi dunia pendidikan.

Bandung, 28 Juli 2015


(4)

v ABSTRAK

ABSTRACT ... ii

KATA PENGANTAR ...iii

BAB 1 PENDAHULUAN ... 1

1.1.Latar Belakang Masalah ... 1

1.2. Rumusan Masalah ... 2

1.3. Maksud dan Tujuan ... 2

1.4. Batasan Masalah ... 2

1.5. Metodologi Penelitian ... 3

1.5.1. Metode Pengumpulan Data ... 3

1.5.2. Metode Pembangunan Perangkat Lunak ... 3

1.6. Sistematika Penulisan ... 4

BAB 2 TINJAUAN PUSTAKA ... 6

2.2. Mobile Robot ... 6

2.3. Pencarian Jalur Terpendek ... 7

2.4. Algortima A* ... 7

2.5. Cooperative A* ... 9

2.6. HPA* (Hierarchical Pathfinding A*) ... 10

2.6.1. Pre-processing grid... 11

2.6.2. Online Search ... 11

2.7. WHCA* (Windowed Hierarchical Cooperative A*) ... 12

2.8. UML (Unified Modeling Language) ... 14

2.8.1 Usecase Diagram... 14

2.8.2 Activity Diagram... 15

2.8.3 Sequence Diagram ... 15

2.8.4. Class Diagram ... 16

2.8.5. Statechart Diagram ... 16

2.8.6. Collaboration Diagram ... 16

2.8.7. Component Diagram ... 16

2.8.8 Deployment Diagram ... 17

2.9. Pengujian Perangkat Lunak ... 17


(5)

vi

3.1. Analisis Masalah ... 18

3.2. Analisis Masukan ... 18

3.3. Analisis Algoritma ... 19

3.3.1. Block Diagram Algoritma WHCA... 19

3.3.2. Contoh kasus ... 20

3.3 Analisis Perangkat Keras ... 36

3.4 Analisis Perangkat Lunak ... 36

3.5 Analisis Kebutuhan Fungsional ... 37

3.5.1. Usecase Diagram... 37

3.5.2. Skenario Use Case ... 37

3.5.3. Activity Diagram... 40

3.5.4. Class Diagram ... 44

3.5.5. Sequence Diagram ... 45

BAB 4 IMPLEMENTASI DAN PENGUJIAN ... 48

4.1. Implementasi ... 48

4.1.1. Implementasi Antarmuka ... 49

4.1.2. Implementasi Contoh Kasus Jalur WHCA* ... 49

4.2. Pengujian... 50

4.2.1. Pengujian blackbox ... 50

4.2.2. Rencana pengujian program simulasi ... 50

4.2.3. Kasus dan hasil pengujian ... 51

4.2.4. Pengujian Performansi ... 53

4.2.5. Kesimpulan Pengujian Blackbox ... 54

BAB 5 KESIMPULAN DAN SARAN ... 55

5.1. Kesimpulan ... 55

5.2. Saran ... 55


(6)

1 1.1. Latar Belakang Masalah

Di dalam industri, untuk menyusun barang dalam gudang yang besar membutuhkan banyak manusia. Manusia bertugas untuk menyusun barang dari tempat hasil produksi yang akan disimpan dan disusun sesuai dengan barang yang akan disimpan dan disusun. Perkembangan mobile robot dewasa ini sangat pesat, beriringan dengan kebutuhan akan tenaga – tenaga pembantu manusia yang cepat dan handal, salah satunya webots, yaitu mobile robot yang ciri khasnya adalah mempunyai aktuator berupa roda untuk menggerakan keseluruhan badan robot sehingga robot tersebut dapat melakukan perpindahan posisi dari satu titik ke titik lainnya. Dalam perkembangannya mobile robot dapat digunakan dalam suatu industri, dengan adanya mobile robot maka proses distribusi dalam industri akan lebih cepat. Untuk menjadi lebih cepat dalam mencapai tujuannya mobile robot harus dapat menghindari rute – rute yang dapat menyebabkan tabrakan atau menghindari hambatan. Berdasarkan hal tersebut dibutuhkan sebuah metode atau algoritma pencarian jalur terpendek dan agent harus menghindari rute yang dapat menyebabkan tabrakan dengan agent lainnya.

Saat ini ada beberapa algoritma yang dapat digunakan pada pencarian jalur terpendek dengan banyak agent, yaitu Hierarchical Cooperative A* (HCA*) dan Local Repair A* (LRA*). Tetapi ada beberapa masalah pada algoritma HCA* dan LRA*, pertama adalah ketika salah satu agent berakhir pada suatu node dan mungkin menghambat agent lain untuk bergerak. Idealnya setiap agent dapat mencapai tujuannya dan tidak menghambat jalur agent lain. Isu kedua adalah kepekaan terhadap urutan agent, meskipun kadang memprioritaskan agent global, solusi yang lebih kuat adalah dengan secara dinamis urutan pencarian pada agent, sehingga setiap agent memiliki prioritas tinggi pada waktu yang singkat. WHCA* dikembangkan dengan ide yang serupa pada operasi pencarian jalur terpendek sebelumnya dengan melakukan pencarian secara kooperatif dengan limit pencarian pada jendela yang berjalan.


(7)

Algoritma Windowed Hierarchical Cooperative A* merupakan pengembangan algoritma A* dalam pencarian jalur terpendek dengan banyak agent yang mana setiap agent saling tukar informasi tentang rute yang akan dilalui sehingga tidak menyebabkan tabrakan antar agent dengan membatasi ruang-waktu pencarian mendalam untuk jendela yang dinamis, menyebarkan perhitungan selama durasi rute [1].

Tujuan pada penelitian ini adalah mengetahui performansi waktu pencarian, jarak dan simpul yang diperiksa dari titk awal menuju titik tujuan dengan algoritma WHCA* untuk mencari jalur terpendek dengan agent lebih dari satu. Berdasarkan

uraian latar belakang tersebut maka akan ditarik judul “IMPLEMENTASI MULTI

AGENT PATH FINDING MENGGUNAKAN ALGORITMA WHCA* PADA

WEBOTS”.

1.2. Rumusan Masalah

Berdasarkan latar belakang yang sebelumnya dipaparkan, maka rumusan masalah yang diajukan adalah bagaimana menerapkan algoritma WHCA* dalam mencari jalur terpendek pada simulasi agent pengelola barang di gudang dengan agent lebih dari satu.

1.3. Maksud dan Tujuan

Maksud dari penelitian ini adalah implementasi multi agent path finding menggunakan algoritma WHCA* dan akan disimulasikan pada agent pengelola barang di gudang. Tujuannya adalah mengetahui performansi waktu pencarian dan jumlah simpul yang diperiksa dari titik awal menuju titik tujuan dengan algoritma WHCA* untuk mencari jalur terpendek dengan agent lebih dari satu.

1.4. Batasan Masalah

Untuk menghindari penyimpangan pokok permasalahan dan untuk mempermudah dalam pembahasan penelitian ini, maka perlu adanya pembatasan masalah sehingga diharapkan pembahasan dapat dilakukan lebih mendalam dan terfokus. Adapun pembatasan masalah dalam pembahasan penelitian ini adalah sebagai berikut:


(8)

2. Skenario agent pengelola gudang diadaptasi dari lingkungan gudang PT. INDOMARCO PRISTAMA.

3. Implementasi berupa simulasi agent pengelola barang di gudang dengan multi agent.

4. Setiap unit memiliki titik awal dan titik tujuan yang berbeda dalam waktu yang sama.

1.5. Metodologi Penelitian

Metodologi penelitian merupakan suatu proses yang digunakan untuk memecahkan suatu masalah yang logis, dimana memerlukan data untuk mendukung terlaksnanya suatu penelitian. Metodologi penelitian yang akan digunakan yaitu menggunakan metodologi analisis deskriptif.

Analisa deskriptif adalah metode yang menggambarkan fakta-fakta dan informasi dalam situasi atau kejadian secara sistematis, faktual dan akurat.

1.5.1. Metode Pengumpulan Data

Metode pengumpulan data yang dilakukan adalah dengan tahapan sebagai berikut:

1. Studi literatur

Metode pengumpulan data dengan cara membaca dan mempelajari jurnal – jurnal ilmiah, buku – buku, arikel dan browsing internet yang berhubungan dengan masalah yang menjadi topik dalam penelitian ini, selanjutnya melakukan percobaan yang relevan dengan topik penelitian ini.

2. Interview

Merupakan metode pengumpulan data studi kasus dengan cara mengajukan pertanyaan secara langsung pada pihak – pihak yang mengetahui hal – hal tentang proses penyusunan barang di gudang PT. INDOMARCO PRISTAMA.

1.5.2. Metode Pembangunan Perangkat Lunak

Tahapan dalam pembuatan perangkat lunak ini akan menggunakan metode prototipe. Prototipe dimulai dengan pengumpulan persyaratan. Pengembang dan pelanggan bertemu dan mendefenisikan tujuan secara keseluruhan untuk perangkat lunak, mengidentifikasi persyaratan apa saja yang diketahui dan area garis besar


(9)

pada tujuan yang wajib. Setelah itu, sebuah design cepat kemudian dilaksanakan. Desain cepat berfokus pada reprentasi dari aspek-aspek perangkat lunak yang akan terlihat oleh pengguna. Prototipe ini lalu dievaluasi dan digunakan oleh pengguna untuk memperbaiki software yang dikembangkan sesuai dengan yang dibutuhkan pengguna. Iterasi ini dilakukan untuk memenuhi kebutuhan pelanggan, sementara pada saat yang sama memungkinkan pengembang untuk lebih memahami apa yang perlu dilakukan [4].

Gambar 1.1. Metode Prototipe 1.6. Sistematika Penulisan

Sistematika penulisan Tugas Akhir ini disusun untuk memberikan gambaran umum tentang penelitian dalam Tugas Akhir yang dijalankan. Sistematika penulisan Tugas Akhir ini adalah sebagai berikut:

BAB 1 PENDAHULUAN

Bab ini membahas tentang latar belakang masalah, rumusan masalah, maksud dan tujuan, batasan masalah, metodologi penelitian, dan sistematika penulisan.

BAB 2 TINJAUAN PUSTAKA

Bab ini membahas berbagai konsep dasar teori yang berkaitan dengan topik penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis permasalahan yaitu tentang implementasi multi agent path finding pada webots yang dalam hal ini menggunakan algoritma WHCA*. Konsep lainnya yaitu mobile robot,Webots dan konsep path finding .


(10)

Bab ini membahas mengenai analisis dan kebutuhan algoritma pada simulasi robot gudang dengan pendekatan lingkungan gudang di PT. INDOMARCO PRISTAMA, analisis bagaimana penerapan algoritma WHCA* pada simulasi yang akan diterapkan untuk multi agent path finding. Dalam tugas akhir ini analisis dan kebutuhan perangkat lunak dibangun dengan konsep simulasi.

BAB 4 IMPLEMENTASI DAN PENGUJIAN

Bab ini menjelaskan tentang implementasi dari analisis yang telah dilakukan, serta pengujian dari implementasi algoritma WHCA* yang telah dibuat. Melakukan pengujian terhadap simulasi dengan algoritma yang telah diimplementasikan menggunakan pengujian skenario.

BAB 5 KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dari pengujian dan implementasi algoritma WHCA* berdasarkan tujuan yang ingin dicapai sebelumnya dan memberikan masukan atau saran dari masalah-masalah yang ditemukan selama proses penelitian terhadap algoritma WHCA*.


(11)

6 TINJAUAN PUSTAKA 1.2. Mobile Robot

Mobile Robot adalah konstruksi robot yang ciri khasnya adalah mempunyai aktuator berupa roda untuk menggerakkan keseluruhan badan robot tersebut, sehingga robot tersebut dapat melakukan perpindahan posisi dari satu titik ke titik lain dengan bantuan navigasi. Ada banyak navigasi yang digunakan mobile robot, diantaranya [3]:

1. Manual Remote

Sebuah robot manual benar-benar dibawah kendali seorang sopir dengan joystick atau perangkat kontrol lainnya. Perangkat mungkin dihubungkan langsung ke robot, mungkin joystick nirkabel, atau mungkin menjadi aksesori ke komputer nirkabel atau pengendali lainnya. Sebuah robot tele-op'd biasanya digunakan untuk menjaga operator dari bahaya.

2. Guarded Tele-op

Sebuah robot guarded tele-op memiliki kemampuan untuk merasakan dan menghindari rintangan tetapi sebaliknya akan menavigasi sebagai penggerak, seperti robot di bawah manual tele-op. Jika ada beberapa robot mobile hanya menawarkan guarded tele-op Sliding.

3. Next-line

Beberapa Automated awal Dipandu Kendaraan (AGVs) adalah baris berikut mobile robot. Mereka mungkin mengikuti garis visual dicat atau tertanam di lantai atau langit-langit atau sebuah kabel listrik di lantai. Mereka tidak bisa mengelilingi hambatan, mereka hanya berhenti dan menunggu ketika sesuatu menghalangi jalan mereka. Banyak contoh dari kendaraan tersebut masih dijual, oleh Transbotics , FMC, Egemin, HK Systems dan perusahaan lainnya.

4. Autonomously Randomized Robot

Otonomi robot dengan gerakan acak pada dasarnya terpental dinding, baik dinding-dinding yang merasakan dengan bumper fisik seperti pembersih Roomba atau dengan sensor elektronik seperti mesin pemotong rumput Robotika Friendly.


(12)

Algoritma sederhana bump dan putar 30 derajat akhirnya mengarah ke jangkauan sebagian besar atau seluruh permukaan lantai atau halaman.

Robot mobil ini sangat disukai bagi orang yang mulai mempelajari robot. Hal ini karena membuat robot mobil tidak memerlukan kerja fisik yang berat. Untuk dapat membuat sebuah robot mobile minimal diperlukan pengetahuan tentang mikrokontroler dan sensor-sensor elektronik.

1.3. Pencarian Jalur Terpendek

Pencarian jalur/rute (pathfinding) adalah salah satu bidang penerapan yang sering ditangani oleh kecerdasan buatan khususnya dengan menggunakan algoritma pencarian. Penerapan yang dapat dilakukan dengan pathfinding antara lain adalah pencarian rute dalam suatu game dan pencarian jalan/rute pada suatu peta. Algoritma pencarian yang dipakai harus dapat mengenali jalan dan elemen peta yang tidak dapat dilewati. Sebuah algoritma pathfinding yang baik dapat bermanfaat untuk mendeteksi halangan/rintangan yang ada pada medan dan menemukan jalan menghindarinya, sehingga jalan yang ditempuh lebih pendek daripada yang seharusnya bila tidak menggunakan algoritma pathfinding [2].

1.4. Algortima A*

Algoritma A*, dapat juga disebut sebagai algoritma A Star, merupakan salah satu contoh algoritma pencarian yang cukup popular di dunia. Beberapa terminology dasar yang terdapat pada algoritma ini adalah starting point, simpul (nodes), A, open list, closed list, harga (cost), halangan (unwalkable).

Starting point adalah sebuat terminology untuk posisi awal pada sebuah benda. A adalah simpul yang sedang dijalankan dalam algoritma pencarian jalan terpendek. Simpul adalah petak-petak kecil sebagai representasi dari area pathfinding. Bentuknya dapat berupa persegi, lingkaran maupun segitiga. Open list adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan. Closed list adalah tempat menyimpan data simpul sebelum A yang juga merupakan bagian dari jalur terpendek yang btelah berhasil didapatkan. Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah nilai tiap simpul dalam jalur terpendek dari starting point ke A, dan H, jumlah nilai perkiraan dari sebuah simpul ke simpul tujuan. Simpul tujuan yaitu simpul yang


(13)

dituju. Rintangan adalah sebuah atribut yang menyatakan bahwa sebuah simpul tidak dapat dilalui oleh A. Prinsip algoritma ini adalah mencari jalur terpendek dari sebuah simpul awal menuju simpul tujuan dengan memperhatikan harga (F) terkecil. Diawali dengan menempatkan A pada starting point, kemudian memasukan seluruh simpul yang bertetangga dan tidak memiliki atribut rintangan dengan A ke dalam open list. Kemudian mencari nilai H terkecil dari simpul-simpul dalam opn list tersebut. Kemudian memindahkan A ke simpul yang memiliki H terkecil. Simpul sebelum A disimpan sebagai parent dari A dan dimasukan ke dalam closed list. Jika terdapat simpul lain yang bertetangga dengan A (yang sudah berpindah) maka masukan simpul-simpul tersebut ke dalam open list. Setelah itu, bandingkan nilai G yang ada dengan nilai G sebelumnya (pada langkah awal, tidak perlu dilakukan perbandingan nilai G). Jika nilai G sebelumnya lebih kecil maka kembali ke posisi awal. Simpul yang pernah dicoba dimasukan ke dalam closed list. Hal tersebut dilakukan berulang-ulang hingga terdapat solusi atau tidak ada lagi simpul yang berada pada open list [2]. Fungsi heuristik untuk menghitung taksiran nilai yang diberikan pada simpul dapat dinnyatakan sebagai berikut:

f(i) = g(i) + hi), dimana f(i) = ongkos untuk simpul i

g(i) = ongkos mencapai simpul i dari akar

h(i) = ongkos mencapai simpul tujuan dari simpul i

Dibawah ini adalah contoh lingkungan A*.


(14)

1.5.Cooperative A*

Ketika melakukan pencarian jalur terpendek dengan satu unit berdasarkan peta, pencarian menggunakan dasar A* sangat memadai, tetapi ketika beberapa unit bergerak pada saat yang sama, pendekatan dasar A* tidak bisa terpecahkan. Cooperative A* (CA*) adalah algoritma baru untuk memecahkan pencarian jalur terpendek secara kooperatif. Tugas dipisahkan menjadi serangkaian pencarian agen tunggal. Pencarian individu dilakukan dalam tiga dimensi ruang-waktu dan memperhitungkan rute yang direncanakan oleh agen lainnya. Langkah menunggu termasuk dalam tindakan agen. Setelah rute masing-masing agen dihitung setiap node ditandai ke tabel reservasi. Setelah unit memilih jalan, perlu memastikan bahwa unit lain tahu untuk menghindari sel-sel di sepanjang jalan. Hal ini dicapai dengan menandai setiap sel dalam tabel reservasi. Ini adalah struktur data langsung berisi entri untuk setiap sel dari peta ruang-waktu. Setiap entri menentukan apakah sel yang sesuai tersedia atau dilindungi. Setelah entri dicadangkan adalah illegal untuk unit lain untuk pindah ke sel itu. Tindakan reservasi seperti kendala sementara, menghalangi dari lokasi untuk waktu langkah di masa depan. Menggunakan meja reservasi dan peta ruang-waktu, maka sistem dapat memecahkan masalah kooperatif jalur terpendek. Setiap unit mencari jalur terpendek dengan menggunakan ruang-waktu A* dan kemudian menandai jalan ke dalam tabel reservasi. Unit berikutnya menghindari sel yang telah ditandai.

Gambar 2.2. Contoh 2 unit Cooperative Pathfinding

Tetapi, dengan cara tabel reservasi tidak mencegah dua unit melintas melalui satu sama lain saling berhadapan. Jika satu unit dilindungi (x,y,t) dan (x+1,y,t+1), tidak ada yang menghentikan unit kedua dari pemesanan (x+1, y,t) dan (x, y, t+1). Masalah ini dapat dihindari dengan membuat dua pemesanan untuk


(15)

setiap lokasi yang terlibat dalam tindakan, satu per- t dan satu waktu t+1 atau tabrakan bisa diidentifikasi secara eksplisit.

Sebuah pertanyaan alami untuk bertanya tentang merintis pencarian jalur terpendek secara kooperatif adalah seberapa jauh ke depan agen dapat melihat? Untuk bekerja sama dengan sempurna melihat ke masa depan, agent perlu melihat sejauh jalan terpanjang. Tapi ini mungkin akan menjadi ratusan timesteps, Dan kejadian itu akan menghabiskan berapa banyak waktu. Ruang waktu A* akan perlu mencari peta yang lebih besar, karena semakin lama dimensi waktu, meja reservasi akan perlu menyimpan path untuk semua unit dengan ratusan langkah ke depan. Idealnya, agent harus memiliki beberapa batas atas berapa banyak kerjasama diperlukan dan hanya mencari ke masa depan. Perkiraan ini harus mempertimbangkan sifat peta dan jumlah unit di wilayah itu, sebuah untuk melintasi daerah rami, jembatan sempit mungkin akan tertunda jauh lebih lama dari unit dengan melewati jalur dengan dataran yang sepi.

Dalam algoritma Cooperative A* batas kedalaman, dalam pencarian secara kooperatif akan dilambangkan dengan d. untuk tujuan dari ilustrasi, diasumsikan bahwa d adalah konstan untuk semua unit, tapi ini tidak perlu terjadi. Kedalaman ruang-waktu A* terbatas untuk langkah-langkah d. jika tujuan belum pernah tercapai, maka jalan parsial dikembalikan. Unit dimulai mengikuti jalan parsial sampai diperlukan untuk menghitung yang baru [1].

1.6. HPA* (Hierarchical Pathfinding A*)

HPA* adalah studi rinci dari algoritma pathfinding hirarkis untuk merintis jalan pada peta game computer. Algoritma ini membagi tugas pencarian jalan menjadi dua tahap yaitu offline preprosesing dan online pathfinding [4] .

Grafik yang telah disarikan untuk online pencarian dibangun menggunakan informasi yang diambil dari masalah labirin untuk lebih detail bagaimana kerangka kerja untuke pencarian hirarkis dibangun (pre-prosesing) dan bagaimana digunakan dalam online pathfinding. Awalnya focus pada membangun hirarkis dua tingkat: satu tingkat rendah dan satu tingkat abstrak [5].


(16)

2.6.1. Pre-processing grid

Langkah pertama dalam membangun kerangka untuk hirarkis pencarian sebuah topologi abstraksi dari labirin. Labirin abstraksi digunakan untuk membangun grafik dalam pencarian hirarkis. Abstraksi topologi meliputi labirin dengan satu set persegi panjang daerah yang disebut cluster. Contoh, dalam grid 40 x 40 akan dikelompokan ke dalam 16 cluster dengan ukuran 10 x 10. Untuk setiap garis perbatasan Antara dua kelompok yang berdekatan diidentifikasi set pintu masuk yang menghubungkan mereka. Pintu masuk adalah maksimal hambatan bebas 8 segmen sepanjang perbatasan bersama dua cluster c1 dan c2 berdekatan, secara resmi didefinisikan sebagai berikut. Pertimbangkan dua baris yang berdekatan ubin l1 dan l2 di setiap cluster, yang menentukan tepi perbatasan Antara c1 dan c2. Untuk ubin t2 anggota l1 gabung l2, dengan definisi symm (t) sebagai ubin simetris t terhadap perbatasan antara c1 dan c2. Perhatikan bahwa t dan symm (t) yang berdekatan dan tidak pernah milik cluster yang sama. Pintu masuk adalah seperangkat ubin yang menghormati kondisi berikut:

1. Perbatasan keterbatasan kondisi: l1 dan l2. Kondisi ini menyatakan bahwa pintu masuk adalah de ned bersama dan tidak bisa melebihi perbatasan antara dua cluster yang berdekatan.

2. Kendala kondisi bebas: pintu masuk tidak mengandung ubin kendala 3. Kondisi maximality: pintu masuk diperpanjang di kedua arah sebagai

Selama kondisi sebelumnya tetap berlaku. 2.6.2. Online Search

Tahap pertama dari pencarian on-line menghubungkan posisi awal S ke perbatasan cluster yang mengandung S. Langkah ini selesai sementara memasukkan S ke grafik abstrak. Demikian pula, menghubungkan posisi tujuan G ke perbatasan klaster ditangani dengan memasukkan G ke dalam grafik abstrak. Setelah S dan G telah ditambahkan, kita menggunakan A * untuk mencari jalan antara S dan G dalam grafik abstrak. Ini adalah bagian yang paling penting dari pencarian on-line. Ini menyediakan jalur abstrak, bergerak sebenarnya dari S ke perbatasan cluster S, jalan abstrak cluster G, dan bergerak yang sebenarnya dari perbatasan cluster G. Dua langkah terakhir dari pencarian online adalah opsional:


(17)

1. Jalan-ulang nement dapat digunakan untuk mengkonversi jalur abstrak ke dalam urutan bergerak pada grid asli.

2. Jalur-smoothing dapat digunakan untuk meningkatkan kualitas jalan-ulang nementukan solusi.

Jalur abstrak dapat kembali ned dalam langkah pasca-pengolahan untuk mendapatkan rinci jalur dari S ke G. Bagi banyak real-time aplikasi nding path-, path lengkap tidak diperlukan hanya beberapa langkah pertama. Informasi ini memungkinkan karakter untuk mulai bergerak ke arah yang benar menuju tujuan. Sebaliknya, A * harus menyelesaikan pencarian dan menghasilkan seluruh jalan dari S ke G sebelum dapat menentukan pertama yang langkah karakter. Pertimbangkan domain di mana perubahan dinamis sering terjadi (misalnya, ada banyak unit mobile berkeliling). Dalam kasus seperti itu, setelah nding abstrak jalan, kita bisa kembali ne secara bertahap sebagai karakter menavigasi menuju tujuan. Jika jalan abstrak saat ini menjadi tidak valid, agen membuang itu dan mencari yang lain jalan abstrak. Tidak perlu untuk kembali ne jalan seluruh abstrak di muka.

1.7.WHCA* (Windowed Hierarchical Cooperative A*)

Salah satu masalah dengan algoritma sebelumnya adalah bagaimana algoritma hanya membatasi pada sekali pencarian agen mencapai tujuan. Jika agen duduk pada tujuan, misalnya dalam koridor yang sempit, maka mungkin blok dari bagian peta untuk agen lainnya. Idealnya, agen harus terus bekerja sama setelah mencapai tujuan, sehingga agen dapat bergerak dari tujuan dan memungkinkan orang lain untuk lulus. Isu kedua adalah kepekaan terhadap agen pemesanan. Meskipun kadang-kadang mungkin untuk memprioritaskan agen global solusi yang lebih kuat adalah untuk secara dinamis bervariasi urutan agen, sehingga setiap agen akan memiliki tertinggi prioritas untuk waktu singkat. Solusi kemudian dapat ditemukan yang akan dipecahkan dengan sewenang-wenang agen. Ketiga, algoritma sebelumnya harus menghitung lengkap rute ke tujuan dalam besar, tiga-dimensi ruang space. Dengan pencarian agen tunggal, perencanaan dan rencana eksekusi sering disisipkan untuk mencapai efisiensi yang lebih besar dengan menghindari kebutuhan untuk merencanakan kontinjensi jangka panjang yang tidak sebenarnya terjadi. WHCA * mengembangkan ide serupa untuk koperasi pencarian. Sebuah solusi sederhana untuk semua masalah ini adalah untuk jendela pencarian.


(18)

Pencarian koperasi terbatas pada kedalaman tetap ditentukan oleh jendela saat. Setiap agen pencarian untuk rute parsial untuk tujuan, dan kemudian mulai mengikuti rute. Secara berkala (misalnya ketika agen adalah setengah jalan melalui rute parsial) jendela digeser ke depan dan rute parsial baru dihitung. Untuk memastikan bahwa agen kepala di arah yang benar, hanya kedalaman pencarian koperasi terbatas pada kedalaman tetap, sementara pencarian abstrak dijalankan untuk kedalaman penuh. Sebuah jendela ukuran w dapat dilihat sebagai abstraksi menengah yang setara dengan negara ruang tingkat dasar untuk langkah-langkah w, dan kemudian setara dengan ruang negara tingkat abstrak untuk sisa pencarian. Dengan kata lain, agen lainnya hanya dipertimbangkan untuk langkah w (melalui meja reservasi) dan diabaikan untuk sisa pencarian.

Untuk mencari ini ruang pencarian baru efisien, trik sederhana dapat digunakan. Setelah langkah langkah w telah berlalu, agen diabaikan dan ruang pencarian menjadi identik dengan pencarian abstrak ruang. Ini berarti bahwa jarak abstrak menyediakan informasi yang sama seperti menyelesaikan pencarian. Untuk setiap node dicapai setelah langkah w tepi terminal khusus diperkenalkan, akan langsung dari Ni ke tujuan G, dengan biaya sama dengan jarak abstrak dari Ni ke G. Menggunakan ini trik, pencarian direduksi menjadi jendela w-langkah menggunakan heuristik jarak abstrak diperkenalkan untuk HCA *. Selain itu, pencarian berjendela dapat melanjutkan setelah agen telah mencapai tujuan. Tujuannya agen tidak lebih lama untuk mencapai tujuan, tetapi untuk menyelesaikan jendela melalui tepi terminal. Setiap urutan w bergerak akan demikian mencapai tujuan. Namun, WHCA * pencari akan efisien menemukan urutan biaya terendah. Urutan optimal ini merupakan rute parsial yang akan membawa agen yang paling dekat dengan-nya tujuan, dan sekali di sana untuk tinggal di tujuan untuk sebagai waktu sebanyak mungkin.

Secara umum , fungsi biaya tepi untuk WHCA * adalah:

Gambar 2.3. Biaya Tepi WHCA*

Sebuah keuntungan tambahan dari windowing adalah proses yangwaktu dapat tersebar di semua agen. Dengan mengejutkan jendela tepat, pencarian dapat


(19)

lancar disisipkan. Dengan agen n dan ukuran jendela w , menghitung ulang rute pada titik tengah dari setiap jendela, hanya 2n pencarian / w perlu dilakukan per giliran. Jika giliran terdiri dari banyak frame, maka pencarian resumable alami rusak lebih lanjut dan dapat tersebar di beberapa frame [1].

1.8. UML (Unified Modeling Language)

UML adalah bahasa spesifikasi standar untuk mendokumentasikan, menspesifikasikan, dan membangun sebuah sistem. UML adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat tool untuk mendukung pengembangan sistem tersebut. UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980- an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP. UML merupakan dasar bagi perangkat (tool) desain berorientasi objek dari IBM.

UML mendefinisikan diagram-diagram sebagai berikut: 1. Use case diagram

2. Activity diagram 3. Sequence diagram 4. Class diagram 5. Statechart diagram 6. Collaboration diagram 7. Component diagram 2.8.1 Usecase Diagram

Use case diagram menggambarkan fungsionalitas yang diharapkan dari

sebuah sistem. Yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan

“bagaimana”. Sebuah use case merepresentasikan sebuah interaksi antara aktor

dengan sistem. Use case merupakan sebuah pekerjaan tertentu, misalnya login ke sistem, meng-create sebuah daftar belanja, dan sebagainya. Seorang atau sebuah aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan-pekerjaan tertentu.

Use case diagram dapat sangat membantu menyusun requirement sebuah sistem, mengkomunikasikan rancangan dengan klien, dan merancang test case


(20)

untuk semua feature yang ada pada sistem. Sebuah use case dapat meng-include fungsionalitas use case lain sebagai bagian dari proses dalam dirinya. Secara umum diasumsikan bahwa use case yang di-include akan dipanggil setiap kali use case yang meng-include dieksekusi secara normal.

Sebuah use case dapat di-include oleh lebih dari satu use case lain, sehingga duplikasi fungsionalitas dapat dihindari dengan cara menarik keluar fungsionalitas yang common. Sebuah use case juga dapat meng-extend use case lain dengan behaviour-nya sendiri. Sementara hubungan generalisasi antar use case menunjukkan bahwa use case yang satu merupakan spesialisasi dari yang lain.

2.8.2 Activity Diagram

Activity diagram menggambarkan berbagai alur aktivitas dalam sistem yang sedang dirancang, bagaimana masing-masing alur berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi.

Activity diagram merupakan state diagram khusus, dimana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum.

2.8.3 Sequence Diagram

Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pemain, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait).

Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan


(21)

2.8.4. Class Diagram

Class adalah sebuah spesifikasi yang jika diinstansiasi akan menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut (metoda/fungsi).

Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain.

2.8.5. Statechart Diagram

Statechart diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimuli yang diterima. Pada umumnya statechart diagram menggambarkan class tertentu (satu class dapat memiliki lebih dari satu statechart diagram).

Dalam UML, state digambarkan berbentuk segiempat dengan sudut membulat dan memiliki nama sesuai kondisinya saat itu.

Umumnya memiliki kondisi guard yang merupakan syarat terjadinya transisi yang bersangkutan, dituliskan dalam kurung siku. Action yang dilakukan sebagai akibat dari event tertentu dituliskan dengan diawali garis miring.

2.8.6. Collaboration Diagram

Collaboration diagram juga menggambarkan interaksi antar objek seperti sequence diagram, tetapi lebih menekankan pada peran masing-masing objek dan bukan pada waktu penyampaian message. Setiap message memiliki sequence number, di mana message dari level tertinggi memiliki nomor 1. Messages dari level yang sama memiliki prefiks yang sama.

2.8.7. Component Diagram

Component diagram menggambarkan struktur dan hubungan antar komponen piranti lunak, termasuk ketergantungan (dependency) di antaranya. Komponen piranti lunak adalah modul berisi code, baik berisi source code maupun binary code, baik library maupun executable, baik yang muncul pada compile time, link time, maupun run time.


(22)

Umumnya komponen terbentuk dari beberapa class dan/atau package, tapi dapat juga dari komponen-komponen yang lebih kecil. Komponen dapat juga berupa interface, yaitu kumpulan layanan yang disediakan sebuah komponen untuk komponen lain.

2.8.8 Deployment Diagram

Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apa), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal.

Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men-deploy komponen dalam lingkungan sebenarnya. Hubungan antar node (misalnya TCP/IP) dan requirement dapat juga didefinisikan dalam diagram ini [6]. 1.9.Pengujian Perangkat Lunak

Pengujian perangkat lunak merupakan proses verifikasi dan validasi dari sebuah perangkat lunak [6]. Pengujian perangkat lunak juga mengidentifikasi kelemahan dan kesalahan dalam kode aplikasi yang harus diperbaiki. Pengujian perangkat lunak memiliki tiga tujuan penting yaitu: verifikasi, validasi dan menemukan cacat. Verifikasi adalah proses menegaskan bahwa perangkat lunak sudah memenuhi spesifikasi teknik. Validasi adalah proses menegaskan bahwa perangkat lunak memenuhi kebutuhan bisnis. Menemukan cacat artinya varians Antara hasil yang diharapkan dengan aktual.

2.9.1 Unit Testing

Unit Testing merupakan serangkaian tes yang berdiri sendiri. Setiap tes meneliti komponen individu yang baru atau telah dimodifikasi. Setiap tes memvalidasi modul tunggal, berdasarkan dokumen teknis yang dibangun untuk melakukan tugas tertentu. Unit testing berfokus pada fungsi dan kehandalan sebuah perangkat lunak. Satuan pengujian dilakukan di lingkungan tes sebelum integrasi sistem [6]


(23)

18

ANALISIS DAN KEBUTUHAN ALGORITMA

1.1. Analisis Masalah

Masalah yang diangkat dalam penulisan ini adalah penerapan algoritma WHCA* dengan multi-agent yang akan disimulasikan pada aplikasi dengan lingkungan yang diadaptasi dari gudang PT. INDOMARCO PRISTAMA. Pada gudang PT. INDOMARCO PRISTAMA terdapat banyak agent yang bertugas untuk menyusun dan mengantarkan barang dimana setiap agent memungkinkan terjadi tabrakan dalam mencapai tujuannya. Untuk itu dibutuhkan sebuah algoritma pencarian jalur terpendek yang dapat menghindari tabrakan antar agent. Algoritma WHCA* merupakan pengembangan dari algoritma A* yang dapat mengatasi permasalahan pencarian jalur terpendek dengan multi-agent dengan menggunakan reservasi tabel sebagai tempat penyimpanan informasi path yang akan dilalui oleh agent hingga ke tujuan. Dengan adanya reservasi tabel, setiap agent akan kooperatif memberikan informasi jalur yang akan dilalui. Disisi lain algoritma WHCA* dibutuhkan kedalaman dalam pencarian dan jumlah path yang akan di reservasi, oleh karena itu yang akan diteliti untuk mengukur efektifitas penggunaaan algoritma WHCA* adalah jumlah kedalaman ketika proses pencarian dan waktu eksekusi untuk pencarian solusi.

1.2. Analisis Masukan

Analisis masukan menjelaskan data masukan yang akan diperlukan dalam penerapan algoritma WHCA* pada webots. Analisis masukan yang dibutuhkan pada algoritma WHCA* yaitu posisi awal agent, posisi akhir agent, posisi halangan dan kedalaman pencarian. Sebelum menghitung menggunakan algoritma WCHA* akan dihitung dulu biaya (cost) sebenarnya yang terdapat pada jalur itu sendiri. Map yang digunakan pada simulasi ini dengan skala pixel yang berukuran lebar 400 pixel dan tinggi 600 pixel. Satu layer tersebut disimpan dalam grid (suatu kotak-kotak kecil) yang dinamis dimana user dapat menentukan jumlah gridnya. Setiap grid memiliki ukuran dengan lebar 20 pixel dan tinggi 20 pixel, contoh map dengan ukuran lebar 20 pixel dan tinggi 20 pixel dapat dilihat pada gambar 3.1 berikut:


(24)

Gambar 3.1. Keterangan ukuran layar

Untuk mempermudah perhitungan maka ada beberapa nilai yang akan disederhanakan. Pertama nilai simpul yang tadinya 20x20 pixel diubah menjadi 1x1, artinya jarak simpul 1 ke simpul lainnya adalah 1. Jadi setiap simpul memiliki cost yang sama yaitu 1 secara horizontal maupun vertikal. Pergerakan yang dilakukan hanya bisa diagonal dan vertikal .

1.3. Analisis Algoritma

3.3.1. Block Diagram Algoritma WHCA


(25)

3.3.2. Contoh kasus

Untuk lebih memahami algoritma WHCA*, bisa dilihat dari contoh kasus seperti terlihat pada Gambar 3.3. Diasumsikan dalam simulasi ada 2 mobile robot (warna biru dan merah ) yang memiliki goal masing – masing, selain itu juga ada tembok penghalang.

Gambar 3.3.Kondisi awal pencarian WHCA* Keterangan:

Agent 1 Agent 2 Goal 1 Goal 2

Proses pertama yang dilakukan adalah setiap mencari jalur terpendek dari node awal, penyimpanan node menggunakan tiga dimensi ruang-waktu (x,y,time).

Setelah melakuan perhitungan awal, dan path awal telah ditemukan, setiap agen pindah ke tujuan node terdekat, seperti gambar 3.4 berikut ini:

Gambar 3.4. Kondisi Awal dengan path yang akan dilalui


(26)

Pada iterasi ini algoritma whca* melakukan penambahan pada variable currentWindow menjadi currentWindow+1 dan currentTime menjadi currentTime +1, setelah itu langkah selanjutnya adalah mengecek ulang, apakah ada unit yang harus di kalkulasi ulang atau tidak, unit yang akan dicek diambil secara random berdasarkan currentWindow.

Tabel 3.1. Path Iterasi 0 CurrentWindow = 0

currentTime = 0 depth = 10

AGENT 1

1,1,0 H =17, F =17,

G = 0

0, 1, 1 G = 1, H = 18,

F =19

1, 0, 1 G = 1, H = 18,

F =19

1, 2, 1 G = 1, H = 16,

F =17

2, 1, 1 G = 1, H = 16,

F =17 0, 2, 2

G = 2, H = 17, F =19

1, 1, 2 G = 2, H = 17,

F =19

1, 3, 2 G = 2, H = 17

, F =19

2, 2, 2 G = 2, H = 15, F

=17

2, 0, 2 G = 2, H = 17,

F =19

2, 1, 2 G = 2, H = 16,

F =18 1, 2, 3

G = 3, H = 16, F =19

2, 1, 3 G = 3, H = 16, F

=19

3, 2, 3 G = 2, H = 14, F

=17

2, 2, 3 G = 3, H = 15, F

=18 2, 2, 4

G = 4, H = 15, F =19

3, 3, 4 G = 4, H = 13, F

=17

3, 2, 4 G = 4, H = 14, F

=18 3, 2, 5

g: 5.0, h: 14.0, f: 19.0

3, 4, 5 g: 5.0, h: 12.0, f:

17.0

4, 3, 5 g: 5.0, h: 14.0, f:

19.0

3, 3, 5 g: 5.0, h: 13.0, f:

18.0 (3, 3, 6)

g: 6.0, h: 13.0, f: 19.0

(3, 5, 6) g: 6.0, h: 11.0,

f: 17.0

(3, 4, 6) g: 6.0, h: 12.0,

f: 18.0 (2, 5, 7)

g: 7.0, h: 12.0, f: 19.0

(3, 4, 7), g: 7.0, h: 12.0,

f: 19.0

(3, 6, 7) g: 7.0, h: 12.0,

f: 19.0

(4, 5, 7) g: 7.0, h: 10.0,

f: 17.0

(3, 5, 7) g: 7.0, h: 11.0,

f: 18.0 (3, 5, 8)

g: 8.0, h: 11.0, f: 19.0

(4, 6, 8) g: 8.0, h: 11.0,

f: 19.0

(5, 5, 8), g: 8.0, h: 9.0, f:

17.0

(4, 5, 8) g: 8.0, h: 10.0, f:

18.0 (4, 5, 9)

g: 9.0, h: 10.0

(5, 6, 9) g: 9.0, h: 10.0,

f: 19.0

(6, 5, 9) g: 9.0, h: 8.0, f:

17.0

(5, 5, 9) g: 9.0, h: 9.0, f:


(27)

AGENT 2 (7, 1, 0), g: 0.0, h: 11.0, f:

11.0

(7, 0, 1), g: 1.0, h: 12.0, f:

13.0

(7, 2, 1), g: 1.0, h: 10.0

(7, 1, 1), g: 1.0, h: 11.0,

f: 12.0

(7, 1, 2), g: 2.0, h: 11.0, f:

13.0

(7, 3, 2), g: 2.0, h: 9.0,

f: 11.0

(7, 2, 2), g: 2.0, h: 10.0,

f: 12.0

(7, 2, 3) , g: 3.0, h: 10.0, f:

13.0

(8, 3, 3), g: 3.0, h: 8.0,

f: 11.0

(7, 3, 3), g: 3.0, h: 9.0, f:

12.0

(7, 3, 4), g: 4.0, h: 9.0, f:

13.0

(9, 3, 4), g: 4.0, h: 7.0,

f: 11.0

(8, 3, 4) g: 4.0, h: 8.0,

f: 12.0,

(8, 3, 5), g: 5.0, h: 8.0, f:

13.0

(9, 2, 5), g: 5.0, h: 8.0,

f: 13.0

(9, 4, 5), g: 5.0, h: 6.0,

f: 11.0

(10, 3, 5), g: 5.0, h: 8.0,

f: 13.0

(9, 3, 5), g: 5.0, h: 7.0,

f: 12.0

(9, 3, 6), g: 6.0, h: 7.0, f: 13.0

(9, 5, 6), g: 6.0, h: 5.0, f:

11.0

(10, 4, 6), g: 6.0, h: 7.0,

f: 13.0

(9, 4, 6), g: 6.0, h: 6.0,

f: 12.0 (8, 5, 7),

g: 7.0, h: 4.0, f: 11.0

(9, 4, 7) g: 7.0, h: 6.0,

f: 13.0

(9, 6, 7) g: 7.0, h: 6.0,

f: 13.0

(10, 5, 7) g: 7.0, h: 6.0,

f: 13.0

(9, 5, 7) g: 7.0, h: 5.0

, f: 12.0 (7, 5, 8),

g: 8.0, h: 3.0, f: 11.0

(8, 6, 8), g: 8.0, h: 5.0,

f: 13.0

(9, 5, 8), g: 8.0, h: 5.0,

f: 13.0

(8, 5, 8), g: 8.0, h: 4.0,

f: 12.0

(7, 6, 9), g: 9.0, h: 4.0,

f: 13.0

(8, 5, 9), g: 9.0, h: 4.0,

f: 13.0

(7, 0, 2), g: 2.0, h: 12.0,

f: 14.0 (7, 1, 3), g: 3.0, h: 11.0,

f: 14.0 (7, 2, 4) g: 4.0, h: 10.0,

f: 14.0 (7, 3, 5) g: 5.0, h: 9.0,

f: 14.0,

(10, 3, 6), g: 6.0, h: 8.0,

f: 14.0 (8, 3, 6),

g: 6.0, h: 8.0, f: 14.0

(9, 2, 6), g: 6.0, h: 8.0, f:

14.0

(9, 5, 9) g: 9.0, h: 5.0,

f: 14.0

(8, 6, 9), g: 9.0, h: 5.0,

f: 14.0

(9, 3, 7), g: 7.0, h: 7.0, f:

14.0

(10, 4, 7), g: 7.0, h: 7.0,

f: 14.0 (9, 4, 8),

g: 8.0, h: 6.0, f: 14.0

(9, 6, 8), g: 8.0, h: 6.0,

f: 14.0 (10, 5, 8),

g: 8.0, h: 6.0, f: 14.0

Langkah selanjutnya adalah memindahkan posisi awal semua unit ke posisi node pada path selanjutnya. seperti gambar 3.5 dibawah ini:


(28)

Langkah selanjutnya melakukan check nilai currentWindow pada saat ini, dan mengecek apakah ada unit yang perlu di kalkulasi, jika ada maka lakukan pencarian path kembali dari posisi node yang terakhir. Penentuan posisi unit pada window ditentukan dengan rumus nilai depth/2/jumlah unit.

Tabel 3.2. Path iterasi 1 CurrentWindow = 1

currentTime = 1 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path sesuai dengan path sebelumnya

Tabel 3.3. Path iterasi 2 CurrentWindow = 2

currentTime = 2 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path sesuai dengan path sebelumnya

Gambar 3.6.kondisi agents iterasi 2

Tabel 3.4. Path iterasi ke 3 CurrentWindow = 3

currentTime = 3 depth = 10


(29)

AGENT 1

Path sesuai dengan jalur sebelumnya, karena agent 1 tidak melakukan repath.

AGENT 2

(8, 3, 3), g: 3.0, h: 8.0,

f: 11.0

(7, 3, 4), g: 4.0, h: 9.0, f:

13.0

(9, 3, 4), g: 4.0, h: 7.0, f: 11.0

(8, 3, 4) , g: 4.0, h: 8.0,

f: 12.0,

(8, 3, 5), g: 5.0, h: 8.0,

f: 13.0

(9, 2, 5), g: 5.0, h: 8.0,

f: 13.0

(9, 4, 5), g: 5.0, h: 6.0,

f: 11.0

(10, 3, 5), g: 5.0, h: 8.0,

f: 13.0

(9, 3, 5), g: 5.0, h: 7.0,

f: 12.0

(9, 3, 6), g: 6.0, h: 7.0,

f: 13.0

(9, 5, 6), g: 6.0, h: 5.0,

f: 11.0

(10, 4, 6), g: 6.0, h: 7.0,

f: 13.0

(9, 4, 6), g: 6.0, h: 6.0,

f: 12.0

(8, 5, 7), g: 7.0, h: 4.0,

f: 11.0

(9, 4, 7), g: 7.0, h: 6.0, f: 13.0

(9, 6, 7), g: 7.0, h: 6.0, f: 13.0

(10, 5, 7), g: 7.0, h: 6.0,

f: 13.0

(9, 5, 7), g: 7.0, h: 5.0

, f: 12.0

(7, 5, 8), g: 8.0, h: 3.0,

f: 11.0

(8, 6, 8), g: 8.0, h: 5.0,

f: 13.0

(9, 5, 8), g: 8.0, h: 5.0

f: 13.0

(8, 5, 8), g: 8.0, h: 4.0,

f: 12.0

(7, 6, 9), g: 9.0, h: 4.0,

f: 13.0

(8, 5, 9), g: 9.0, h: 4.0,

f: 13.0

(7, 3, 5) , g: 5.0, h: 9.0, f:

14.0,

(10, 3, 6), g: 6.0, h: 8.0,

f: 14.0 (8, 3, 6),

g: 6.0, h: 8.0, f: 14.0

(9, 2, 6), g: 6.0, h: 8.0, f:

14.0

(9, 5, 9) , g: 9.0, h: 5.0,

f: 14.0

(8, 6, 9), g: 9.0, h: 5.0,

f: 14.0,

(9, 3, 7), g: 7.0, h: 7.0

, f: 14.0

(10, 4, 7), g: 7.0, h: 7.0,

f: 14.0 (9, 4, 8),

g: 8.0, h: 6.0, f: 14.0

(9, 6, 8), g: 8.0, h: 6.0,

f: 14.0 (10, 5, 8),

g: 8.0, h: 6.0, f: 14.0

(9, 5, 10) g: 10.0, h: 5.0,

f: 15.0

(5, 6, 11), g: 11.0, h: 2.0,

f: 13.0

(6, 5, 11), g: 11.0, h: 2.0,

f: 13.0

(7, 6, 11), g: 11.0, h: 4.0,

f: 15.0

(6, 6, 11), g: 11.0, h: 3.0,

f: 14.0

(4, 6, 12), g: 9.0, h: 1.0,

f: 10.0

(5, 5, 12), g: 9.0, h: 1.0,

f: 10.0

(6, 6, 12), g: 9.0, h: 3.0,


(30)

Gambar 3.7. kondisi agents iterasi 3 Tabel 3.5. Path iterasi 4 CurrentWindow = 4

currentTime = 4 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi

Gambar 3.8.Kondisi agents iterasi 4

Dikarenakan currentWindow = (depth/2) maka currentWindow kembali menjadi 0 dan agent 1 akan menjadi prioritas pencarian jalur terpendek karena agent 1 berada pada posisi array ke-0 pada window.


(31)

Tabel 3.6. Path iterasi 5 CurrentWindow = 0

currentTime = 5 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi

Gambar 3.9. Kondisi Agents Iterasi 5

Tabel 3.7. Path iterasi 6 CurrentWindow = 1

currentTime = 6 depth = 10


(32)

(3, 5, 6) g: 6.0, h: 11.0,

f: 17.0

(2, 5, 7), g: 7.0, h: 12.0,

f: 19.0

(3, 4, 7), g: 7.0, h: 12.0,

f: 19.0

(3, 6, 7), g: 7.0, h: 12.0,

f: 19.0

(4, 5, 7), g: 7.0, h: 10.0,

f: 17.0

(3, 5, 7), g: 7.0, h: 11.0,

f: 18.0 (3, 5, 8),

g: 8.0, h: 11.0, f: 19.0

(4, 6, 8) g: 8.0, h: 11.0,

f: 19.0

(5, 5, 8), g: 8.0, h: 9.0,

f: 17.0

(4, 5, 8), g: 8.0, h: 10.0,

f: 18.0 (4, 5, 9),

g: 9.0, h: 10.0

(5, 6, 9), g: 9.0, h: 10.0,

f: 19.0

(6, 5, 9), g: 9.0, h: 8.0,

f: 17.0

(5, 5, 9), g: 9.0, h: 9.0,

f: 18.0 (5, 5, 10),

g: 10.0, h: 9.0, f: 19.0

(6, 6, 10), g: 10.0, h: 9.0,

f: 19.0

(7, 5, 10), g: 10.0, h: 7.0,

f: 17.0,

(6, 5, 10), g: 10.0, h: 8.0,

f: 18.0 (6, 5, 11),

g: 11.0, h: 8.0, f: 19.0

(7, 6, 11), g: 11.0, h: 8.0,

f: 19.0

(8, 5, 11), g: 11.0, h: 6.0,

f: 17.0

(7, 5, 11), g: 11.0, h: 7.0,

f: 18.0 (7, 5, 12)

g: 12.0, h: 7.0, f: 19.0

(8, 6, 12) g: 12.0, h: 7.0,

f: 19.0

(9, 5, 12) g: 12.0, h: 5.0,

f: 17.0

(8, 5, 12) g: 12.0, h: 6.0,

f: 18.0 (8, 5, 13)

g: 7.0, h: 6.0, f: 13.0

(9, 4, 13) g: 7.0, h: 4.0,

f: 11.0

(9, 6, 13) g: 7.0, h: 6.0,

f: 13.0

(10, 5, 13) g: 7.0, h: 6.0,

f: 13.0

(9, 5, 13) g: 7.0, h: 5.0,

f: 12.0 (9, 5, 14)

g: 8.0, h: 5.0, f: 13.0

(10, 4, 14) g: 8.0, h: 5.0,

f: 13.0

(9, 3, 14) g: 8.0, h: 3.0,

f: 11.0

(9, 4, 14) g: 8.0, h: 4.0,

f: 12.0 (9, 2, 15)

g: 9.0, h: 4.0, f: 13.0

(8, 3, 15) g: 9.0, h: 2.0,

f: 11.0

(9, 4, 15) g: 9.0, h: 4.0,

f: 13.0

(10, 3, 15) g: 9.0, h: 4.0,

f: 13.0

(9, 3, 15) g: 9.0, h: 3.0,

f: 12.0

AGENT 2

Path sesuai dengan jalur sebelumnya

Tabel 3.8. Path iterasi 7 CurrentWindow = 2

currentTime = 7 depth = 10

AGENT 1 AGENT 2


(33)

Gambar 3.10. kondisi agents iterasi 7

Tabel 3.9. Path iterasi 8 CurrentWindow = 3

currentTime = 8 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi

Gambar 3.11. kondisi agents iterasi 8 Tabel 3.10. Path iterasi 9 CurrentWindow = 4

currentTime = 9 depth = 10

AGENT 1

Unit tidak perlu dikalkulasi,karena prioritas pada iterasi ini adalah agent 2. Maka agent 2 melakukan kalkulasi ulang, path agen 1 masih sesuai dengan path sebelumnya.


(34)

(7, 6, 9), g: 9.0, h: 4.0, f: 13.0

(6, 6, 10) g: 1.0, h: 3.0,

f: 4.0

(8, 6, 10) g: 1.0, h: 5.0,

f: 6.0

(7, 6, 10) g: 1.0, h: 4.0,

f: 5.0

(5, 6, 11) g: 2.0, h: 2.0,

f: 4.0

(6, 5, 11) g: 2.0, h: 2.0,

f: 4.0

(7, 6, 11) g: 2.0, h: 4.0,

f: 6.0

(6, 6, 11) g: 2.0, h: 3.0,

f: 5.0

(5, 5, 12) g: 3.0, h: 1.0,

f: 4.0

(6, 6, 12) g: 3.0, h: 3.0,

f: 6.0

(7, 5, 12) g: 3.0, h: 3.0,

f: 6.0

(6, 5, 12) g: 3.0, h: 2.0,

f: 5.0

(4, 5, 13), g: 4.0, h: 0.0, f: 4.0

(5, 6, 13) g: 4.0, h: 2.0,

f: 6.0

(6, 5, 13) g: 4.0, h: 2.0,

f: 6.0

(5, 5, 13) g: 4.0, h: 1.0,

f: 5.0

(3, 5, 14) g: 5.0, h: 1.0,

f: 6.0

(4, 6, 14) g: 5.0, h: 1.0,

f: 6.0

(5, 5, 14) g: 5.0, h: 1.0,

f: 6.0

(4, 5, 14) g: 4.0, h: 0.0,

f: 4.0

(3, 5, 15) g: 5.0, h: 1.0,

f: 6.0

(4, 6, 15) g: 5.0, h: 1.0,

f: 6.0

(5, 5, 15) g: 5.0, h: 1.0,

f: 6.0

(4, 5, 15) g: 4.0, h: 0.0,

f: 4.0

(3, 5, 16) g: 5.0, h: 1.0,

f: 6.0

(4, 6, 16) g: 5.0, h: 1.0,

f: 6.0

(5, 5, 16) g: 5.0, h: 1.0,

f: 6.0

(4, 5, 16) g: 4.0, h: 0.0,

f: 4.0

(3, 5, 17), g: 5.0, h: 1.0,

f: 6.0

(4, 6, 17) g: 5.0, h: 1.0,

f: 6.0

(5, 5, 17) g: 5.0, h: 1.0,

f: 6.0

(4, 5, 17) g: 4.0, h: 0.0,

f: 4.0

(3, 5, 18) g: 5.0, h: 1.0, f: 6.0

(4, 6, 18) g: 5.0, h: 1.0,

f: 6.0

(5, 5, 18) g: 5.0, h: 1.0,

f: 6.0

(4, 5, 18) g: 4.0, h: 0.0,

f: 4.0


(35)

Tabel 3.11. Path iterasi 10 CurrentWindow = 0

currentTime = 10 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path masih sesuai dengan path sebelumnya

Gambar 3.13.Kondisi agents iterasi 10

Tabel 3.12. Path iterasi 11 CurrentWindow = 1

currentTime = 11 depth = 10

AGENT 1 AGENT 2


(36)

Gambar 3.14. Kondisi agents iterasi 11

Tabel 3.13. Path iterasi 12 CurrentWindow = 2

currentTime = 12 depth = 10

AGENT 1

(9, 5, 12) g: 12.0, h: 5.0,

f: 17.0 (8, 5, 13)

g: 7.0, h: 6.0, f: 13.0

(9, 4, 13) g: 7.0, h: 4.0,

f: 11.0

(9, 6, 13), g: 7.0, h: 6.0, f: 13.0

(10, 5, 13) g: 7.0, h: 6.0,

f: 13.0

(9, 5, 13) g: 7.0, h: 5.0,

f: 12.0 (9, 5, 14)

g: 8.0, h: 5.0, f: 13.0

(10, 4, 14) g: 8.0, h: 5.0,

f: 13.0

(9, 3, 14) g: 8.0, h: 3.0,

f: 11.0

(9, 4, 14) g: 8.0, h: 4.0,

f: 12.0 (9, 2, 15)

g: 9.0, h: 4.0, f: 13.0

(8, 3, 15) g: 9.0, h: 2.0,

f: 11.0

(9, 4, 15) g: 9.0, h: 4.0,

f: 13.0

(10, 3, 15) g: 9.0, h: 4.0,

f: 13.0

(9, 3, 15) g: 9.0, h: 3.0,

f: 12.0 (8, 3, 16)

g: 10.0, h: 2.0, f: 12.0

(9, 3, 16) g: 10.0, h: 3.0,

f: 13.0

(7, 3, 16) g: 10.0, h: 1.0,

f: 11.0

(7, 3, 17), g: 11.0, h: 1.0,

f: 12.0

(8, 3, 17), g: 11.0, h: 2.0,

f: 13.0

(7, 2, 17), g: 11.0, h: 0.0,

f: 11.0

(7, 3, 18), g: 12.0, h: 1.0,

f: 13.0

(7, 1, 18), g: 12.0, h: 1.0,

f: 13.0

(7, 2, 18), g: 11.0, h: 0.0,

f: 11.0

(7, 1, 19), g: 6.0, h: 1.0,

f: 7.0

(7, 3, 19), g: 6.0, h: 1.0,

f: 7.0

(7, 2, 19), g: 5.0, h: 0.0,

f: 5.0

(7, 1, 20), g: 6.0, h: 1.0,

f: 7.0

(7, 3, 20), g: 6.0, h: 1.0,

f: 7.0

(7, 2, 20), g: 5.0, h: 0.0,

f: 5.0

(7, 1, 21), g: 6.0, h: 1.0,

f: 7.0

(7, 3, 21), g: 6.0, h: 1.0,

f: 7.0

(7, 2, 21), g: 5.0, h: 0.0,


(37)

AGENT 2

Unit tidak perlu dikalkulasi,karena prioritas pada iterasi ini adalah agent 1. Maka agent 1 melakukan kalkulasi ulang, path agen 2 masih sesuai dengan path sebelumnya

Gambar 3.15. Kondisi agents iterasi 12

Tabel 3.14. Path iterasi 13 CurrentWindow = 3

currentTime = 13 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path masih sesuai dengan path sebelumnya


(38)

Tabel 3.15. Path iterasi 14 CurrentWindow = 4

currentTime = 14 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path masih sesuai dengan path sebelumnya

Gambar 3.17. Kondisi Agents iterasi 14

Tabel 3.16. Path iterasi 15 CurrentWindow = 0

currentTime = 15 depth = 10


(39)

(3, 5, 16), g: 5.0, h: 1.0,

f: 6.0

(4, 6, 16), g: 5.0, h: 1.0,

f: 6.0

(5, 5, 16), g: 5.0, h: 1.0,

f: 6.0

(4, 5, 16), g: 4.0, h: 0.0,

f: 4.0

(3, 5, 17), g: 5.0, h: 1.0,

f: 6.0

(4, 6, 17), g: 5.0, h: 1.0,

f: 6.0

(5, 5, 17), g: 5.0, h: 1.0,

f: 6.0

(4, 5, 17), g: 4.0, h: 0.0,

f: 4.0

(3, 5, 18), g: 5.0, h: 1.0,

f: 6.0

(4, 6, 18), g: 5.0, h: 1.0,

f: 6.0

(5, 5, 18), g: 5.0, h: 1.0,

f: 6.0

(4, 5, 18), g: 4.0, h: 0.0,

f: 4.0

(3, 5, 19), g: 5.0, h: 1.0,

f: 6.0

(4, 6, 19), g: 5.0, h: 1.0,

f: 6.0

(5, 5, 19), g: 5.0, h: 1.0,

f: 6.0

(4, 5, 19), g: 4.0, h: 0.0,

f: 4.0 (4, 5, 15),

g: 4.0, h: 0.0, f: 4.0

(3, 5, 20), g: 1.0, h: 1.0,

f: 2.0

(4, 6, 20), g: 1.0, h: 1.0,

f: 2.0

(5, 5, 20), g: 1.0, h: 1.0,

f: 2.0

(4, 5, 20), g: 0.0, h: 0.0,

f: 0.0

(3, 5, 21), g: 1.0, h: 1.0,

f: 2.0

(4, 6, 21), g: 1.0, h: 1.0,

f: 2.0

(5, 5, 21), g: 1.0, h: 1.0,

f: 2.0

(4, 5, 21), g: 0.0, h: 0.0,

f: 0.0

(3, 5, 22), g: 1.0, h: 1.0,

f: 2.0

(4, 6, 22), g: 1.0, h: 1.0,

f: 2.0

(5, 5, 22), g: 1.0, h: 1.0,

f: 2.0

(4, 5, 22), g: 0.0, h: 0.0,

f: 0.0

(3, 5, 23), g: 1.0, h: 1.0,

f: 2.0

(4, 6, 23), g: 1.0, h: 1.0,

f: 2.0

(5, 5, 23), g: 1.0, h: 1.0,

f: 2.0

(4, 5, 23), g: 0.0, h: 0.0,

f: 0.0

(3, 5, 24), g: 1.0, h: 1.0,

f: 2.0

(4, 6, 24), g: 1.0, h: 1.0,

f: 2.0

(5, 5, 24), g: 1.0, h: 1.0,

f: 2.0

(4, 5, 24), g: 0.0, h: 0.0,

f: 0.0

AGENT 2

Unit tidak perlu dikalkulasi,karena prioritas pada iterasi ini adalah agent 1. Maka

agent 1 melakukan kalkulasi ulang, pathagent 2 masih sesuai dengan path sebelumnya


(40)

Gambar 3.18. Kondisi agents iterasi 15

Tabel 3.17. Path iterasi 16 CurrentWindow = 1

currentTime = 16 depth = 10

AGENT 1 AGENT 2

Tidak ada unit yang perlu dikalkulasi, path masih sesuai dengan path sebelumnya

Gambar 3.19. Kondisi agents iterasi 16

Tabel 3.18. Path iterasi 17 CurrentWindow = 2

currentTime = 17 depth = 10


(41)

Semua unit sudah mencapai tujuannya masing-masing

Gambar 3.20. Kondisi agents iterasi 17

3.3 Analisis Perangkat Keras

Spesifikasi perangkat keras (hardware) yang dibutuhkan untuk menguji pengimplementasian algoritma WHCA* pada webots ini dapat dilihat pada Tabel 3.19.

Tabel 3.19. Kebutuhan Perangkat Keras

Perangkat Keras Spesifikasi

Processor Intel Core-i5-3230M 2.6 Ghz

Resolusi layar 1024 x 768 pixel

Memori 2 GB

Harddisk 500GB

3.4 Analisis Perangkat Lunak

Spesifikasi perangkat lunak (software) yang dibutuhkan untuk menguji pengimplementasian algoritma WHCA* pada webots ini dapat dilihat pada Tabel 3.20.

Tabel 3.20. Kebutuhan Perangkat Lunak

Komputer Spesifikasi

Sistem Operasi Windows 8

Bahasa Pemograman Java


(42)

3.5 Analisis Kebutuhan Fungsional

Analisis kebutuhan fungsional menggambarkan proses kegiatan yang akan diterapkan dalam sebuah sistem dan menjelaskan kebutuhan yang diperlukan sistem agar sistem dapat berjalan dengan baik sesuai kebutuhan. Analisis yang dilakukan dimodelkan dengan menggunakan UML (Unified Modeling Language). Tahapan pemodelan dalam analisis tersebut antara lain pembuatan use case diagram, definisi aktor, definisi use case, skenario use case, activity diagram, sequence diagram, dan class diagram.

1.5.1. Usecase Diagram

Use case diagram digunakan untuk memodelkan proses bisnis dan merepresentasikan sebuah interaksi antara aktor dengan sistem. Aktor disini adalah

pengguna, yang mana pengguna dapat menginput starting point dan end point dengan

unit yang banyak.

Gambar 3.21. Usecase Diagram WHCA*

3.5.2. Skenario Use Case

Skenario setiap bagian pada use case menunjukkan proses apa yang terjadi pada setiap bagian didalam use case tersebut, dimana pengguna memberikan perintah pada setiap bagian dan respon apa yang diberikan oleh sistem kepada


(43)

pengguna setelah pengguna memberikan perintah pada setiap bagian-bagian use case.

Tabel 3.21. Skenario Use Case Menambah Agent Identifikasi

Nama Menambah Agent

Tujuan Menginstrusikan program untuk

menambah agent

Deskripsi Inisiasi agent untuk proses pencarian

Aktor Pengguna

Skenario Utama

Kondisi Awal Pengguna berada di menu utama pada program

Aksi actor Reaksi Sistem

1. User memilih koordinat

2. User Menekan tombol tambah agent

3. Unit melakukan inisialisasi path 4. Sistem menampilkan unit pada

koordinat yang diinputkan Kondisi Akhir Sistem menampilkan agent pada

koordinat yang diinputkan

Tabel 3.22. Skenario Use Case Mencari jalur terpendek dengan WCHA* Identifikasi

Nama Mencari jalur terpendek dengan

WHCA*

Tujuan Menginstrusikan program untuk

pencarian jalur terpendek menggunakan WHCA*

Deskripsi Proses pencarian jalur terpendek

Aktor Sistem

Skenario Utama

Kondisi Awal Unit memiliki koordinat awal dan akhir

Aksi - Reaksi Sistem

-

1. Inisialisasi node awal dan node akhir 2. Sistem menyimpan node awal ke list

open

3. Melakukan iterasi tetangga dan melakukan validasi node tujuan 4. Sistem menampilkan path setiap

agent

Kondisi Akhir Agent memiliki path sampai tujuan dengan jalur yang unik, tanpa adanya kemungkinan tabrakan


(44)

Tabel 3.23.Skenario Use Case Reset agent Identifikasi

Nama Reset unit

Tujuan Menginstrusikan program untuk

me-reset ulang posisi agent

Deskripsi Proses reset agent

Aktor Sistem

Skenario Utama

Kondisi Awal Agent berada pada posisi pencarian

Aksi User Reaksi Sistem

1. Tekan tombol Reset 2. Sistem menampilkan agent pada posisi awal

Kondisi Akhir Agent kembali ke posisi awal

Tabel 3.24. Skenario Use Case Animateagent Identifikasi

Nama Animate unit

Tujuan Menginstrusikan program untuk

melakukan pencarian jalur terpendek dengan adanya animasi pada setiap pergerakan

Deskripsi Proses animasi pergerakan pencarian jalur terpendek

Aktor Sistem

Skenario Utama

Kondisi Awal Agent berada pada posisi awal

Aksi User Reaksi Sistem

1. Tekan tombol Animate 2. Agent melakukan pencarian dengan animasi pada setiap pergerakan

Kondisi Akhir Agent bergerak mencari jalur

Tabel 3.25. Skenario Use Case StopAgent Identifikasi

Nama Stop agent

Tujuan Menginstrusikan program untuk

berhenti dalam pergerakan mencari jalur terpendek

Deskripsi Proses melakukan berhenti dalam

pergerakan pencarian

Aktor Sistem

Skenario Utama

Kondisi Awal Agent berada pada koordinat tertentu

Aksi User Reaksi Sistem

1. Tekan tombol Stop 2. Menampilkan agent pada posisi diam dan koordinat terakhir


(45)

Kondisi Akhir Agent berhenti pada posisi terakhir

Tabel 3.26. Skenario Use Case Step Agent Identifikasi

Nama Step Agent

Tujuan Menginstrusikan program untuk maju

selangkah menuju node selanjutnya Deskripsi Proses melakukan perpindahan agent

dari node awal ke node selanjutnya

Aktor Sistem

Skenario Utama

Kondisi Awal Agent berada pada posisi awal

Aksi User Reaksi Sistem

1. Tekan tombol Step 2. Sistem menampilkan agent pada posisi selanjutnya

Kondisi Akhir Agent berada pada posisi node selanjutnya

Tabel 3.27. Skenario Use Case mengubah Grid Identifikasi

Nama Mengubah grid

Tujuan Menginstrusikan program untuk

mengubah jumlah kolom dan baris grid

Deskripsi Proses mengubah baris dan kolom grid

Aktor Sistem

Skenario Utama

Kondisi Awal Jumlah grid sesuai default

Aksi User Reaksi Sistem

1. mengisi data nilai kolom 2. Mengisi data nilai baris 3. Menekan tombol Grid Baru

4. Sistem menampilkan grid

Kondisi Akhir Jumlah kolom dan baris grid sesuai dengan yang diinputkan

3.5.3. Activity Diagram

Diagram aktivitas atau Activity Diagram menggambarkan workflow (aliran

kerja) atau aktivitas dari sebuah sistem atau proses bisnis. Penggambaran activity

diagram memiliki kemiripan dengan flowchart diagram. Activity diagram memodelkan

event-event yang terjadi pada Use Case dan digunakan untuk pemodelan aspek dinamis dari sistem.


(46)

Gambar 3.22. Activity Diagram Tambah Agent

Gambar 3.23. Activity Diagram Tombol Reset


(47)

Gambar 3.25.Activity Diagram Tombol Step


(48)

(49)

3.5.4. Class Diagram


(50)

3.5.5. Sequence Diagram

Diagram sequence atau Sequence Diagram menggambarkan kelakuan objek

pada use case dengan mendeskripsikan waktu hidup objek dan message yang

dikirimkan dan diterima antar objek.

Gambar 3.27.Sequence Diagram Tombol Stop


(51)

Gambar 3.29. Sequence Diagram Tombol Reset


(52)

Gambar 3.31. Sequence Diagram Menambah Agent


(53)

MAGALINE, F. (2012). Konsep Dasar Sistem Informasi. Jurnal Sistem Informasi , 1-3.


(54)

1

BAB I PENDAHULUAN

1.1

Latar Belakang Masalah

Informasi merupakan kebutuhan bagi setiap orang. Melalui teknologi informasi seseorang dapat memperoleh informasi dengan cepat dan mudah. Salah satu produk teknologi yang dapat digunakan sebagai sarana temu-balik informasi adalah website. UNIKOM (Universitas Komputer Indonesia) sebagai salah satu perguruan tinggi di Bandung, sering menggunakan website pada keseharian proses bisnisnya. Salah satunya untuk kegiatan ICO-APICT.

ICO-APICT merupakan seminar international yang diadakan oleh UNIKOM dengan tujuan merangkum gagasan penelitian serta untuk mempromosikan bentuk-bentuk implementasi nyata dari penggunaan dan peran ICT dalam bidang teknik, ekonomi, politik, hukum, sastra dan seni. Seminar ini diikuti oleh para pemakalah yang lebih dikenal dengan sebutan presenter.

Dalam penyelenggaraan Seminar Internasional ICO-APICT ini, dibutuhkan suatu sistem yang mendukung pengelolaan proses data seminar dengan cepat, akurat dan bersifat realtime. Hal ini dilakukan, demi tercapainya, penyelenggaraan seminar yang efisien dan efektif dalam penyajian informasi, sehingga dapat memenuhi kepuasan pelayanan kepada calon presenter. Sistem yang ditujukan untuk mendukung pengelolaan proses data seminar ini, akan dibuat dalam bentuk website untuk menyajikan informasi secara cepat, akurat dan realtime tentang seminar ini.

1.2 Identifikasi Masalah

Berdasarkan latar belakang masalah yang telah diuraikan di atas, yang menjadi titik permasalahan dalam laporan ini adalah sebagai berikut :

1. Media informasi bagi calon presenter seminar sangat terbatas. 2. Proses administrasi yang kurang efesien dan efektif.


(55)

1.3 Maksud dan Tujuan

Maksud dari laporan ini adalah membangun aplikasi mengenai sistem informasi seminar international. Sedangkan tujuan yang akan dicapai dalam penelitian ini adalah :

1. Calon presenter lebih mudah mendapatkan informasi. 2. Proses administrasi lebih efesien dan efektif.

1.4 Batasan Masalah

Mengingat permasalahan yang dikaji sangat luas, agar penyajian lebih terarah dan mencapai sasaran yang ditentukan, maka diperlukan suatu pembatasan masalah atau ruang lingkup kajian yang meliputi hal-hal sebagai berikut :

1. Target utama aplikasi ini adalah UNIKOM.

2. Aplikasi berjenis Sistem Informasi Akademik berbasis web. 3. Sistem Pengelolan Paper dan Media Informasi.

1.5 Metodologi Penelitian

Laporan ini menggunakan metode penelitian eksperimental, yaitu metode penelitian yang didasarkan pada suatu percobaan-percobaan ilmiah yang dilakukan dalam membuat sesuatu yang baru atau mengembangkan sesuatu berdasarkan ilmu-ilmu pengetahuan. Metode yang digunakan pada saat mengumpulkan data dan mengembangkan aplikasi sebagai berikut :

1. Metode Pengumpulan Data

Metode pengumpulan data yang digunakan dalam penelitian ini adalah dengan Pengumpulan data dengan cara mewawancarai salah satu panitia Seminar ICOAPICT 2013.

2. Metode Pembuatan Perangkat Lunak

Metode yang digunakan dalam pembuatan perangkat lunak ini akan menggunakan model waterfall. Model ini adalah model klasik yang melakukan pendekatan secara sistematis, berurutan dalam membangun software, berkat penurunan dari satu fase ke fase lainnya. Model ini dikenal sebagai model air


(56)

terjun atau siklus hidup perangkat lunak. Berikut ini adalah proses-proses model waterfall :

a. Communication

Tahap ini merupakan kegiatan berkomunikasi dan berkolaborasi dan lainnya. Tujuannnya adalah untuk memahami stakeholder, tujuan untuk proyek dan untuk mengumpulkan persyaratan yang membantu mendefinisikan fitur perangkat lunak dan fungsi.

b. Planning

Setiap perjalanan yang rumit dapat disederhanakan jika ada peta. Sebuah project software adalah sebuah perjalanan yang rumit, dan kegiatan perencanaan menciptakan “peta” membantu yang memandu tim karena membuat perjalanan. “Peta” disebut proyek perangkat lunak mendefinisikan rencana kerja software engineering dengan menjelaskan tugas-tugas teknis yang harus dilakukan, resiko yang mungkin, sumber daya yang akan diperlukan, produk pekerjaan yang dihasilkan, dan kerja jadwal.

c. Modeling

Proses ini digunakan untuk menciptakan sebuah sketsa untuk dapat memahami gambaran apa yang akan terlihat, bagaimana penyusunnya, dan banyak karakteristik lainnya. Jika perlu dengan menyempurnakan sketsa menjadi lebih besar dan lebih rinci dalam upaya untuk memahami masalah dan bagaimana mengatasinya. Hal ini dilakukan dengan menciptakan model untuk lebih memahami kebutuhan perangkat lunak dan desain yang akan mencapai persyaratan.

d. Construction

Kode ini dikombinasikan aktivasi generasi (baik secara manual atau otomatis) dan pengujian yang diperlukan untuk mengungkap kesalahan dalam kode.


(57)

Perangkat lunak (sebagai badan yang lengkap atau sebagian) yang dikirimkan ke pelanggan yang mengevaluasi disampaikan produk dan memberikan umpan balik berdasarkan evaluasi.

Gambar 1 Waterfall Model

1.6 Sistematika Penulisan

Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan Tugas Akhir ini adalah sebagai berikut :

BAB I PENDAHULUAN

Menguraikan latar belakang masalah, identifikasi masalah, batasan masalah, maksud dan tujuan, metodologi penelitian dan sistematika penulisan.

BAB II TINJAUAN PUSTAKA

Bab ini menguraikan konsep dasar, basis data, diagram kontek, diagram flow data, entri relationship diagram dan perangkat lunak pendukung yang berkaitan dengan penelitian yang akan dilakukan.


(58)

BAB III ANALISIS DAN PERANCANGAN SISTEM

Bab ini mengemukakan tentang langkah-langkah dasar pemecahan masalah berdasarkan analisa yang terdiri dari analisa masalah, analisa sistem yang sedang berjalan, analisa sistem yang akan dibuat dan juga menerangkan perancangan sistem yang akan dibuat, perancangan struktural, perancangan data dan perancangan antar muka (interface).

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab ini berisi penjelasan mengenai program yang telah dibuat berdasarkan desain sistem dan untuk mencoba program apakah telah sesuai dengan rancangan dan desain implementasi yang dibuat, juga untuk mencari kesalahan-kesalahan program yang mungkin terjadi untuk selanjutnya dapat dilakukan penyempurnaan implementasi dan pengujian program aplikasi.

BAB V KESIMPULAN DAN SARAN

Berisi kesimpulan dari hasil yang didapat dari penelitian dan saran-saran yang berguna untuk pengembangan sistem yang lebih baik dan bermanfaat.


(1)

1.2.3.Kasus dan hasil pengujian

Berdasarkan rencana pengujian, maka dapat dilakukan pengujian alpha dengan blackbox pada simulasi pencarian jalur terpendek menggunakan algoritma WHCA* dengan banyak agen yang dijelaskan pada tabel 4.4.

Tabel 4.4. Kasus dan hasil pengujian (data normal) Kasus dan hasil pengujian (data normal)

Aksi Yang

diharapkan

Pengamatan Kesimpulan

Memasukan titik awal

Menampilkan titik awal pada map Map menampilkan titik awal Diterima Memasukan titik tujuan Menampilkan titik tujuan pada map Map menampilkan titik tujuan Diterima Memasukan data halangan Menampilkan penghalang tembok pada map Map menampilkan penghalang Diterima Menekan tombol step Menampilkan rute reservasi pertama setiap unit pada map

Map menampilkan rute reservasi pertama Diterima Menekan tombol Animate Menampilkan setiap unit bergerak dari titik awal menuju titik akhir Sistem melakukan animasi perjalanan dari titik awal hingga titik tujuan

Diterima

Menekan tombol Stop

Menampilkan setiap unit pada posisi terakhir

Map

menampilkan setiap unit pada posisi terakhir Diterima Menekan tombol reset Menampilkan map dengan tanpa halangan dan unit Map menghapus data halangan dan unit Diterima Memasukan data nilai baris Contoh: 13 Dapat terisi number untuk masukan data nilai baris

Jumlah baris pada map sesuai dengan yang diinputkan


(2)

52

Tabel 4.5. Kasus dan hasil uji (data normal) Lanjutan

Masukan Yang

diharapkan

Pengamatan Kesimpulan

Memasukan data nilai kolom. Contoh: 10

Dapat terisi number untuk masukan data nilai kolom

Jumlah kolom pada map sesuai dengan yang diinputkan Diterima Klik tombol Grid Baru Menampilkan grid yang sesuai dengan masukan nilai baris dan nilai kolom Menampilkan map dengan jumlah baris dan kolom sesuai inputan Diterima

Tabel 4.6. Kasus dan hasil uji (data tidak normal)

Masukan Yang diharapkan Pengamatan Kesimpulan

Memasukan data titik awal pada posisi halangan

Muncul pesan konfirmasi bahwa titik awal tidak dapat diinput Hasil sesuai dengan yang diharapkan Diterima Memasukan data titik tujuan pada posisi halangan Muncul pesan konfirmasi bahwa titik tujuan tidak dapat diinput Hasil sesuai dengan yang diharapkan Diterima Memasukan data nilai kolom atau nilai baris melebihi batas grid Muncul pesan konfirmasi bahwa data melebihi batas grid Hasil sesuai dengan yang diharapkan Diterima Memasukan titik awal dan titik tujuan pada posisi yang sama Muncul pesan bahwa titik tujuan harus berbeda dengan titik awal Hasil sesuai dengan yang diharapkan Diterima Memasukan titik awal pada titik awal unit lain pada waktu yang sama Muncul pesan bahwa titik awal sudah digunakan oleh unit lain Hasil sesuai dengan yang diharapkan Diterima Memasukan titik tujuan pada titik tujuan unit lain pada waktu yang sama Muncul pesan bahwa titik tujuan sudah digunakan oleh unit lain Hasil sesuai dengan yang diharapkan Diterima


(3)

1.2.4.Pengujian Performansi

Performasi yang akan diuji pada aplikasi yang telah dibangun yaitu waktu tempuh dari posisi awal hingga posisi akhir setiap unit dan jumlah simpul yang diperiksa pada setiap siklus.

Performansi yang akan diuji pada aplikasi yang telah dibangun yaitu simpul yang diperiksa dan waktu yang ditempuh yang dihasilkan dengan Implementasi ordo minimal 5 x 5 tanpa penghalang dengan jumlah agen dari 2 hingga 8.

Gambar 4.3. Hasil pengujian ekspansi node

Hasil pengujian ekspansi node pada ordo 5x5, 10x10 dan 15x15 tanpa penghalang dengan jumlah agen dari 2 – 8 dapat dilihat pada tabel 4.7.

Tabel 4.7. Tabel hasil pengujian ekspansi node

Ordo \ jumlah unit 2 4 6 8

5X5 96 ms 357 ms 771 ms 892ms

10X10 309 ms 870 ms 1074 ms 1798 ms

15X15 622 ms 1154 ms 1793 ms 2486 ms

96

357

771 892

309

870

1074

1798

622

1154

1793

2486

0 500 1000 1500 2000 2500 3000

2 4 6 8

JUMLAH AGEN

Expansi node


(4)

54

Gambar 4.4. Hasil pengujian waktu eksekusi

Hasil pengujian waktu eksekusi pada ordo 5x5, 10x10 dan 15x15 tanpa penghalang dengan jumlah agen dari 2 – 8 dapat dilihat pada tabel 4.8.

Tabel 4.8. Tabel hasil pengujian hasil waktu eksekusi Ordo \ jumlah

unit

2 4 6 8

5X5 4.331 ms 8.811 ms 15.069 ms 55.467 ms 10X10 38.686 ms 60.166 ms 90.995 ms 107.464 ms 15X15 60.25 ms 93.122 ms 141.772 ms 166.999 ms

1.2.5.Kesimpulan Pengujian Blackbox

Hasil pengujian dari pengujian blackboxyang telah dilakukan, menunjukkan bahwa aplikasi yang dibangun sudah memenuhi persyaratan fungsional, akan tetapi pada prosesnya masih memungkinkan untuk terjadinya kesalahan, namun frekuensi kesalahan masih relatif kecil. Secara fungsional sistem yang telah dibangun sudah dapat menghasilkan keluaran yang diharapkan. Jalan yang dihasilkan merupakan jalan terpendek karena simpul yang diperiksa relatif banyak dan memerlukan waktu pencarian yang relatif lama pula. Semakin banyak agen maka semakin banyak simpul yang diperiksa

4.331 8.811 15.069

55.467 38.686

60.166

90.995 107.464 60.25

93.122

141.772

166.999

0 50 100 150 200

2 4 6 8

JUMLAH AGEN

Waktu eksekusi


(5)

56

Pada bagian terakhir ini akan dikemukakan kesimpulan dari penelitian yang bersifat membangun.

5.1. Kesimpulan

Dari analisis algoritma dan hasil pengujian yang dilakukan, maka dapat ditarik kesimpulan bahwa semakin banyaknya agen dan jumlah grid maka proses pencarian jalur akan semakin lama dan jumlah ekspansi node semakin banyak.

5.2. Saran

Simulasi ini masih dapat dikembangkan lebih lanjut dengan perkembangan spesifikasi kebutuhan pengguna sistem yang harus dipenuhi dalam mencapai tahap yang lebih tinggi. Pada implementasi pencarian jalur terpendek menggunakan algoritma WHCA* ini nilai depth pada pencarian diambil secara tetap, sehingga adanya kemungkinan kesalahan dan kurang optimal pada saat pencarian jalur jika nilai depth tidak sesuai dengan jumlah grid dan jumlah unit. Oleh karena itu saran dari penulis adalah perlunya riset lebih lanjut tentang nilai depth pada pencarian WHCA* sehingga dapat mengurangi kesalahan pada saat pencarian dan lebih optimal pada saat pencarian jalur terpendek.


(6)

56 DAFTAR PUSTAKA

[1] D. Silver, "Cooperative Pathfinding," Department of Computing Science, Edmonton, Canada, 2005 .

[2] V. I. H. and D. A. , "Algoritma A* (A Star) Sebagai Salah Satu Contoh Metode Pemograman Branch and Bound".

[3] Stanford University, "From Amit’s Thoughts on Pathfinding," Stanford University, [Online]. Available:

http://theory.stanford.edu/~amitp/GameProgramming/Heuristics.html#a-stars-use-of-the-heuristic. [Accessed 11 May 2015].

[4] Y. Li, W. Zhao, Z. Zhou and C. Chen, "Hierarchical and Dynamic Pathfinding Algorithms in Game Maps," International Journal of Advancements in Computing Technology, vol. 5, no. 11.10, p. 89, 2013. [5] A. Botea, M. Muller and J. Schaeffer, "Near Optimal Hierarchical

Path-Finding," Game Development, vol. 1, no. 1, pp. 8-12, 2004.

[6] J. E. Bentley, "Software Testing Fundamentals—Concepts, Roles, and Terminology," SUGI 30 Proceedings, vol. 1, p. 1, 2005.

[7] R. S. Pressman, Software Engineering: A Practitioner’s Approach, Fifth Ed. New York, McGraw-Hill Book Company, 2001.