Pengendali PID diskret
Implementasikan pengendali PID waktu diskret. Untuk setiap galat et (target dikurangi nilai terukur), hitung
ut=kpet+kij≤t∑ejΔt+kdΔtet−et−1dengan 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 ut 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] dengan Δt=0.5: turunannya [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
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.
Nilai ditulis sebagai JSON. Output yang diharapkan dihitung dari solusi referensi.