b belajar.myudak

Pengendali PID diskret

Implementasikan pengendali PID waktu diskret. Untuk setiap galat ete_t (target dikurangi nilai terukur), hitung

ut=kp et+ki∑j≤tej Δt+kd et−et−1Δtu_t = k_p\,e_t + k_i \sum_{j \le t} e_j\,\Delta t + k_d\,\frac{e_t - e_{t-1}}{\Delta t}

dengan suku turunan di langkah pertama bernilai 0.

errors = [1, 1, 1], ki = 1, dt = 0.1  →  [0.1, 0.2, 0.3]   // I menumpuk selama galat bertahan

Baseline yang harus dikalahkan

Sebelum memakai RL untuk masalah kontrol, coba dulu pengendali klasik. PID dipakai di hampir semua sistem kontrol nyata: termostat, drone, motor pabrik.

  • P (proporsional): dorong sebanding dengan galat. Terlalu besar membuat sistem berosilasi.
  • I (integral): galat kecil yang bertahan lama terus menumpuk sampai dikoreksi.
  • D (derivatif): bereaksi terhadap laju perubahan galat, berfungsi sebagai rem yang meredam overshoot.

Di lab cart-pole, preset Baseline PID (sebenarnya PD pada empat variabel) langsung menyeimbangkan tiang tanpa training. Kelebihan RL baru terlihat di masalah yang sulit disetel manual: dinamika tak linear (ayun ke atas), banyak sendi, atau tujuan yang kompleks.

Penjelasan

Yang diminta. List utu_t sepanjang errors.

Langkah di kode: integral = 0, prev = errors[0] (sehingga langkah pertama punya turunan 0). Untuk setiap e: integral += e*dt, derivative = (e - prev)/dt, prev = e, lalu kp*e + ki*integral + kd*derivative.

Case 3: hanya D. Galat [0,1,0][0, 1, 0] dengan Δt=0.5\Delta t = 0.5: turunannya [0,2,−2][0, 2, -2]. D bereaksi pada perubahan: mendorong saat galat naik, dan mengerem saat galat turun.

Yang dikembalikan: list float (kosong untuk input kosong).

Topik
kontrolpidbaseline
Petunjuk 1

Simpan integral (mulai 0) dan galat sebelumnya (mulai dari e_0, supaya D_0 = 0).

Petunjuk 2

Di setiap langkah: integral += e·dt, derivative = (e − prev)/dt, lalu u = kp·e + ki·integral + kd·derivative.

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.