Finite State Machines
(FSM) adalah sebuah metodologi perancangan sistem kontrol yang
menggambarkan tingkah laku atau prinsip kerja sistem dengan menggunakan tiga
hal berikut: State (Keadaan), Event (kejadian) dan Action (aksi).
Pada satu saat dalam periode waktu yang cukup signifikan, sistem akan berada
pada salah satu state yang aktif. Sistem dapat beralih atau bertransisi menuju
state lain jika mendapatkan masukan atau event tertentu, baik yang berasal dari
perangkat luar atau komponen dalam sistemnya itu sendiri (misal interupsi
timer). Transisi keadaan ini umumnya juga disertai oleh aksi yang dilakukan
oleh sistem ketika menanggapi masukan yang terjadi. Aksi yang dilakukan
tersebut dapat berupa aksi yang sederhana atau melibatkan rangkaian proses yang
relative kompleks. Berdasarkan sifatnya, metode FSM ini sangat cocok digunakan
sebagai basis perancangan perangkat lunak pengendalian yang bersifat reaktif
dan real time. Salah satu keuntungan nyata penggunaan FSM adalah kemampuannya
dalam mendekomposisi aplikasi yang relative besar dengan hanya menggunakan
sejumlah kecil item state. Selain untuk bidang kontrol, Penggunaan metode ini
pada kenyataannya juga umum digunakan sebagai basis untuk perancangan
protokol-protokol komunikasi, perancangan perangkat lunak game, aplikasi WEB
dan sebagainya.
Dalam bahasa pemrograman prosedural seperti bahasa C, FSM ini umumnya direalisasikan dengan menggunakan statemen kontrol switch case atau/dan if..then. Dengan menggunakan statemen-statemen kontrol ini, aliran program secara praktis akan mudah dipahami dan dilacak jika terjadi kesalahan logika.
Dalam bahasa pemrograman prosedural seperti bahasa C, FSM ini umumnya direalisasikan dengan menggunakan statemen kontrol switch case atau/dan if..then. Dengan menggunakan statemen-statemen kontrol ini, aliran program secara praktis akan mudah dipahami dan dilacak jika terjadi kesalahan logika.
Finite State Machine di dunia AI
Game Programming, merupakan salah satu teknik yang paling sering digunakan.
Alasannya yaitu:
1. Implementasinya mudah dan
cepat
2. Memudahkan proses debugging.
Karena telah dipecah menjadi kepingan yang lebih kecil, proses debugging kalau
terjadi behavoiur yang tidak semestinya, menjadi lebih mudah
3. Proses komputasi yg minimal,
karena sejatinya FSM hanyalah conditional statement yang dikemas dalam bentuk
yang lebih elegan.
4. Fleksibel, dapat
dikombinasikan dengan teknik AI lain misalnya fuzzy logic dan neural network
Kekurangannya:
1. Behaviour dari agen mudah
diprediksi, karena tidak ada searching dan atau learning di dalam agen tersebut
2. Karena mudah diimplementasi,
kadang programmer langsung tembak di eksekusi tanpa melakukan desain FSM
terlbih dahulu. Biasanya akan terjadi FSM yang terfragmentasi
3. Timbul apa yang dinamakan
dengan State Oscillation yaitu ketika batasan antara dua buah state terlalu
tipis
Bentuk Implementasi
Ada beberapa bentuk FSM,
diantaranya:
1. Naive Approach
Menggunakan conditional statement
(if-else atau switch-case) tanpa memecah object menjadi object2x yang lebih
kecil sesuai state nya.
2. State Transition Table
Bentuk ini sudah
mengimplementasikan State Pattern, dengan menempatkan transition logic di
context. Bentuk ini juga sering disebut sebagai Classic FSM.
3. Embedded Rules
Bentuk ini adalah kebalikan dari
bentuk Classical Approach, yang berarti state transition didefinisikan di state
itu sendiri. Dan sama dengan Classical Approach, bentuk ini juga akan
menawarkan fleksibilitas dan skalabilitas yang baik, namun dengan efek samping
agak sulit untuk di-mantain karena aturan2x transisi diletakkan di state
sehingga ketika terjadi penambahan atau pengurangan state, maka harus dilakukan
update juga terhadap state2x yang terkait.
Analisis:
Jadi FSM sendiri merupakan sistem yang dapat beralih atau bertransisi
menuju state lain jika mendapatkan masukan atau event tertentu, baik yang
berasal dari perangkat luar atau komponen dalam sistemnya itu sendiri. Menurut
saya contohnya seperti alat yang akan menghasilkan output jika sudah diberi
input.
Sumber:
http://technologies-it.blogspot.co.id/p/finite-state-machines.html
http://purwitarahayu23.blogspot.co.id/2015/11/finite-state-machines.html
Tidak ada komentar:
Posting Komentar