Wednesday, February 18, 2009

Mood Itu Tak Bersalah

gw ga mau belajar kalo mood gw bilang ngga.
salah ga?

menurut gw, ga salah. gw lagi ga mood belajar, kenapa musti belajar? kaya hari ini.. malay abis elajar..tapi mood itu bisa berubah dalam satu detik! amazing.. mendadak bisa langsung mau elajar..mendingan sekarang belajar aja..

btw, tau ga, daku melakukan sebuah penelitian terhadap diriku sendiri:
"kenapa hari ini terasa sangat melelahkan?", begitu kataku suatu malam. pertanyaan ini berulang terus selama beberapa hari.. akhirnya daku lakukan pengamatan. hasilnya, ternyata hal yang membuat saya selalu lelah itu adalah: "banyak omong!"

~bukannya nyuruh untuk diam, tapi kenyataannya ga ada yang bilang 'banyak bicara adalah emas'..

Tuesday, February 17, 2009

Algoritma-algoritma Robotika

sedikit pengetahuan tentang algoritma dalam robotika, selamat menikmati..

Algoritma Dead Reckoning:

Dead Reckoning adalah sebuah proses dalam memperkirakan posisi berdasarkan posisi sebelumnya yang telah diketahui kecepatan, waktu dan jarak yang telah diketahui. Dead Reckoning banyak digunakan oleh binatang sebagai suatu cara navigasi untuk mengetahui posisinya berdasarkan pergerakan yang telah mereka buat sejak lokasi terakhir yang diketahui mereka. Dengan Dead Reckoning, kita juga bisa memprediksi posisi kita berikutnya melalui perhitungan kecepatan dan jarak saat ini. Di dalam dunia networking, dead reckoning adalah sebuah metode yang digunakan untuk mengurangi lag yang disebabkan oleh network latency dan masalah bandwidth. Program melakukan hal ini dengan memprediksi state berikutnya dari sebuah entitas berdasarkan state saat ini.

Pseudocode:
ada dua jenis Dead Reckoning, zero-order convergence dan first-order convergence.

Zero-order convergence: (source: http://www.it.uu.se/edu)
For each shared object
{
PredictedPathVector = Last_KnownPos - Last_Last_KnownPos
DeltaTime = Last_KnownTime - Last_Last_KnownTime
DeltaVelocity = PredictedPathVector / DeltaTime
NewDeltaTime = CurrentTime - LastLastKnownTime
NewPos = LastKnownPos + NewDeltaTime * DeltaVelocity
}

first-order convergence: (source: http://www.it.uu.se/edu)
For each shared object{
PrevPredictedPathVector = Last_KnownPos[1]-
Last_KnownPos[2]
PrevDeltaTime = Last_KnownTime[1] - Last_KnownTime[2]
StartDeltaTime = Last_KnownTime[0] - Last_KnownTime[2]
PrevVelocity = PrevPredictedPathVector / PrevDeltaTime
StartPos = Last_KnownPos[2] + StartDeltaTime *
PrevVelocity
CurrentDeltaTime = Now - Last_KnownTime[0]
PredictedPathVector = Last_KnownPos[0] -
Last_KnownPos[1]
DeltaTime = Last_KnownTime[0] - Last_KnownTime[1]
EndPos = Last_KnownPos[0] + CurrentDeltaTime *
PredictedPathVector / DeltaTime
LinearConvergenceVector = EndPos - StartPos
Velocity = LinearConvergenceVector / DeltaTime
NewPos = StartPos + CurrentDeltaTime * Velocity
}

Follow Line
Algoritma ini digunakan oleh sebuah objek untuk tetap pada garis yang tercetak pada lantai. Biasa digunakan pada robot yang dilombakan pada berbagai kompetisi dimana sang robot harus berjalan mengikuti garis yang tercetak pada lantai sampai tujuan.


Follow Wall
Algoritma ini digunakan oleh sebuah objek untuk dapat mengikuti arah dimana tembok berada. algoritma ini banyak digunakan pada maze solving (keluar dari labirin). Kesesuaian arah disesuaikan dengan yang diminta. Algoritma yang terkenal adalah algoritma prinsip tangan kanan. algoritma ini sederhana: taruh tangan kanan anda pada tembok, lalu jalanlah sesuai dengan tembok yang menempel pada tangan anda. maka, anda akan menemukan jalan keluar dari maze. Algoritma ini dapat digambarkan sebagai berikut:
pastikan posisi tempat kita berada saat ini adalah posisi start
untuk mencari jalan keluar dari labirin, periksa tembok-tembok dimulai dari kanan, atas, kiri, bawah.
  1. Periksa kanan: jika ada tembok, periksa atas. Jika tidak ada tembok, belok kanan.
  2. Periksa atas: jika ada tembok, periksa kiri. Jika tidak ada tembok, jalan lurus.
  3. Periksa kiri, jika ada tembok, periksa bawah. Jika tidak ada tembok, belok kiri.
  4. Periksa bawah, jika ada tembok, kembali periksa atas. Jika tidak ada tembok, jalan mundur.
  5. Begitu seterusnya hingga menemukan jalan keluar.
pseudocode:
function maze(kanan, atas, kiri, bawah){
set array[#][#] as maze
start[x][y] = array[0][0] // start dimulai dari titik (0,0)
if(start[x+1][y])==null //kanan
turn right;
maze(bawah, kanan, atas, kiri);
if(start[x][y+1])==null //atas
turn ahead;
maze(kanan, atas, kiri, bawah);
if(start[x-1][y])==null//kiri
turn left;
maze(atas, kiri, bawah, kanan);
if(start[x][y-1])==null//bawah
turn down;
maze(kiri, bawah, kanan, atas);
}

potongan program:
void maze(){

string finishY, finishX, startY, startX;
string y1 = startY;
string y2 = startX;
while(!(yl == finishY && xl == finishX)){

if(trace[yl][xl+1] ==”tembok”)
else if(trace[yl+1][xl] ==”tembok”)
else if(trace[yl][xl-1] ==”tembok”)
else trace[yl-1][xl]= “jalan”;

...dst...
}

Fuzzy Logic
Fuzzy Logic menggantikan kebenaran konsep logika Boolean (yang menyatakan bahwa segala hal dapat direpresentasikan dengan 0 atau 1) dengan konsep “tingkat kebenaran”. Fuzzy Logic memungkinkan nilai keanggotaan antara 0 dan 1, abu-abu, hitam atau putih, “sedikit”, “lumayan”, “sangat”, atau “paling”. Fuzzy logic sangat berhubungan dengan teori kemungkinan.

pseudocode
Sebagai contoh, dalam kasus mengontrol temperatur. Daripada kita harus selalu bergelut dengan permasalahan:
if (Tz>100C && Z==”Cair”)//Tz adalah temperatur Z, Z adalah logam
then “buat pedang”;

lebih baik kita ganti dengan alternatif baru yang tidak perlu menggunakan kompleksnya angka:
if(Tz sudah sangat panas && Z telah mencair)
maka kita buat pedang;

Di dalam Fuzzy Logic, tidak ada pernyataan seperti “tingginya 1.2 m” atau “tingginya 1.67 m”. tetapi, nilai tinggi diberikan dalam suatu batasan range.
Laki-laki pendek sekali = [0, 1.3] m
laki-laki pendek = [1.3, 1.5] m
laki-laki sedang = [1.5, 1.8] m
laki-laki tinggi = [1.8, 2.0] m
laki-laki raksasa > 2.0 m

konsekuensinya, 2 nilai(true atau false) saja tidak cukup. Dibutuhkan nilai yang lebih banyak. Misal:
tidak setuju = 0
agak setuju = 1
setuju = 2
sangat setuju = 3

Maze Mapping

merupakan algoritma yang digunakan untuk mapping, yakni mencari dan menggambarkan peta jalan keluar dari labirin (maze).

Algoritma Neural Networks
Neural Networks Algorithm, atau disebut juga algoritma jaringan saraf, merupakan sebuah algoritma yang meniru sistem kerja jaringan saraf manusia. Algoritma ini meniru sistem kerja otak manusia dalam menerjemahkan kompleksnya input untuk kemudian dijadikan output. Algoritma ini terdistribusi secara paralel dan memunyai kecenderngan untuk menyimpan pengetahuan yang didapatkannya dari pengalaman. Oleh karena itu, algoritma akan selalu merubah strukturnya untuk memecahkan masalah berdasarkan informasi eksternal maupun internal yang telah didapatkannya.

Shortest Path
Shortest Path, atau biasa dikenal dengan istilah Algoritma Djikstra, merupakan sebuah cara pencarian yang dilakukan pada graph dimana hanya dibutuhkan jalur yang paling pendek untuk sebuah graph. Algoritma ini menemukan jalur pencapaian tujuan dengan biaya yang paling rendah.

Algoritma Djikstra menghitung jarak semua verteks pada sebuah graf dari current verteks. Algoritma ini hanya berlaku pada kondisi: graf terhubung, edge yang tidak berarah, bobot edge(distance) tidak bernilai negatif.

Algoritma:
  1. buat list untuk jarak, verteks sebelumnya, verteks yang telah dikunjungi, dan verteks saat ini.
  2. Set semua verteks dengan nilai tak hingga, kecuali pada verteks awal-yang diset dengan nol.
  3. Semua nilai pada list verteks yang telah dikunjungi, diset dengan false.
  4. Set semua nilai pada list verteks sebelumnya dengan nilai yang spesial yang menandakan bahwa mereka belum didefinisikan, seperti null.
  5. Set verteks saat ini dengan verkteks awal.
  6. Tandai verteks saat ini bahwa telah dikunjungi.
  7. Update jarak dan list sebelumnya berdasarkan verteks yang bisa secara langsung dicapai dari verteks saat ini.
  8. Update verteks saat ini dengan verteks yang belum dikunjungi yang bisa dicapai dengan jalur terpendek (shortest path) dari verteks awal.
  9. ulang sampai langkah 6 hingga semua node dikunjungi
pseudocode:
function Dijkstra(Graph, source): (source: wikipedia)
for each vertex v in Graph: // Inisialisasi
dist[v] := infinity // jarak yang belum diketahui
previous[v] := undefined // node sebelumnya
dist[source] := 0 // jarak dari source ke source
Q := the set of all nodes in Graph
while Q is not empty: // main loop
u := node in Q with smallest dist[] // jarak terpendek
remove u from Q // ambil u
for each neighbor v of u:
alt := dist[u] + dist_between(u, v)
if alt

Monday, February 16, 2009

ARTIFICIAL NEURAL NETWORK

berikut ulasan singkat mengenai artificial neural network (jaringan saraf tiruan):

Pengertian

Jaringan dari sekelompok unit pemroses kecil yang dimodelkan berdasarkan jaringan saraf manusia. JST merupakan sistem adaptif yang dapat merubah strukturnya untuk memecahkan masalah berdasarkan informasi eksternal maupun internal yang mengalir melalui jaringan tersebut. (wikipedia)

“Sistem saraf tiruan atau jaringan saraf tiruan adalah sistem selular fisik yang dapat memperoleh, menyimpan dan menggunakan pengetahuan yang didapatkan dari pengalaman”(Zurada J. M).

Secara prinsip jaringan saraf tiruan dapat melakukan komputasi terhadap semua fungsi yang dapat terhitung (computable function). Jaringan saraf tiruan dapat melakukan apa yang dapat dilakukan oleh komputer digital normal.

Dalam prakteknya, jaringan saraf tiruan terutama sangat berguna bagi klasifikasi dan permasalahan-permasalahan yang dapat mentolerir ketidaktepatan, yang memiliki banyak data pelatihan, namun memiliki aturan-aturannya yang tidak dapat diaplikasikan secara mudah.
http://tedi.heriyanto.net/papers/jst.htm

Jaringan syaraf tiruan tersusun atas beberapa element pemroses, yaitu: neuron, unit, sel atau node, yang saling terhubung dalam bentuk directed graph melalui jalur sinyal searah yang disebut dengan koneksi. Dalam jaringan syaraf, struktur pengolahan informasi akan mengikuti bentuk grafik terarah dengan beberapa definisi sebagai berikut:
  1. Node pada graph disebut dengan elemen pemroses (processing element).
  2. Link pada graph disebut dengan koneksi.
  3. Setiap PE dapat menerima sejumlah input.
  4. Setiap elemen pemroses dapat memiliki beberapa output.
  5. Setiap elemen pemroses memiliki memori local.
  6. Setiap elemen pemroses memiliki fungsi transfer (transfer function) yang dapat menggunakan dan mengubah isi memori local, memakai sinyal output dari processing element.
  7. Sinyal dari input dari luar system saraf tiruan yang menuju system tersebuut datang dari hubungan-hubungan yang berasal dari dunia luar system.
http://angkringan.or.id/page.php?id=643


Contoh Algoritma
  1. inisialisasi parameter jaringan: pembobot dan bias
  2. tentukan nilai parameter JST
  3. pengujian selisih nilai antara pembimbing dengan keluaran pengontrol(error). Bila error cukup kecil(terpenuhi), lanjutkan ke langkah 4. bila error belum terpenuhi, update parameter JST (langkah ke 2)
  4. hitung perbaruan nilai parameter jaringan saraf tiruan
  5. hitung keluaran dari jaringan saraf tiruan
http://k12008.widyagama.ac.id/ai/diktatpdf/BabIII_Jaringan_Syaraf_Tiruan.pdf

Jenis

Terdapat dua tipe algoritma dalam Jaringan Syaraf Tiruan, yaitu : (Kusumadewi, 2003)

Terawasi (supervised learning)
Metode pada jaringan syaraf disebut terawasi jika output yang diharapkan telah
diketahui sebelumnya. Pada proses pembelajaran, satu pola input akan diberikan ke satu neuron pada lapisan input. Pola ini akan dirambatkan di sepanjang jaringan syaraf hingga sampai ke neuron pada lapisan output. Lapisan output ini akan membangkitkan pola output yang nantinya akan dicocokkan dengan pola output targetnya. Apabila terjadi perbedaan antara pola output hasil pembelajaran dengan pola target, maka disini akan muncul error. Apabila nilai error ini masih cukup besar, mengindikasikan bahwa masih perlu dilakukan lebih banyak pembelajaran lagi.Terdapat berbagai tipe pembelajaran terawasi beberapa diantaranya Hebb Rule, Perceptron, Delta Rule, Backpropagation.

Unsupervised Learning (Jaringan Kohonen)
Pada jaringan ini, suatu lapisan yang berisi neuron-neuron akan menyusun dirinya sendiri berdasarkan input nilai tertentu dalam suatu kelompok yang dikenal dengan istilah cluster. Selam proses penyusunan diri, cluster yang memiliki vector bobot paling cocok dengan pola input (memiliki jarak yang paling dekat) akan terpilih sebagai pemenang. Neuron yan menjadi pemenang beserta neuron-neuraon tetangganya akan memperbaiki bobot-bobotnya.
http://one.indoskripsi.com/judul-skripsi-makalah-tentang/algoritma-jaringan-syaraf-tiruan

Kelebihan dan Kekurangan
Advantages:
  1. A neural network can perform tasks that a linear program can not.
  2. When an element of the neural network fails, it can continue without any problem by their parallel nature.
  3. A neural network learns and does not need to be reprogrammed.
  4. It can be implemented in any application.
  5. It can be implemented without any problem.

Disadvantages:
  1. The neural network needs training to operate.
  2. The architecture of a neural network is different from the architecture of microprocessors therefore needs to be emulated.
  3. Requires high processing time for large neural networks.
http://www.learnartificialneuralnetworks.com/

Diimplementasikan pada:
Robot Control
Speech Recognition
Stock Market Prediction
Pengenalan pola
System control
Diagnosa suatu penyakit
Segmentasi

http://angkringan.or.id/page.php?id=643