• Tidak ada hasil yang ditemukan

Bab IV Perancangan dan Implementasi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Bab IV Perancangan dan Implementasi"

Copied!
17
0
0

Teks penuh

(1)

IV-1

Bab IV Perancangan dan Implementasi

4.1

Perancangan Pesan antar Agen

Perancangan pesan dalam sistem ini dibutuhkan untuk menjamin komunikasi antara agen dapat berjalan dengan baik dan seefektif mungkin. Komunikasi yang diterapkan pada perangkat lunak nantinya merupakan modifikasi dari protokol yang ditetapkan oleh FIPA, yaitu FIPA request, karena interaksi yang dilakukan antar agen merupakan interaksi yang meminta agen lainnya melakukan suatu aksi. Modifikasi dilakukan sehubungan dengan kebutuhan sistem untuk menangani bahwa data penting dalam pesan yang harus dipastikan sampai kepada agen penerima. Pada protokol FIPA request, aksi dapat saja gagal dilakukan meskipun agen penerima telah mengirimkan pesan agree. Modifikasi dilakukan untuk mengatasi masalah tersebut. Protokol interaksi antar agen dapat dilihat pada subbab 3.4.1 Interaksi yang ada pada perangkat lunak terdiri atas dua macam interaksi, yaitu interaksi antara agen pemungut dan agen penghitung dan interaksi antara agen penumpul dan agen penghitung.

JADE menyediakan mekanisme untuk mengelola komunikasi antar agen. JADE menyediakan sebuah kelas, yaitu jade.lang.acl.ACLMessage yang dapat dimanipulasi untuk membentuk pesan yang akan dikirimkan. Setelah pesan ini diterima oleh agen, maka pesan diletakkan pada antrian pesan yang akan diproses oleh agen. Agen mengambil satu persatu pesan dari antrian ini untuk diproses. Pesan yang akan diproses juga dapat disaring berdasarkan field tertentu, misalkan pengirim, communicative acts ataupun field lainnya.

4.1.1

Interaksi Agen Penghitung Dengan Agen Pemungut.

Terdapat satu jenis interaksi antara agen penghitung dan agen pemungut, yaitu interaksi dari agen pemungut untuk meminta agen penghitung menghitung suara yang baru didapat oleh agen pemungut.

Interaksi antara agen pemungut dan agen penghitung terdiri dari beberapa langkah, sesuai dengan penjelasan pada subbab 3.4.1.1 langkah pertama agen pemungut mengirimkan request pada salah satu agen penghitung untuk melakukan penghitungan. Pesan request ini memiliki content sebagai aksi yang diminta. Pesan ini dapat dilihat dalam Pesan IV-1.

(2)

(REQUEST :sender

(agent-identifier

:name cl1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CollectorAgent ) :receiver (set (agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) ) ) :content "((action (agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc) ) (COUNT-VOTE) ))" :reply-with 1189568271468 :language fipa-sl :ontology Voting-Ontology )

Pesan IV-1 Request penghitungan Suara

Pada Pesan IV-1, dapat dilihat bahwa teks pertama yang tertulis ialah REQUEST, bagian ini menjelaskan communicative act dari pesan tersebut yang bermakna pesan ini ialah pesan yang meminta agen penerima melakukan suatu aksi tertentu. Selain communicative act terdapat sejumlah field lainnya, pertama ialah field :sender yang menyatakan identitas agen pengirim, di mana pada pesan tersebut pengirim adalah agen bernama cl1@Reca:1099/JADE dengan alamat di http://167.205.35.156:7778/acc dan merupakan instans dari kelas voting.agent.CollectorAgent. Field berikutnya, :receiver, menyatakan identitas agen penerimanya. Field :content ialah isi dari pesan, di sini isi dari pesan ialah aksi yang akan dilakukan oleh agen penerima, yaitu aksi COUNT-VOTE. Field :reply-with berguna sebagai identitas dari percakapan agen dan digunakan sebagai penyaring dalam memproses pesan balasan yang akan masuk. Field :language berisi bahasa yang digunakan dalam mengodekan isi pesan dan field :ontology menyatakan ontologi pesan yang digunakan.

(3)

Jika agen penghitung memutuskan untuk menolak proses penghitungan suara dari agen pemungut, maka agen penghitung akan mengirimkan pesan failure seperti terlihat pada Pesan IV-2.

(FAILURE :sender

(agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name cl1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CollectorAgent ) ) :reply-with 1189568271468 :in-reply-to 1189568271468 :language fipa-sl :ontology Voting-Ontology )

Pesan IV-2 Pesan Gagal Memenuhi Request

Jika agen penghitung memutuskan untuk menerima proses penghitungan suara dari agen pemungut, maka agen penghitung akan mengirimkan pesan agree sebagaimana terlihat pada Pesan IV-3:

Jika agen pemungut mendapatkan pesan agree, maka ia akan mengirimkan pesan inform untuk mengirimkan isi suara yang akan dihitung oleh agen penghitung. Pesan yang bersangkutan dapat dilihat pada Pesan IV-4

Terakhir, agen penghitung akan mengirimkan pesan inform yang berisi predikat pesan telah dihitung, seperti terlihat pada Pesan IV-5. Setelah pesan ini dikirim oleh agen penghitung dan diterima oleh agen pemungut, maka satu interaksi antara kedua agen selesai.

(4)

(AGREE :sender

(agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name cl1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CollectorAgent ) ) :reply-with 1189568271468 :in-reply-to 1189568271468 :language fipa-sl :ontology Voting-Ontology )

(5)

(INFORM :sender

( agent-identifier

:name cl1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CollectorAgent ) :receiver (set ( agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CounterAgent ) ) :content "((SEND-VOTE (VOTE :candidateList (sequence (CANDIDATE :ordinal 4 :name empat ) (CANDIDATE :ordinal 2 :name dua ) (CANDIDATE :ordinal 1 :name satu ) (CANDIDATE :ordinal 3 :name tiga ) ) ) ))" :reply-with 1189568271468 :in-reply-to 1189568271468 :language fipa-sl :ontology Voting-Ontology )

(6)

(INFORM :sender

(agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set (agent-identifier :name cl1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc) :X-JADE-agent-classname voting.agent.CollectorAgent ) ) :content "((VOTE-COUNTED (VOTE :candidateList (sequence (CANDIDATE :ordinal 4 :name empat) (CANDIDATE :ordinal 2 :name dua) (CANDIDATE :ordinal 1 :name satu) (CANDIDATE :ordinal 3 :name tiga) ) ) ))" :reply-with 1189568271468 :in-reply-to 1189568271468 :language fipa-sl :ontology Voting-Ontology )

Pesan IV-5 Inform Suara Telah Dihitung

4.1.2

Interaksi Agen Pengumpul Dengan Agen Penghitung.

Terdapat dua jenis interaksi antara agen pengumpul dengan agen penghitung, yang pertama yaitu interaksi dari agen pengumpul untuk meminta agen penghitung memberikan informasi hasil perhitungan voting sementara yang dimiliki agen tersebut atau dengan kata lain mengumpulkan hasil sementara yang telah dihitung. Interaksi yang kedua ialah agen

(7)

pengumpul meminta agen penghitung untuk menghitung hasil sementara yang diterima oleh agen pengumpul.

4.1.2.1 Interaksi Mengumpulkan Hasil Sementara

Interaksi antara agen pengumpul dengan agen penghitung terdiri dari beberapa langkah, pertama-tama agen pengumpul harus mengirimkan pesan ke beberapa agen penghitung untuk meminta persetujuan pemberian informasi hasil voting sementara. Pesan ini dapat dilihat pada Pesan IV-6.

(REQUEST :receiver

(set

( agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc ) ) ) :content "((action (agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc) ) (ASK-NEW-RESULT) ))" :reply-with Ask-1189795942828 :language fipa-sl :ontology Voting-Ontology :conversation-id Ask-New-Result )

Pesan IV-6 Request Hasil Baru

Jika agen penghitung menolak untuk memberikan informasi hasil voting sementara, agen penghitung akan mengirimkan pesan failure kepada agen pengumpul, seperti terlihat pada Pesan IV-7

Jika agen penghitung memutuskan untuk menerima permintaan agen pengumpul, agen penghitung akan mengirimkan pesan agree kepada agen pengumpul, seperti terlihat pada Pesan IV-8

(8)

(FAILURE :sender

( agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name a1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.AggregatorAgent ) ) :reply-with Ask-1189795942828 :in-reply-to Ask-1189795952843 :language fipa-sl :ontology Voting-Ontology :conversation-id Ask-New-Result )

Pesan IV-7 Pesan Kegagalan Memenuhi Request

(AGREE :sender

(agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name a1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.AggregatorAgent ) ) :reply-with Ask-1189795942828 :in-reply-to Ask-1189795942828 :language fipa-sl :ontology Voting-Ontology :conversation-id Ask-New-Result )

(9)

Setelah agen penghitung mengirimkan pesan agree, agen penghitung mengirimkan pesan lagi kepada agen pengumpul yang berisi informasi hasil voting sementara. Setelah menerima pesan hasil voting sementara, agen pengumpul akan menyimpan semua informasi hasil voting sementara yang berasal dari beberapa agen penghitung tersebut. Pesan ini dapat dilihat pada Pesan IV-9

(INFORM :sender

( agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name a1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.AggregatorAgent ) ) :content "((SEND-RESULT (RESULT :table (sequence

(SCORE :candidate (CANDIDATE :ordinal 1 :name satu) :point 3.0)

(SCORE :candidate (CANDIDATE :ordinal 2 :name dua) :point 1.5)

(SCORE :candidate (CANDIDATE :ordinal 3 :name tiga) :point 0.0) ) ) ))" :reply-with Ask-1189795942828 :in-reply-to Ask-1189795942828 :language fipa-sl :ontology Voting-Ontology :conversation-id Ask-New-Result )

(10)

4.1.2.2 Interaksi Menghitung Hasil Sementara

Pada intinya interaksi ini mirip dengan interaksi antara agen pemungut dan agen penghitung pada subbab 4.1.1. Namun pesan request dan inform memiliki content yang berbeda. Selain itu tentu saja perbedaan terletak pada nama agen pengirim dan penerima serta pada field reply-with dan in-reply-to. Pesan request dapat dilihat pada Pesan IV-10 sedangkan pesan inform terlihat seperti pada Pesan IV-11.

(REQUEST :sender

(agent-identifier

:name a1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) :X-JADE-agent-classname voting.agent.AggregatorAgent ) :receiver (set (agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc ) ) ) :content "((action (agent-identifier :name c1@Reca:1099/JADE

:addresses (sequence http://167.205.35.156:7778/acc) ) (COUNT-RESULT) ))" :reply-with 1189568350877 :language fipa-sl :ontology Voting-Ontology )

(11)

(INFORM :sender

( agent-identifier

:name c1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.CounterAgent ) :receiver (set ( agent-identifier :name a1@Reca:1099/JADE

:addresses (sequence http://RECA:7778/acc )

:X-JADE-agent-classname voting.agent.AggregatorAgent ) ) :content "((COUNT-RESULT (RESULT :table (sequence

(SCORE :candidate (CANDIDATE :ordinal 1 :name satu) :point 3.0)

(SCORE :candidate (CANDIDATE :ordinal 2 :name dua) :point 1.5)

(SCORE :candidate (CANDIDATE :ordinal 3 :name tiga) :point 0.0) ) ) ))" :reply-with 1189568350877 :in-reply-to 1189568350877 :language fipa-sl :ontology Voting-Ontology :conversation-id Ask-New-Result )

Pesan IV-11 Inform Hitung Hasil

4.2

Perancangan Perangkat Lunak

Berdasarkan analisis yang telah dilakukan, dapat dilakukan perancangan perangkat lunak untuk sistem voting berbasis sistem multiagen. Perancangan perangkat lunak dilakukan dengan membuat diagram kelas dan perancangan antarmuka.

(12)

4.2.1

Perancangan Kelas dan Paket

Sistem ini terdiri atas tiga paket utama yaitu paket agent, paket behaviours, serta paket ontology. Paket agent berisi kelas-kelas yang merepresentasikan agen-agen yang terlibat dalam sistem ini, yaitu agen pengumpul, agen pemungut dan agen penghitung. Daftar nama agen dan kelas perancangannya dapat dilihat pada Tabel IV-1.

Tabel IV-1 Kelas-Kelas Paket Agent

No Jenis Agen Kelas

1 Agen Pengumpul AggregatorAgent

2 Agen Pemungut CollectorAgent

3 Agen Penghitung Counter Agent

Paket behaviours terdapat di dalam paket agent, terdiri atas behaviour yang dimiliki oleh agen-agen. Isi dari paket ini dapat dilihat pada Tabel IV-2

Tabel IV-2 Kelas-Kelas Paket Behaviour

No. Behaviour Agen

Pengguna

Kelas

1 Mengumpulkan hasil suara Agen Pengumpul AggregatorBehaviour

2 Meminta Hitung Hasil Agen Pengumpul AggregatorCountNewResultBehaviour 3 Menangani Pesan Masuk Agen Penghitung CollectorBehaviour

4 Melayani Permintaan Menghitung Suara Agen Penghitung CounterCountVoteBehaviour 5 Melayani Permintaan Menghitung Hasil

Sementara

Agen Penghitung CounterCountResultBehaviour

6 Melayani Permintaan Mengirimkan Hasil Sementara

Agen Penghitung AskedNewResultBehaviour

7 Memungut suara dan mengirimkannya ke agen penghitung

Agen Pemungut CollectorBehaviour

Paket ontology, terdiri atas tiga sub-paket, yaitu concept, action dan predicate, yang masing-masing mewakili komponen ontologi sesuai dengan yang dijelaskan pada subbab 3.4.3. pada perancangannya, isi paket ini dapat dilihat pada Tabel IV-3

(13)

Tabel IV-3 Kelas-Kelas Paket Ontology

No ontologi Jenis ontologi Kelas Paket

1 Kandidat Konsep Candidate ontology.concept

2 Hasil Sementara Konsep Result ontology.concept

3 Suara Konsep Vote ontology.concept

4 Nilai Konsep Score ontology.concept

5 Suara Baru Predikat SendVote ontology.predicate

6 Hasil Baru Predikat SendNewResult ontology.predicate

7 Suara Telah

Dihitung

Predikat VoteCounted ontology.predicate

8 Minta Hasil Baru Aksi AskNewResult ontology.action

9 Hitung Suara Baru Aksi CountVote ontology.action

10 Hitung Hasil

Sementara

Aksi CountResult ontology.action

4.2.2

Perancangan Antarmuka

Terdapat tiga antarmuka dalam sistem ini. Antar muka pertama ialah antar muka bagi peserta voting untuk memberikan suara mereka, sedangkan antarmuka lainnya ialah antarmuka bagi admin untuk mengelola kandidat dan melihat hasil voting.

4.2.2.1 Antarmuka Peserta

Antarmuka ini berguna bagi peserta untuk memberikan suaranya. Antarmuka bagi peserta dapat dilihat pada Gambar IV-1. Peserta dapat mengatur urutan kandidat pada suaranya dengan memilih salah satu peserta pada daftar peserta dan mengklik tombol up atau down untuk mengubah urutannya pada daftar kandidat. Jika urutan kandidat telah sesuai dengan yang diinginkan, maka peserta harus mengklik tombol vote! Untuk memberikan suaranya.

4.2.2.2 Antarmuka Lihat Hasil Sementara

Antarmuka ini berfungsi untuk menampilkan hasil voting sementara kepada admin. Antarmuka untuk melihat hasil sementara dapat dilihat pada Gambar IV-2. Terdapat tabel hasil voting yang terdiri atas kolom kandidat dan kolom nilai.

(14)

4.2.2.3 Antarmuka Pengelolaan Kandidat

Antarmuka ini berguna untuk mempermudah admin dalam mengelola daftar kandidat. Antarmuka Pengelolaan Kandidat dapat dilihat pada Gambar IV-3. Untuk menambahkan kandidat, nama kandidat baru diisi pada field Candidate’s Name lalu mengklik tombol Add Candidate. Kandidat yang baru ditambahkan akan muncul pada daftar kandidat. Untuk menghapus seorang kandidat dari dalam daftar, pilih kandidat yang akan dihapus, lalu klik tombol Remove Candidate. Daftar kandidat juga dapat disimpan ke dalam file dengan mengklik tombol Save, lalu untuk membukanya kembali dapat dilakukan dengan mengklik tombol Load,

Gambar IV-1 Antarmuka Peserta

Gambar IV-2 Antarmuka Lihat Hasil Sementara

(15)

4.3

Implementasi Perangkat Lunak

4.3.1

Lingkungan Implementasi

Sistem Voting Elektronis Berbasis Sistem Multiagen ini dibangun dalam bahasa pemrograman Java menggunakan framework JADE (Java Agent Development Environment). Pemilihan ini didasari oleh kemampuan Java untuk dijalankan dalam berbagai platform serta ketersediaan dokumentasi yang baik. Sedangkan JADE dipilih karena alasan bahwa JADE memenuhi spesifikasi FIPA.

Selain itu perangkat lunak yang digunakan dalam implementasi yaitu Netbeans IDE 5.5 menggunakan Java SDK versi 1.5. Penggunaan Netbeans ialah untuk mempermudah pengkodean dan debugging.

Berikut adalah lingkungan perangkat keras yang digunakan selama implementasi : 1. Notebook dengan spesifikasi:

a. Prosesor : AMD Turion 64 2.0 GHz

b. Memori : 512 MByte

c. Network Adapter : Realtek RTL8139 2. PC dengan spesifikasi

a. Prosesor : Intel Pentium 4 E 3.0 GHz

b. Memori : 512 MByte

c. Network Adapter : Realtek RTL8169/8110

4.3.2

Implementasi Kelas dan Paket

Masing-masing kelas diimplementasikan dalam sebuah file java. Kelas-kelas yang terdapat dalam satu paket terletak dalam satu folder dengan nama sesuai dengan paketnya di dalam folder voting/ sebagai folder root-nya. Penjelasan mengenai implementasi kelas dapat dilihat pada Tabel IV-4 dan penjelasan mengenai paket pada Tabel IV-5

(16)

Tabel IV-4 Implementasi Kelas

No Kelas File Paket

1 AggregatorAgent AggregatorAgent.java voting.agent

2 CollectorAgent CollectorAgent.java voting.agent

3 CounterAgent CounterAgent.java voting.agent

4 AggregatorBehaviour AggregatorBehaviour.java voting.agent.behaviour 5 AggregatorCountNewResultBeha

viour

AggregatorCountNewResultBehaviour. java

voting.agent.behaviour

6 CollectorBehaviour CollectorBehaviour.java voting.agent.behaviour 7 CounterAskNewResultBehaviour CounterAskNewResultBehaviour.java voting.agent.behaviour 8 CounterBehaviour CounterBehaviour.java voting.agent.behaviour 9 CounterCountResultBehaviour CounterCountResultBehaviour.java voting.agent.behaviour 10 CounterVoteResultBehaviour CounterVoteResultBehaviour.java voting.agent.behaviour

11 VotingOntology VotingOntology.java voting.ontology

12 AskNewResult AskNewResult.java voting.ontology.action

13 CountResult CountResult.java voting.ontology.action

14 CountVote CountVote.java voting.ontology.action

15 Candidate Candidate.java voting.ontology.concept

16 Result Result.java voting.ontology.concept

17 Score Score.java voting.ontology.concept

18 Vote Vote.java voting.ontology.concept

19 SendNewResult SendNewResult.java voting.ontology.predicate

20 SendVote SendVote.java voting.ontology.predicate

21 VoteCounted VoteCounted.java voting.ontology.predicate

22 CandidatesEditor CandidatesEditor.java voting.gui

23 CollectorAgentGUI CollectorAgentGUI.java voting.gui

24 ResultGUI ResultGUI.java voting.gui

(17)

Tabel IV-5 Implementasi Paket No Paket Folder 1 voting.agent voting/agen/ 2 voting.agent.behaviour voting/agen/behaviour 3 voting.ontology voting/ontology 4 voting.ontology.concept voting/ontology/concept 5 voting.ontology.action voting/ontology/action 6 voting.ontology.predicate voting/ontology/predicate 7 voting.gui voting/gui 8 voting.util voting/util

Gambar

Tabel IV-2 Kelas-Kelas Paket Behaviour
Tabel IV-3 Kelas-Kelas Paket Ontology
Gambar IV-3 Antarmuka Pengelolaan Kandidat
Tabel IV-4 Implementasi Kelas
+2

Referensi

Dokumen terkait

The ability of BUDGET computer model is to predict the dynamics of groundwater in plant root zone, as well as to calculate the crop water require- ment and determine the interval

Metode eksperimen dalam penelitian ini, bertujuan untuk memperoleh data yang diperlukan dengan melihat hasil atau akibat dari suatu perlakuan (treatment) dalam penerapan

Kesadaran akan hal inilah mengapa perusahaan maju lebih konsen kepada perkembangan perusahaan bisnis perusahaan dari segala hal, termasuk penerapan

Aktivitas fagositosis yang dinilai dari persentase makrofag yang memfagositosis latex, menunjukkan bahwa persentase fagositosis kelompok perlakuan yang diberi ekstrak

6) Wisata politik, wisata jenis ini mekiputi perjalanan yang dilakukan untuk mengunjungi kegitan politik seperti misalnya ulang tahun perayaan 17 Agustus di Jakarta,

Target dari pengabdian ini adalah meningkatkan kualifikasi para kader dalam menjaga kesehatan masyarakat dengan adanya pelatihan dan dalam memanajemen suatu kegiatan agar

Jared berpikir mata Hogsqueal melembut ketika melihat si kucing kecil, Jared berpikir mata Hogsqueal melembut ketika melihat si kucing kecil, tapi itu mungkin karena lapar. tapi

Citra Raya Boulevard Blok V.00/08 Sek.. Lengkong