b belajar.myudak

Satu langkah value iteration

Diberikan model lingkungan lengkap (MDP): T[s][a] adalah list hasil yang mungkin [p, s2, r, done], yaitu peluang p pindah ke state s2 dengan reward r, dan done = 1 jika episode berakhir. Lakukan satu sapuan value iteration:

Vbaru(s)=max⁡a∑(p,s′,r,d)p [r+γ V(s′) (1−d)]V_\text{baru}(s) = \max_a \sum_{(p, s', r, d)} p\,\bigl[r + \gamma\, V(s')\,(1-d)\bigr]

Semua state memakai V lama (update serentak).

Persamaan Bellman

Nilai optimal sebuah state memenuhi:

V∗(s)=max⁡aE[r+γV∗(s′)]V^*(s) = \max_a \mathbb{E}\bigl[r + \gamma V^*(s')\bigr]

“Nilai di sini = reward terbaik yang bisa didapat sekarang ditambah nilai tempat yang akan dituju.” Value iteration menerapkan persamaan ini berulang kali. Setiap sapuan, informasi reward merambat satu langkah lebih jauh, dan untuk γ<1\gamma < 1 hasilnya dijamin konvergen ke V∗V^*.

Keterbatasannya

Value iteration butuh model lengkap TT: semua peluang dan reward harus diketahui. Pada sebagian besar masalah nyata (robot, game), model ini tidak tersedia. Q-learning dan TD-learning menyelesaikannya dengan belajar dari pengalaman (sampel transisi), tanpa model.

Penjelasan

Yang diminta. List V_baru sepanjang V.

Langkah di kode: untuk setiap state s, untuk setiap aksi (setiap outcomes di T[s]), jumlahkan p * (r + gamma * V[s2] * (1 - done)). Ambil max atas semua aksi.

Cek case 1. State 0 punya dua aksi: ke state 1 dengan reward 1 (nilai 1+0.9⋅0=11 + 0.9 \cdot 0 = 1), atau tetap dengan reward 0 (nilai 0). Maksimumnya 1. State 1 hanya punya aksi yang mengakhiri episode dengan reward 0, jadi nilainya 0.

Case dengan done. Faktor (1 - done) membuat masa depan tidak dihitung setelah episode berakhir, walaupun V[s2] bukan nol.

Yang dikembalikan: list float.

Topik
rlbellmandynamic programming
Petunjuk 1

Untuk setiap aksi, hitung nilai harapan: jumlah p · (r + γ · V[s2]) atas semua hasil. Jika done, masa depan bernilai 0.

Petunjuk 2

V_baru[s] adalah nilai terbesar di antara semua aksi. Pakai V lama untuk semua state (jangan update di tempat).

Python 3.14 · NumPy

Pengaturan editor

Ukuran font
Ukuran huruf di editor.
Ukuran tab
Lebar indentasi. Otomatis: 2 spasi untuk TypeScript, 4 untuk Python.
Key bindings
Ganti ke mode Vim.
Nomor baris relatif
Nomor baris dihitung dari posisi kursor (berguna untuk gerakan Vim).
Word wrap
Baris panjang dilipat agar muat di lebar editor.
IntelliSense
Saran kode otomatis saat mengetik (Ctrl+Spasi tetap bisa dipakai saat mati).

Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.