# Tutorial Summary 2
## Sekuensi RL
Dalam RL, learning dilakukan dengan memanfaatkan empat elemen pada "Environment", "Agent", "Action", dan "Reward". Environment adalah tempat/lingkungan dari agent, Agent adalah entity yang melakukan sesuatu, Action adalah hal yang dilakukan oleh agent, dan Reward adalah kompensasi terhadap action. Sekuensi dari RL dilihat di gambar berikut.

1. Untuk setiap waktu step t, agent mengamati state saat ini dari environment
2. Agent memilih action dengan Q value tertinggi dari action yang dapat agent lakukan di state saat ini
3. Agent menerima reward dari hasil baik atau buruknya action tersebut
4. Q value pada state st dan action at diperbarui
## Eksplorasi Labirin dengan RL
contoh RL pada masalah eksplorasi labirin:

Orang pada S1 merupakan Agent
Setiap kotak dari S1 hingga S25 merupakan state
arah kanan, kiri, atas, dan bawah merupakan action
Setiap setan (S5, S7, S8, S14, S17, S19, S20, dan S22) merupakan reward negatif
Uang (S25) merupakan reward positif
Lainnya tidak diberikan reward
Pada kasus ini, RL adalah untuk mendapatkan reward maksimal (uang) yang metika mencapai S25 tanpa melewati setan
## Q Table
Kalimat di atas dapat disebut juga fungsi RL adalah untuk memperbarui Q value, yang merupakan indeks dari value dari suatu action, dan untuk menyelesaikan table Q value yang memaiksimalkan reward yang bisa didapat. Tabel tersebut menunjukkan state yang belum sama sekali statenya berubah (masuk proses learn)

Tabel tersebut memberi value ke setiap action pada setiap state. Contoh: pada S1, value dari kanan, atas, kiri, dan bawah adalah 0.1, 0.3, 0.2, dan 0.5, secara berurutan. Ternyata yang paling baik adalah turun ke bawah.
Pada contoh ini, Q-Value table diselesaikan dengan RL.
## Q-Learning
Terdapat beberapa metode untuk memperbarui Q-Value, dan pada contoh ini menggunakan Q-Learning. Persamaan Q learning adalah

Pada persamaan di atas alpha, gamma, dan r adalah parameter utama.
1. Laju dari perbaruan Q value diamati dengan menggunakan contoh yang nyata
2. Agent mengamati state saat ini di S1
3. Dari Tabel tersebut action untuk ke bawah dipilih karena Q value tertinggi
4. Karena destinasi transisi menjadi S6, value 0 diterima sebagai reward
5. Q valuenya diperbarui berdasarkan reward tersebut

Dengan mengulangi langkah di atas tabel Q-Value mendekati optimal.
## Hasil learning
tabel Q-Value setelah learning dilakukan adalah

Berdasarkan tabel tersebut agent memilih jalur

## Vivado
### Pembuatan accelerator sederhana
Dijelaskan pembuatan accelerator sederhana dengan operasi vector dot product
Spesifikasi Desain:
* Input: 2 Vektor (a dan b) dengan jumlah n element, masing-masing 8 bit integer. (asumsi n kelipatan 16)
* Output: 1 besaran skalar 32 bit integer.
* Control: Addr vektor A, Addr vektor B, Addr skalar C, jumlah read (n div 16)
* Dilakukan pada board FPGA xilinx
* Perancangan kode PS menggunakan framework pynq
* Menggunakan Vivado 2020.1 dan Vitis HLS 2020.1
* Menggunakan library HLS tambahan dari [Github]([https:/](https://github.com/definelicht/hlslib)/)
Arsitektur

Representasi Vektor

Modul Reader/Writer

Elemen Wise Multiplier

Adder Tree

Accumulator
