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.

Monday, October 24, 2011

What is RAID? How RAID works?

RAID (Redundant Array of Independent Disks) adalah suatu cara untuk meningkatkan unjuk kerja dan reliabilitas media penyimpanan eksternal dengan memanfaatkan redundancy. Hal tersebut dilakukan dengan jalan menggabungkan beberapa disk menjadi sebuah logical disk dan mendistribusikan data ke setiap disk di dalamnya. Lho bukankah sekarang harddisk kapasitasnya sudah sangat besar dan mencukupi??

Ceritanya, teknologi ini lahir tahun 1990an. Ketika itu komputer-komputer server mengalami lonjakan data yang harus disimpan. Sementara itu jika harus meningkatkan kapasitas penyimpanan masih membutuhkan biaya yang sangat besar. Nah, RAID hadir dan menjadi solusi murah tanpa mengorbankan performansi komputer tersebut. Jika jaman dahulu RAID banyak digunakan untuk enterprise and server markets namun pada tahun 2000 awal sudah banyak dimanfaatkan oleh kalangan end-user.

Tiga alasan utama menggunakan teknologi RAID :
  1. Redundancy
    Redundancy merupakan faktor penting pada pengembangan RAID di server. Mengapa? Karena redundancy digunakan untuk menyimpan informasi paritas untuk menjaga agar data dapat di-recover jika terjadi kegagalan disk. Jika salah satu disk mengalami kegagalan, maka dapat ditukar dengan disk rendundant-nya tanpa harus mematikan sistem (hot-swappable). Metode redundancy tergantung pada versi RAID yang digunakan.
  2. Peningkatan performansi komputer
  3. Murah
    Bisa anda bandingkan, membeli harddisk baru yang lebih besar kapasitasnya cost yang diperlukan lebih besar daripada membeli 2 atau (mungkin) 3 harddisk baru (apalagi second) yang kapasitasnya sama.
Ada tujuh metode RAID, RAID 0 - RAID 6. Akan tetapi hanya tiga model sistem RAID yang biasa digunakan pada desktop komputer adalah : RAID 0, RAID 1 dan RAID 5. Dalam RAID, data didistribusikan menggunakan skema yang disebut striping. Dengan metode striping ini data tampak seolah-olah disimpan pada sebuah logical disk. Logical disk tersebut dibagi-bagi menjadi yang disebut sebagai strips yang bisa jadi berupa blok atau sektor yang ada secara fisik. Strips dipetakan secara round-robin pada disk-disk fisik dalam array RAID secara berurutan. Dengan memanfaatkan metode striping ini, maka data pada RAID dapat diakses secara paralel.
  • RAID 0
    RAID 0 sebenarnya tidak sepenuhnya mengimplementasikan karakteristik RAID, karena RAID 0 tidak memanfaatkan redundancy. RAID 0 menggunakan block-level striping tanpa pemanfaatan paritas ataupun mirroring. Dengan kata lain, RAID 0 dapat meningkatkan unjuk kerja namun tidak
    menyediakan fault tolerance, sehingga apabila salah satu drive mengalami kegagalan, seluruh data bisa rusak.

    Mengapa striping bisa meningkatkan performance? Karena, strips menulis ke dalam dua drive dengan jumlah data yang lebih banyak dua kali lipat dibandingkan dengan menulis jumlah data yang sama ke dalam single drive. Di bawah ini, adalah contoh bagaimana data ditulis dengan RAID 0. Setiap baris pada tabel menunjukkan physical block pada drive dan setiap kolom adalah identitas drive. Angka pada tabel menunjukkan blok data. Jika terdapat angka ganda (duplicate number), itu berarti menunjukkan duplikat blok data.
    Semua blok (6 block data) dibutuhkan untuk file, tapi hanya tiga yang dapat diakses, karena setiap drive bekerja secara paralel, dan hanya dapat membaca 3 physical blocks.
  • RAID 1
    RAID 1 adalah contoh RAID yang sebenarnya. RAID 1 memberikan contoh sederhana redundancy data melalui proses yang disebut mirroring. RAID 1 membutuhkan dua drive yang kapasitasnya sama. Satu drive sebagai drive aktif dan drive kedua berfungsi sebagai mirror. Ketika data ditulis ke drive aktif, data yang sama dikopikan ke drive mirror. Di bawah ini adalah contoh bagaimana data ditulis dengan implementasi RAID 1.
    Duplikat number menunjukkan duplikasi blok data. Dari gambar terlihat full level redundancy data pada sistem. Jika satu drive gagal, drive yang lain masih memiliki semua data yang terdapat pada sistem. Keuntungannya : RAID 1 sukses menduplikasi data dengan teknik mirror. Kelemahannya : RAID 1 tidak efektif dalam memperbesar kapasitas.
  • RAID 5
    RAID 5 merupakan the most powerful form of RAID in a desktop computer system. Biasanya, RAID 5 membutuhkan kartu hardware controller untuk me-manage array. Tapi pada beberapa OS dapat mengontrolnya menggunakan software. RAID 5 membutuhkan minimal 3 drive yang identik untuk mendapatkan best performance. RAID 5 menggunakan stripping dengan parity untuk menjaga redundancy data.

    Parity pada dasarnya adalah bentuk matematika biner yang membandingkan dua blok data. Jika jumlah dua blok data adalah genap, maka parity bit juga genap. Sebaliknya jika jumlah dua blok adalah ganjil maka bit parity juga ganjil. Jadi 0+0 dan 1+1 keduanya sama dengan 0, sedangkan 0+1 atau 1+0 sama dengan 1. Karenanya jika terjadi kegagalan pada satu drive dalam array, parity bit akan melakukan rekonstruksi data ketika drive diganti.

    Berdasarkan bentuk RAID 5 yang digambarkan pada tabel di atas, setiap angka pada cell menandakan blok data. "P" adalah parity bit untuk dua blok data.
    Kapasitas array drive mengikuti rumus berikut :
    (n-1)z = Array Capacity
    dimana n : jumlah drive sedangkan z : kapasitas harddisk.
    Misal, terdapat 3 harddisk 500 GB, maka total kapasitas array adalah :
    (3-1) x 500 GB or 1000 GB
    RAID 5 juga memiliki fungsi hot swap. Fungsi ini menjadi fitur berharga untuk sistem yang memerlukan operasi 24x7.

    Keuntungannya : Meningkatkan performa array penyimpan, Full data redundancy, Kemampuan untuk menjalankan 24x7 dengan hot swap Kelemahannya : mahal, tingkat performa menurun selama proses rebuilding
Kesimpulan :
Secara keseluruhan RAID memberikan beberapa keuntungan (tergantung dari versi RAID yang diimplementasikan). End user level akan lebih senang menggunakan RAID 0 untuk menaikkan performa tanpa mengurangi kapasitas ruang penyimpanan. Hal ini karena redundancy bukan masalah utama bagi kebanyakan user.

Sedangkan biaya untuk mengimplementasikan RAID 0+1 atau RAID 5 masih terlalu mahal dan hanya akan ditemukan pada high-end workstation atau pada level server.

Kesimpulan pada tabel :

Sumber :
  • http://compreviews.about.com/od/storage/l/aaRAIDPage1.htm
  • Stallings,W. Computer Organization and Architecture: Designing for Performance. Prentice Hall. 2010.

    arsitektur vs organisasi (komputer)

    Salah satu mata kuliah wajib bagi mahasiswa teknologi informasi adalah Arsitektur dan Organisasi Komputer, atau beberapa kampus sering menyingkatnya menjadi Arsikom. Ada kitab suci yang menjadi bahan bacaan wajib pada mata kuliah ini, yaitu bukunya William Stallings dan Andrew S. Tanenbaum. Bukunya Stalling berjudul "Computer Organization and Architecture Designing for Performance" saat ini edisi terakhirnya adalah edisi 8th, sedangkan bukunya Tanenbaum adalah "Structured Computer Organization" yang saat ini edisi terakhirnya adalah edisi 5th.

    Lantas apa sih esensi dari arsitektur komputer, dan apa pula maksudnya organisasi komputer? Apa perbedaan keduanya? Mengapa kita harus mempelajari arsitektur dan organisasi komputer? Yuk kita lanjutkan.

    Pada ruang lingkup ilmu komputer dan juga teknik komputer, arsitektur komputer adalah bagaimana seorang programmer melihat atribut-atribut hardware komputer dalam merancang logika program yang dibuatnya. Sebagai contoh, misalkan si programmer ketika akan coding, dia perlu mengetahui apakah pada komputer yang sedangkan digunakannya memiliki instruksi perkalian atau tidak? Bagaimana pengalamatan data di memori? Bagaimana data direpresentasikan? Bagaimana bilangan direpresentasikan? Pertanyaan-pertanyaan ini merupakan pertanyaan domain arsitektur komputer. Jika dipersempit, maka fokus dari pembelajaran di bidang arsitektur komputer adalah "bagaimana software bekerja pada hardware".

    Sedangkan organisasi komputer berbicara bagaimana mengimplementasikan arsitektur tersebut. Bagaimana unit-unit komputer berjalan dan bagaimana interkoneksinya sehingga komputer dapat berfungsi sesuai strukturnya.

    Mengapa kita harus mempelajari arsitektur dan organisasi komputer? Ini jawaban yang ane ringkas dari bukunya mbah Stallings :
    1. Students need to understand computer architecture in order to structure a program so that it runs more efficiently on a real machine. In selecting a system to use, they should be able to understand the tradeoff among various components, such as CPU clock speed vs. memory size
    2. Architecture extends upward into computer software because a processor’s architecture must cooperate with the operating system and system software. It is difficult to design an operating system well without knowledge of the underlying architecture
    3. Concepts used in computer architecture find application in other courses. In particular, the way in which the computer provides architectural support for programming languages and operating system facilities reinforces concepts from those areas
    Contoh yang banyak mengutak-utik arsitektur dan organisasi komputer, misalkan : Microsoft dan Apple. Kedua perusahaan tersebut, terutama Apple berusaha membuat terobosan inovatif di dunia komputer. Tablet PC dan smartphone adalah salah satu contohnya. Pada kedua teknologi baru tersebut, diterapkan arsitektur dan organisasi komputer yang berbeda basis dengan PC.

    Semua komputer dapat dipandang sebagai sebuah struktur sistem besar yang terdiri dari banyak komponen dan kompleks. Setiap komponen memiliki struktur dan fungsi sendiri. Akan tetapi setiap komponen ini saling terkait dan saling terhubung untuk sebuah tujuan kolektif yaitu unjuk performansi komputasi. Itulah arsitektur dan organisasi komputer.

    Friday, October 21, 2011

    Ini dia mobil chevrolet bumblebee transformer..

    Si Bumblebee naik daun lagi di Indonesia. Setelah dipromosikan di film Transformer, akhir-akhir ini dipromosikan juga ama infotainment gara-gara artis Raffi Ahmad memboyong ke garasi rumahnya yang katanya ditebus ama duit Rp. 2.000.000.000,-

    Dari sisi tampilan body sih, dia mirip ama Dodge Challenger SR yang jadi idola dari kecil. Tapi memang sama-sama macho dan bikin PD yang nyupirinya.. Jadi ingat ungkapan orang tua yang sering diucapkan seorang teman : "Behind Every Great Man There's a Great Engine". hehe..

    Mobil yang dijual di kaskus (http://www.kaskus.us/showthread.php?t=4034420) seharga kurang dari 1 M ini punya kapasitas mesin 6200 cc. Bah, kebayang gak tuh selang bbm kayak apa?
    Dari hasil searching di Internet, ternyata di negara asalnya sana, mobil ini harganya "cuman" sekitar 320 juta aja. Gile, knp masuk Indonesia bisa jadi bejibun gitu nol-nya ya??

    Thursday, October 20, 2011

    Jangan asal ambil uang lintas ATM!!

    Hari ini ada kejadian yang menyebabkan harus kehilangan 25rb. Mengapa? Sepele penyebabnya. Ambil uang dari rekening BNI di mesin ATM BCA..
    Saat jari menekan tombol OK, sebenarnya ada perasaan gak enak yang muncul dan kepikiran terus.. Ternyata...

    Ya, itulah..
    Ada biaya tarik tunai sebesar 25rb :(( Menyesal? Yah, sudah terjadi. Mau diapain lagi.. Yang bisa dilakukan sekarang cuma share pengalaman biar gak ada yang mengalaminya lagi..

    Kecerobohan lain adalah tidak membiasakan diri membaca ketentuan-ketentuan akan sesuatu hal. Ya, di website BNI (http://www.bni.co.id/Fitur_atm/fitur_atm.htm) sebenar sudah dicantumkan bahwa penarikan tunai di jaringan cirrus dikenakan biaya Rp. 25.000. Yang bikin tambah gelo, disebrang ATM BCA tersebut ada ATM BRI yang termasuk jaringan ATM Bersama. Biaya tarik tunai disana hanya Rp. 3000 saja!! Arrrrggrh..

    Dilihat dari sisi biaya untuk pengambilan uang di mesin ATM Bank lain, masih lebih murah Mandiri. Dari websitenya (http://www.bankmandiri.co.id/article/faq-am.aspx), hehe, saya juga baru tahu klo Bank Mandiri tidak ada kerjasama dengan jaringan ATM BCA (Cirrus).
    • ATM Link : Penarikan Rp. 3.900,-, Inquiry Rp. 2.000,-
    • ATM Bersama : Penarikan Rp. 5.000,-, Inquiry Rp. 3.000,- dan Transfer 5.000,-
    • ATM Visa : Penarikan Rp. 15.000,-, Inquiry Rp. 3.000,-
    Ya, intinya dari kesialan ini adalah kurang membaca.. Coba aja klo mau meluangkan waktu untuk baca aturan dan ketentuannya...

    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.. :)


    Tuesday, October 18, 2011

    What is Flashdisk?

    Dua minggu terakhir ini cukup banyak pertanyaan-pertanyaan mendasar dari Dosen Arsikom. Dan mirisnya pertanyaan tersebut sebagian besar tidak dapat terjawab dengan baik dan tuntas. Contohnya seperti pertanyaan di atas tersebut.

    Ajaibnya, ternyata ketika search di mbah Google, ternyata istilah "flashdisk" terutama dengan penulisan disambung seperti itu tidak dikenali pada pencarian dari page-page luar negeri. Semua mengarah ke term Flash Drive, dengan penulisan dipisah. He.. he.. Baru tau ane..

    Flashdrive adalah perangkat penyimpan yang menggunakan flash memory. Ada dua tipe flash memory, yaitu : NAND Flash Memory dan NOR Flash Memory. Kedua tipe tersebut merujuk pada gerbang logika yang digunakan pada setiap sel memori. NAND Flash Memory digunakan pada perangkat yang sering menangani file dalam ukuran besar dan sering dipertukar-simpan dengan perangkat lain, seperti MP3 Player, kamera digital, USB Flash drive. Sedangkan NOR Flash Memory lebih cepat dibandingkan NAND Flash memory, namun lebih mahal. NOR Flash Memory lebih banyak digunakan pada CMOS.

    Flash memory bersifat non-volatile dan menggunakan memori bertipe electrically erased and programmable read only memory (EEPROM) dan terbuat dari solid state. Ini berarti bahwa tidak ada system mekanik di dalamnya, semuanya bekerja secara elektronik. Jika ditinjau dari fungsinya, flashdrive serupa dengan harddrive konvensional dan secara teknologi ditujukan untuk menggantikan harddrive.

    Komponen-komponen internal sebuah Flash Drive secara umum :
    1. Sambungan USB
    2. Perangkat pengontrol penyimpanan massal USB
    3. Titik percobaan
    4. Chip flash memory
    5. Oscilator crystal
    6. LED
    7. Write-protect switch
    8. Ruang kosong untuk chip memory kedua

    Pertanyaan berikutnya, jika kita mengenal teori jangan mendekatkan kaset/tape dan disket ke medan magnet karena bisa menyebabkan data yang dikandungnya hilang. Lantas, Are flash drives vulnerable to damage from magnet fields?

    Sejatinya pertanyaan ini pun kembali membuat otak cukup panas karena terus terang : ane gak tahu..... hu.. hu.. hu..
    Bahkan untuk mencari jawaban pertanyaan ini di google pun lebih sulit. Mengapa? Karena hasil search yang terkait tidak mencantumkan sumber ilmiah dalam postingan artikel yang menyinggung-nyinggung pokok bahasan flashdisk (eh flash drive) dengan magnetic field. 

    Hanya saja dari beberapa website yang ditemukan, misal : http://www.pcworld.com/article/116572/busting_the_biggest_pc_myths.html dan juga website tanya jawab lainnya, menjelaskan bahwa flash drive dibangun dari bahan bahan dasar solid state semiconductor dan tidak ada bahan yang mengandung magnet. Karenanya medan magnet secara umum tidak cukup kuat untuk mempengaruhi electron yang bekerja di dalamnya. 

    Pada halaman website lain, ada juga yang mengatakan “in theory a strong enough magnet could disturb the electrons in the flash drive and destroy the data, but a magnet powerful enough to do that would also be pulling the iron right out from your blood cells!
    Jadi berdasarkan fakta-fakta di atas, maka sedikit berani saya simpulkan bahwa flash drive yang terdiri dari solid state semiconductor tidak rentan rusak terhadap medan magnet. :)

    DDR-RAM? Cache pada DRAM?

    What is DDR-RAM? And how about the issue adding more cache on the DRAM memory?
    DDR-RAM (Double Data Rate - RAM) adalah salah satu jenis memori pada komputer. Istilah DDR ini sebenar mengacu pada kemampuan RAM DDR untuk menghasilkan bandwith yang hampir 2x lipat dibandingkan RAM SDR (Single Data Rate) pada frekuensi clock yang sama.

    Dibandingkan dengan SDR, interface DDR mengontrol lebih ketat clock signals. Caranya, interface menggunakan double pumping untuk mentransfer data baik pada saat sinyal naik dan juga saat sinyal turun. Dengan demikian DDR membutuhkan clock frequency yang lebih rendah untuk mentransfer data yang sama jika dibanding dengan SDR. Keuntungannya adalah mengurangi kebutuhan integritas sinyal yang menghubungkan memori dengan controller.

    Monday, October 17, 2011

    Mengapa RAM? Mengapa Random? SRAM? DRAM?

    Mengapa SRAM lebih cepat jika dibandingkan dengan DRAM?
    Menurut informasi sementara, hal ini dikarenakan adanya mekanisme refreshing pada DRAM. Pada saat refreshing dijalankan, memory tidak dapat dibaca.

    Mengapa disebut random akses?
    RAM disebut "random access" karena setiap lokasi penyimpanan di RAM dapat diakses secara langsung. Adalah IBM yang mempopulerkan istilah direct access storage atau memori (RAM). Ditinjau dari sudut pandang organisasi komputer, RAM dibuat dan dikontrol agar data dapat disimpan dan diakses/diambil secara langsung ke lokasi tertentu. http://whatis.techtarget.com/definition/0,,sid9_gci523855,00.html
    Sebenarnya istilah random akses tidak mutlak milik RAM saja, karena contoh penyimpanan yang lain (seperti hard disk dan CD-ROM) juga accessed directly (or "randomly") tetapi istilah random access tidak diterapkan pada bentuk penyimpanan ini.



    What RAM Looks Like

    In general, RAM is much like an arrangement of post-office boxes in which each box can hold a 0 or a 1. Each box has a unique address that can be found by counting across columns and then counting down by row. In RAM, this set of post-office boxes is known as an array and each box is a cell. To find the contents of a box (cell), the RAM controller sends the column/row address down a very thin electrical line etched into the chip. There is an address line for each row and each column in the set of boxes. If data is being read, the bits that are read flow back on a separate data line. In describing a RAM chip or module, a notation such as 256Kx16 means 256 thousand columns of cells standing 16 rows deep.

    In the most common form of RAM, dynamic RAM, each cell has a charge or lack of charge held in something similar to an electrical capacitor. A transistor acts as a gate in determining whether the value in the capacitor can be read or written. In static RAM, instead of a capacitor-held charge, the transistor itself is a positional flip/flop switch, with one position meaning 1 and the other position meaning 0.

    Externally, RAM is a chip that comes embedded in a personal computer motherboard with a variable amount of additional modules plugged into motherboard sockets. To add memory to your computer, you simply add more RAM modules in a prescribed configuration. These are single in-line memory modules (SIMMs) or dual in-line memory modules (DIMMs). Since DIMMs have a 64-bit pin connection, they can replace two 36-bit (32-bits plus 4 parity bits) SIMMs when synchronous DRAM is used. Laptop and notebook computers contain smaller 32-bit DIMMs known as small outline DIMMs (SO DIMMs).

    How Data Is Accessed

    When the processor or CPU gets the next instruction it is to perform, the instruction may contain the address of some memory or RAM location from which data is to be read (brought to the processor for further processing). This address is sent to the RAM controller. The RAM controller organizes the request and sends it down the appropriate address lines so that transistors along the lines open up the cells so that each capacitor value can be read. A capacitor with a charge over a certain voltage level represents the binary value of 1 and a capacitor with less than that charge represents a 0. For dynamic RAM, before a capacitor is read, it must be power-refreshed to ensure that the value read is valid. Depending on the type of RAM, the entire line of data may be read that the specific address happens to be located at or, in some RAM types, a unit of data called a page is read. The data that is read is transmitted along the data lines to the processor's nearby data buffer known as level-1 cache and another copy may be held in level-2 cache.

    For video RAM, the process is similar to DRAM except that, in some forms of video RAM, while data is being written to video RAM by the processor, data can simultaneously be read from RAM by the video controller (for example, for refreshing the display image).


    How Memory Access Works
    Information is stored by first separating the memory area into rows and columns. The capacity of the individual chips determines the number of rows and columns per module. When several arrays are combined, they create memory banks.

    The chips are actually accessed by means of control signals such as row address strobe (RAS), column address strobe (CAS), write enable (WE), chip select (CS) and several additional commands (DQ). You also need to know something about which row is active in the memory matrix at any given moment.

    In today's computers, a command rate is defined in BIOS - generally 1-2 cycles. This describes the amount of time it takes for the RAS to be executed after the memory chip has been selected.

    The memory controller selects the active row. But before the row will actually become active so that the columns can be accessed, the controller has to wait for 2-3 cycles - tRCD (RAS-to-CAS delay). Then it sends the actual read command, which is also followed by a delay - the CAS latency. For DDR RAM, CAS latency is 2, 2.5 or 3 cycles. Once this time has lapsed, the data will be sent to the DQ pins. After the data has been retrieved, the controller has to deactivate the row again, which is done within tRP (RAS precharge time).

    There is one more technical restriction - tRAS (active-to-precharge delay). This is the fewest number of cycles that a row has to be active before it can be deactivated again. 5-8 cycles are about average for tRAS.

    Memory timings are generally cited in order of importance:
    http://www.tomshardware.com/reviews/ups-downs,743-3.html


    How RAM Effectiveness is Measured

    The amount of time that RAM takes to write data or to read it once the request has been received from the processor is called the access time. Typical access times vary from 9 nanoseconds to 70 nanoseconds, depending on the kind of RAM. Although fewer nanoseconds is better, user-perceived performance is based on coordinating access times with the computer's clock cycles. Access time consists of latency and transfer time. Latency is the time to coordinate signal timing and refresh data after reading it.

    Buktikan bahwa tipe RAM pada laptop & PC berjenis DRAM (Dynamic RAM)

    Kalimat yang menjadi judul di atas meluncur dari dosen Arsitektur dan Organisasi Komputer ketika pembahasan mengenai memory. Terus terang susah-susah gampang menjawab pertanyaan tersebut, karena diawali dengan kata perintah "buktikan!!"..

    Sebenarnya, klo pengen menjawab sambil lalu, bisa saja kita jelaskan dari spesifikasi RAM yang banyak tertera di brosur pameran. Contoh :
    RAM : 1 GB DDR SDRAM

    Itu kan artinya RAM tersebut sebesar 1 GB bertipe DDR SDRAM atau (Double Data Rate - Synchronous Dynamic RAM). Tuh ada kata "Dynamic RAM"nya. Berarti DRAM kan?! :)

    Oke deh.. Untuk mencoba membuktikannya, kita awali dari pembahasan DRAM.
    DRAM (Dynamic Random Access Memory; Dynamic RAM) adalah jenis RAM yang paling banyak dipakai untuk komputer workstation dan PC (http://searchstorage.techtarget.com/definition/DRAM). DRAM menyimpan data pada sebuah kapasitor. Seperti kita ketahui. Kapasitor dapat bernilai 0 dan 1. Bernilai 0 jika kapasitor dalam keadaan discharged dan bernilai 1 jika dalam keadaan charged. Pada saat kapasitor bernilai 1 itulah kapasitor tersebut dapat menyimpan bit-bit data.

    Namun karena sifat kapasitor yang mudah kehilangan catu daya (efeknya adalah kehilangan kekuatan untuk menyimpan data) maka dibutuhkan suatu mekanisme refresh untuk me-charge kembali kapasitor agar kembali bernilai 1. Mekanisme refresh inilah yang membedakan DRAM dengan SRAM (Static RAM).

    Dahulu, DRAM dibuat dalam bentuk DRAM IC individual. Namun pada perkembangannya, DRAM dibuat dalam bentuk multichips plugin modul. Berikut adalah tipe-tipe modul standar DRAM :
    • Dual In-line Package (DIP) -- merupakan produk yang tersusun dari DRAM IC individu. Terdiri dari 16 pin. Digunakan oleh pre-FPRAM.
    • Single In-line Pin Package (SIPP)
    • Single In-line Memory Module (SIMM). SIMM 30 pin digunakan oleh FPRAM. SIMM 72 pin digunakan oleh EDO-RAM.
    • Dual In-line Memory Module (DIMM). DIMM 168-pin (SDRAM). DIMM 184-pin (DDR SDRAM). DIMM 240-pin (DDR2 SDRAM/DDR3 SDRAM)
    • Rambus In-line Memory Module (RIMM). RIMM 184-pin (RDRAM)
    • Small outline DIMM (SO-DIMM). 
      • SO-DIMM 144-pin (64-bit) used for PC100/PC133 SDRAM
      • SO-DIMM 200-pin (72-bit) used for DDR and DDR2
      • SO-DIMM 204-pin (64-bit) used for DDR3
    Dari penjelasan DRAM di atas, terlihat bahwa modul-modul DRAM digunakan untuk membangun RAM berjenis SIMM (untuk RAM bertipe Edo-RAM), DIMM (untuk RAM bertipe SDRAM hingga DDR) dan SO-DIMM (untuk RAM yang digunakan laptop/netbook). Nah..
    Berarti sekarang dapat disimpulkan bahwa RAM yang terdapat di laptop dan PC adalah RAM yang berjenis DRAM :)

    Saturday, October 15, 2011

    Test Power Supply Unit (PSU)

    Dapat info berharga dari blog lain (http://agussale.com/tes-kerusakan-power-supply-unit). Eman-eman klo cuman dibaca begitu saja. Bisa lupa. Karenanya tak coba menulis ulang dalam gaya bahasa sendiri.. Check it out..

    Jika suatu saat ketika tombol Power On dipencet namun ternyata PC kesayangan anda diam saja tanpa memberikan reaksi, bisa jadi salah satu penyebabnya adalah karena kerusakan PSU, tapi bisa juga bukan.. Bisa jadi prosesornya, bisa jadi motherboardnya.. Nah lo, terus yang mana yang rusak?



    Nah ada satu teknik sederhana untuk tes apakan PSU kita rusak atau masih berfungsi. Disebut sederhana, karena tidak perlu alat (misal : multitester) yang belum tentu kita memilikinya. Disebut sederhana, karena untuk melakukan tes ini hanya butuh kabel. Sembarang kabel kecil berukuran 10/15 cm saja.



    Oke kita mulai..
    Pertama, kita copot dulu kabel AC In dari stop kontak ke PSU. Kemudian copot juga kabel output PSU dari Mainboard.

    Berikutnya siapkan kabel kecil yang telah dikupas sedikit dikedua ujungnya. Ujung satu dari kabel kecil ini dicolokkan ke konektor yang berwarna hijau. Kenapa harus hijau? Karena kabel hijau itu berfungsi sebagai DC-ON.

    Sedangkan ujung dari kabel kecil lainnya dicolokkan ke konektor yang berwarna hitam (bebas, hitam yang mana saja). Kenapa harus hitam? Good Question, dlm ilmu elektronika, kabel hitam biasa difungsikan sebagai kabel ground. Lalu apa tidak boleh dicolokkan ke kabel lain?

    Wah, kritis nih.. :)
    Boleh, asalkan satu ujung kabel kecil di warna hijau, lainnya boleh dicolokkan ke konektor warna lain.. Sudah?



    Jika sudah, kemudian colokkan kabel AC In dari stop kontak ke PSU. Jika kipas PSU nyala berputar, berarti PSU kita masih OK. Jika tidak, coba periksa sekali lagi apa kabel kecil kita sudah nancap dengan baik ke konektor? Jika iya, berarti ya... sudah saatnya kita beli PSU baru.. :)

    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.