Menggunakan algoritma genetika untuk pengendali tuning

9

Saya telah membaca beberapa makalah untuk mengendalikan sistem nonlinier (mis. Pendulum nonlinear). Ada beberapa pendekatan untuk menargetkan sistem nonlinier. Yang paling umum adalah linearizaing umpan balik , backstepping , dan pengontrol mode geser .

Dalam kasus saya, saya telah melakukan bagian teoritis dan praktis untuk mengendalikan model nonlinear dari pendulum sederhana plus masalah manipulator lainnya di C ++. Untuk pendulum, saya telah menggunakan kontroler backstepping untuk menyelesaikan tugas pelacakan untuk perpindahan sudut dan kecepatan. Hasilnya

θ¨+(k/m)θ˙+(g/L)sinθ=u

di mana dan g = 9,81 .m=0.5,k=0.0001,L=.2g=9.81

Grafik 1

Grafik 2

Hasilnya bagus. Namun, menyetel pengontrol memakan waktu. Mayoritas makalah menggunakan algoritma genetika untuk menyetel pengontrol mereka seperti PD, PID, dan pengontrol mundur. Saya tidak mengerti di bidang ini dan saya harap seseorang memberi penjelasan tentang konsep ini, lebih disukai jika ada sampel MATLAB untuk setidaknya mengendalikan pendulum sederhana.

Sejauh ini saya telah merancang GUI sederhana di C ++ / Qt untuk menyetel controller secara manual. Pada gambar di bawah ini, respons controller untuk fungsi step.

Cuplikan layar GUI aplikasi tuning pengontrol

CroCo
sumber

Jawaban:

1

Menggunakan metode evolusioner (GA adalah salah satunya) untuk menyetel parameter memang merupakan metode yang umum [1] dalam domain kontrol. Khusus untuk sistem non-linear, solusi analitik untuk parameter optimal mungkin sulit ditemukan. Metode evolusi adalah salah satu cara untuk melakukan pencarian parameter yang hampir optimal secara efisien.

Metode yang sangat sukses dan universal yang banyak digunakan adalah CMA-ES . Ada banyak implementasi di luar sana, termasuk untuk MATLAB. Saya tahu bahwa keseimbangan tiang dalam berbagai bentuknya sering digunakan sebagai patokan.

Menerapkan algoritma biasanya tidak terlalu sulit. Nilai kinerja hasil Anda - ini disebut fungsi kebugaran dalam EA - biasanya merupakan bagian yang paling terlibat.

[1] PJ Fleming, RC Purshouse, algoritma Evolusi dalam rekayasa sistem kontrol: survei, Praktek Teknik Kontrol, Volume 10, Edisi 11, November 2002, Halaman 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .

Jakob
sumber
Sudahkah Anda menemukan buku bagus yang menurut Anda layak dibaca tentang GA?
CroCo
8

Algoritma genetika adalah teknik pembelajaran mesin untuk menghilangkan kebutuhan pengguna untuk 'menyempurnakan' suatu sistem, dan sebagai gantinya memungkinkan komputer untuk mencari tahu cara menyesuaikan sistem. Manfaat dari pendekatan ini adalah bahwa hal itu membebaskan waktu para peneliti / pengguna dan seringkali dapat mengarah pada sistem yang lebih baik daripada apa yang dapat dicapai oleh peneliti / pengguna itu sendiri.

Ide umum menggunakan algoritma genetika akan mengikuti beberapa aliran kontrol dasar sebagai berikut:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

Contoh terbaik yang dapat saya tunjukkan dengan mudah dari prinsip ini dalam praktik adalah 'permainan' ini yang menggunakan evolusi genetika untuk merancang kendaraan yang mampu mengemudi dalam suatu perjalanan. Gagasan yang sama berlaku untuk sistem apa pun yang ingin Anda sempurnakan tanpa harus melakukan penyetelan sendiri. Contoh: http://rednuht.org/genetic_cars_2/

cantik
sumber
Jika itu yang dimaksud @CroCo dengan menggunakan algoritma genetika, maka penyetelan metode Ziegler Nichols akan menjadi kandidat yang bagus untuk diimplementasikan, karena itu baik prosedural.
SteveO
Saya tidak bisa melihat apa lagi yang dimaksud @CroCo, tetapi masalah dengan Ziegler Nichols adalah masih mengharuskan Anda untuk menyetel salah satu komponen di mana seperti dengan algo genetik Anda dapat mengubah aspek sistem dan itu akan 'berevolusi' untuk mencocokkan tanpa pengembang harus melakukan pekerjaan kasar
beeedy
1
Jawaban ini masih berdiri sebagai proses umum untuk mencapai itu. Algoritma Genetika adalah seluruh bidang studi dan jauh ke rumit namun untuk benar-benar menjelaskan dalam respon singkat, saya sarankan membaca tentang mereka namun jika Anda tertarik menggunakannya untuk menyempurnakan model Anda!
beeedy
2
Saya membayangkan suatu algoritma genetika yang tidak terikat yang dengan senang hati mengambil talinya ketika sedang menyetem.
Ramrod
1
seperti yang disebutkan @octopus, ini sulit untuk dicapai dengan peralatan fisika yang sebenarnya kecuali jika Anda bersedia memberikan waktu yang lama untuk membiarkan komputer secara fisik mengontrol perangkat yang Anda coba tune, bahkan kemudian Anda memerlukan beberapa program 'wali' yang memantau dan menilai setiap pengontrol berdasarkan kinerja dan memverifikasi bahwa itu tidak akan merusak mesin. Semua dalam semua ini adalah tugas yang relatif kompleks yang akan membutuhkan banyak membaca tentang algoritma genetika untuk diimplementasikan, ini bukan tugas kecil.
beeedy
2

Saya bingung dengan apa yang Anda sebut sebagai algoritma genetika. Kontroler PD, PID, dll. Bukanlah metode heuristik atau stokastik, dan mereka tidak didasarkan pada algoritma evolusioner. Alih-alih, mereka adalah algoritma deterministik yang dimaksudkan untuk memungkinkan penempatan kutub dan nol respons sistem untuk memberikan kinerja yang diinginkan (minimalisasi kesalahan, kecepatan respons, waktu penyelesaian, stabilitas, dan penolakan gangguan). Referensi pembelajaran yang baik, menurut saya, adalah buku Sistem Kontrol Otomatis Kuo . Anda dapat menemukan perlakuan yang tidak terlalu ketat dalam buku Teknik Kontrol Otomatis Raven .

SteveO
sumber
Saya tidak kenal dengan algoritma genetika (GA). Saya baru saja melihat beberapa makalah mengklaim bahwa bagian tuning dari pengontrol mereka dilakukan dengan menggunakan GA. Tidak ada rincian lebih lanjut dalam makalah mereka tentang masalah ini. Saya tidak tahu apa itu GA dan bagaimana saya bisa menggunakannya.
CroCo
Menggunakan metode evolusi untuk penyetelan parameter adalah teknik yang sangat umum. Saya akan menganggapnya sebagai metode alternatif untuk pendekatan analitis yang Anda gambarkan.
Jakob