Sử dụng thuật toán di truyền để điều chỉnh bộ điều khiển


9

Tôi đã đọc một số giấy tờ để điều khiển các hệ phi tuyến (ví dụ con lắc phi tuyến). Có một số cách tiếp cận để nhắm mục tiêu các hệ thống phi tuyến. Những cái phổ biến nhất là phản hồi tuyến tính , bước lùi và bộ điều khiển chế độ trượt .

Trong trường hợp của tôi, tôi đã thực hiện các phần lý thuyết và thực tế trong việc điều khiển mô hình phi tuyến của một con lắc đơn giản cộng với các vấn đề thao tác khác trong C ++. Đối với con lắc, tôi đã sử dụng bộ điều khiển lùi để giải quyết nhiệm vụ theo dõi cho chuyển vị và vận tốc góc. Kết quả là

θ¨+(k/m)θ˙+(g/L)tộiθ= =bạn

trong đó g = 9,81 .m= =0,5,k= =0,0001,L= =.2g= =9,81

Đồ thị 1

Đồ thị 2

Kết quả rất tốt. Tuy nhiên, điều chỉnh bộ điều khiển là tốn thời gian. Phần lớn các bài báo sử dụng các thuật toán di truyền để điều chỉnh các bộ điều khiển của chúng như PD, PID và bộ điều khiển bước lùi. Tôi không biết gì về lĩnh vực này và tôi hy vọng ai đó sẽ làm sáng tỏ khái niệm này, tốt hơn là nếu có một mẫu MATLAB để ít nhất kiểm soát một con lắc đơn giản.

Cho đến nay tôi đã thiết kế một GUI đơn giản trong C ++ / Qt để điều chỉnh thủ công bộ điều khiển. Trong hình dưới đây, phản ứng của bộ điều khiển cho chức năng bước.

Ảnh chụp màn hình GUI của ứng dụng điều chỉnh bộ điều khiển

Câu trả lời:


1

Sử dụng các phương thức tiến hóa (GA là một trong số đó) để điều chỉnh tham số thực sự là một phương thức phổ biến [1] trong miền điều khiển. Đặc biệt đối với các hệ thống phi tuyến tính, các giải pháp phân tích cho các tham số tối ưu có thể khó tìm thấy. Các phương pháp tiến hóa là một cách để thực hiện hiệu quả việc tìm kiếm các tham số gần tối ưu.

Một phương pháp rất thành công và phổ biến được sử dụng rộng rãi là CMA-ES . Có một số lượng lớn các triển khai ngoài đó, bao gồm cả MATLAB. Tôi biết rằng cân bằng cực trong các hình thức khác nhau của nó thường được sử dụng làm chuẩn.

Áp dụng thuật toán thường không khó. Đánh giá hiệu suất của kết quả của bạn - đây được gọi là chức năng tập thể dục trong EA - thường là phần liên quan nhiều nhất.

[1] PJ Fleming, RC Purshouse, các thuật toán tiến hóa trong các hệ thống kiểm soát kỹ thuật: một cuộc khảo sát, kiểm soát kỹ thuật thực hành, Tập 10, Số 11, tháng 11 năm 2002, trang 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .


Bạn đã xem qua bất kỳ cuốn sách hay mà bạn nghĩ rằng nó đáng để đọc về GA?
CroCo

8

Thuật toán di truyền là một kỹ thuật học máy để loại bỏ nhu cầu người dùng 'tinh chỉnh' một hệ thống, và thay vào đó cho phép một máy tính tìm ra cách điều chỉnh hệ thống. Lợi ích của phương pháp này là nó giải phóng thời gian của các nhà nghiên cứu / người dùng và thường có thể dẫn đến một hệ thống được điều chỉnh tốt hơn những gì nhà nghiên cứu / người dùng có thể tự đạt được.

Ý tưởng chung về việc sử dụng thuật toán di truyền sẽ tuân theo một số luồng điều khiển cơ bản như sau:

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()

Ví dụ tốt nhất tôi có thể dễ dàng thể hiện về nguyên tắc này trong thực tế là 'trò chơi' này sử dụng tiến hóa di truyền để thiết kế các phương tiện có khả năng lái xe trong một khóa học. Ý tưởng tương tự áp dụng cho bất kỳ hệ thống nào bạn muốn tinh chỉnh mà không cần phải tự điều chỉnh. Ví dụ: http://rednuht.org/genetic_cars_2/


Nếu đó là ý nghĩa của @CroCo khi sử dụng thuật toán di truyền, thì phương pháp điều chỉnh Ziegler Nichols sẽ là một ứng cử viên tuyệt vời để thực hiện, bởi vì nó là thủ tục độc đáo.
SteveO

Tôi không thể hiểu @CroCo có ý nghĩa gì khác, nhưng vấn đề với Ziegler Nichols là nó vẫn yêu cầu bạn điều chỉnh một trong các thành phần trong đó với thuật toán di truyền, bạn có thể thay đổi bất kỳ khía cạnh nào của hệ thống và nó sẽ 'tiến hóa' để phù hợp mà không cần nhà phát triển phải thực hiện bất kỳ công việc vũ phu nào
hãy chú ý

1
Câu trả lời này vẫn là quy trình chung để đạt được điều đó. Thuật toán di truyền là toàn bộ lĩnh vực nghiên cứu và rất phức tạp tuy nhiên để thực sự giải thích trong một phản hồi ngắn, tôi khuyên bạn nên đọc chúng, tuy nhiên nếu bạn quan tâm đến việc sử dụng chúng để điều chỉnh mô hình của mình!
hãy chú ý

2
Tôi đang hình dung một thuật toán di truyền bị ràng buộc xấu, khá vui khi giật chuỗi khi điều chỉnh quá mức.
Ramrod

1
như @octopus đã đề cập, điều này khó đạt được với thiết bị vật lý thực tế trừ khi bạn sẵn sàng cho phép một thời gian dài để máy tính điều khiển vật lý thiết bị bạn đang cố điều chỉnh, thậm chí sau đó bạn cần một chương trình 'người giám hộ' nào đó theo dõi và chấm điểm từng bộ điều khiển dựa trên hiệu suất và xác minh rằng nó sẽ không làm hỏng máy. Tất cả trong tất cả điều này là nhiệm vụ tương đối phức tạp sẽ mất rất nhiều đọc về các thuật toán di truyền để thực hiện, đây là nhiệm vụ không nhỏ.
hãy chú ý

2

Tôi bối rối bởi những gì bạn đang gọi một thuật toán di truyền. PD, PID, v.v., không phải là phương pháp heuristic hay stochastic, và chúng không dựa trên các thuật toán tiến hóa. Thay vào đó, chúng là các thuật toán xác định nhằm cho phép đặt các cực và số 0 của phản hồi hệ thống để cung cấp hiệu suất mong muốn (giảm thiểu lỗi, tốc độ phản hồi, thời gian giải quyết, độ ổn định và loại bỏ nhiễu). Theo tôi, một tài liệu tham khảo học tập tốt là cuốn sách Hệ thống điều khiển tự động của Kuo . Bạn có thể tìm thấy một cách xử lý ít nghiêm ngặt hơn trong cuốn sách Kỹ thuật điều khiển tự động của Raven .


Tôi không quen thuộc với thuật toán di truyền (GA). Tôi chỉ thấy một số giấy tờ cho rằng phần điều chỉnh của bộ điều khiển của họ được thực hiện bằng cách sử dụng GA. Không có thêm chi tiết trong các bài báo của họ về vấn đề này. Tôi không biết GA địa ngục là gì và làm thế nào tôi có thể sử dụng nó.
CroCo 17/2/2016

Sử dụng các phương pháp tiến hóa để điều chỉnh tham số là một kỹ thuật rất phổ biến. Tôi sẽ coi đó là một phương pháp thay thế cho các phương pháp phân tích mà bạn đang mô tả.
Jakob
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.