Luận án Nghiên cứu ứng dụng bộ điều khiển pid thích nghi dựa trên mạng nơ-Ron nhân tạo cho hệ thống điều khiển tàu thủy
Các phương pháp điều khiển truyền thống để thiết kế các hệ thống điều
khiển tiên tiến cho tàu thủy điển hình như bộ điều khiển tỷ lệ - vi phân - tích
phân (PID) vẫn còn phổ biến bởi vì nó có cấu trúc đơn giản và tính bền vững
cao. Tuy nhiên, việc cải tiến chất lượng bộ điều khiển PID của hệ thống điều
khiển tàu thủy vẫn luôn là vấn đề thời sự cho các nhà nghiên cứu, bởi vì khi
thiết kế bộ điều khiển cho tàu thủy, bộ điều khiển PID thường yêu cầu phải có
mô hình động học của tàu thủy đó.
Thực tế, các tính năng động học của tàu thủy thường mang tính phi
tuyến cao và chịu ảnh hưởng của nhiều yếu tố nhiễu loạn bên ngoài. Bản thân
yếu tố nhiễu loạn bên ngoài cũng mang những đặc tính phi tuyến và không
xác định cao. Điều đó dẫn đến việc phải xây dựng các cấu trúc và tham số
không xác định và yêu cầu phải có kỹ thuật điều khiển tiên tiến.
Hiện nay, các nhà khoa học trong lĩnh vực này, đã không ngừng nghiên
cứu cải tiến chất lượng bộ điều khiển PID theo hai hướng cơ bản sau:
- Thứ nhất, cải tiến cấu trúc bộ điều khiển PID;
- Thứ hai, kết hợp lý thuyết lô-gic mờ, mạng nơ-ron nhân tạo, thuật
toán di truyền và lý thuyết điều khiển thông minh khác với bộ điều khiển PID
thông thường, nhằm đạt được chất lượng điều khiển mong muốn.
Do vậy, bộ điều khiển kết hợp này còn được gọi là bộ điều khiển PID
thông minh. Bộ điều khiển PID thông minh không yêu cầu phải có mô hình
toán học của đối tượng một cách chính xác, các tham số của hệ thống có tính
bền vững hơn.
Tóm tắt nội dung tài liệu: Luận án Nghiên cứu ứng dụng bộ điều khiển pid thích nghi dựa trên mạng nơ-Ron nhân tạo cho hệ thống điều khiển tàu thủy
BỘ GIAO THÔNG VẬN TẢI BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM VÕ HỒNG HẢI NGHIÊN CỨU ỨNG DỤNG BỘ ĐIỀU KHIỂN PID THÍCH NGHI DỰA TRÊN MẠNG NƠ-RON NHÂN TẠO CHO HỆ THỐNG ĐIỀU KHIỂN TÀU THỦY LUẬN ÁN TIẾN SĨ KỸ THUẬT HẢI PHÒNG - 2020 BỘ GIAO THÔNG VẬN TẢI BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM VÕ HỒNG HẢI NGHIÊN CỨU ỨNG DỤNG BỘ ĐIỀU KHIỂN PID THÍCH NGHI DỰA TRÊN MẠNG NƠ-RON NHÂN TẠO CHO HỆ THỐNG ĐIỀU KHIỂN TÀU THỦY LUẬN ÁN TIẾN SĨ KỸ THUẬT CHUYÊN NGÀNH: KHOA HỌC HÀNG HẢI MÃ SỐ: 9840106 Người hướng dẫn khoa học: 1. PGS. TS. Phạm Kỳ Quang 2. PGS. TS. Nguyễn Phùng Hưng HẢI PHÒNG – 2020 i MỤC LỤC MỤC LỤC ........................................................................................................ i LỜI CAM ĐOAN .......................................................................................... iv LỜI CÁM ƠN ..................................................................................................v DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU ................................. vi DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ ......................................................... vii DANH MỤC CÁC BẢNG ............................................................................. x MỞ ĐẦU .......................................................................................................... 1 1. Tính cấp thiết của đề tài luận án .............................................................. .1 2. Mục đích nghiên cứu ................................................................................... 3 3. Đối tượng và phạm vi nghiên cứu. ............................................................. 3 4. Phương pháp nghiên cứu ............................................................................ 3 5. Ý nghĩa khoa học và thực tiễn .................................................................... 4 6. Những điểm đóng góp mới ......................................................................... 5 7. Kết cấu của luận án ..................................................................................... 6 CHƯƠNG 1. TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU VÀ MẠNG NƠ- RON NHÂN TẠO TRONG ĐIỀU KHIỂN ........................... 8 1.1. Tổng quan vấn đề nghiên cứu của luận án ........................................... 8 1.1.1. Tình hình nghiên cứu trên thế giới liên quan đến luận án .......... 8 1.1.2. Tình hình nghiên cứu trong nước liên quan đến luận án .......... 11 1.2. Mạng nơ-ron nhân tạo trong điều khiển ............................................. 12 1.2.1. Cấu trúc mạng nơ-ron nhân tạo ................................................ 12 1.2.2. Nhận dạng hệ thống sử dụng mạng nơ-ron nhân tạo ............... 18 1.2.3. Phương pháp ứng dụng mạng nơ-ron trong điều khiển ........... 20 1.3. Nghiên cứu một số bộ điều khiển PID nơ-ron cho hệ thống điều khiển hướng đi tàu thủy ......................................................................................... 21 1.3.1. Bộ điều khiển PID dựa trên mạng nơ-ron lan truyền ngược cho điều khiển hướng đi tàu thủy .............................................................. 21 ii 1.3.2. Bộ điều khiển PID dựa trên mạng nơ-ron hàm cơ sở xuyên tâm cho điều khiển hướng đi tàu thủy........................................................ 26 1.4. Cơ sở lý thuyết về các hệ tọa độ và và động học tàu thủy .................. 29 1.4.1. Các hệ trục tọa độ tham chiếu .................................................. 29 1.4.2. Phương trình động học của con tàu ......................................... 34 1.4.3. Phương trình động lực học của vật rắn ..................................... 36 1.4.4. Phương trình động lực học của con tàu .................................... 38 1.4.5. Thủy động lực học .................................................................... 39 1.4.6. Lực phục hồi ............................................................................. 41 1.4.7. Trọng lực thêm vào ................................................................... 42 1.5. Kết luận chương 1 ................................................................................. 42 CHƯƠNG 2. BỘ ĐIỀU KHIỂN PID NƠ-RON THÍCH NGHI DỰA TRÊN MẠNG NƠ-RON LAN TRUYỀN NGƯỢC CHO HỆ THỐNG ĐIỀU KHIỂN HƯỚNG ĐI TÀU THỦY .... 44 2.1. Bộ điều khiển PID nơ-ron dựa trên mạng nơ-ron lan truyền ngược không có bộ nhận dạng cho hệ thống điều khiển hướng đi tàu thủy ....... 44 2.1.1. Sơ đồ nguyên lý ......................................................................... 44 2.1.2. Thuật toán điều khiển PID ......................................................... 63 2.1.3. Thuật toán điều khiển mạng nơ-ron lan truyền ngược .............. 45 2.1.4. Huấn luyện lan truyền ngược tăng cường ................................. 49 2.1.5. Sơ đồ thuật toán huấn luyện ...................................................... 50 2.2. Bộ điều khiển PID nơ-ron dựa trên mạng nơ-ron lan truyền ngược có bộ nhận dạng cho hệ thống điều khiển hướng đi tàu thủy .......... 51 2.2.1. Sơ đồ nguyên lý ....................................................................... 51 2.2.2. Mạng nhận dạng nơ-ron ............................................................ 52 2.3. Kết luận chương 2 ................................................................................. 55 iii CHƯƠNG 3. KẾT QUẢ MÔ PHỎNG ...................................................... 57 3.1. Mô hình toán học cho mô phỏng ......................................................... 57 3.1.1. Mô hình toán học tàu hàng Mariner ......................................... 57 3.1.2. Mô hình toán học sóng, gió và dòng chảy ............................... 58 3.2. Bộ điều khiển PID nơ-ron dựa trên mạng lan truyền ngược không có bộ nhận dạng nơ-ron ..................................................................................... 65 3.2.1. Khi không có gió và nhiễu tác động ......................................... 65 3.2.2. Khi có gió và nhiễu tác động .................................................... 67 3.3. Bộ điều khiển PID nơ-ron dựa trên mạng lan truyền ngược có bộ nhận dạng nơ-ron .......................................................................................... 70 3.3.1. Khi không có gió và nhiễu tác động ......................................... 70 3.3.2. Khi có gió và nhiễu tác động .................................................... 73 3.4. Kết luận chương 3 ................................................................................. 76 CHƯƠNG 4. KẾT QUẢ THỰC NGHIỆM ............................................... 77 4.1. Điều kiện thực nghiệm ........................................................................... 77 4.2. Kết quả thực nghiệm .............................................................................. 79 4.3. Kết luận chương 4 ................................................................................. 84 KẾT LUẬN VÀ KIẾN NGHỊ ...................................................................... 86 KẾT LUẬN ..................................................................................................... 86 KIẾN NGHỊ .................................................................................................... 87 DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC ĐÃ CÔNG BỐ LIÊN QUAN ĐẾN ĐỀ TÀI LUẬN ÁN .................................................................. 89 TÀI LIỆU THAM KHẢO ............................................................................ 90 PHẦN PHỤ LỤC (Gồm 3 phụ lục) iv LỜI CAM ĐOAN Tên tôi là Võ Hồng Hải - Nghiên cứu sinh chuyên ngành Khoa học hàng hải và tác giả luận án tiến sĩ: “Nghiên cứu ứng dụng bộ điều khiển PID dựa trên mạng nơ-ron nhân tạo thích nghi cho hệ thống điều khiển tàu thủy”, dưới sự hướng dẫn của tập thể người hướng dẫn khoa học: Thầy PGS. TS. Phạm Kỳ Quang và thầy PGS. TS. Nguyễn Phùng Hưng, thực hiện tại Trường Đại học Hàng hải Việt Nam. Bằng danh dự của bản thân, nghiên cứu sinh cam đoan rằng: - Luận án này là công trình nghiên cứu của riêng nghiên cứu sinh, không có phần nội dung nào được sao chép một cách bất hợp pháp, từ công trình nghiên cứu của tác giả hay nhóm tác giả khác; - Các số liệu, kết quả nghiên cứu được nêu trong luận án, chưa được ai công bố trong bất kỳ công trình nghiên cứu nào khác trước đó; - Các thông tin, số liệu trích dẫn, tài liệu tham khảo trong luận án đều được chỉ rõ về xuất xứ, nguồn gốc và đảm bảo tính trung thực. Hải Phòng, ngày 19 tháng 11 năm 2020 Nghiên cứu sinh Võ Hồng Hải v LỜI CẢM ƠN Tôi xin chân thành cảm ơn Trường Đại học Hàng hải Việt Nam, Viện Đào tạo sau đại học Trường Đại học Hàng hải Việt Nam đã cho phép và tạo điều kiện cho tôi thực hiện luận án này. Tôi xin chân thành cảm ơn hai Thầy hướng dẫn khoa học, PGS.TS. Phạm Kỳ Quang và PGS.TS. Nguyễn Phùng Hưng đã tận tình, tâm huyết hướng dẫn, định hướng nghiên cứu giúp tôi hoàn thành luận án này. Tôi xin chân thành cám ơn Viện Đào tạo sau Đại học, Khoa Hàng hải, Bộ môn Hàng hải Trường Đại học Hàng hải Việt Nam luôn giúp đỡ và động viên tôi trong suốt quá trình học tập và nghiên cứu. Tôi xin chân thành cảm ơn Trường Đại học Giao thông Vận tải TPHCM đã tạo điều kiện cho tôi được thí nghiệm đề tài luận án của mình; Các Thầy cô giáo, nhà khoa học đã góp ý, phản biện và đánh giá giúp tôi từng bước hoàn thiện luận án này. Cuối cùng, tôi xin bày tỏ lòng biết ơn sâu sắc tới gia đình và bạn bè đã luôn động viên, khuyến khích, tạo điều kiện cho tôi trong suốt thời gian tôi nghiên cứu hoàn thành công trình này! Hải phòng, ngày 19 tháng 11 năm 2020 Tác giả Võ Hồng Hải vi DANH MỤC CÁC CHỮ VIẾT TẮT VÀ KÝ HIỆU Chữ viết tắt Giải thích ý nghĩa ANN Artificial Neural Network: Mạng nơ-ron nhân tạo ANNAI Adaptive Neural Network by Adaptive Interection: Mạng nơ-ron thích nghi theo phương pháp thích nghi tương tác BĐK Bộ điều khiển BPNN Back-Propagation Network: Mạng nơ-ron lan truyền ngược ĐKTĐ Điều khiển tự động MATLAB Công cụ làm toán trên ma trận MLTĐ Máy lái tự động NCKH Nghiên cứu khoa học NCS Nghiên cứu sinh NNC Neural Network Controller: Bộ điều khiển mạng nơ-ron PID Proportional – Integral – Derivative: Tỷ lệ - Tích phân – Vi phân ROV Phương tiện ngầm điều khiển từ xa vii DANH MỤC HÌNH VẼ VÀ ĐỒ THỊ Số hình Tên hình vẽ và đồ thị Trang 1.1 Đơn vị xử lý của mạng nơ-ron nhân tạo 13 1.2 Hàm truyền tuyến tính 14 1.3 Hàm truyền giới hạn cứng 15 1.4 Hàm truyền dạng sigma 15 1.5 Hàm truyền dạng tang-sigma 16 1.6 Mạng nơ-ron truyền thẳng nhiều lớp 17 1.7 Mạng nơ-ron hồi quy 17 1.8 Mô hình nhận dạng cơ bản 19 1.9 Sơ đồ phương pháp điều khiển gián tiếp 20 1.10 Sơ đồ phương pháp điều khiển trực tiếp 21 1.11 Sơ đồ cấu trúc BĐK PID dựa trên mạng BPNN 22 1.12 Cấu trúc mạng nơ-ron lan truyền ngược 23 1.13 Mô phỏng sự thay đổi của pK , iK và dK 24 1.14 Mô phỏng hướng đi 25 1.15 Sự thay đổi của góc bẻ lái 25 1.16 Sơ đồ cấu trúc BĐK PID dựa trên mạng RBF 26 1.17 Cấu trúc mạng nơ-ron RBF 27 1.18 Hướng đi của tàu khi không có nhiễu 28 1.19 Hướng đi của tàu khi có nhiễu 28 1.20 Mô phỏng sự thay đổi của pK , iK và dK 29 viii 1.21 Các hệ tọa độ tham chiếu 30 1.22 Hệ trục toạ độ và các đại lượng 32 1.23 Các góc xoay Euler 35 2.1 Sơ đồ nguyên lý BĐK PID nơ-ron lan truyền ngược 44 2.2 Cấu trúc mạng nơ-ron lan truyền ngược 45 2.3 Sơ đồ khối thuật toán điều khiển PID - BPNN 50 2.4 Sơ đồ nguyên lý BĐK PID nơ-ron NN1 với bộ nhận dạng nơ-ron NN2 51 2.5 Cấu trúc mạng nơ-ron nhận dạng NN2 51 2.6 Mô hình đầu vào – đầu ra 53 2.7 Cấu trúc nhận dạng song song 54 2.8 Cấu trúc nhận dạng chuỗi song song 55 3.1 Tốc độ gió V và hướng gió r 60 3.2 Hướng tàu và góc bẻ lái khi không có gió và nhiễu tác động 65 3.3 Sự thay đổi các tham số Kp, Ki và Kd 66 3.4 Sai số hướng đi, tốc độ và gia tốc quay trở hướng mũi tàu 67 3.5 Hướng đi và góc bẻ lái khi có gió và nhiễu tác động 68 3.6 Sự thay đổi các tham số Kp, Ki và Kd 68 3.7 Sai số hướng đi, tốc độ và gia tốc quay trở hướng mũi tàu 69 3.8 Hướng tàu và góc bẻ lái khi không có gió và nhiễu tác động 71 ix 3.9 Sự thay đổi các tham số Kp, Ki và Kd 71 3.10 Sai số hướng đi, tốc độ và gia tốc quay trở hướng tàu 72 3.11 Đầu ra của bộ nhận dạng nơ-ron NN2 72 3.12 Hướng tàu và góc bẻ lái khi có gió và nhiễu tác động 73 3.13 Sự thay đổi các thông số Kp, Ki và Kd 74 3.14 Sai số hướng đi, tốc độ và gia tốc quay trở hướng tàu 74 3.15 Đầu ra của bộ nhận dạng nơ-ron NN2 75 4.1 Quỹ đạo di chuyển mong muốn của con tàu 77 4.2 Điều kiện thực nghiệm tàu mô hình trên thực tế 78 4.3 Tàu mô hình 79 4.4 Sơ đồ khối hệ thống điều khiển hướng tàu sử dụng BĐK PID nơ-ron 79 4.5 Quỹ đạo của tàu với BĐK PID nơ-ron 80 4.6 Sai số bám quỹ đạo của tàu với BĐK PID nơ-ron 81 4.7 Sai số góc mũi tàu của tàu với BĐK PID nơ-ron 82 4.8 Góc bánh lái với BĐK PID nơ-ron 83 4.9 Góc mũi tàu với BĐK PID nơ-ron 84 x DANH MỤC CÁC BẢNG Số bảng Tên bảng Trang 1.1 Ký hiệu của SNAME (1950) đối với tàu biển 33 3.1 Tổng bình phương độ lệch hướng và tổng bình phương góc bẻ lái khi không có gió và nhiễu 66 3.2 Tổng bình phương độ lệch hướng và tổng bình phương góc bẻ lái khi có nhiễu và gió 69 3.3 Tổng bình phương độ lệch hướng và tổng bình phương góc bẻ lái khi không có nhiễu và gió 73 3.4 Tổng bình phương độ lệch hướng và tổng bình phương góc bẻ lái khi có nhiễu và gió 75 1 MỞ ĐẦU 1. Tính cấp thiết của luận án Các phương pháp điều khiển truyền thống để thiết kế các hệ thống điều khiển tiên tiến cho tàu thủy điển hình như bộ điều khiển tỷ lệ - vi phân - tích phân (PID) vẫn còn phổ biến bởi vì nó có cấu trúc đơn giản và tính bền vững cao. Tuy nhiên, việc cải tiến chất lượng bộ điều khiển PID của hệ thống điều khiển tàu thủy vẫn luôn là vấn đề thời sự cho các nhà nghiên cứu, bởi vì khi thiết kế bộ điều khiển cho tàu thủy, bộ điều khiển PID thường yêu cầu phải có mô hình động học của tàu thủy đó. Thực tế, các tính năng động học của tàu thủy thường mang tính phi tuyến cao và chịu ảnh hưởng của nhiều yếu tố nhiễu loạn bên ngoài. Bản thân yếu tố nhiễu loạn bên ngoài cũng mang những đặc tính phi tuyến và không xác định cao. Điều đó dẫn đến việc phải xây dựng các cấu trúc và tham số không xác định và yêu cầu phải có kỹ thuật điều khiển tiên tiến. Hiện nay, các nhà khoa học trong lĩnh vực này, đã không ngừng nghiên cứu cải tiến chất lượng bộ điều khiển PID theo hai hướng cơ bản sau: - Thứ nhất, cải tiến cấu trúc bộ điều khiển PID; - Thứ hai, kết hợp lý thuyết lô-gic mờ, mạng nơ-ron nhân tạo, thuật toán di truyền và lý thuyết điều khiển thông minh khác với bộ điều khiển PID thông thường, nhằm đạt được chất lượng điều khiển mong muốn. Do vậy, bộ điều khiển kết hợp này còn được gọi là bộ điều khiển PID thông ... động sẽ sử dụng d như là tín hiệu điều khiển đầu vào nhằm điều khiển con tàu bám theo quỹ đạo mong muốn và làm cho sai số bám quỹ đạo của con tàu giảm dần về 0. 16/PL1 Hình 1.9. Luật điều hướng LOS Phương pháp điều khiển tàu bằng nguyên lý Lookahead-based Steering sẽ làm cho sai số bám quỹ đạo e(t) tiến về 0 bằng cách hướng vector vận tốc của con tàu đến điểm chuyển hướng kế tiếp trên quỹ đạo mà con tàu cần phải đi đến hay cũng chính là điểm chuyển hướng nk 1p + trên đoạn thẳng quỹ đạo mà con tàu đang bám theo như hình 1.9. Theo tài liệu [25] thì hướng đi mong muốn d theo nguyên lý Lookahead-based Steering sẽ được tách thành hai thành phần như sau: ( )d p r e = + (1.32) Trong đó p là góc tiếp tuyến của đoạn thẳng quỹ đạo mong muốn còn r là góc tương quan giữa vận tốc và quỹ đạo chuyển. Góc r được thêm vào d nhằm đảm bảo rằng vector vận tốc U của con tàu luôn hướng về điểm chuyển hướng n k 1p + . p ka = (1.33) ( ) ( ) arctanr e t e = − (1.34) 17/PL1 Trong đó là khoảng cách từ hình chiếu của điểm np (t) trên đoạn thẳng quỹ đạo mong muốn cho đến điểm chuyển hướng nk 1p + . Từ (1.31), (1.32) và (1.33) thì ta có thể tính được hướng đi mong muốn (desired heading) theo nguyên lý Lookahead-based Steering như sau: d d p r = − = + − (1.35) Trong đó v arcsin U = là góc trượt của con tàu. Tuy nhiên vì v U nên ta có thể xtác giả như 0 . Khi đó, (1.35) được viết lại thành: ( )d p r e = + (1.36) 1.2.4. Bán kính đường tròn giới hạn chuyển hướng tàu Trong quá trình bám theo đoạn quỹ đạo mong muốn, nếu như con tàu đi vào bên trong đường tròn giới hạn bán kính nR có tâm là điểm chuyển hướng ( )n nx , y thì hệ thống lựa chọn điểm chuyển hướng sẽ phát hiện và ra lệnh cho hệ thống dẫn đường (Guidance System) nhằm tính toán các thông số cần thiết giúp tàu chuyển hướng nhằm bám theo đoạn thẳng quỹ đạo mong muốn kế tiếp. Hay nói cách khác, lúc này điểm chuyển hướng có tọa độ ( )n 1 n 1x , y+ + sẽ được chọn làm điểm chuyển hướng mong muốn tiếp theo mà con tàu cần hướng đến nếu tọa độ con tàu thỏa mãn điều kiện sau: ( ) ( ) 2 2 2 n n nx x t y y t R− + − (1.37) Theo [25] thì bán kính nR có thể được như sau: Rn = 2LOA (1.38) Trong đó LOA là chiều dài toàn bộ của tàu như trong hình 1.10. 18/PL1 Hình 1.10. Chiều dài toàn bộ LOA của con tàu 1/PL2 PHỤ LỤC 2 MÃ CODE MATLAB CHO MÔ HÌNH TÀU MARINER function [xdot,U] = mariner(x,ui,U0) % [xdot,U] = mariner(x,ui) returns the speed U in m/s (optionally) and % the time derivative of the state vector: x = [ u v r x y psi delta n ]' % for the Mariner class vessel L = 160.93 m, where % u = pertubed surge velocity about Uo (m/s) % v = pertubed sway velocity about zero (m/s) % r = pertubed yaw velocity about zero (rad/s) % x = position in x-direction (m) % y = position in y-direction (m) % psi = pertubed yaw angle about zero (rad) % delta = actual rudder angle (rad) % The inputs are : % ui = commanded rudder angle (rad) % U0 = nominal speed (optionally). Default value is U0 = 7.7175 m/s = % 15 knots. % Reference: M.S. Chislett and J. Stroem-Tejsen (1965). Planar Motion %Mechanism Tests and Full-Scale Steering and Maneuvering Predictions for %a Mariner Class Vessel, %Technical Report Hy-5, Hydro- and Aerodynamics Laboratory, Lyngby, % Denmark. % Author: Trygve Lauvdal % Date: 12th May 1994 % Revisions: 19th July 2001 (Thor I. Fossen): added input/ouput U0 and U, %changed order of x-vector % 20th July 2001 (Thor I. Fossen): replaced inertia matrix with correct values % 11th July 2003 (Thor I. Fossen): max rudder is changed from % 30 deg to 40 deg to satisfy IMO regulations for 35 deg rudder execute % Check of input and state dimensions if (length(x) ~= 7),error('x-vector must have dimension 7 !'); end if (length(ui) ~= 1),error('ui must be a scalar input!'); end if nargin==2, U0 = 7.7175; end % Normalization variables L = 160.93; 2/PL2 U = sqrt((U0 + x(1))^2 + x(2)^2); % Non-dimensional states and inputs delta_c = -ui; % delta_c = -ui such that positive delta_c -> positive r u = x(1)/U; v = x(2)/U; r = x(3)*L/U; psi = x(6); delta = x(7); % Parameters, hydrodynamic derivatives and main dimensions delta_max = 40; % max rudder angle (deg) Ddelta_max = 5; % max rudder derivative (deg/s) m = 798e-5; Iz = 39.2e-5; xG = -0.023; Xudot = -42e-5; Yvdot = -748e-5; Nvdot = 4.646e-5; Xu = -184e-5; Yrdot =-9.354e-5; Nrdot = -43.8e-5; Xuu = -110e-5; Yv = -1160e-5; Nv = -264e-5; Xuuu = -215e-5; Yr = -499e-5; Nr = -166e-5; Xvv = -899e-5; Yvvv = -8078e-5; Nvvv = 1636e-5; Xrr = 18e-5; Yvvr = 15356e-5; Nvvr = -5483e-5; Xdd = -95e-5; Yvu = -1160e-5; Nvu = -264e-5; Xudd = -190e-5; Yru = -499e-5; Nru = -166e-5; Xrv = 798e-5; Yd = 278e-5; Nd = -139e-5; Xvd = 93e-5; Yddd = -90e-5; Nddd = 45e-5; Xuvd = 93e-5; Yud = 556e-5; Nud = -278e-5; Yuud = 278e-5; Nuud = -139e-5; Yvdd = -4e-5; Nvdd = 13e-5; Yvvd = 1190e-5; Nvvd = -489e-5; Y0 = -4e-5; N0 = 3e-5; Y0u = -8e-5; N0u = 6e-5; Y0uu = -4e-5; N0uu = 3e-5; % Masses and moments of inertia m11 = m-Xudot; m22 = m-Yvdot; 3/PL2 m23 = m*xG-Yrdot; m32 = m*xG-Nvdot; m33 = Iz-Nrdot; % Rudder saturation and dynamics if abs(delta_c) >= delta_max*pi/180, delta_c = sign(delta_c)*delta_max*pi/180; end delta_dot = delta_c - delta; if abs(delta_dot) >= Ddelta_max*pi/180, delta_dot = sign(delta_dot)*Ddelta_max*pi/180; end % Forces and moments X = Xu*u + Xuu*u^2 + Xuuu*u^3 + Xvv*v^2 + Xrr*r^2 + Xrv*r*v + Xdd*delta^2 +... Xudd*u*delta^2 + Xvd*v*delta + Xuvd*u*v*delta; Y = Yv*v + Yr*r + Yvvv*v^3 + Yvvr*v^2*r + Yvu*v*u + Yru*r*u + Yd*delta + ... Yddd*delta^3 + Yud*u*delta + Yuud*u^2*delta + Yvdd*v*delta^2 + ... Yvvd*v^2*delta + (Y0 + Y0u*u + Y0uu*u^2); N = Nv*v + Nr*r + Nvvv*v^3 + Nvvr*v^2*r + Nvu*v*u + Nru*r*u + Nd*delta + ... Nddd*delta^3 + Nud*u*delta + Nuud*u^2*delta + Nvdd*v*delta^2 + ... Nvvd*v^2*delta + (N0 + N0u*u + N0uu*u^2); % Dimensional state derivative detM22 = m22*m33-m23*m32; xdot = [ X*(U^2/L)/m11 -(-m33*Y+m23*N)*(U^2/L)/detM22 (-m32*Y+m22*N)*(U^2/L^2)/detM22 (cos(psi)*(U0/U+u)-sin(psi)*v)*U (sin(psi)*(U0/U+u)+cos(psi)*v)*U r*(U/L) delta_dot %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % END OF PROGRAM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 1/PL3 PHỤ LỤC 3 MÃ CODE MATLAB CHO BỘ ĐIỀU KHIỂN PID NƠ-RON LAN TRUYỀN NGƯỢC %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % PID control based on Back Propagation neuron network for Mariner Ship Heading Regulation %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Simulation on computer % This control method uses NN1 for approximating the ship model, % and NN2 for outputing Kp, Ki, Kd (NN1 và NN2) % - MOMENTUM in learning is used for NN1 % Author: NGUYEN PHUNG HUNG & VO HONG HAI %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc; clear; % Clear all variables in memory % The BPNN-PID Controller is of the form (4 - 5 - 3): % (4 input norons, 5 hidden norons, 3 output noron) IN = 6; H = 7; Out = 3; %NN Structure % Input layer consists of 4 norons with unity weights and zero bias, % include: reference course (psi_r), actual course(psi), actual course %(error) and d(error)/dt % Backpropagation algorithm: %delta(wij(k)) = - eta*(dEk/dwij)+alfa*delta(wij(k-1)) eta = 0.5; % learning rate alfa = 0.05;% momentum coefficient % We start executing the controller with ralative small weights: W21 = rands(H,IN)*0.00001; % Set random hidden layer weights W32 = rands(Out,H)*0.00001;% Set random output layer weights % x = [ u v r x y psi delta]' x = zeros(7,1); % Set initial state of the ship % delta=x(7); delta_1=0; delta_2=0; %rudder angle at k-1,..., k-5 delta_3=0; 2/PL3 psi_1=0; psi_2=0;% actual heading at k,k-1,.., k-3 error_1=0; % heading error at k,k-1,..,k-3 error_2=0; error_3=0; h=0.1; % Sampling time for integration (integration step size) k=1; % This is time's index (not time, its index). t=0; % Reset time to zero N = 150; %======================================================================== ro_w = 1.5; lamda_w = 1.5; beta_w = 0.3; kp_1 = 0; ki_1 = 0; kd_1 = 0; r = 0; d_psi_dot_1 =0; d_psi_dot_2 =0; psi_dot_1 =0; psi_dot_2 =0; psi_dot_3 =0; T = 10; rd_1 = 0; % Desired yaw rate calculated by reference model psi_d_1 = 0; Z_sum = 0; Z_psi_1=0; E1_1 = 0; E1_2 = 0; E1_3 = 0; net_in=zeros(IN,1); 3/PL3 %----------------------- % For reference model: z = 1; % relative damping ratio w = 0.05; % natural frequency damper = 1; % nonlinear damping coeff. %----------------------- Twv = 50; % period of wind velocity Twd = 6; % period of wind direction U0 = 7.7175; % nominal speed. Default value is U0 = 7.7175 m/s = 15 % knots. U = U0; t_final = 9000; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % START SIMULATION: % disp('Simulating PID based on BPNN') for k=1:t_final t=k*h; % psi_r(k)=20*(pi/180); % Firstly, we define the reference input psi_r (desired heading) if t<300, psi_r(k) = 25*(pi/180); end % Desired heading is 20 deg if t>=300, psi_r(k) = -25*(pi/180); end % Desired heading is -20 deg if t>600, psi_r(k) = 25*(pi/180); end % Desired heading is 20 deg % Sensor noise for the heading % sensor with a uniform % distribution on[-0.01,+0.01] % deg. % s(k) = 0.01*(pi/180)*(2*rand - 1); s(k) = 0; % This allow us to remove the noise psi(k) = x(6) + s(k); % Heading of the ship with sensor noise %r(k) = x(3); % This is pertubed yaw velocity about zero % (rad/s) at time step k delta_a(k) = x(7); %------------------------------------------- % Use reference model to produce desired heading psi_d(k). This is % reference model with nonlinear damping:(Fossen 2002) psi_d_dot = rd_1; rd_dot = w^2*(psi_r(k)-psi_d_1) - 2*z*w*rd_1 - damper*abs(rd_1)*rd_1; rd(k) = rd_1 + h*rd_dot; 4/PL3 psi_d(k) = psi_d_1 + h*psi_d_dot; %--------- wind -------------- if Twv==50 Twv = 0; if Twd==6 Twd = 0; Windir = (180/pi)*(inf2ber(60*rand(1)*pi/180) + psi(k)); end Twd = Twd + 1; [wind,V_w] = WindGen2(psi(k),Windir,U,h); end Twv = Twv + 1; wdr(k) = Windir; wve(k) = V_w; %------------------------------ error(k) = psi_d(k) - psi(k); % This is heading error psi_dot(k) = psi(k)- psi_1; d_psi_dot(k)= psi_dot(k) - psi_dot_1; % Z_psi(k) = h*(Z_psi_1 + error(k)); Z_psi(k) = Z_psi_1 + error(k); if k>=T+1 Z_sum = 0; for ii=1:T Z_sum = Z_sum + Z_psi(k-ii); end end %------------Output of NN------------------ Oi = mlnnc(Out,H,IN,net_in,W21,W32); kp(k) = 50*Oi(1); ki(k) = 10*Oi(2); kd(k) = 10*Oi(3); %------------------------------------------- %------PID Command-------------------------- delta(k) = delta_a(k) + (kp(k)+ki(k)+kd(k))*error(k)... - (kp(k)+2*kd(k))*error_1... + kd(k)*error_2; %------------------------------------------- xx(1) = error_1; xx(2) = error_2; xx(3) = error_3; 5/PL3 xx(4) = error(k) - error_1; xx(5) = error_1 - error_2; xx(6) = error_2 - error_3; net_in = [xx(1);xx(2);xx(3);xx(4);xx(5);xx(6)]; %------------------------------------------- E = [error(k) sign(Z_psi(k))*Z_psi(k) error(k)-error_1]; %-------------------------------------------------------------------- clc; fprintf('Simulating PID based on BPNN...please wait!\n*Counter = %d (%d)\n',k,t_final-k); %-------------------------------------------------------------------- if delta(k)>= 35*(pi/180) %Restricting the output of controller delta(k)=35*(pi/180); end if delta(k)<=-35*(pi/180) delta(k)=-35*(pi/180); end %-------------------------------------------------------------------- % Next we use 2nd order Euler method to calculate ship state: [xdot,U] = mariner3(x,delta(k),U0,wind); % xdot = mariner(x,delta(k)); x = euler2(xdot,x,h); % Calculated next state %================================================================= % NN Training Moment21 = alfa*W21; Moment32 = alfa*W32; [W21,W32] = bpnnTrain(h,eta,N,Out,H,IN,net_in,E,0,0,... ro_w,lamda_w,beta_w); W21 = W21 + Moment21; W32 = W32 + Moment32; %------------------------------------------- %Parameters Update kp_1 = kp(k); ki_1 = ki(k); kd_1 = kd(k); % E1_3 = E1_2; % E1_2 = E1_1; % E1_1 = E1; 6/PL3 delta_3 = delta_2; delta_2 = delta_1; delta_1 = delta(k); psi_2 = psi_1; psi_1 = psi(k); psi_dot_3=psi_dot_2; psi_dot_2=psi_dot_1; psi_dot_1=psi_dot(k); % Z_psi_1 = Z_psi(k); d_psi_dot_2 = d_psi_dot_1; d_psi_dot_1 = d_psi_dot(k); error_3 = error_2; error_2 = error_1; error_1 = error(k); psi_d_1 = psi_d(k); rd_1 = rd(k); time(k) = t; end % Squared sum of heading error and rudder angles E_psi = 0; E_rudder = 0; for i=1:k E1(i) = (psi_d(i)-psi(i))^2; E(i) = delta_a(i)^2; E_psi = E_psi + E1(i); E_rudder = E_rudder + E(i); end E_psi E_rudder %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Plot the results: % Convert from radian to degree psi = psi*(180/pi); 7/PL3 psi_r = psi_r*(180/pi); psi_d = psi_d*(180/pi); error = error*(180/pi); psi_dot = psi_dot*(180/pi); % psi_dot_hat = psi_dot_hat*(180/pi); d_psi_dot = d_psi_dot*(180/pi); delta = delta*(180/pi); %-------------------------------------------------------------------- figure(1); clf; subplot(211) plot(time,psi,'k-',time,psi_r,'k--',time,psi_d,'b:') title('Ship heading (solid) and desired ship heading (dashed),deg') legend('Ship heading','Reference heading',0) grid on subplot(212) plot(time,delta,'k-') title('Rudder angle (\delta),deg') grid on %-------------------------------------------------------------------- figure(2); clf; subplot(311); plot(time,kp,'r'); xlabel('time(s)');ylabel('kp'); title('KP') grid on subplot(312); plot(time,ki,'g'); xlabel('time(s)');ylabel('ki'); title('KI') grid on subplot(313); plot(time,kd,'b'); xlabel('time(s)');ylabel('kd'); title('KD') grid on %-------------------------------------------------------------------- figure(3) 8/PL3 clf subplot(311) plot(time,error,'k-') title('Course error (deg)') grid on subplot(312) plot(time,psi_dot,'k-') title('Rate of turn (deg/s)') grid on subplot(313) plot(time,d_psi_dot,'k-') title('Turning accelarator (deg/s^2)') grid on %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % END OF PROGRAM %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
File đính kèm:
- luan_an_nghien_cuu_ung_dung_bo_dieu_khien_pid_thich_nghi_dua.pdf
- 2.BIA TOM TAT LUAN AN.pdf
- 2.TOM TAT LUAN AN CAP TRUONG-VO HONG HAI-18.11.pdf
- 3.THONG TIN TOM TAT LUAN AN-NCS. HAI.pdf