1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Luận văn thạc sĩ hcmute) thiết kế và chế tạo thiết bị đo khớp cổ chân

135 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ NGUYỄN NGỌC TUẤN NGHIÊN CỨU VÀ THIẾT KẾ BỘ ĐIỀU KHIỂN PID THEO THUẬT TOÁN PSO DÙNG CHO CÁC HỆ THỐNG CÔNG NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ - 60520114 S K C0 2 Tp Hồ Chí Minh, tháng 4/2017 Luan van BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ NGUYỄN NGỌC TUẤN NGHIÊN CỨU VÀ THIẾT KẾ BỘ ĐIỀU KHIỂN PID THEO THUẬT TOÁN PSO DÙNG CHO CÁC HỆ THỐNG CÔNG NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ - 60520114 Tp Hồ Chí Minh, tháng 04 / 2017 Luan van BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC SƢ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH LUẬN VĂN THẠC SĨ NGUYỄN NGỌC TUẤN NGHIÊN CỨU VÀ THIẾT KẾ BỘ ĐIỀU KHIỂN PID THEO THUẬT TOÁN PSO DÙNG CHO CÁC HỆ THỐNG CÔNG NGHIỆP NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ - 60520114 Hƣớng dẫn khoa học: PSG.TS TRƢƠNG NGUYỄN LUÂN VŨ Tp Hồ Chí Minh, tháng 04/2017 Luan van LÝ LỊCH KHOA HỌC I LÝ LỊCH SƠ LƢỢC: Họ & tên: Nguyễn Ngọc Tuấn Giới tính: Nam Ngày, tháng, năm sinh: 05/02/1987 Nơi sinh: Đồng Nai Quê quán: Quảng Ngãi Dân tộc: Kinh Chỗ riêng địa liên lạc: Nghĩa Thành - Châu Đức - Bà Rịa Vũng Tàu Điện thoại quan: (84-8)38 294 274 Điện thoại nhà riêng: 0907050287 Fax: (84-8)38 293 012 E-mail: nt.tuan5287@gmail.com II QUÁ TRÌNH ĐÀO TẠO: Trung học chuyên nghiệp: Hệ đào tạo: Thời gian đào tạo từ…/… đến …/ Nơi học (trƣờng, thành phố): Ngành học: Đại học: Hệ đào tạo: Chính Quy Thời gian đào tạo từ: 2006 đến 2011 Nơi học (trƣờng, thành phố): Đại Học Sƣ Phạm Kỹ Thuật Thành Phố Hồ Chí Minh Ngành học: Kỹ Thuật Cơ Điện Tử Tên đồ án, luận án môn thi tốt nghiệp: Thiết Kế Và Thi Công Một Số Module Điều Khiển Nhà Thông Minh Ngày & nơi bảo vệ đồ án, luận án thi tốt nghiệp: Tháng năm 2011, Trƣờng Đại Học Sƣ Phạm Kỹ Thuật Thành Phố Hồ Chí Minh Ngƣời hƣớng dẫn: ThS Lê Tấn Cƣờng III QUÁ TRÌNH CƠNG TÁC CHUN MƠN KỂ TỪ KHI TỐT NGHIỆP ĐẠI HỌC: Thời gian Nơi công tác Công việc đảm nhiệm Năm 2011 đến Trung Tâm Kỹ Thuật Tiêu Chuẩn Đo Kỹ Thuật Viên Lƣờng Chất Lƣợng i Luan van LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu tơi Các số liệu, kết nêu luận văn trung thực chƣa đƣợc cơng bố cơng trình khác Tp Hồ Chí Minh, ngày 22 tháng 04 năm 2017 (Ký tên ghi rõ họ tên) Nguyễn Ngọc Tuấn ii Luan van CẢM TẠ  Trong suốt trình thực đề tài, gặp phải nhiều khó khăn nhƣng đƣợc giúp đỡ, hƣớng dẫn từ quý Thầy,Cô bạn nên Luận văn tốt nghiệp Thạc sĩ hoàn thành tiến độ Em xin chân thành cảm ơn thầy PSG.TS Trƣơng Nguyễn Luân Vũ tận tình hƣớng dẫn, bảo kinh nghiệm quý báu nhƣ tạo điều kiện thuận lợi suốt trình tìm hiểu, nghiên cứu đề tài Đồng thời, Em xin chân thành cảm ơn Thầy, Cơ Khoa Cơ Khí Chế Tạo Máy tạo điều kiện, cung cấp cho Em kiến thức bản, cần thiết để Em có điều kiện đủ kiến thức để thực trình nghiên cứu Bên cạnh đó, Em xin cảm ơn bạn lớp cao học có ý kiến đóng góp, bổ sung, động viên giúp đỡ Em hồn thành tốt đề tài Mặc dù Em cố gắng thực hoàn thiện đƣợc luận văn đề tài, nhƣng trình soạn thảo, nhƣ kiến thức cịn hạn chế nên cịn nhiều thiếu sót Kính mong nhận đƣợc đóng góp ý kiến quý Thầy, Cô bạn học viên Sau Em xin chúc quý Thầy, Cô sức khoẻ, thành công tiếp tục đào tạo sinh viên giỏi đóng góp cho đất nƣớc Em xin chân thành cảm ơn Trân trọng! Nguyễn Ngọc Tuấn iii Luan van TÓM TẮT Bộ điều khiển PID điều khiển phổ biến công nghiệp Phƣơng pháp thông dụng để chỉnh định điều khiển giải thuật ZieglerNichols Tuy nhiên, ảnh hƣởng nhiễu sai số thiết bị đo mà phƣơng pháp khó đạt đƣợc giá trị tối ƣu cho hệ số Kp, Kd Ki điều khiển PID Nhằm hổ trợ cho trình này, đề tài trình bày kỹ thuật ứng dụng thuật toán tối ƣu bầy đàn (PSO) để tìm kiếm hệ số tối ƣu điều khiển PID cho hệ thống cơng nghiệp Kết mơ q trình FOPDT, SOPDT, SOIPDT, FODUP, ứng dụng điều khiển tốc độ động không đồng pha cho thấy rằng, chất lƣợng điều khiển đƣợc cải thiện rõ rệt Kết mô cho thấy phƣơng pháp PSO hoạt động tốt Từ Khóa: Bộ điều khiển PID, Phƣơng pháp Ziegler-Nichols, Giải thuật bầy đàn, Động ba pha ABSTRACT PID controller is a very popular controller in industry, that is commonly designed by the Ziegler-Nichols tuning method However, due to the effect of noise and the errors of measuring devices, it is difficult to obtain the optimal values of Kp, Kd and Ki of the PID controller In order to improve the fine tuning process, This thesis presents a solution of using Particle Swarm Optimization (PSO) to achieve the optimum PID controller in industry The results getting from simulations on processes FOPDT, SOPDT, SOIPDT, FODUP and tuning of PID controller of induction motor indicates that using Particle Swarm Optimization can improve the quality of the PID controller The simmulation results show that the proposed method has good performance Keywords: PID controller, Ziegler-Nichols tuning method, Particle Swarm Optimization, Induction Motor iv Luan van MỤC LỤC Trang tựa TRANG Quyết định giao đề tài LÝ LỊCH KHOA HỌC i LỜI CAM ĐOAN .ii CẢM TẠ iii TÓM TẮT iv MỤC LỤC v DANH SÁCH CÁC CHỮ VIẾT TẮT xi DANH SÁCH CÁC HÌNH .xii DANH SÁCH CÁC BẢNG xv CHƢƠNG TỔNG QUAN 1.1 Tổng quan lĩnh vực nghiên cứu, kết nghiên cứu nƣớc 1.1.1 Kết nghiên cứu nƣớc 1.1.1.1 Bài báo nghiên cứu “ Dùng PID điều khiển động khơng chổi than dựa thuật tốn PSO” 1.1.1.2 Bài báo nghiên cứu “Tối ƣu hóa thông số điều khiển PID dựa PSO cho Multi-leaf Collimator( MLC) ” 1.1.1.3 Bài báo nghiên cứu “Chỉnh thông số điều khiển PID dựa theo PSO cho điều khiển tải tần số khu vục hai hệ thống điện” 1.1.1.4 Bài báo nghiên cứu “Tự chỉnh thông số điều khiển PID dựa theo PSO cho động siêu âm” 1.1.1.5 Bài báo nghiên cứu “Thiết kế điều khiển PSO-PID cho hệ phi tuyến cho bể hình nón ngành cơng nghiệp hóa” 1.1.1.6 Bài báo nghiên cứu “Chỉnh thông số điều khiển PID dựa theo thuật toán PSO để tăng hiệu suất máy khoan” 1.2 Tính cấp thiết đề tài 1.3 Mục đích nghiên cứu, khách thể đối tƣợng nghiên cứu 1.4 Nhiệm vụ nghiên cứu giới hạn đề tài v Luan van 1.5 Phƣơng pháp nghiên cứu 1.6 Ý nghĩa khoa học thực tiễn đề tài 1.7 Kế hoạch thực CHƢƠNG CƠ SỞ LÝ THUYẾT 2.1 Tổng quan điều khiển PID 2.2 Tác động điều khiển khâu tỉ lệ, tích phân đạo hàm 2.2.1 Khâu tỉ lệ 2.2.2 Khâu tích phân 10 2.2.3 Khâu vi phân 11 2.3 Thuật toán PID 13 2.3.1 Khái quát điều khiển PID (Proportional Integral Derivative) 13 2.3.2 Phƣơng pháp xác định tham số điều khiển PID 14 2.3.3 Kết luận nhận xét 18 2.4 Tiêu chí đánh giá hiệu suất điều khiển 18 2.5 Những mơ hình điều khiển q trình điển hình công nghiệp 18 2.6 Động không đồng pha 20 2.6.1 Mạch điện tƣơng đƣơng động không đồng 20 2.6.2 Vector không gian đại lƣợng ba pha 21 2.6.2.1 Hệ tọa độ cố định stator (    ) 21 2.6.2.2 Hệ tọa độ từ thông rotor ( d-q ) 22 2.6.3 Các phƣơng pháp điều khiển tốc độ động không đồng pha 23 2.6.3.1 Các phƣơng pháp điều khiển định hƣớng từ thông rotor 24 2.6.3.2 Biểu diễn vector không gian hệ tọa độ từ thông rotor 25 2.6.4 Mơ hình động khơng đồng ba pha 27 2.6.4.1 Thông số động không đồng 27 2.6.4.2 Các phƣơng trình động không đồng ba pha 27 2.6.4.4 Mơ hình động khơng đồng hệ tọa độ (d – q) 30 CHƢƠNG TÍNH TỐN TIẾN HĨA VÀ TRÍ TUỆ BẦY ĐÀN 32 3.1 Giới thiệu 32 vi Luan van 3.2 Tính tốn tiến hóa 32 3.2.1 Lập trình di truyền (GP: Genetic Programming) 32 3.2.2 Quy hoạch tiến hóa (EP: Evolutionary Programming) 32 3.2.3 Chiến lƣợc tiến hóa (ES: Evolutionary Strategies ) 33 3.2.4 Giải thuật di truyền (GA: Genetic Algorithms) 33 3.3 Tổng quan thuật toán di truyền 33 3.3.1 Giải thuật di truyền 33 3.3.2 Các tính chất giải thuật di truyền 34 3.3.3 Các bƣớc giải thuật di truyền 35 3.3.4 Áp dụng giải thuật di truyền để tìm kiếm tham số tối ƣu cho điều khiển PID 36 3.4 Trí tuệ bầy đàn (SI: Swarm Intelligence) 37 3.4.1 Giải thuật tối ƣu hóa bầy kiến (ACO: Ant Colony Optimization) 38 3.4.2 Thuật toán tối ƣu bầy đàn (PSO: Particle Swarm Optimization) 38 3.5 So sánh GA PSO 39 3.6 Tóm tắt kết luận 39 CHƢƠNG THUẬT TOÁN TỐI ƢU BẦY ĐÀN 41 4.1 Giới thiệu 41 4.2 Các khái niệm giải thuật bầy đàn 42 4.3 Mơ tả thuật tốn PSO [6] 43 4.4 Những vấn đề cần quan tâm xây dựng thuật toán PSO 45 4.4.1 Mã hóa cá thể 45 4.4.1.1 Mã hóa nhị phân 46 4.4.1.2 Mã hóa hoán vị 46 4.4.1.3 Mã hóa theo giá trị 47 4.4.1.4 Mã hóa theo cấu trúc 47 4.4.2 Khởi tạo quần thể ban đầu 47 4.4.3 Hàm thích nghi 48 4.4.4 Hàm vận tốc V 48 vii Luan van w =0.554; % so quan tinh fitness=0*ones(n,bird_setp); % -% % khoi tao thong so ban dau % % -% R1 = rand(dim, n); R2 = rand(dim, n); current_fitness =0*ones(n,1); % % % khoi tao gia tri van toc va vi tri ban dau cua bay dan % % % current_position = 0.035*(rand(dim, n)-0.2); velocity = 0.1*randn(dim, n) ; local_best_position = current_position ; % -% % uoc tinh gia tri ban dau cua quan the % % -% for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); Kd=abs(current_position(3,i)); sim('SOPDT_PSO'); current_fitness(i) =Fitness; end local_best_fitness = current_fitness; [global_best_fitness,g] = min(local_best_fitness) ; for i=1:n globl_best_position(:,i) = local_best_position(:,g) ; end % -% % cap nhap lai gia tri van toc % % -% velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); 103 Luan van % % % cap nhap lai gia tri vi tri % % % current_position = current_position + velocity ; % % % uoc tính gia tri moi cua bay dan % % % %% vong lap chinh iter = ; % bien dem so lan lap lai while ( iter < bird_setp ) iter = iter + 1; for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); Kd=abs(current_position(3,i)); yout = sim('SOPDT_PSO'); current_fitness(i) =Fitness; end a= current_fitness; for i = : n if current_fitness(i) < local_best_fitness(i) local_best_fitness(i) = current_fitness(i); local_best_position(:,i) = current_position(:,i) ; end end [current_global_best_fitness,g] = min(local_best_fitness); if current_global_best_fitness < global_best_fitness global_best_fitness = current_global_best_fitness; for i=1:n 104 Luan van globl_best_position(:,i) = local_best_position(:,g); end end velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); current_position = current_position + velocity; sprintf('iter %3.0f',iter) end % ket thuc vong lap current_position(:,g); Kp = abs(current_position(1,g)) Ki = abs(current_position(2,g)) Kd = abs(current_position(3,g)) %% Ve ham muc tieu hammt=abs(a); for i=g:n hammt(i)= global_best_fitness; end itness_fuction=hammt; subplot(4,1,1) plot(Fitness_fuction); title('CỰC TIỂU HÀM MỤC TIÊU','Fontname','VNI-TIMES','fontsize',12) legend Fitness; %% Ve ham Kp, Ki va Kd best_position =abs(local_best_position); for i=g:n best_position(:,i)= abs((current_position(:,g))); end subplot(4,1,2) plot(best_position(1,:)) title('GIÁ TRỊ HÀM KP','Fontname','VNI-TIMES','Fontsize',12) legend Kp; subplot(4,1,3) plot(best_position(2,:)) title('GIÁ TRỊ HÀM KI','Fontname','VNI-TIMES','Fontsize',12) 105 Luan van legend Ki; subplot(4,1,4) plot(best_position(3,:)) title('GIÁ TRỊ HÀM KD','Fontname','VNI-TIMES','Fontsize',12) legend Kd; SOIPDT_PSO.m % Dai Hoc Su Pham Ky Thuat TP.Ho Chi Minh % Thuc hien: Nguyen Ngoc Tuan % Email: nt.tuan5287@gmailcom % SOIPDT %% khoi tao clear all; clc; Tp=1; Lp=0.2; n = 50; % so luong bay dan bird_setp =30; % so lan lap dim = 3; % kich thuoc bay dan c2 =2.05; % Hang so gia toc C2 c1 = 2.05; % hang so gia toc C1 w =0.754; % so quan tinh fitness=0*ones(n,bird_setp); % -% % khoi tao thong so ban dau % % -% R1 = rand(dim, n); R2 = rand(dim, n); current_fitness =0*ones(n,1); % % % khoi tao gia tri van toc va vi tri ban dau cua bay dan % % % current_position = 0.754*(rand(dim, n)-0.2); velocity = 0.1*randn(dim, n) ; local_best_position = current_position ; % -% 106 Luan van % uoc tinh gia tri ban dau cua quan the % % -% for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); Kd=abs(current_position(3,i)); sim('SOIPDT_PSO'); current_fitness(i) =Fitness; end local_best_fitness = current_fitness; [global_best_fitness,g] = min(local_best_fitness) ; for i=1:n globl_best_position(:,i) = local_best_position(:,g) ; end % -% % cap nhap lai gia tri van toc % % -% velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); % % % cap nhap lai gia tri vi tri % % % current_position = current_position + velocity ; % % % uoc tính gia tri moi cua bay dan % % % %% vong lap chinh iter = ; % bien dem so lan lap lai while ( iter < bird_setp ) iter = iter + 1; for i = 1:n current_position(:,i); 107 Luan van Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); Kd=abs(current_position(3,i)); yout = sim('SOIPDT_PSO'); current_fitness(i) =Fitness; end a= current_fitness; for i = : n if current_fitness(i) < local_best_fitness(i) local_best_fitness(i) = current_fitness(i); local_best_position(:,i) = current_position(:,i) ; end end [current_global_best_fitness,g] = min(local_best_fitness); if current_global_best_fitness < global_best_fitness global_best_fitness = current_global_best_fitness; for i=1:n globl_best_position(:,i) = local_best_position(:,g); end end velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); current_position = current_position + velocity; sprintf('iter %3.0f',iter) end % ket thuc vong lap current_position(:,g); Kp = abs(current_position(1,g)) Ki = abs(current_position(2,g)) Kd = abs(current_position(3,g)) %% Ve ham muc tieu hammt=abs(a); 108 Luan van for i=g:n hammt(i)= global_best_fitness; end itness_fuction=hammt; subplot(4,1,1) plot(Fitness_fuction); title('CỰC TIỂU HÀM MỤC TIÊU','Fontname','VNI-TIMES','fontsize',12) legend Fitness; %% Ve ham Kp, Ki va Kd best_position =abs(local_best_position); for i=g:n best_position(:,i)= abs((current_position(:,g))); end subplot(4,1,2) plot(best_position(1,:)) title('GIÁ TRỊ HÀM KP','Fontname','VNI-TIMES','Fontsize',12) legend Kp; subplot(4,1,3) plot(best_position(2,:)) title('GIÁ TRỊ HÀM KI','Fontname','VNI-TIMES','Fontsize',12) legend Ki; subplot(4,1,4) plot(best_position(3,:)) title('GIÁ TRỊ HÀM KD','Fontname','VNI-TIMES','Fontsize',12) legend Kd; FODUP_PSO.m % Dai Hoc Su Pham Ky Thuat TP.Ho Chi Minh % Thuc hien: Nguyen Ngoc Tuan % Email: nt.tuan5287@gmailcom % FODUP %% khoi tao clear all; clc; Tp=1; Lp=0.2; n = 50; % so luong bay dan bird_setp =30; % so lan lap 109 Luan van dim = 2; % kich thuoc bay dan c2 =2.05; % Hang so gia toc C2 c1 = 2.05; % hang so gia toc C1 w =0.57; % so quan tinh fitness=0*ones(n,bird_setp); % -% % khoi tao thong so ban dau % % -% R1 = rand(dim, n); R2 = rand(dim, n); current_fitness =0*ones(n,1); % % % khoi tao gia tri van toc va vi tri ban dau cua bay dan % % % current_position = 0.57*(rand(dim, n)-0.2); velocity = 0.1*randn(dim, n) ; local_best_position = current_position ; % -% % uoc tinh gia tri ban dau cua quan the % % -% for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); sim('FOPUP_PSO'); current_fitness(i) =Fitness; end local_best_fitness = current_fitness; [global_best_fitness,g] = min(local_best_fitness) ; for i=1:n globl_best_position(:,i) = local_best_position(:,g) ; end % -% % cap nhap lai gia tri van toc % % -% 110 Luan van velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); % % % cap nhap lai gia tri vi tri % % % current_position = current_position + velocity ; % % % uoc tính gia tri moi cua bay dan % % % %% vong lap chinh iter = ; % bien dem so lan lap lai while ( iter < bird_setp ) iter = iter + 1; for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); yout = sim('FOPUP_PSO'); current_fitness(i) =Fitness; end a= current_fitness; for i = : n if current_fitness(i) < local_best_fitness(i) local_best_fitness(i) = current_fitness(i); local_best_position(:,i) = current_position(:,i) ; end end [current_global_best_fitness,g] = min(local_best_fitness); if current_global_best_fitness < global_best_fitness global_best_fitness = current_global_best_fitness; 111 Luan van for i=1:n globl_best_position(:,i) = local_best_position(:,g); end end velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); current_position = current_position + velocity; sprintf('iter %3.0f',iter) end % ket thuc vong lap current_position(:,g); Kp = abs(current_position(1,g)) Ki = abs(current_position(2,g)) %% Ve ham muc tieu hammt=abs(a); for i=g:n hammt(i)= global_best_fitness; end itness_fuction=hammt; subplot(4,1,1) plot(Fitness_fuction); title('CỰC TIỂU HÀM MỤC TIÊU','Fontname','VNI-TIMES','fontsize',12) legend Fitness; %% Ve ham Kp, Ki va Kd best_position =abs(local_best_position); for i=g:n best_position(:,i)= abs((current_position(:,g))); end subplot(4,1,2) plot(best_position(1,:)) title('GIÁ TRỊ HÀM KP','Fontname','VNI-TIMES','Fontsize',12) legend Kp; subplot(4,1,3) plot(best_position(2,:)) title('GIÁ TRỊ HÀM KI','Fontname','VNI-TIMES','Fontsize',12) 112 Luan van legend Ki; PSO.m % Dai Hoc Su Pham Ky Thuat TP.Ho Chi Minh % Thuc hien: Nguyen Ngoc Tuan % Email: nt.tuan5287@gmailcom % DIEU KHIEN TOC DO DONG CO KHONG DONG BO BA PHA %% Initialization clear all; clc; n = 50; bird_setp =8; dim = 2; % so luong bay dan % so lan lap % kich thuoc bay dan c2 =2.05; % Hang so gia toc C2 c1 = 2.05; % hang so gia toc C1 w =0.57; % so quan tinh fitness=0*ones(n,bird_setp); % -% % khoi tao thong so ban dau% % -% R1 = rand(dim, n); R2 = rand(dim, n); current_fitness =0*ones(n,1); % % % khoi tao gia tri van toc va vi tri ban dau cua bay dan% % % current_position =5.5*(rand(dim, n)); velocity =1*randn(dim, n) ; local_best_position = current_position ; % -% % uoc tinh gia tri ban dau cua quan the % % -% for i = 1:n 113 Luan van current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); sim('MHDC'); current_fitness(i) =Fitness; end local_best_fitness = current_fitness; [global_best_fitness,g] = min(local_best_fitness) ; for i=1:n globl_best_position(:,i) = local_best_position(:,g) ; end % -% % cap nhap lai gia tri van toc% % -% velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); % % % cap nhap lai gia tri vi tri % % % current_position = current_position + velocity ; % % % uoc tính gia tri moi cua bay dan % % %% vong lap chinh iter = ; % bien dem so lan lap lai while ( iter < bird_setp ) iter = iter + 1; for i = 1:n current_position(:,i); Kp=abs(current_position(1,i)); Ki=abs(current_position(2,i)); sim('MHDC'); current_fitness(i) =Fitness; 114 Luan van % end a= current_fitness; for i = : n if current_fitness(i) < local_best_fitness(i) local_best_fitness(i) = current_fitness(i); local_best_position(:,i) = current_position(:,i) ; end end [current_global_best_fitness,g] = min(local_best_fitness); if current_global_best_fitness < global_best_fitness global_best_fitness = current_global_best_fitness; for i=1:n globl_best_position(:,i) = local_best_position(:,g); end end velocity = w *velocity + c1*(R1.*(local_best_position-current_position)) + c2*(R2.*(globl_best_position-current_position)); current_position = current_position + velocity; sprintf('iter %3.0f',iter) end % ket thuc vong lap current_position(:,g); Kp = abs(current_position(1,g)) Ki = abs(current_position(2,g)) %% Ve ham muc tieu hammt=abs(a); for i=g:n hammt(i)= global_best_fitness; end Fitness_fuction=hammt; subplot(4,1,1) 115 Luan van plot(Fitness_fuction); title('CỰC TIỂU HÀM MỤC TIÊU','Fontname','VNITIMES','fontsize',12) legend Fitness; %xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx %% Ve ham Kp, Ki va Kd best_position =abs(local_best_position); for i=g:n best_position(:,i)= abs((current_position(:,g))); end subplot(4,1,2) plot(best_position(1,:)) title('GIÁ TRỊ HÀM KP','Fontname','VNI-TIMES','Fontsize',12) legend Kp; %xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx subplot(4,1,3) plot(best_position(2,:)) title('GIÁ TRỊ HÀM KI','Fontname','VNI-TIMES','Fontsize',12) legend Ki; %xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xx 116 Luan van S K L 0 Luan van

Ngày đăng: 27/12/2023, 04:30

Xem thêm: