Showing posts with label intelligent agent. Show all posts
Showing posts with label intelligent agent. Show all posts

Thursday, October 27, 2011

Ant Agent pada Netlogo

Masih ingat, contoh aplikasi Ant Lines yang ane paparkan dipostingan terdahulu?? Klo lupa, lihat dulu deh di sini http://ar-wdh.blogspot.com/2011/10/intelligent-agent-sebuah-teori.html. Yuk, kita coba membuatnya..

Pertama..
Fokuskan pada pembuatan GUI di tabulasi Interface (untuk mempermudah bayangan anda, bisa anda lihat gambar di atas ato dipostingan terdahulu.
Langkah 1, kita buat slider untuk mengatur jumlah semut (Slider yang pertama). Caranya, klik tombol button -> pilih slider -> tempatkan (dengan cara klik) dilayar putih sebelah kiri.
Ya, seharusnya muncul wizard untuk konfigurasi Slider. Global variable ini untuk memberi nama slider. Karena tujuan kita ingin membuat slider untuk mengatur jumlah semut, kita isi saja dengan NumberOfAnt.

Minimum, untuk menandakan value (jumlah semut) minimal, ane isikan saja 1. Increment juga biarkan saja terisi 1. Maximum, mempunyai fungsi yang berkebalikan dengan Minimum, ane isikan saja 100.

Value, artinya nilai default yang akan diset. Ane isikan nilai value : 50.

Langkah 2, kita buat tombol setup. Langkah membuat tombol setup, sama seperti membuat slider.
Tombol setup disini nantinya akan digabungkan dengan coding (akan dijelaskan dibagian procedures nanti). Tombol ini saya buat sebagai perintah untuk inisiasi dan menyiapkan lokasi sarang juga makanan. Apa saja yang harus dipersiapkan ?
  • Pertama, kita atur agar button ini dapat dikendalikan oleh external agent/observer.
  • Kedua, pada isian commands, kita isi setup. Maksudnya tombol ini nantinya dikaitkan dengan procedures setup.
  • Berikutnya kita isi Display name : "Setup". Display name berfungsi untuk memberi nama button.
  • Klik OK untuk mengakhiri.

Langkah 3, buat tombol go. Pada tombol go,kita persiapkan seperti berikut :
  • Pertama, kita atur agar button ini dapat dikendalikan oleh external agent/observer. 
  • Kedua, check list forever diberi tanda centang. Mengapa? Karena saat button go dipencet. Button ini nantinya akan menjalankan procedur terkait secara loop hingga selesai, karenanya check list forever harus diberi tanda centang. Jika tidak berarti tidak ada proses loop saat button ini dieksekusi.
  • Berikutkan, command diisi go.
  • Display name juga diisi go.
  • Klik OK untuk mengakhiri
Langkah 4, buat slider leader-wiggle-angle.
Slider ini dibuat untuk mengatur besaran sudut head wiggle (goyangan kepala) pada setiap langkah si semut pemimpin. Jadi jika besaran sudutnya dibuat 0 derajat, maka si semut akan berjalan lurus menuju makanan. Sudut terbesar adalah 90 derajat. Dari cerita ini, bisa kan mengatur isiannya? Gak bisa? Oke deh saya beri gambarnya.

Langkah 5, membuat slider delay.
Seperti namanya, slider ini bertujuan untuk mengatur jeda antar semut. Kita atur jeda minimum adalah 0 detik dan maksimum jeda adalah 60 detik. Bisa kan membuat konfigurasi slider ini ya..

Langkah 6, membuat monitor ants-released.
Ini fungsinya untuk monitor berapa jumlah semut yang telah meninggalkan sarangnya. Cara membuatnya :
  • Klik pada button -> pilih monitor -> klik pada area putih yang kosong
  • Pada kotak isian reporter, kita isi : count turtles with [xcor > nest-x]. Maksudnya menghitung jumlah turtles (ingat kan arti dari istilah turtles?) dimana koordinat x-nya lebih besar daripada koordinat x nest (sarang)
  • Display name, diisi ant-released, kemudian klik OK.

Kedua..
Kita fokuskan perhatian kita ke tabulasi procedures. Bagian ini penting, karena disinilah kita coding bagaimana si agent tersebut bekerja.

breed [ leaders leader ]
breed [ followers follower ]

globals [
nest-x nest-y ;; location of center of nest
food-x food-y ;; location of center of food
leader-heading ;; heading of the leader ant
]

to setup ;; set up nest and food locations
ca
set-default-shape turtles "bug"
set nest-x 10 + min-pxcor
set nest-y 0
set food-x max-pxcor - 10
set food-y 0
;; draw the nest in brown by stamping a circular
;; brown turtle
ask patch nest-x nest-y [
sprout 1 [
set color brown
set shape "circle"
set size 10
stamp
die
]
]
;; draw the nest in orange by stamping a circular
;; orange turtle
ask patch food-x food-y [
sprout 1 [
set color orange
set shape "circle"
set size 10
stamp
die
]
]
create-leaders 1
[ set color red ;; leader ant is red
set size 2
wiggle 50 ] ;; ...and starts out with a random heading
create-followers (num-ants - 1)
[ set size 2
set color yellow ] ;; middle ants are yellow
ask turtles
[ setxy nest-x nest-y ;; start the ants out at the nest
set heading 90 ]
ask turtle (num-ants - 1)
[ set color blue ;; last ant is blue
set pen-size 2
pd ] ;; ...and leaves a trail
ask leaders
[ set pen-size 2
pd ] ;; the leader also leaves a trail
set leader-heading [heading] of one-of leaders
end

to go
if all? turtles [xcor >= food-x]
[ stop ]
ask leaders ;; the leader ant wiggles and moves
[ wiggle leader-wiggle-angle
correct-path
if (xcor > (food-x - 5 )) ;; leader heads straight for food, if it is close
[ facexy food-x food-y ]
if xcor < food-x ;; do nothing if you're at or past the food [ fd 0.5 ] ] ask followers [ face turtle (who - 1) ;; follower ants follow the ant ahead of them if time-to-start? and (xcor < food-x) ;; followers wait a bit before leaving nest [ fd 0.5 ] ] set leader-heading [heading] of one-of leaders tick end ;; turtle procedure; wiggle a random amount, averaging zero turn to wiggle [angle] rt random-float angle lt random-float angle end ;; turtle procedure to correct-path ifelse heading > 180
[ rt 180 ]
[ if patch-at 0 -5 = nobody
[ rt 100 ]
if patch-at 0 5 = nobody
[ lt 100 ] ]
end

;; turtle reporter; if true, then the ant is authorized to move out of the nest
to-report time-to-start?
report ([xcor] of (turtle (who - 1))) > (nest-x + start-delay + random start-delay )
end


; Copyright 1997 Uri Wilensky. All rights reserved.
; The full copyright notice is in the Information tab.


Baris potongan perintah (procedures) diawali kalimat to diakhiri end
to correct-path
ifelse heading > 180
[ rt 180 ]
[ if patch-at 0 -5 = nobody
[ rt 100 ]
if patch-at 0 5 = nobody
[ lt 100 ] ]
end


Referensi..
Wilensky, U. (1997). NetLogo Ant Lines model.

Wednesday, October 26, 2011

Jade and HelloWorldAgent

Oke, beberapa waktu yang lalu kita udah sukses menjalan JADE Remote Agent Management GUI melalui Netbeans, sekarang kita coba perdalam JADE dan nanti diakhir kita coba coding membuat agent yang memiliki fitur sederhana. Menampilkan Hello World!!

Yuk, kita dalami dulu sedikit istilah-istilah yang ada pada JADE..
Prinsip Kerja JADE
JADE sebagai middleware yang memberikan fasilitas untuk pengembangan sistem berbasiskan agent menyediakan :
  • Runtime environment yang menjadi tempat di mana agent dapat berjalan dan harus aktif pada host dimana agent akan bekerja.
  • Pustaka berupa kelas-kelas yang dapat/harus digunakan untuk mengembangkan agent.
  • Sekumpulan graphic tool yang digunakan untuk melakukan administrasi dan monitoring terhadap aktivitas agent yang sedang berjalan pada runtime environment.
Runtime environment dalam JADE dikenal dengan istilah container. Satu host dapat menjalankan lebih dari satu container dan setiap container bisa menangani beberapa agent. Sekumpulan container yang aktif disebut sebagai platform. Sebuah platform dapat memiliki container yang berasal dari host yang berbeda-beda. Satu platform harus memiliki satu container yang memiliki atribut sebagai main container yang aktif. Semua container yang aktif dan ingin bergabung dalam sebuah platform harus bergabung dengan mendaftarkan diri pada main container dan tidak boleh beratribut sebagai main container atau disebut juga normal container.

Selain menerima pendaftaran dari normal container sebuah main container selalu memiliki dua buah agent yang aktif secara otomatis ketika main container dijalankan. Kedua agent itu adalah:
  • AMS (Agent Management Sistem) yang menyediakan naming service yang memastikan setiap agent dalam platform memiliki identitas yang unik. Selain itu AMS dapat merepresentasikan otoritas dalam platform di mana melalui AMS kita dapat menjalankan atau menghentikan agent dalam container yang terdaftar.
  • DF (Directory Facilitator) adalah agent yang berfungsi sebagai “yellow pages” bagi platform. Melalui DF sebuah agent dapat mencari agent yang aktif dan layanan yang diberikan agent tersebut.
Container udah paham.. Platform udah paham.. Main container juga udah.. Normal container udah.. AMS dan DF juga udah.. Oke, sekarang lanjut ke coding agent dan hello worldnya..

Pertama..
Kita buat project baru saja deh, biar ingat bagaimana setingan dan konfigurasi menjalankan JADE di Netbeans. Beri nama, misalkan AgentHelloWorld.

Kedua..
Inputkan library jade ke project AgentHelloWorld, dilanjutkan dengan konfigurasi run secara customize. Lupa? Lihat lagi di postingan ane sebelumnya http://ar-wdh.blogspot.com/2011/10/jade-and-intelligent-agent.html he..he..

Ketiga..
Inputkan code berikut :
package agenthelloworld;
import jade.core.Agent;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import java.util.Iterator;

public class Main extends Agent {

public void setup() {
System.out.println("hello...I am agent; " + getLocalName());
System.out.println("my local name is " + getAID().getLocalName());
System.out.println("my GUID is " + getAID().getName());
System.out.println("my address are ");
Iterator it = getAID().getAllAddresses();
while (it.hasNext()) {
System.out.println(" - " + it.next());
}
System.out.println("my argument are :");
Object[] args = getArguments();
if (args != null) {
for (int i = 0; i < args.length; i++) { System.out.println("- " + args[i]); } } } }


Jade, Netbeans and Intelligent Agent

JADE atau Java Agent DEvelopment Framework adalah sebuah framework yang memfasilitasi pengembangan aplikasi berbasis agent yang diimplementasikan dalam bahasa Java. Salah satu tujuan dari pengembangan Jade adalah menyederhanakan pengimplementasian Multi Agents System yang sesuai dengan spesifikasi FIPA. (Foundation for Intelligent, Physical Agent; http://fipa.org). Jade juga menyediakan seperangkat tools berbasis grafik untuk debugging sistem yang akan dikembangkan. Website Jade adalah http://jade.tilab.com. Jade dikembangkan pada tahun 1998 oleh Research & Development Departement of Telecom Italia, namun sejak tahun 2003, Jade menjadi software Open Source di bawah lisensi LGPL dengan hak cipta tetap dipegang oleh Telecom Italia.

Versi terbaru Jade adalah versi 4.1 yang dirilis pada tanggal 13 Juli 2011, dan karena Jade diimplementasikan dalam bahasa Java maka Jade membutuhkan persyaratan sistem minimal, yaitu Java (JDK) versi 1.4 atau yang lebih baru.

Oke, sebelum kita berbicara banyak bagaimana JADE bisa membuat agent, bahkan multi agents, kita share dulu bagaimana JADE kita manipulasi dan kita jalankan melalui Netbeans. Kenapa Netbeans? Ya karena JADE merupakan framework berbasis java, maka Netbeans adalah salah satu tools yang bisa kita gunakan untuk ngutak-ngatik dan ngoding JADE.

Yang pertama harus dilakukan setelah mendownload JADE adalah mengekstrak dan menempatkannya di direktori pilihan anda. Misalkan ditaruh di D:\JADE. Oke, jika sudah kita coba running test apakah JADE yang kita download bisa dijalankan melalui Netbeans atau tidak. Dan sekali lagi sebelum kita melanjutkan, mohon dipastikan bahwa anda telah menginstal java minimal JDK versi 1.4.

Wednesday, October 19, 2011

Netlogo, salah satu tools intelligent agent

Masih ingat apa itu intelligent agent? Hehe.. Gak ada kaitannya sama agen-agen rahasia yang suka bawa pistol Glock dibalik jasnya ya. Klo lupa baca dulu deh : http://ar-wdh.blogspot.com/2011/10/intelligent-agent-sebuah-teori.html

Netlogo  dibuat  oleh  Uri  Wilensky  pada  tahun 1999 dan sejak saat itu terus dikembangkan di-Center for Connected Learning and Computer-Based Modeling. Netlogo adalah tools untuk pemodelan yang dapat diprogram untuk mensimulasikan fenomena social dan natural. Netlogo dapat digunakan untuk memodelkan sistem yang komplek. User (atau istilah di netlogonya adalah Observer) dapat memberikan instruksi kepada ratusan atau ribuan agent untuk beroperasi secara independen. Ini memberikan kemungkinan untuk mengeksplorasi pola hubungan perilaku level mikro dan makro dari agent yang muncul dari interaksi banyak agent. Aplikasi terbaru (Version 4.1.3 yang dirilis pada April 2011) dan panduan user manual Netlogo dapat didownload di homepage Netlogo dengan alamat : http://ccl.northwestern.edu/netlogo/index.shtml

Oke, sebelum menuju tulisan bagaimana memanfaatkan Netlogo untuk membuat agent, kita pahami dulu istilah / terminologi di Netlogo.
  1. World
    Istilah worlf pada netlogo untuk menjelaskan environment tempat agent berjalan atau berinteraksi, istilah environment sering digunakan bergantian dengan istilah world.world biasanya terdiri dari sekumpulan patches dan memiliki titik koordinat pada setiap patches yang membentuknya.
  2. Agent
    Agent  adalah suatu objek yang dapat melakukan sesuatu di dalam environment,setiap agent  bersifat autonomous dan dapat berjalan secara simultan. Ada  4 tipe agent pada netlogo antara lain  turtles,patches,link dan observer.
  3. Turtles
    Adalah agent yang bergerak di environment .Dengan kata lainistilah agent yang bergerak atau berada diatas patches adalah turtles.turtles tidak memiliki titik koordinat.
  4. Patches
    Patches adalah agent yang tidak dapat bergerak dan memiliki titik koordinat (x,y) pada environment.kumpulan patches membentuk environment.patches juga memiliki kemampuan untuk membentuk turtles
  5. Link
    Kita dapat menghubungkan dua turtles didalam environment ,kemanapun  turtles tersebut bergerak didalam environment mereka tetap terhubung sebagai satu link yang sama.
  6. Observer
    Observer bisa dikatakan external agent yang dapat memanipulasi semua agent yang ada pada environment,observer memiliki  perintah yang berlainan untuk memanipulasi agent yang ada.Observer tidak dapat dilihat secara visual pada environment.Ciri khas untuk mengetahui suatu prosedur didalam program dibuat dari sudut pandang observer adalah adanya perintah ASK pada awal suatu perintah.
  7. Breed
    Turtles dapat diturunkan menjadi "turtles dengan karakteristik tertentu" misalnya sekumpulan agent berwarna merah,agent dengan warna putih dan lain sebagainya.Konsep breed merupakan konsep yang penting jika ingin membuat multi agent dengan karakteristik dan tugas yang berbeda-beda.perintah ini biasanya dideklarasikan pada bagian atas program
Satu lagi yang penting di Netlogo, istilah saat kita membuat objek :
Ya, objek-objek pada Netlogo bisa berupa tombol (button), slider, switch, chooser, dll. Apa fungsinya? Ah untuk sementara fungsinya seperti yang ada dalam imajinasi anda. Button atau tombol berfungsi untuk menjalan suatu aksi tertentu.. Yah, seperti itulah.. Untuk lebih lengkapnya, tunggu seri berikutnya.. :)


Wednesday, October 5, 2011

Intelligent Agent (Sebuah teori Kecerdasan Buatan dalam Software Engineering)


Ternyata apa yang selama ini dijalani bukan hanya menjadikan seperti katak dibawah tempurung, tapi seperti katak dibawah tempurung dibawah helm. Dunia diluar sana jauh lebih berwarna ternyata. Hehe..

Dikira intelligent agents adalah sebuah teori baru dalam software engineering, tapi ternyata diluar sana sudah sedemikian pesat. Okelah, gak apa2. Kita shared saja apa sudah diketahui. Silahkan..

Definisi
Guralnik (1983) menjabarkan definisi agen yang diperolehnya dari kamus Webster’s New World Dictionary, sebagai :
A person or thing that acts or is capable of acting or is empowered to act, for another

Dari kalimat tersebut Wahono (2001) menjabarkan dua poin penting pengertian agen :

  • Agen mempunyai kemampuan untuk melakukan suatu tugas/pekerjaan
  • Agen melakukan tugas/pekerjaan tersebut dalam kapasitas untuk sesuatu atau untuk orang lain.

Kemudian Caglayan et al., (1997), mendefinisikan software agent sebagai : Suatu software komputer yang memungkinkan user mendelegasikan tugas/pekerjaan kepadanya dan software komputer tersebut mampu bekerja secara mandiri (autonomously).
Pada prakteknya dalam suatu sistem dimungkinkan terdapat lebih dari satu agent yang saling bekerja sama. Sistem agent dengan lebih dari satu agent disebut multi agent system (MAS). Multi agent System adalah suatu paradigma pengembangan sistem dimana dalam suatu komunitas sistem terdapat beberapa agent, yang saling berinteraksi, bernegosiasi dan berkoordinasi satu sama lain dalam menjalankan pekerjaan (Romi, 2001)

Karakteristik Agent
Wahono (2001) merangkum karakteristik yang dimiliki software-software agent saat ini :
  1. Autonomy
    Agent harus dapat melakukan tugas secara mandiri tanpa dikontrol secara langsung oleh user, agent lain ataupun oleh lingkungan (environment). Woolridge et al., (1995) menyatakan agent harus dapat mengontrol aksi yang mereka perbuat. Dan kemampuan ini berbanding lurus dengan intelligence dari agent.
  2. Intelligence, Reasoning dan Learning
    Karakteristik ini merupakan karakteristik dasar untuk bisa disebut agent. Pada konsep intelligence, ada tiga komponen yang harus dimiliki : internal knowledge base, kemampuan reasoning berdasar pada knowledge base yang dimiliki dan kemampuan learning untuk beradaptasi terhadap lingkungan.
  3. Reactivity
    Karakteristik  agent  yang lain adalah kemampuan untuk bisa cepat beradaptasi dengan adanya perubahan informasi yang ada didalam suatu lingkungan (environment). Lingkungan itu bisa mencakup:  agent lain, user, adanya informasi dari luar, dsb  (Brenner et. al., 1998)
  4. Proactivity dan Goal-Oriented
    Proactivity boleh dikata adalah kelanjutan dari sifat  reactivity.  Agent tidak hanya dituntut bisa beradaptasi terhadap perubahan lingkungan, tetapi juga harus mengambil inisiatif langkah penyelesaian apa yang harus diambil  (Brenner et. al., 1998). Untuk itu  agent  harus didesain memiliki tujuan  (goal) yang jelas, dan selalu berorientasi kepada tujuan yang diembannya (goal-oriented).
  5. Communication and Coordination Capability
    Agent harus memiliki kemampuan berkomunikasi dengan user dan juga  agent  lain. Misalkan masalah komunikasi dengan user (termasuk user interface dan perangkatnya), kemudian masalah koordinasi, dan kolaborasi dengan agent lain menjadi isu penting dalam pengembangan Multi Agent System (MAS). Untuk dapat berkoordinasi dengan agent lain dalam menjalankan tugas, diperlukan bahasa standard untuk berkomunikasi. Salah satu contoh bahasa dan protokol komunikasi antar agent adalah Knowledge Query and Manipulation Language (KQML) dan Knowledge Interchange Format (KIF).

Ada satu contoh aplikasi sederhana yang cukup menarik. Namanya Ant Lines. 
Screen shootnya seperti berikut :

Contoh program ini memodelkan perilaku semut ketika mengikuti pemimpinnya menuju sumber makan. Si pemimpin bergerak menuju makanan secara acak, kemudian dengan jeda kecil, semut kedua mengikuti dengan jalur langsung menuji sipemimpin berada. Setiap semut berikutnya mengikuti semut didepannya dengan cara yang sama.
Meskipun si semut pemimpin mungkin mengambil jalur yang sangat memutar untuk menuju sumber makanan, secara mengejutkan jejak semut mengadopsi bentuk yang halus. Meskipun belum jelas apakah model ini adalah model biologis akurat dari perilaku semut, ini adalah eksplorasi matematika dari perilaku yang muncul dari serangkaian agen yang saling mengikuti secara serial.