## Data-Driven Predictive Control Menggunakan Algoritma Nearest Neighbor Untuk Sistem Yang Tidak Stabil
Herlambang Saputra *1 , Ahmad Bahri Joni Malyan 2 , Ahyar Supani 3 , Indarto 4
1,2,3,4 Jurusan Teknik Komputer, Politeknik Negeri Sriwijaya Jl. Srijaya Negara Palembang 30139 - Indonesia e-mail: 1 herlambang@polsri.ac.id , 2 bahrijoni@yahoo.co.id
3 ahyaryuli@yahoo.com , 4 indarto@polsri.ac.id

## Abstrak
Sebuah sistem dapat dikendalikan dengan baik apabila menggunakan algoritma yang tepat dan handal. Algorima yang dipakai dalam penelitian ini adalah sebuah teknik data-driven dengan menggunakan  Nearest  Neighbor  sebagai  algoritma  dalam  menentukan  input 𝑢 terbaik  untuk sistem.  Teknik  data-driven  terbagi  dua  bagian  yaitu  matriks  database 𝐴 dan  vektor  informasi. Ketika  matriks  database  telah  terbentuk,  langkah  berikutnya  adalah  penghitungan  vektor informasi  secara  real-time  dibandingkan  dengan  matriks  database  tersebut  dengan  cara penghitungan jarak vektor informasi dan matriks database menggunakan 𝑙 2 − norm. Pada proses pemilihan jarak terdekat menggunakan dua buah pendekatan, yang pertama pendekatan jarak terdekat yang kedua menggunakan aturan-aturan baru. Hasil akhirnya adalah simulasi berupa grafik, penghitungan error dan waktu komputasi.
Kata kunci: Data-driven, Nearest Neighbor, Vektor Informasi

## Abstract
A system can be controlled very well if the system used a proper algorithm. The algorithm in this reserach  was  a  data-driven  technique  with  nearest  neighbor  that  used  to  get  input 𝑢 for  the system. Data-driven technique consisted of two parts, the first part was a matrix database A and a second part was an information vector. When the matrix database was made, the next step was to  compare  real-time  the  information  vector  and  matrix  database  with 𝑙 2 − norm.  The  nearest query vector used two kinds approach, first approach only used the nearest vector and the second approach used a new rule. The last for this reseach was a graph simulation, error calculated and computation time.
Keywords: Data-driven, Information Vector, Nearest Neighbor

## 1. PENDAHULUAN
Untuk mengendalikan sebuah robot atau sebuah sistem memerlukan algoritma controller yang tepat dan handal, salah satu metode yang sedang berkembang adalah metode data-driven predictive control dimana metode ini banyak sekali digunakan oleh industri kimia [1], [2]. Sebuah controller pada  penelitian  ini  didesain  dari  observasi input dan output [3]  yang  kemudian dipetakan  dan  diformulasikan  menjadi  sebuah  vektor  matematik.  Secara  umum  metode  yang digunakan  adalah  sebuah  pendekatan nonlinear dimana  analisis  secara  matematik  dalam identifikasi sistem tidak dilakukan. Metode ini sering juga disebut sebagai machine learning yang diterapkan  pada  sistem  kendali  dan  diharapkan  mampu  memberikan  solusi  yang  menjanjikan dalam menyelesaikan permasalahan dalam bidang sistem kendali. Secara khusus pada penelitian ini  penggunaan  algoritma Nearest  Neighbor (NN)  dipakai  dalam  melakukan  proses switching sistem kendali. Konsep dasar dari cara kerja algortima ini adalah mencari vektor terdekat yang berada  dalam database [4]. Database tersebut  atau  sering  juga  disebut  sebagai training  data
memiliki  vektor-vektor  yang  telah  disimpan  dan  kemudian  dihitung  jaraknya  dengan  vektor- vektor  informasi.  Untuk  penghitungan  jarak  antara  dua  vektor database dan  vektor  informasi menggunakan 𝑙2 − 𝑛𝑜𝑟𝑚 .
Selama proses pencarian dengan menghitung jarak vektor untuk mencari vektor terdekat dari database ,  semua input dan output terbaru  yang  diperoleh  dari  sistem  kemudian  disimpan kembali dan digunakan untuk proses penghitungan pada iterasi berikutnya. Untuk NN berperan dalam  menentukan input 𝑢(𝑘) untuk  sistem  yang  kemudian  menghasilkan output 𝑦(𝑘) . Keduanya input dan output tersebut  disimpan  kembali  seperti  yang  telah  dijelaskan  pada  awal paragraf.
Pada  penelitian  ini,  para  peneliti  juga  menggunakan  metode locality  sensitive  hashing (LSH) sebagai salah satu metode yang diharapkan mampu memberikan solusi lebih baik untuk mempersingkat waktu perhitungan oleh NN. Metode LSH adalah sebuah metode praklasifikasi yang  ditentukan  klasifikasinya  berdasarkan  nilai hash yang  tujuannya  untuk  mempersingkat pencarian  didalam database .  Kontribusi  utama  dari  penelitian  ini  adalah  memberikan  sebuah algoritma  alternatif  pada  dunia  sistem  kendali  untuk  sistem  yang  tidak  stabil  berupa  sebuah metode berbasis machine learning sebagai controller untuk sistem diskrit pada sistem yang tidak stabil.

## 2. METODE PENELITIAN
Pada Gambar 1 dapat dilihat secara jelas mengenai alur data pada penelitian ini :
Gambar 1. Deskripsi sistem kendali
Pada penelitian ini terdapat dua bagian, bagian pertama adalah proses pembentukan matriks database 𝐴 dan  proses  kedua  adalah  proses  yang  berlangsung  secara real-time dengan membandingkan  data  yang  didapat  dengan  matriks database untuk  menghasilkan 𝑢(𝑘) dan 𝑦(𝑘 + 1) . Untuk penjelasan masing-masing variabel akan dijelaskan pada bagian berikutnya pada  tulisan  ini.  Adapun  tahap-tahapan  yang  dilakukan  oleh  para  peneliti  pada  penelitian  ini adalah :
Inisialisasi. Menentukan nilai-nilai variabel berikut 𝑛, 𝑚, 𝑁, ℎ 𝑢 dan ℎ 𝑦 . Proses penentuan nilai- nilai variabel tidak ada acuan khusus semuanya ditentukan oleh operator. Untuk waktu dimulai dari 𝑘  =  0.
Langkah 1. Inisialisasi nilai 𝑘  ≤  𝑚𝑎𝑥(𝑛, 𝑚) , ulangi langkah ini. Masukkan nilai 𝑢(𝑘) bernilai diskrit yang telah ditentukan kemudian hitung nilai output 𝑦(𝑘). Setelah itu simpan semua nilai 𝑢(𝑘) dan 𝑦(𝑘) .  Karena  sistem  yang  digunakan  adalah  sistem  diskrit  maka  proses  kemudian pindah atau naik ke waktu berikutnya (𝑘  ←  𝑘  +  1).
Langkah 2. Berikutnya adalah sinyal referensi, pada penelitian ini sinyal referensi adalah sebuah
fungsi step 𝑟(𝑡) . Fungsi step dari sinyal referensi kemudian disusun menjadi sebuah vektor.
Langkah  3. Pada  langkah  satu  adalah  langkah-langkah  dalam  proses  pembuatan database . Setelah database terbentuk  berupa  matriks 𝐴 berikutnya  adalah  menggunakan  metode NN dan LSH dalam mengklasifikasi database dan vektor informasi b . Hasil dari proses tersebut adalah jumlah vektor yang terdekat dengan vektor informasi b , jika ditentukan lima terdekat maka data yang diambil adalah lima vektor terdekat. Satu dari lima vektor ini akan diambil sebagai solusi.
Langkah  4. Data-driven  predictive  control juga  diterapkan  [5]  dalam  mengumpulkan pendahuluan Input/Output data dari sistem untuk membangun sebuah controller .
a 𝑖 ≔ [ y 𝑝 (𝑘 𝑖 ) y 𝑓 (𝑘 𝑖 ) u 𝑝 (𝑘 𝑖 ) ] ∈ ℜ 𝑑 , 𝑖 = 1, 2, … , 𝑁,                                                          (1)
c𝑖  ≔ u𝑓(𝑘𝑖) ∈ ℜ ℎ 𝑢 , 𝑖 = 1, 2 , . . . , 𝑁,                                                        (2)
dimana
𝑑  =  𝑛  +   ℎ 𝑦 +  𝑚,                                                                      (3)
𝑦 𝑝 = [ 𝑦(𝑘 − 𝑛 + 1) ⋮ 𝑦(𝑘)
]                                                                     (4)
𝑢 𝑝 = [ 𝑦(𝑘 − 𝑚) ⋮ 𝑦(𝑘 − 1) ]                                                                            (5)
Untuk variabel 𝑝 adalah past data dan 𝑓 adalah future data . Ide dasar dari data-driven predictive control terdiri dari dua tahap :
 Pilih jumlah 𝑝 vektor terdekat 𝑎 𝑖𝑗 terhadap vektor query
𝐛 =   [ y 𝑝 (𝑘) r(𝑘) u 𝑝 (𝑘) ]                                                                                 (6)
Vektor b adalah  vektor  informasi  yang  terbentuk  secara real-time dan  sebuah  sinyal referensi r (𝑘) yang diletakkan di tengah vektor. Untuk sinyal referensi dapat dilihat pada kajian pustaka.
 Kemudian  generalisasi  terhadap input yang  akan  digunakan  sebagai weights 𝑥 𝑖𝑗 untuk mendapatkan nilai input 𝑢 untuk sistem, input yang diharapkan didapat dari (7):
𝑢̂ 𝑓 (𝑘) = [ 𝑢̂(𝑘|𝑘) ⋮ 𝑢̂(𝑘 + ℎ 𝑢 − 1|𝑘) ]                                                            (7)
= ∑ 𝑥 𝑖𝑗 u 𝑓 (𝑘 𝑖𝑗 ) = ∑ 𝑥 𝑖𝑗 c 𝑖𝑗 𝑘 𝑗=𝑖 𝑘 𝑗=1
(8)
Langkah  5. Aplikasikan  element  pertama 𝑢̂(𝑘|𝑘) dari 𝑢̂ 𝑓 (𝑘) ke  sistem 𝑢(𝑘). Naikkan  waktu diskrit (𝑘) sebagai berikut 𝑘  ←  𝑘  +  1 dan kembali ke Langkah 3 .
Langkah 6. Pada langkah terakhir adalah proses simulasi pembuatan grafik ( plotting ) dari output 𝑦(𝑘) dan  referensi r(𝑘). Untuk  menghitung  tingkat error dari  kedua  grafik  tersebut menggunakan MSE ( Mean Square Error ) dimana semakin kecil nilainya dalam artian mendekati nol semakin baik hasilnya.
Nakpong  dan  Yamamoto  [6],  pada  penelitian  mereka  menggunakan  metode  data-driven yang  digunakan  untuk  mengendalikan  robot  Two-Wheeled  (e-nuvo).  Robot  tersebut  bergerak berdiri dengan menggunakan dua buah roda penopang sebagai sebuah pendulum untuk membuat robot  tersebut  seimbang  sehingga  dapat  bergerak  tegak  kedepan  dan  belakang.  Pada  paper  di jelaskan  bahwa  mereka  membangun  sebuah  database  yang  dipakai  sebagai  data-driven  untuk mengendalikan robot e-nuvo.
Peneliti  pada  penelitian  ini  Herlambang  Saputra  dan  Shigeru  Yamamoto  [7], membandingkan tiga buah metode yaitu LWA ( Locally Weighted Average ), Least-norm solution , dan 𝑙1 − 𝑛𝑜𝑟𝑚 optimization [8],  [9].  Ketiga  metode  tersebut  menggunakan data-driven predictive  control dalam  mencari controller  output 𝑢(𝑘), hanya  saja  ketika database sudah terbentuk, algoritma yang digunakan untuk mencari input sistem masing-masing menggunakan algoritma yang berbeda.
Konaka [10] dalam penelitiannya memperkenalkan algortima neighbor sebagai salah satu solusi  untuk controller 𝑢 .  Ada  beberapa  langkah  untuk  mendapatkan  nilai 𝑢(𝑘). Pada  tahap pertama  kali  yang  dilakukan  adalah  memperoleh training  data ,  sebuah training  data diambil secara  random  dari  lima input 𝑢(𝑘) secara  terbatas  dan  kemudian  mendapatkan output 𝑦(𝑘) . Langkah  berikutnya  menyusun  vektor  tersebut  dan  kemudian  menormalisasikan  semua  vektor yang terlibat. Tahap kedua adalah mencari vektor informasi yang diambil secara real-time . Pada Gambar  2,  terdapat  gambar  bintang  yang  mengindikasikan  sebuah  informasi  vektor,  untuk gambar-gambar yang lainnya seperti persegi, persegi kosong dan belah ketupat masing-masing mengindikasikan  sebuah class yang  terdapat  dalam database .  Sedangkan  lingkaran  dalam  dan lingkaran luar menggambarkan tentang daerah sekitar vektor informasi ( neighbor ).
Gambar 2. Ilustrasi dari nearest neighbor
Sebuah ilustrasi gambar tentang struktur predictive control dapat dilihat pada Gambar 3.
Gambar 3. Gambaran Umum Predictive Control
Bentuk  standar  digunakan  karena  mampu  mengakomodir  antara  teori  sistem  linear  dan  sistem kendali [11]. Ada beberapa hal yang dapat terjadi pada waktu 𝑘 :
 Tujuannya adalah untuk memperoleh nilai 𝑦(𝑘)
 Untuk memperoleh input sistem dibutuhkan nilai 𝑢(𝑘)
 Kemudian gunakan input 𝑢(𝑘) , tujuannya untuk mendapatkan nilai predictive 𝑦(𝑘 + 1)
Berdasarkan  asumsi,  waktu delay bisa  terjadi  antara 𝑦(𝑘) dan  penggunaan 𝑢(𝑘) dikarenakan perhitungan 𝑢(𝑘) untuk mendapatkan 𝑦(𝑘  +  1) bukan untuk mendapatkan nilai 𝑦(𝑘).

## Gambaran Umum Sistem
Sebuah  Sistem  pada  Gambar  1  dapat  dimodelkan  menggunakan  persamaan  matematika  ( state space ) seperti pada persamaan (9) :
𝑥(𝑘 + 1) = 𝐴𝑥(𝑘) + 𝑢(𝑘)
𝑦(𝑘) = 𝐶 𝑦 𝑥(𝑘) 𝑧(𝑘) = 𝐶 𝑍 𝑥(𝑘) (9)
𝑥 ∈ ℜ 𝑛 𝑥 , 𝑦 ∈ ℜ 𝑛 𝑦 , 𝑢 ∈ 𝑈 = {𝑢 (1) , … , 𝑢 (𝑁) } (10)
dimana 𝑀 𝑦 dan 𝑀 𝑢 mendefenisikan  tentang  memori  yang  telah  disimpan  pada  proses sebelumnya.  Untuk  variabel-varibael 𝑥, 𝑢, dan 𝑦 adalah  sebuah state dalam state  space , input vektor dan output vektor, secara berurutan. Sedangkan 𝑛 adalah dimensional pada state vektor dan 𝑘 menunjukan index waktu.  Pada  variabel 𝑦 dan 𝑧 untuk  kasus  yang  lebih  besar terkadang terjadi tumpang tindih maka diasumsikan bahwa 𝑦  ≡  𝑧 , kemudian 𝐴 adalah sebuah matriks dan 𝐶 didefenisikan untuk 𝐶𝑦 dan 𝐶𝑧.

## Matriks Database dan Elemen Terkait
Sebuah  matriks  didesain  untuk  menggantikan  sebuah  model,  matriks  tersebut  adalah  matriks database 𝐴 . Untuk pembuatan database dibutuhkan data dari sebuah proses pendahuluan berupa input/output . Vektor-vektor dalam database Y dan U dapat diexpresikan oleh persamaan (11),
𝑌(𝑘) = [𝑦(𝑘) 𝑇 , 𝑦(𝑘 − 1) 𝑇 , . . . , 𝑦(𝑘 − 𝑛𝑎) 𝑇 ] 𝑇 ∈ ℜ (𝑛 𝑎 +1)𝑛 𝑦 ,
𝑈(𝐾) = [𝑢(𝑘 − 1) 𝑇 , . . . , 𝑢(𝑘 − 𝑛𝑏) 𝑇 ] 𝑇 ∈ 𝑈 𝑛 𝑏 (11)
Pada persamaan (11) terdapat variabel 𝑛 𝑎 yang merupakan jumlah contoh database output dan 𝑛 𝑏 adalah  jumlah  contoh database  input .  Untuk 𝑢(𝑘) tidak  terdapat  dalam 𝑈(𝑘) dikarenakan nilai 𝑢(𝑘) ditentukan oleh controller.
Untuk  menghasilkan database ,  operator  harus  membuat  sebuah  asumsi  terhadap  beberapa parameter  seperti 𝑙 (panjang  data), 𝑚 (jumlah  dari output ), 𝑛 (jumlah  dari input )  dan 𝑃 (jumlah dari  beberapa  langkah  ke  depan).  Parameter-parameter  tersebut  harus  didefenisikan  sebelum proses  pembuatan  matriks.  Tujuannya  agar  diketahui  dimensi  dari  matriks 𝐴 dan  sebagai deklarasi memori di komputer.
Pada langkah pertama adalah pembuatan vektor yang terdiri dari 𝑢 𝑓 , 𝑦 𝑓 dan 𝑟(𝑘) adalah sinyal referensi. Variabel 𝑃 menunjukkan beberapa langkah ke depan yang ditentukan oleh operator dan untuk desain vektornya dapat dilihat pada :
𝑢 𝑓 = [ 𝑢(𝑘 + 1) 𝑢(𝑘 + 2) ⋮ 𝑢(𝑘 + 𝑃) ]                                                                              (12)
𝑦 𝑓 = [ 𝑦(𝑘 + 1) 𝑦(𝑘 + 2) ⋮ 𝑦(𝑘 + 𝑝) ]                                                                              (13)
Sedangkan  referensi  sinyal r(𝑘) digunakan  pada  saat  proses  penghitungan  vektor  informasi adalah :
𝑟(𝑘 + 1) = [ 𝑟(𝑘 + 1) 𝑟(𝑘 + 2) ⋮ 𝑟(𝑘 + 𝑃) ]                                                                              (14)
Pada  bagian  ini  parameter 𝑙, 𝑚 dan 𝑛 menghasilkan  vektor-vektor  berikut  (15),  (16)  dan  (17). Simbol 𝑦𝑝 adalah past  output , 𝑢𝑝 adalah past  input .  Semua  data  dihasilkan  dari  eksperimen pendahuluan :
𝑦 𝑝 (𝑘) = [ 𝑦(𝑘 − (𝑚 − 1)) ⋮ 𝑦(𝑘) ]                                                                (15)
𝑢 𝑝 (𝑘) = [ 𝑢(𝑘 − 𝑛)
⋮ 𝑢(𝑘 − 1) ]                                                                             (16)
Langkah berikutnya adalah menghitung nilai weight matriks 𝜓 1 . . . 𝜓 𝑘 dan weight matriks terdiri dari tiga vektor. Matriks tersebut adalah matriks 𝜓 𝑙 dan bisa dilihat pada persamaan (17) :
𝜓 𝑙 = [ 𝑦 𝑙 𝑝 𝑦 𝑙 𝑓 𝑢 𝑙 𝑝 ]                                                                                        (17)
Matriks 𝜓𝑙 adalah  matriks  yang  cukup  penting  dan  matriks 𝜓𝑙 adalah 𝐴 .  Matriks  tersebut digunakan untuk dihitung dengan vektor informasi 𝜑(𝑘) untuk mencari nilai vektor 𝑥 . Langkah terakhir adalah membuat matriks database 𝑀 dan matriks 𝑀 terdiri dari dua elemen 𝜓 𝑙 dan input 𝑢 𝑓 . Pada matriks ini terdapat penambahan parameter 𝑢 𝑓 , tujuannya untuk memesan tempat pada memori komputer. Tetapi ketika proses penghitungan tidak menggunakan 𝑢 𝑓 dan kegunaan dari 𝑢 𝑓 akan digunakan pada matriks 𝐶 . Kesimpulannya database digunakan untuk memprediksi nilai 𝑢̂(𝑘  +  1).
Pada database dan vektor informasi terdapat Locality Sensitive Hashing (LSH) [12] atau sering disebut fungsi hash dan digunakan untuk mengklasifikasikan kedua buah vektor, baik vektor pada database dan vektor informasi, adapun fungsi hash tersebut adalah :
ℎ: ℜ 𝑑 → 𝑍, ℎ 𝑎,𝑏 (𝑣) = ⌊ 𝑎 𝑇 𝑣 + 𝑏 𝑟 ⌋                                                          (18)
dimana 𝑟  >  0 adalah  sebuah  parameter  dari  fungsi hash , 𝑎  ∈   ℜ 𝑑 dipilih  secara  bebas  dari sebuah  distribusi  normal, 𝑏 bernilai skalar  dari  sebuah distribusi  normal  dan ⌊𝑥⌋ adalah  sebuah fungsi floor .

## Vektor Informasi
Untuk mencari weights 𝑥𝑖𝑗 pada [5], dapat diformulasikan sebagai:
𝐴𝑥  =  𝐛,                                                                         (19)
dimana
𝐴 = [a 𝑖1 a 𝑖2 ··· a 𝑖k ] ∈ ℜ 𝑑×𝑘 ,                                                          (20)
𝑥 = [ 𝑥 𝑖1 𝑥 𝑖2 ··· 𝑥 𝑖𝑘 ] 𝑇 ∈ ℜ 𝑘 .                                                           (21)
Pada database adalah proses pembuatan matriks 𝐴 dan vektor informasi adalah proses pembuatan vektor b yang  terjadi  secara real-time .  Untuk  pembuatan  proses  vektor b telah  dibahas  pada persamaan (6) pada metode penelitian.

## 3. HASIL DAN PEMBAHASAN

## 3.1 Sistem Tidak Stabil dan Sinyal Referensi
Pada  penelitian  ini  penulis  memilih  sebuah  sistem  yang  tidak  stabil,  sistem  tersebut direpresentasikan oleh sebuah persamaan matematika :
𝑦(𝑘) =  𝑦(𝑘 − 1) − 0.16 ∗ 𝑦(𝑘 − 2) + 𝑢(𝑘 − 1) − 1.5 ∗ 𝑢(𝑘 − 2)                     (22)
dimana 𝑘 adalah waktu diskrit, 𝑢 adalah input dan 𝑦 adalah output . Untuk sinyal referensi yang dipakai adalah sebuah fungsi step dan fungsi tersebut adalah :
𝑟(𝑘) = { 0.5,              0 ≤ 𝑘 ≤ 200 −0. 5,    201  ≤ 𝑘 ≤ 400 0.8, 401  ≤ 𝑘 ≤ 600 −0.8,      601 ≤ 𝑘 ≤ 800 0,          801  ≤ 𝑘 ≤ 1000 (23)

## 3.2 Matriks Database
Pada tahap awal peneliti melakukan inisialisasi beberapa variabel awal seperti 𝑛 𝑎 = 3, 𝑛 𝑏 = 3, 𝑛 𝑓 = 2, 𝑟 = 1.5 dan 𝑘 = 1000. Variabel tersebut ditetapkan untuk mendapatkan berapa jumlah vektor pada training data yang akan terbentuk, dalam penelitian ini akan terbentuk vektor dengan ordo 8 × 1 sebanyak 1000 data.
Langkah berikutnya adalah memilih input 𝑢 untuk sistem yang diambil secara acak. Adapun input yang  digunakan  adalah 𝑢(𝑘)   =   {−1, −0.2, 0, 0.2, 1} .  Grafik input 𝑢 dan output 𝑦 dapat  dilihat pada Gambar 4 dan Gambar 5.
Gambar 4. Random Input 𝑢 pada Database
Gambar 5. Random Output 𝑦 pada Database
Apabila input dan output telah  terbentuk,  langkah  selanjutnya  menyusun input dan output kedalam sebuah vektor sebanyak 1000 buah yang disimpan di dalam matriks database . Setelah itu hitung fungsi hash yang berfungsi untuk mempercepat perhitungan. Untuk fungsi hash dapat dilihat pada Gambar 6.
Gambar 6. Fungsi Hash Pada Training Data

## 3.3 Vektor Informasi
Pada  bagian  ini,  matriks database sudah  terbentuk  yaitu  matriks 𝐴 dengan  ordo  8  ×  1000. Beberapa variabel juga harus ditentukan agar jumlah vektor pada vektor informasi sama dengan vektor  pada training  data .  Serta  ada  beberapa  variabel  tambahan  seperti 𝑎 dan 𝑏 yang  dipilih secara acak serta nilai 𝑟 = 1.5 yang berguna dalam penghitungan fungsi hash .
Pada training data fungsi hash dihitung setelah mendapatkan nilai 𝑦 tetapi pada vektor informasi nilai  fungsi hash dihitung  untuk  mendapatkan  nilai 𝑦(𝑘  +  1) dimana  nilai 𝑦(𝑘) sudah  di dapatkan pada perhitungan sebelumnya 𝑦(𝑘 –  1) secara real time dari waktu ke waktu.
Untuk  mendapatkan  vektor  terdekat  pada  setiap  waktu  dilakukan  proses  penghitungan  jarak antara vektor informasi dan vektor database . Langkah awal pada waktu 𝑘 adalah membandingkan satu buah vektor pada vektor informasi dengan seribu vektor pada vektor database dimana vektor terpendek yang memiliki fungsi hash yang sama diambil enam angka terdekat. Adapun formula penghitungan jarak pada software Matlab dapat dihitung dengan :
d = norm((normalvektorvc(:, k ) − (normalvektorvl(:, n ))), 2); (24)
dimana d adalah jarak antara kedua vektor, normalvektorvc adalah vektor pada training data dan
normalvektorvl pada vektor informasi. Variabel 𝑘 dan 𝑛 adalah variabel waktu pada training data dan vektor informasi. Untuk fungsi hash dapat dilihat pada Gambar 7.
Gambar 7. Fungsi Hash Pada Vektor Informasi
Pada  penelitian  ini  penulis  melakukan  teknik  pemilihan 𝑢 terbaik  menggunakan  dua  buah algoritma.  Algoritma  pertama  penulis  hanya  memakai  vektor  terdekat  yang  diambil  dan  yang kedua penulis menerapkan sejumlah aturan yang mungkin dimana vektor terdekat belum tentu yang diambil. Aturan tersebut adalah :
• Jika ada enam nilai vektor terdekat di dalam keranjang maka untuk referensi yang bernilai positif, nilai 𝑢 terdekat yang bernilai negatif diambil. Jika tidak ada yang bernilai negatif di dalam enam tetangga terdekat, maka kita memilih 𝑢 = 0.
• Begitu  juga  sebaliknya,  jika  referensi  bernilai  negatif  maka 𝑢 terdekat  positif  yang diambil. Jika tidak ada yang bernilai positif di dalam enam tetangga terdekat, maka kita memilih 𝑢 = 0.
• Untuk referensi yang bernilai nol, maka nilai 𝑢 yang dipilih adalah nol.
Hasil akhir dari penelitian ini adalah output 𝑦 yang dapat dilihat pada Gambar 8 dan Gambar 9. Grafik output 𝑦 yang menggunakan algoritma pertama dapat dilihat pada Gambar 8 dan Gambar 9 menggunakan algoritma kedua.
Gambar 8. Output 𝑦 dari Sistem dengan algoritma pertama
Gambar 9. Output 𝑦 dari Sistem dengan algoritma kedua
Indikator  MSE  dan  waktu  komputasi  dipakai  untuk  menghitung  perbandingan  kedua  buah algoritma. Berdasarkan Gambar 8 dan 9 hasil yang diperoleh seperti pada Tabel 1.
Tabel 1. Perbandingan Output 𝑦 Algoritma MSE Waktu Komputasi 1 0.136234 5.732332 detik 2 0.078508 9.472880 detik

## 4. KESIMPULAN
Terlihat jelas jika kedua buah algoritma tersebut dapat mengikuti sinyal referensi dengan baik. Algorima satu memberikan nilai MSE lebih besar dari algoritma 2 tetapi dalam hal waktu komputasi memberikan waktu yang lebih pendek dari algoritma 2.

## UCAPAN TERIMAKASIH
Para penulis pada paper ini mengucapkan terima kasih kepada Politeknik Negeri Sriwijaya atas  bantuan  hibah  Penelitian  yang  dibiayai  oleh  Dana  PNPB  Polsri  Nomor. 6434/PLG.2.1/PL/2017 pada Tanggal 7 Agustus 2017.

## DAFTAR PUSTAKA
[1] C. E. Garcia, D. M. Prett, and M. Morari, “ Model Predictive Control : Theory and Practice a Survey,” Automatica , vol. Vol.25, no. Iss.3, pp. 335–348, 1989.
[2] K.  Fujiwara,  M.  Kano,  S.  Hasebe  and  A.  Takinami,  “  Soft-sensor  development  using correlation-based  just-in-time  modeling,” AIChE  Journal ,  vol.  55,  no.  7,  pp.  1754–1765, 2009.
[3] A. Stenman, Model on Demand : Algorithms, Analysis and Applications, PhD thesis . No. 571, Department of Electric Engineering Linkoping University, 1999.
[4] J.  Ohta  and  S.  Yamamoto,  “  Database-Driven  Tuning  of  PID  Controllers,” Trans.  of  the
Society of Instrument and Control Engineers , vol. 40, pp. 664– 669, June 2004.
[5] S. Yamamoto, “ A new model-free predictive control method using input and output data,” in Advanced  Material  Research ,  vol.  1042  of 3rd  International  Conference  on  Key Engineering  Materials  and  Computer  Science  (KEMCS  2014) ,  (Singapore),  pp.  182–187, Trans Tech Publication, August 2014.
[6] N. Nakpong and S. Yamamoto, “ Just-In-Time predictive control for a two-wheeled robot,” in 2012  Tenth  International  Conference  on  ICT  and  Knowledge  Engineering ,  no.  3, (Thailand), pp. 95–98, Nov. 2012.
[7] Saputra  and  Yamamoto,  “  Comparative  study  of  model-free  predictive  control  and  its database  maintenance  for  unstable  system,” SICE  Journal  of  Control,  Measurement  and System Integration , vol. 8, pp. 390–395, Nov 2015.
[8] S. Yamamoto, “ A model-free predictive control by 𝑙 1 -minimization,” in Proceedings of the 10th Asian Control Conference , ASCC, 2015.
[9] A. Y. Yang, A. Ganesh, Z. Zhou, S. Sastry, and M. Y, “ A review of fast 𝑙 1 -minimization algorithms for robust face recognition, http://arxiv.org/abs/1007.3753 ,” 2010.
[10] E.Konaka,“ Design of Discrete Predictive Controller Using Approximate Nearest Neighbor Method,” in Proceedings of the 18th IFAC World Congress , (Milano (Italy)), pp. 10213– 10218, Aug. 2011.
[11] J. Maciejowski, “ Predictive Control with Constraints ,” London: Prentice Hall, 2002.
[12] M. Datar, N. Immorlica, P. Indyk, and V. S. Mirrokni. Locality-sensitive hashing scheme based  on  p-stable  distributions. In  proc.  of  the  20th  ACM  Symposium  on  Computational Geometry (SCG’04) , Brooklyn, New York, USA, pages 253–262, 2004.