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:
- Implementasinya mudah dan cepat
- Memudahkan proses debugging. Karena telah dipecah menjadi kepingan yang lebih kecil, proses debugging kalau terjadi behavoiur yang tidak semestinya, menjadi lebih mudah
- Proses komputasi yg minimal, karena sejatinya FSM hanyalah conditional statement yang dikemas dalam bentuk yang lebih elegan.
- Fleksibel, dapat dikombinasikan dengan teknik AI lain misalnya fuzzy logic dan neural network
Kekurangannya:
- Behaviour dari agen mudah diprediksi, karena tidak ada searching dan atau learning di dalam agen tersebut
- Karena mudah diimplementasi, kadang programmer langsung tembak di eksekusi tanpa melakukan desain FSM terlbih dahulu. Biasanya akan terjadi FSM yang terfragmentasi
- Timbul apa yang dinamakan dengan State Oscillation yaitu ketika batasan antara dua buah state terlalu tipis
Bentuk
Implementasi
Ada beberapa
bentuk FSM, diantaranya:
- Naive Approach
Menggunakan conditional statement (if-else atau switch-case) tanpa memecah object menjadi object2x yang lebih kecil sesuai state nya.
- State Transition Table
Bentuk ini
sudah mengimplementasikan State Pattern, dengan menempatkan transition logic di
context. Bentuk ini juga sering disebut sebagai Classic FSM.
- 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.
Sumber :
http://technologies-it.blogspot.co.id/p/finite-state-machines.html








0 komentar:
Posting Komentar