# Catatan Minggu 3- Menerapkan Proposed Method, Membaca Lebih Detail Referensi Utama
###### tags: `logbook` `fasttrack` `Q-Learning`
> Source: T. Chu, J. Wang, L. CodecĂ and Z. Li, "Multi-Agent Deep Reinforcement Learning for arge-Scale Traffic Signal Control," in IEEE Transactions on Intelligent Transportation Systems, vol. 21, no. 3, pp. 1086-1095, March 2020, doi: 10.1109/TITS.2019.2901791.
[TOC]
# Current Method
Mengambil referensi dari https://github.com/cts198859/deeprl_signal_control dan https://github.com/cts198859/deeprl_network yang diberikan oleh paper referensi [ini](https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8667868).
# Main Theory for MA2C
Laying the foundation for IA2C (extending IQL to the A2C method). They also propose 2 approaches to stabilize IA2C as MA2C. The novel approach was the spatial discount factor to scale down signals from agent far away. **each agent focuses more on the local traffic condition**
* In IA2C, each agent learns its own policy $\pi_{\theta_i}$ and its corresponding value function $V_{\omega_i}$
* Global reward & state shared.
* Local return depends on $\gamma^{t_B-t}$, the value function under certain policy, and estimated return $R_t$
A simpler and more common alternative is independent Q-learning (IQL) [18], in which each local agent learns its own policy independently, by modeling other agents as parts of the environment dynamics
## Implementation MA2C
:::info
### MDP Settings
* There is $T_s$ (period of simulated traffic), $\triangle t$ as interaction period, $t_y$ as yellow time after each switch of traffic signal
* Total steps defined as $T= T_s/\triangle t$
* **Action**: possible phases (red-green combinations of traffic light). $U_i$ is the set of all possible phases. Each action lasts for $\triangle t$ at each step.
* **State**: taking into account cumulative delay and total number of approaching vehicles each incoming lane (50 m from intersection). $l$ is each incoming lane of intersection i. $wait$ is in seconds and $wave$ is in vehicle.
$s_{t,i}= (wait_t[l],wave_t[l])$
* **Reward**: a good reward should be spatially decomposable and frequently measurable. $queue$ measure queue length in each incoming lane. $wait$ measure the cumulative delay. Constant $a$ is in veh/s as a tradeoff coefficient.

```
```
### Architecture DNN
* the agent must not only know current state. Ideally we want to input all historical states --> but increase in state dimension. Hence, use LTSM.
* LTSM as the last hidden layer.
* There are 3 Fully Connected (FC) layers for each wave & wait states, and also policies.

:::
:::success
### Bagaimana Agent Berkomunikasi?
Dalam paper ini, disebutkan novelty yang dikontribusikan untuk mengaddress masalah-masalah MARL.
* Using spatial discount factor to scale down effects of agents that are more far away
* Cooperative game --> ada network, sebuah agent melakukan action, sharing global reward.
* Ada joint action space yang membuat centralized RL infeasible.
* Asumsi global Q-function decomposable, asumsijuga tiap local agent bisa mengamati global state (global state itu apa?)
* Salah satu approach adalah Coordinated Q-Learning, iterative message passing / control sync untuk neighboring agents --> mencapai tradeoff baik antara optimality dan scalability
* Arti lainnya adalah setiap local Q-function merupakan local Q-function ditambah sumasi message neighborin agents.
* Message dari neighbor terkait dampak dari action yang dilakukan agent.
* IQL menformulasikan bahwa setiap local Q-function hanya bergantung dari local action.
* Bisa scalable, tapi tanpa message passing suffers from Partial Observability & non-stasioner MDP.
* Why? It Implicitly formulates other agents behavior as part of the environment dynamics while their policies are continuously updated during training.
* To address this issue, **each local agent needs the information of other agents policies **
* What I get?
* Message passing perlu diterapkan, tapi claimnya kalau IQL dimana Q-function hanya bergantung terhadap local action bisa scalable --> but suffers from PO & Non-Stationary MDP
* Efek dair Non-Stationary MDP sebenarnya apa?
* Ternyata buat mengaddress 2 issue tadi, tiap local agent butuh informasi policy dari agent lainnya --> Bukan state?
* Ada dua cara biar bisa tau policy, either including policy network parameter dari agent lain untuk fitting local Q-function atau menambahkan fingerprint
* Masalahnya?
* Kayaknya ini untuk Deep Reinforcement Learning, bukan Q-Learning biasa. Ada mention network parameter, ada mention experience replay juga
* Harusnya kalau mengadopsi idenya saja gapapa -> policy agent lain harus diketahui untuk address PO & Non-Stationary MDP
:::
## Landasan Matematis Metode
Rumus dan persamaan yang diberikan pada paper untuk dasar penggunaan metodenya. Catatan bisa dilihat di [sini](https://hackmd.io/@JaluRW49/IQL)
### Independent A2C
## Informasi Tambahan
Nampaknya untuk mengerti lebih dalam harus membaca paper IQL karena disebut beberapa kali. Summary bisa dilihat di [IQL](https://hackmd.io/@JaluRW49/IQL).
## Playing With the Algorithm
Supporting content:
* https://www.simplilearn.com/tutorials/machine-learning-tutorial/what-is-q-learning
* https://www.freecodecamp.org/news/a-brief-introduction-to-reinforcement-learning-7799af5840db
## Dokumentasi Algoritma
### Menjalankan Program
Berdasarkan file readme yang telah diberikan, langkah menjalankan program:
* Mendefinisikan seluruh hyperparameter di dalam config file dari directory [config_dir]
* Membuat directory untuk base experiments, [base_dir]
* Memanggil file build_file.py di dalam folder [environment_dir]/data/ untuk membuat generasi SUMO network small_grid dan large_grid environments
* Untuk melatih agent baru (dengan setting hyperparameter yang sudah digunakan), jalankan kode di bawah. [agent] diambil dari ia2c, ma2c, iqll, dan iqld. Dipastikan setting no_test digunakan karena bisa memperlama proses trainning.
```
python3 main.py --base-dir [base_dir]/[agent] train --config-dir [config_dir] --test-mode no_test
```
* Untuk membuka Tensor Board selama training (melihat training process), jalankan
```
tensorboard --logdir=[base_dir]/log
```
* Untuk mengevaluasi dan membandingkan agents jalankan kode di bawah. Output evaluasi didapatkan dari directory [base_dir]/eva_data. Pastikan evaluation seeds berbeda dengan yang digunakan saat training. Secara default, inference policy A2C adalah stokastik sedangkan Q-Learning deterministic.
```
python3 main.py --base-dir [base_dir] evaluate --agents [agents] --evaluation-seeds [seeds]
```
* Untuk menvisualisasikan behavior dari agent jalankan kode berikut. Direkomendasikan untuk hanya memiliki satu agen dan satu evaluation seed untuk menjalankan demo.
```
python3 main.py --base-dir [base_dir] evaluate --agents [agent] --evaluation-seeds [seed] --demo
```
Setelah kode yang diberikan dilihat, nampaknya di file main.py tidak terjadi function call. Hanya ada definisi fungsi-fungsi utama parse_args(), train(), evaluate(), dan evaluate_fn().
:::warning
Dari file ReadMe, disebutkan masalah reproducibility dari grafik yang ada pada paper karena ada perubahan versi SUMO (di paper menggunakan versi 0.32.0). Sekarang digunakan SUMO versi 1.1.0 ke atas. Diberikan referensi plot average reward. 
:::

### File Config

Folder config digunakan untuk mengatur parameter-parameter yang digunakan untuk model agent yang ada. Setiap file config biasanya berisi konfigurasi untuk parameter environment, training, dan model agent.
* Dari training config, total step $10^6$, test step $2\times 10^4$. Semua agent punya nilai yang sama untuk config ini.
* Nilai gamma $\gamma$ merupakan parameter di bagian model_config, untuk semua agent di set ke 0.99
* Durasi minimum yellow diatur pada env_config.
### Agents
Di folder agents ada file untuk model agent, policy, dan beberapa fungsi pembantu.
Mereka awalnya membuat Class dasar A2C dan memanfaatkan fitur Inheritance dari OOP untuk membuat Class IA2C, MA2C, dan IQL.
### Environments
Di file utama env.py, ada Class PhaseSet, PhaseMap, Node, dan TrafficSimulator.
### Policy
Ada Class dasar ACPolicy dan QPolicy.
## Proposed Method
### Algorithm
### Flowchart