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.
Sumber : http://technologies-it.blogspot.co.id/p/finite-state-machines.html
Tidak ada komentar:
Posting Komentar