Bayangkan dua jenis guru. Guru A selalu mengajar dengan metode yang sama, tempo yang sama, tidak peduli muridnya cepat atau lambat menangkap. Guru B mengamati reaksi murid, menyesuaikan kecepatan, mengganti metode jika murid bingung. Kontrol PID statis = Guru A. Kontrol Adaptif = Guru B yang terus belajar dari situasi!
Ada tiga sumber utama ketidakpastian yang membuat kontrol statis tidak memadai:
| Sumber Ketidakpastian | Contoh Nyata di Infrastruktur | Dampak ke Kontrol |
|---|---|---|
| ⏳ Perubahan parameter seiring waktu | Pompa air aus: efisiensi turun 20% per tahun. Kabel transmisi listrik: resistansi naik saat panas. | Gain kontrol yang optimal di tahun ke-1 menjadi tidak optimal di tahun ke-5 |
| 🌦️ Perubahan lingkungan/kondisi operasi | Beban listrik: 2 GW siang hari vs 0.5 GW malam hari. Suhu air sungai musim kemarau vs hujan. | Satu set parameter tidak bisa optimal di semua kondisi |
| 🔬 Model tidak sempurna | Simulasi reaktor kimia tidak memperhitungkan pengotor. Turbin angin: model aerodinamika disederhanakan. | Kontroller dirancang untuk model ideal, tapi realita berbeda |
💡 Ide Dasar Kontrol Adaptif
Kontrol adaptif menjawab semua ketidakpastian di atas dengan satu strategi: "Jika kita tidak tahu persis kondisi sistem, biarkan sistem belajar sendiri dari pengamatan dan menyesuaikan parameternya secara otomatis."
Semua GPS punya tujuan sama: navigasi ke tujuan. Tapi caranya berbeda — ada yang real-time update rute (mirip direct), ada yang dulu hitung ulang peta baru lalu navigasi (indirect). Ada yang ikuti jalur model GPS referensi (MRAC), ada yang terus self-tune berdasarkan kondisi jalan (STR). Semua itu klasifikasi kontrol adaptif!
🔵 Direct Adaptive Control
Parameter kontroller diperbarui langsung tanpa estimasi model. Output error digunakan langsung untuk update gain kontroller.
Analogi: Langsung putar setir lebih keras jika mobil melenceng — tanpa menghitung dulu berapa derajat.
✅ Cepat | ⚠️ Bisa tidak stabil jika gangguan besar
🟢 Indirect Adaptive Control
Pertama estimasi parameter sistem, lalu hitung parameter kontroller berdasarkan estimasi tersebut.
Analogi: Ukur dulu seberapa licin jalan (estimasi), baru tentukan seberapa hati-hati mengemudi (desain kontrol).
✅ Lebih stabil | ⚠️ Lebih lambat karena dua tahap
Direct
- Update parameter θ langsung
- Loop adaptasi lebih pendek
- Cocok: sistem sederhana, SISO
- Contoh: MRAC dengan MIT Rule
- Risiko: parameter drift
Indirect
- Estimasi model dulu (θ̂), lalu desain kontrol
- Dua loop: estimasi + kontrol
- Cocok: sistem kompleks, MIMO
- Contoh: Self-Tuning Regulator
- Lebih transparan (kita tahu model)
θ̇(t) = −γ · e(t) · φ(t) ← update langsung parameter kontroller
u(t) = θᵀ(t) · φ(t) ← sinyal kontrol
Model Reference Adaptive Control (MRAC)
Dalam maraton, ada pace-setter — pelari profesional yang larinya di kecepatan target. Pelari lain mengikutinya. Jika tertinggal, mereka mempercepat. Jika terlalu cepat, mereka melambat. MRAC persis begini: ada "reference model" (pace-setter ideal), dan sistem nyata berusaha mengikutinya dengan menyesuaikan parameter secara online.
🔑 Komponen MRAC
- Reference Model: Model ideal yang mendefinisikan perilaku yang diinginkan
- Plant (sistem nyata): Sistem yang dikontrol (parameternya tidak diketahui persis)
- Adaptive Law: Aturan update parameter agar output plant = output reference model
- Controller: Menggunakan parameter yang terus di-update
Self-Tuning Regulator (STR)
Dokter ICU tidak hanya memberi obat lalu pergi. Dia terus memonitor kondisi pasien (estimasi parameter), lalu menyesuaikan dosis obat berdasarkan respons terbaru. STR bekerja sama: pertama estimasi parameter sistem dari data observasi, lalu desain ulang controller berdasarkan estimasi terbaru — berulang terus setiap saat.
| MRAC | STR | |
|---|---|---|
| Kategori | Direct adaptive | Indirect adaptive |
| Mekanisme | Ikuti reference model ideal | Estimasi model → desain kontrol |
| Kelebihan | Respon cepat, desain intuitif | Transparan, kita tahu parameter |
| Kekurangan | Perlu reference model yang baik | Lebih lambat, butuh identifikasi |
| Aplikasi | Kontrol suhu, kecepatan motor | Proses industri lambat (kimia, air) |
| Materi | Sesi 4 | Sesi 5 |
🔴 Kontrol Robust = pengemudi yang selalu sangat hati-hati (rem maksimal, kecepatan rendah) — siap untuk kondisi terburuk meski jalannya bagus. Aman tapi tidak efisien.
🟡 Kontrol Optimal = pengemudi yang sudah tahu persis kondisi jalan (peta sempurna) dan menghitung rute paling efisien. Efisien tapi hanya bekerja jika kondisi sesuai harapan.
🟢 Kontrol Adaptif = pengemudi yang terus melihat kondisi jalan nyata dan menyesuaikan gaya menyetir secara real-time. Fleksibel untuk kondisi yang berubah-ubah!
| Aspek | Kontrol Robust | Kontrol Optimal | Kontrol Adaptif |
|---|---|---|---|
| Pengetahuan model | Batas ketidakpastian diketahui | Model diketahui persis | Model tidak perlu diketahui |
| Adaptasi online | ❌ Tidak | ❌ Tidak (offline) | ✅ Ya, real-time |
| Perubahan parameter | Tahan dalam batas tertentu | Tidak tahan | ✅ Mengatasi perubahan |
| Kompleksitas | Sedang | Tinggi (komputasi berat) | Tinggi (mekanisme adaptasi) |
| Contoh metode | H∞, μ-synthesis | LQR, MPC | MRAC, STR, Fuzzy Adaptive |
⚠️ Catatan Penting
Dalam praktik infrastruktur kritis, ketiga pendekatan sering dikombinasikan. Contoh: Adaptive + Robust = sistem yang adaptif tapi tetap stabil di kondisi terburuk. Adaptive + Optimal = sistem yang belajar sambil mengoptimalkan performa.
1. Identifikasi Parameter Online
Dokter tidak hanya cek darah sekali saat masuk rumah sakit. Dia cek setiap jam untuk memantau kondisi terkini. Identifikasi online = terus-menerus mengestimasi parameter sistem dari data real-time, bukan hanya sekali saat commissioning.
θ̂ = estimasi parameter, K = gain adaptasi
y(k) = output terukur, ŷ(k) = output prediksi model
2. Mekanisme Adaptasi (Adaptation Law)
Penembak jitu profesional tidak hanya menembak. Setelah setiap tembakan, dia mengkoreksi bidikan berdasarkan di mana peluru mendarat (error). Mekanisme adaptasi = aturan matematis yang menentukan seberapa besar dan seberapa cepat parameter berubah berdasarkan error yang terukur.
| Mekanisme | Rumus Singkat | Sifat |
|---|---|---|
| Gradient Descent | θ̇ = −γ · ∂J/∂θ | Sederhana, bisa terjebak lokal minima |
| MIT Rule | θ̇ = −γ · e · ∂e/∂θ | Populer untuk MRAC, mudah implementasi |
| Lyapunov-based | Berdasarkan V̇ ≤ 0 | Jaminan stabilitas, lebih kompleks |
| Recursive Least Squares | θ̂ = (ΦᵀΦ)⁻¹Φᵀy (rekursif) | Optimal untuk noise Gaussian |
3. Jaminan Stabilitas (Stability Guarantee)
Autopilot pesawat boleh beradaptasi terhadap turbulensi, tapi tidak boleh sampai pesawat terjungkal. Sistem adaptif harus punya bukti matematis bahwa meskipun parameter terus berubah, sistem tidak akan tidak stabil. Ini dijamin dengan teori stabilitas Lyapunov (Sesi 7).
✅ Syarat Minimal Stabilitas Kontrol Adaptif
- Semua sinyal dalam sistem tetap terbatas (bounded)
- Error output cenderung mendekati nol (konvergen)
- Sistem tidak mengalami parameter drift atau bursting
- Dipenuhi kondisi Persistent Excitation (PE) agar parameter konvergen
Kita simulasikan identifikasi parameter online paling sederhana — estimasi gain sebuah sistem orde-1 dari data pengamatan secara real-time.
Pompa air baru punya gain K=1.0 (1 Volt → 1 L/s). Setelah aus, K turun ke 0.7. Sistem harus mendeteksi perubahan ini secara online tanpa kita beritahu.
import numpy as np import matplotlib.pyplot as plt # ========================================== # IDENTIFIKASI PARAMETER ONLINE SEDERHANA # Estimasi gain K dari sistem y(k) = K*u(k) + noise # ========================================== np.random.seed(42) N = 300 # jumlah sampel K_true = np.ones(N) * 1.0 K_true[150:] = 0.7 # pompa "aus" di t=150, gain turun # Sinyal input (sinyal eksitasi bervariasi) u = 0.5 + 0.5*np.sin(2*np.pi*np.arange(N)/30) # Output sistem nyata + noise sensor y = K_true * u + 0.03*np.random.randn(N) # ========================================== # ALGORITMA 1: Gradient Descent Online # ========================================== K_est_gd = [0.5] # tebakan awal gain = 0.5 gamma = 0.3 # learning rate for k in range(1, N): y_pred = K_est_gd[-1] * u[k] # prediksi output error = y[k] - y_pred # error prediksi K_new = K_est_gd[-1] + gamma * error * u[k] # update parameter K_est_gd.append(K_new) # ========================================== # ALGORITMA 2: Recursive Least Squares (RLS) # ========================================== K_est_rls = [0.5] # estimasi awal P = 10.0 # variance estimasi awal (besar = tidak yakin) lam = 0.98 # forgetting factor (ingat data lama dengan bobot λ) for k in range(1, N): phi = u[k] K_gain = P * phi / (lam + phi * P * phi) error = y[k] - K_est_rls[-1] * phi K_new = K_est_rls[-1] + K_gain * error P = (P - K_gain * phi * P) / lam K_est_rls.append(K_new) # --- PLOT --- fig, axes = plt.subplots(2, 1, figsize=(11, 7)) t = np.arange(N) axes[0].plot(t, K_true, 'k--', lw=2, label='K true (parameter asli)') axes[0].plot(t, K_est_gd, 'tomato', lw=1.5, label='Estimasi Gradient Descent') axes[0].plot(t, K_est_rls, 'cyan', lw=1.5, label='Estimasi RLS') axes[0].axvline(150, color='orange', ls=':', lw=2, label='Pompa aus (k=150)') axes[0].set_ylabel('Estimasi Gain K'); axes[0].set_title('Identifikasi Parameter Online: Pompa yang Aus') axes[0].legend(); axes[0].grid(alpha=0.3) axes[0].set_ylim(0.3, 1.4) axes[1].plot(t, y, 'gray', alpha=0.5, label='Output terukur (y)') axes[1].plot(t, np.array(K_est_rls)*u, 'orange', lw=1.5, label='Prediksi RLS') axes[1].axvline(150, color='red', ls=':', lw=2) axes[1].set_xlabel('Waktu (k)'); axes[1].set_ylabel('Output (L/s)') axes[1].set_title('Perbandingan: Output Aktual vs Prediksi Model') axes[1].legend(); axes[1].grid(alpha=0.3) plt.tight_layout(); plt.show() print(f"Estimasi K akhir (GD) : {K_est_gd[-1]:.4f} (true: 0.7)") print(f"Estimasi K akhir (RLS): {K_est_rls[-1]:.4f} (true: 0.7)") print(f"\nKesimpulan: RLS lebih cepat konvergen ke nilai baru setelah perubahan!")
📊 Interpretasi Output
- Sebelum t=150: kedua metode konvergen ke K≈1.0 (benar)
- Setelah t=150: pompa aus, K turun ke 0.7. RLS lebih cepat mendeteksi karena forgetting factor λ memberi bobot lebih besar pada data terbaru
- Gradient Descent lebih lambat tapi lebih stabil terhadap noise
- Ini adalah fondasi Self-Tuning Regulator yang akan dipelajari di Sesi 5!
🧠 Kuis Pemahaman Sesi 3
1. Apa perbedaan utama Direct vs Indirect Adaptive Control?
2. MRAC (Model Reference Adaptive Control) termasuk kategori?
3. Forgetting factor (λ) dalam RLS berfungsi untuk?