You are on page 1of 12

BỘ GIÁO DỤC & ĐÀO TẠO

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HỒ CHÍ


MINH
KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN TỰ ĐỘNG ĐIỀU KHIỂN
-----------------⸙∆⸙-----------------

BÁO CÁO MÔN HỌC

ĐỀ TÀI: BÀI QUÁ TRÌNH 2

GVHD: Ts. Trần Đức Thiện


SVTH: Lê Thành Đạt
MSSV: 20151067

Tp. Hồ Chí Minh tháng 05 năm 2023

1
Lời cảm ơn

1
Mục lục

_Toc134981847
Danh sách hình ảnh................................................................................................................3
1. Yêu cầu:......................................................................................................................4
2. Bài làm........................................................................................................................4
2.1. Mô hình bồn nước lý thuyết.................................................................................4
2.2 Mô hình bồn nước Simulink....................................................................................5
2.3 Chương trình tìm thông số bộ điều khiển sử dụng giải thuật di truyền:..................5
2.4 Đáp ứng ngõ ra:........................................................................................................8
2.5 Tổng kết:..................................................................................................................9

2
Danh sách hình ảnh
Hình 1. Mô hình lý thuyết hệ bồn nước.................................................................................4
Hình 2. Mô hình simulink hệ bồn nước.................................................................................5
Hình 3. Mô hình khối điều khiển trong Simulink..................................................................5
Hình 4. Các thông số điều khiển tìm được sau 5 thế hệ........................................................7
Hình 5. Đồ thị của hàm thích nghi.........................................................................................8
Hình 6. Đáp ứng ngõ ra..........................................................................................................8
Hình 7. Tín hiệu điều khiển...................................................................................................9
Hình 8. Sai số.........................................................................................................................9

3
1. Yêu cầu:

 Áp dụng giải thuật di truyền để tìm thông số tối ưu của bộ điều khiển PID khi điều
khiển bồn nước đơn.
 Video tối đa 15p.
 Video có ghi màn hình và mặt người đang thực hiện.

2. Bài làm

2.1. Mô hình bồn nước lý thuyết

Mô hình lý thuyết hệ bồn nước.

Hình 1. Mô hình lý thuyết hệ bồn nước

Công thức toán của hệ là:

101\* MERGEFORMAT (.)


Trong đó:

tiết điện ngang của bồn chứa.


tiết diện ngang của miệng bồn chứa
tiết diện ngang của đáy bồn chứa
tiết diện van xả.
hệ số tỉ lệ với công suất máy bơm.
chiều cao hiện tại của bồn.
chiều cao của bồn chứa
lưu lượng nước vào.
lưu lượng nước ra.
:hệ số xả.
điện áp cấp cho máy bơm.
Ta có đầu vào của hệ là và đầu ra là .
Các thông số:
DKTM

2.2 Mô hình bồn nước Simulink

Hình 2. Mô hình simulink hệ bồn nước

Chương trình khối matlab function:

function h_dot = fcn(u,h)


%thong so bon nuoc
A_max=200;
A_min=100;
h_max=50;
a=1;
k=300;
Cd=0.6;
g=981;
h_dot=(k*u-a*Cd*sqrt(abs(2*g*h)))/(((A_max-A_min)*h/h_max)+A_min);

Khối điều khiển:

Hình 3. Mô hình khối điều khiển trong Simulink

2.3 Chương trình tìm thông số bộ điều khiển sử dụng giải thuật di truyền:

clc;
clear all
rand('state',sum(100*clock));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
max_generation=200; %% chay 200 the he roi dung
max_stall_generation=50; %% neu có 50 the he liên tiep có sai số epsilon nhỏ hơn
0.0001 thì dừng
epsilon=0.0001; %% J chuan ( neu the he nào có J<=epsilon tuc là tìm dc thông so thoa
man, thi dung)
pop_size=20; %%kích thước quần thể 20-30 là ok
npar = 3; %% có 3 nhiem sac the trong 1 cá the
range=[ 0 0 0;...
1 1 1]; %% giá tri Ki kp kd nam trong khoang 0 den 1
dec=[3 3 3]; %% Vị trí của dấu chấm tính từ trái sang 5
sig=[5 5 5]; %% 5 chu so có nghia, có nghia là 000.00 đến 000.99
DKTM

cross_prob = 0.9; %% tỉ lệ lai ghép


mutate_prob = 0.1; %% tỉ lệ đột biến
elitism = 1; %% luon giu lai giá tri tot nhat trong khi lai tao
rho=0.02; %% trong so quyet dinh hàm thích nghi,quyet dinh dap ung nhanh cua he
thong
par=init(pop_size,npar,range); %%khai tao 20 ca the cha me dau tien
Terminal=0; %khoi dong
generation = 0; %%biến đếm số thế hệ
stall_generation=0; %dau tien truoc khi chay GA
for pop_index=1:pop_size
Kp=par(pop_index,1);
Ki=par(pop_index,2);
Kd=par(pop_index,3);
sim('GA.slx'); %%bat dau mo phong
J=(e'*e)+rho*(u'*u);%%ham thich nghi
fitness(pop_index)=1/(J+eps);%% tim cuc tieu cua ham thich nghi
end;
[bestfit0,bestchrom]=max(fitness);
Kp0=par(bestchrom,1); %cac ca the
Ki0=par(bestchrom,2); %cha me
Kd0=par(bestchrom,3); %dau tien
J0=1/bestfit0-0.001;%do elitism= nen doi hoi phai co 1 cha me tot nhat de so sanh
while ~Terminal %terminal se bang 1 neu chay du 200 the he hoac trong qua trinh chay
co 1 the he con cai best
generation = generation+1; %truoc moi lan chay cho hien thi
disp(['generation #' num2str(generation) ' of maximum ' num2str(max_generation)]);
pop=Encode_Decimal_Unsigned(par,sig,dec); %ma hoa thap phan(NST cua cac cha
me)
parent=Select_Linear_Ranking(pop,fitness,0.2,elitism,bestchrom); %chon loc cac ham
tuyen tinh
child=Cross_Twopoint(parent,cross_prob,elitism,bestchrom);%con cai sinh ra se dc lai
ghep
pop=Mutate_Uniform(child,mutate_prob,elitism,bestchrom);%dot bien theo dang phan
bo deu
par=Decode_Decimal_Unsigned(pop,sig,dec);%giai ma ket qua ve lai dang nst
for pop_index=1:pop_size%lan luot test tung ca the trong quan the
Kp=par(pop_index,1); %quy doi gia tri nhiem
Ki=par(pop_index,2);%sac the ve cac gia tri
Kd=par(pop_index,3);%Kp1,Ki1,Kd1
sim('GA.slx');%tien hanh chay mo phong de kiem tra
J=(e'*e)+rho*(u'*u);
fitness(pop_index)=1/(J+eps);
end;
[bestfit(generation),bestchrom]=max(fitness);%ca the nao co kp1,ki1,kd1,kp2,ki2, kd2
se dc chon la ca the toi uu
%% kiem tra dieu kien dung
if generation == max_generation %neu chay du 200 the he roi ma chua co ca the toi uu

6
DKTM

Terminal = 1; %thi cho terminal=1,stop GA


elseif generation > 1
if abs(bestfit(generation)- bestfit(generation-1)) < epsilon
stall_generation=stall_generation+1;
if stall_generation == max_stall_generation, Terminal = 1;end %con trong qtr
chay ma xuat hien ca the toi uu thi dung
else
stall_generation=0;
end
end

end %While
plot(1./bestfit)
Kp0
Ki0
Kd0
J0
Kp=par(bestchrom,1) %hien thi
Ki=par(bestchrom,2) %cac nst
Kd=par(bestchrom,3)%kp1,ki1,kd1,kp2,ki2,kd2
J=1/bestfit(end) %ham tieu chuan tuong ung ca the con tot nhat do
sim('GA.slx');%tien hanh mo phong lai de kiem tra ca the con tot nhat do cho dap ung
he thong nhu the nao

Sau khi chạy được 51 thế hệ chương trình cho ra các giá trị tối ưu:

Hình 4. Các thông số điều khiển tìm được sau 5 thế hệ

7
DKTM

Ta có đồ thị của hàm thích nghi:


10 4
2

1.8

1.6

1.4

1.2

0.8

0.6
0 10 20 30 40 50 60

Hình 5. Đồ thị của hàm thích nghi

Nhận xét: Ta thấy từ khoảng thế hệ thứ 12 tới thế hệ thứ 51 thì hàm thích nghi có xu
hướng hội tụ về 0 và chương trình dừng với điều kiện thứ 2 có 50 cá thể mà sai số epsilon
nhỏ hơn 0.0001.

2.4 Đáp ứng ngõ ra:

Đồ thị đáp ứng ngõ ra của hệ thống:

Hình 6. Đáp ứng ngõ ra

Nhận xét: Hệ thống đáp ứng rất nhanh với độ vọt lố và sai số xác lập nhò.
POT = 6.03%, exl=0.0001, =0.02; =0.3.
8
DKTM

Tín hiệu điều khiển:

Hình 7. Tín hiệu điều khiển

Sai số ngõ ra:

Hình 8. Sai số

2.5 Tổng kết:

Ta có thể tìm ra được các thông số tối ưu cho bộ điều khiển với độ chính xác khá
cao bằng giải thuật di truyền.

9
DKTM

10
DKTM

11

You might also like