## Simulasi Vending  Machine Dengan Mengimplementasikan Finite State Automata
Tri Ichsan  Saputra,  Fauziah,  Aris Gunaryati triichsan1@gmail.com,  fauziah@civitas.unas.ac.id,  umidanti@gmail.com

## Universitas Nasional
AbstractIn  theory  of  language and automata explain about abstract  machine  which  in  there  is  finite  state  automata which  can  be  implemented  into  vending  machine.  Vending machine  for  a  city  like  Jakarta  is  not  a  difficult  subject to find it. Operational way is already widely known procedures, but  about how it works in the machine, still not many know it,  through  this  simulation  is  expected  the  user  also  better understand it.
Abstrak-Pada  teori  bahasa  dan  automata  menjelaskan tentang  mesin-mesin  abstrak  yang  mana  didalamnya terdapat finite state automata yang bisa diimplementasikan  kedalam  vending  machine.  Vending machine  untuk  kota  seperti  Jakarta  sudah  bukan  perihal sulit  untuk  menemukannya.  Cara  kerja  secara  operasional sudah  banyak  diketahui  prosedurnya,  namun  perihal bagaimana  cara  kerjanya  didalam  mesin  tersebut,  masih belum  banyak  yang  mengetahuinya,  melalui  simulasi  ini diharapkan  pengguna  juga  lebih paham  akan hal itu.
Kata  Kunci  :  Vending  Machine,  Simulasi,  Finite  State, Bahasa  dan  Automata.

## I. PENDAHULUAN
Teori  automata  sangat erat kaitannya dengan mesin -mesin abstrak.  Sedangkan  teori  bahasa  erat  kaitannya  dengan komunikasi  atau  penghubung  baik  antara  sesama  manusia maupun  dengan  yang  lainnya,  jika  diambil  dalam  materi  ini maka  bahasa  adalah  media  antara  manusia  dengan  komputer untuk saling berinteraksi[1].
Dari  jenisnya  yaitu finite  state  automata terdapat  mesin bahasa  yang  berarti  dia  dapat  mengenali,  menerima  dan menolak  yang  terdapat  pada  mesin  FSA  jenis  DFA ( Deterministic  Finite Automata ) dan NFA ( Non-deterministic Finite Automata )[2]. Dan ada FSA output yang mana berbeda dengan  jenis  FSA  sebelumnya  (DFA  &  NFA),  pada  jenis  ini tidak  terdapat state menerima  dan  menolak, memiliki fungsi & himpunan output [3]. Sebagai  contoh  mesin  FSA output bisa  dengan menggunakan  simulasi vending  machine yang  mana  konsep dasar  dari  alat  tersebut  adalah  metode  FSA output .  Sebuah vending  machine biasanya  menjual  1  (satu)  jenis  barang,
seperti  :  makanan  ringan  ( snack ),  minuman,  pembelian  tiket seperti  halnya  di  KRL,  dan  sebagainya[4].  Walaupun  di Indonesia,  khususnya  Jakarta  sudah  banyak  penggunaan vending  machine ,  namun  terlintas  dalam  benak  untuk mengetahui  dan  mempelajari  proses  dari vending  machine tersebut[5].

## II. METODE  PENELITIAN
Metode yang digunakan yaitu dengan menggunakan finite state , yang mana jika  diambil  contoh kasus sebagai berikut : Tuple  M  pada  FSA  jenis  DFA  maupun  NFA  diantaranya (Q,  ,  ,S,F)  yang  mengartikan  untuk  Q=himpunan state ,  =himpunan input ,  =fungsi  transisi,  S= state awal,  F= state akhir.  Disini  sebagai  contoh  sederhana,  kita  gunakan  FSA jenis DFA[6].
Gambar  1:  Diagram  DFA
Dari  diagram  diatas,  kita bisa melihat bahwa tuplenya sebagai berikut :
Q = (q1,q2,  q3, q4),  = (0, 1),  S=(q1),  F=(q2)
Fungsi transisi= 
 (q1,0)=q3,  (q1,1)=q2,  (q2,0)=q1,  (q2,1)=q4,  (q3,0)=q4,  (q3,1)=q1,  (q4,0)=q2,  (q4,1)=q3
Dari  fungsi  transisi  tersebut  maka  dapat  dilihat  tabel  transisi sebagai berikut :
Table 1: Tabel Transisi  0 1 q1 q3 q2 q2 q1 q4 q3 q4 q1 q4 q2 q3
Sebagai  contoh,  misal  kita input „1111‟,  maka  untai  akan bergerak  dari state awal  (q1)  kemudian input „1‟  pertama berubah  posisi menjadi (q2) lalu input kembali „1‟ maka posisi pindah  menjadi  (q4),  kemudian input kembali  „1‟, maka posisi akan  pindah  kembali  menjadi  (q3), dan input kembali „1‟ yang terakhir,  maka  posisi  akan  berakhir  pada  (q0)  dan  has ilnya akan  ditolak  karena  tidak  berakhir  di state penerima  / finish stat [7] e .
Kasus  diatas  sudah  menggambarkan  sebagian  kecil  dari proses  yang  ada  didalam vending  machine ,  sama  halnya seperti  kasus  diatas,  nantinya  jika  nilai input (uang)  kurang dari  harga  yang  ada  pada vending  machine ,  maka output (minuman)  tidak akan keluar[8].

## A. Perancangan  Sistem
Sistem dirancang  dengan  menggunakan  UML ( Unified Modelling Language ) yang terdiri dari use case diagram dan activity diagram [9] .
Usecase  diagram mendeskripsikan  sistem  dari sudut pandang user , usecase  diagram digunakan  untuk  melihat secara  visual  bagaimana  simulasi  perwujudan  atau  interaksi kejadian  yang  terjadi  antara  pengguna  dengan vending machine dan  apa yang dapat dilakukan oleh user , user dibagi menjadi  dua user , yaitu user itu sendiri dan admin .
Gambar 2: (a) Usecase diagram user (b) Usecase diagram admin
Usecase  diagram  user dapat  dilihat  pada  gambar  2(a), setelah  menjalankan  aplikasi, user dapat  melakukan  hal sebagai  berikut;  memasukan  koin,  memilih  minuman  dan mengambil  minuman.
Kemudian  dalam usecase  diagram  admin yang  ada  pada gambar  2(b), admin dapat  melakukan  hal  yang  dapat dilakukan oleh user dan juga dapat login untuk melakukan hal perihal mengambil  koin atau menambah stok minuman.
Activity  diagram menggambarkan  sebuah  alur  dari rangkaian  kegiatan  yang  ada  pada  sistem  yang  sedang dirancang.  Jika vending  machine dijalankan  oleh user ,  maka activity diagram akan tergambar seperti gambar 3.

## Gambar 3: Activity Diagram User
User mulai  menjalankan  aplikasi,  kemudian  memasukkan uang  dan  memilih  jenis  minuman  yang  diinginkan,  kemudian sistem  akan  mengecek  dan  menyamakan  antara input (uang) dan output (minuman)  yang  dipilih,  jika  sudah  sesuai,  maka vending machine akan mengeluarkan output (minuman) sesuai keinginan  dan database akan  mengurangi  stok minuman, lalu tahap  terakhir, user mengambil  minuman  yang  telah dikeluarkan vending  machine [10].  Dan  jika user ingin membeli  lagi,  alurnya  akan  terulang  mulai  dari  memasukkan koin ke vending machine . Kemudian activity  diagram  admin dapat  dilihat pada gambar 4[11].
Gambar 4: Activity Diagram Admin
Activity  diagram  admin berbeda,  disini activity diagram tergambar  perihal  mengisi  ulang  stok  minuman.
Dimulai  dari login ,  jika username dan password tidak  sesuai maka harus mengulang hingga username dan password sesuai, kemudian database akan  menampilkan  informasi  minuman yang  akan  tampil  didalam vending  machine , kemudian admin melihat  stok  minuman,  jika  dirasa  telah  menipis  maka ditambahkan,  dan  jika  tidak, activity  diagram selesai  sampai disitu.

## B. Perancangan  Diagram  State
Untuk  merancang  simulasi  ini  dibutuhkan diagram  state yang  digunakan  untuk  mengetahui  cara  kerja  dari  simulasi vending  machine ini,  semua  nominal  dengan  minuman  tidak sesuai hanya dibuat perumpamaan untuk mendeskripsikannya.
Gambar  5:  Diagram  State FSA Output
Gambar  5  menjelaskan  bahwa  terdapat  beberapa  input, sebagai  berikut  :  k  (kembalian),  L  (logam  500),  S  (logam 1000),  b  (pilih  Buavita),  n  (pilih  Nescafe),  u  (pilih Ultra Milk), H  (pilih Hilo). Dan dengan output, diantaranya  : o (tidak ada), B  (keluar  Buavita),  N  (keluar  Nescafe),  U  (keluar  Ultra  Milk), H (keluar  Hilo).
Pendefinisian  Tuple FSA Output didefinisikan sebagai berikut: M=(Q,  ,  ,S,  ,  ) Yang mana: Q=himpunan state ,  =himpunan  simbol input ,  =fungsi transisi,  S= state awal,  =himpunan  simbol output ,  =fungsi output.
Sehingga dapat didefinisikan sebagai berikut: Q={q0,  q1, q2, q3, q4, q5, q6, q7, q8}  ={b,n,u,h,L,S,k}
 (q0,b)=q0;  (q0,n)=q0;  (q0,u)=q0;  (q0,h)=q0;  (q0,L)=q1;  (q0,S)=q2;  (q0,k)=q0;
 (q1,b)=q1;  (q1,n)=q1;  (q1,u)=q1;  (q1,h)=q1;  (q1,L)=q2;  (q1,S)=q3;  (q1,k)=q1;
 (q2,b)=q2;  (q2,n)=q2;  (q2,u)=q2;  (q2,h)=q2;  (q2,L)=q3;  (q2,S)=q4;  (q2,k)=q2;
 (q3,b)=q3;  (q3,n)=q3;  (q3,u)=q3;  (q3,h)=q3;  (q3,L)=q4;  (q3,S)=q5;  (q3,k)=q3;
 (q4,b)=q4;  (q4,n)=q4;  (q4,u)=q4;  (q4,h)=q4;  (q4,L)=q5;  (q4,S)=q6;  (q4,k)=q4;  (q5,b)=q0;  (q5,n)=q5;  (q5,u)=q5;  (q5,h)=q5;  (q5,L)=q6;  (q5,S)=q7;  (q5,k)=q0;  (q6,b)=q0;  (q6,n)=q0;  (q6,u)=q6;  (q6,h)=q6;  (q6,L)=q7;  (q6,S)=q8;  (q6,k)=q0;  (q7,b)=q0;  (q7,n)=q0;  (q7,u)=q0;  (q7,h)=q7;  (q7,L)=q8;  (q7,S)=q8;  (q7,k)=q0;  (q8,b)=q0;  (q8,n)=q0;  (q8,u)=q0;  (q8,h)=q0;  (q8,L)=q8;  (q8,S)=q8;  (q6,k)=q0;
Jika  dipetakan dalam  tabel transisi, seperti tabel 2.
Tabel 2:Tabel  transisi input  b n u h L S k q0 q0 q0 q0 q0 q1 q2 q0 q1 q1 q1 q1 q1 q2 q3 q1 q2 q2 q2 q2 q2 q3 q4 q2 q3 q3 q3 q3 q3 q4 q5 q3 q4 q4 q4 q4 q4 q5 q6 q4 q5 q0 q5 q5 q5 q6 q7 q0 q6 q0 q0 q6 q6 q7 q8 q0 q7 q0 q0 q0 q7 q8 q8 q0 q8 q0 q0 q0 q0 q8 q8 q0
Tabel 2 menjelaskan tentang perpindahan state sesuai dengan input yang masuk.
S={q0}
 ={B,N,U,H,o}
 =fungsi output untuk setiap transisi
 (q0,b)=o;  (q0,n)=o;  (q0,u)=o;  (q0,h)=o;  (q0,L)=o;
 (q0,S)=o;  (q0,k)=o;
 (q1,b)=o;  (q1,n)=o;  (q1,u)=o;  (q1,h)=o;  (q1,L)=o;
 (q1,S)=o;  (q1,k)=o;
 (q2,b)=o;  (q2,n)=o;  (q2,u)=o;  (q2,h)=o;  (q2,L)=o;
 (q2,S)=o;  (q2,k)=o;
 (q3,b)=o;  (q3,n)=o;  (q3,u)=o;  (q3,h)=o;  (q3,L)=o;
 (q3,S)=o;  (q3,k)=o;
 (q4,b)=o;  (q4,n)=o;  (q4,u)=o;  (q4,h)=o;  (q4,L)=o;
 (q4,S)=o;  (q4,k)=o;
 (q5,b)=B;  (q5,n)=o;  (q5,u)=o;  (q5,h)=o;  (q5,L)=o;  (q5,S)=o;  (q5,k)=o;
 (q6,b)=B;  (q6,n)=N;  (q6,u)=o;  (q6,h)=o;  (q6,L)=o;  (q6,S)=o;  (q6,k)=o,L;
 (q7,b)=B;  (q7,n)=N;  (q7,u)=U;  (q7,h)=o;  (q7,L)=o;  (q7,S)=o;  (q7,k)=o,L,S;
 (q8,b)=B;  (q8,n)=N;  (q8,u)=U;  (q8,h)=H;  (q8,L)=L;  (q8,S)=S;  (q8,k)=  o,L,S;
Jika  dipetakan dalam  tabel transisi, seperti tabel 3.
Tabel 3: Tabel transisi output
 b n u h L S
k q0 o o o o o o
o
q1 o o o o o o
o
q2 o o o o o o
o
q3 o o o o o o
o
q4 o o o o o o o q5 B o o o o o o q6 B N o o o o o,L q7 B N U o o o o,L,S q8 B N U H L S o,L,S
Dengan tabel 3 tersebut, kita dapat mengetahui input yang akan  dikeluarkan,  sebagai  contoh  pada state q8  yang mengeluarkan  banyak  pilihan output ,  jika  mendapatkan input b,  maka  akan  keluar output B  (Buavita),  jika  mendapatkan input n,  maka  akan  keluar output N  (Nescafe),  jika mendapatkan input u, maka akan keluar output U (Ultra Milk), jika  mendapatkan input h,  maka  akan  keluar output H  (Hilo). Bila  mendapat input L(500),  maka output- nya  adalah  L  lagi, dan bila input nya S (1000), output -nya juga S. State q8 adalah state terakhir, sehingga bila diberi input nilai uang lagi (L dan S),maka state tidak  akan  beranjak  dan  memuat  nilai kelebihan uang  tersebut.  Bila input nya  adalahk  (kembalian),  maka kelebihan  dari  L  dan  S  tadi  akan  dikeluarkan  sesuai dengannilainya.
Output :  Dari  hasil  kalkulasi,  diperoleh output yang  akan dikeluarkan  aplikasi. Output berupa  gambar  minuman  yang dipilih,  serta  angka  yang  menyatakan  uang  kembalian  (jika nominal  uang lebih besar dari harga yang tertera).

## III. HASIL  DAN  PEMBAHASAN

## Form  Simulasi Vending  Machine
Rancangan  tampilan form  vending  machine dapat  dilihat pada  gambar  6,  simulasi  tersebut  sudah  memvisualisasikan gambaran  dari vending  machine tersebut  yang  memfasilitasi untuk pembelian  minuman.
Gambar  6:  Simulasi  Vending Machine Pada  gambar  7 dapat dilihat terdapat fasilitas memasukkan uang, hanya ada uang Rp. 500 dan Rp. 1000 dikarenakan input berupa  koin  (uang  logam),  jika  kita input Rp.  500  maka dilayar  akan  tercetak  nominal  yang  sama  dengan  apa  yang di input kan,  kemudian  jika  kita  melakukan input selanjutnya, nominal  akan  berubah  (bertambah)  sesuai  dengan  nominal yang ditambahkan.

## Gambar  7:  Fasilitas Input Koin
Kemudian  pada  gambar  8  dapat  dilihat  ada  fasilitas  uang kembalian,  hal  itu  bisa  terjadi  jika  nominal  yang  dimasukkan lebih besar dari harga minuman yang dipilih, dan akan  kosong jika  nominal uang yang dimasukkan sama atau bahkan kurang dari harga minuman  yang dipilih.
Gambar  8:  Fasilitas Uang Kembalian
Sebagai  contoh,  jika  kita  ingin  membeli  minuman  Nescafe harga  Rp.  3.000,-  maka  akan  muncul  tampilan  seperti  gambar 9.
Gambar  9:  Hasil  Keluaran dari Vending Machine
Minuman  Nescafe  bisa  keluar  dikarenakan  kita  telah menginput  nominal  yang  sesuai  dengan  harga  minuman tersebut,  dan  tidak  ada  uang  kembalian  dikarenakan  harga yang  dimasukkan  sama  dengan  dan  atau  tidak  melebihi  dari harga minuman.

## IV. KESIMPULAN  DAN  SARAN
Penggunaan finite  state  automata pada vending machine sudah sangat sesuai didalam cara kerjanya, finite state sebagai dasar dari pengoperasian simulasi tersebut sudah menjelaskan detail alur  dari  apa  yang user lakukan,  sehingga  prosesnya mudah  dipahami.  Dan  diharapkan user dapat  lebih  paham akan hal tersebut.

## DAFTAR  PUSTAKA
[1]  V.  V.  S.  Vijay,  A.  Monisha,  S.  Sadulla,  and  J.  Prathiba, “Design  and  Implementation  of  an  automatic  Beverages Vending  Machine  and  its  performance  evaluation  using Xilinx  ISE  and Cadence,” pp. 4–9,  2013.
[2]  K.  Kim,  D.  Park,  H.  Bang,  G.  Hong,  and  S.  Jin,  “Smart Coffee  Vending  Machine  Using  Sensor  and  Actuator Networks,” pp. 71–72,  2014.
[3]  M.  S.  A.  S,  M.  Syai,  J.  Endrasmono,  S.  T.  Sarena,  L. Subiyanto,  and  A.  S.  Setyoko, “Smart Vending Machine Based  on  SMS  Gateway  For  General  Transactions,”  no. 2, pp. 34–39,  2017.
[4]  N.  Kulmukhanova,  A.  Daribay,  I.  Temirtayev,  and  U. Bassembek,  “ZhardEM  Medicine  Vending  Machine,” 2018  Int.  Conf.  Comput.  Netw.  Commun. ,  pp.  108–113, 2018.
[5]  C.  Wenshan,  H.  Yanqun,  and  L.  Minyang,  “Influential factors  of  vending  machine  interface  to  enhance  the interaction performance,”  pp. 1–4,  2015.
[6]  V.  Vaid,  “Comparison  of  different  attributes  in modeling a  FSM based vending machine in 2 different styles,” no. Ices, pp. 18–21,  2014.
[7]  Y.  Shoji,  K.  Nakauchi,  and  W.  Liu,  “Community-based wireless  IoT  infrastructure  using  ubiquitous  vending machines,” pp. 3–7,  2016.
[8]  V.  P.  Semenov,  V.  V  Chernokulsky,  and  N.  V Razmochaeva,  “The  Cashless  Payment  Device  for Vending Machines – Import Substitution in the Sphere of Vending,”  pp. 798–802,  2017.
[9]  A.  Ramzan,  S.  Rehman,  A.  Perwaiz,  U.  I.  Number,  and L.  C.  D.  L.  Crystal,  “RFID  Technology :  Beyond  Cash- Based  Methods  in  Vending  Machine,”  pp.  189–193, 2017.
[10]  H. Namie,  “Positioning-Based  ICT  Infrastructure Platform  -  Smart  Vending  Machine  -,”  pp.  446–447, 2014.
[11]  F.  Muhammad  and  N.  Faradilla,  “User  Experience Evaluation  on  the  Usage  of  Commuter Line Train Ticket Vending Machine,” pp. 164–170,  2017.