Nhận dạng dùng mạng nơ-ron

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mạng nơ ron trong nhận dạng và điều khiển (Trang 71)

Trong phần này ta dùng một mô hình toán của tay máy để tạo ra tín hiệu mẫu, mô hình toán của cánh tay máy để phát ra bộ tín hiệu vào ra mẫu như sau:

θ+ 2θ

trong đó, τ là mô men hoặc lực tác Thực tế ta sẽ đo mô men τ tác động cánh tay máyθ. [3].

+10sin(θ) =τ

động lên khớp và θlà góc quay của khớp. lên khớp quay của cánh tay và góc quay của

Vì mô hình toán có dạng phương trình vi phân, và có hàm sin nên đối tượng

ởđây là động học và phi tuyến, ta không thể dùng hàm một bước nhảy nhận dạng mà phải dùng nhiều hàm bước nhảy với biên độ khác nhau. Cho nên tín hiệu đầu vào mẫu p sẽ được lựa chọn có dạng như trong hình 3.2a.

47

Hình a: Tín hiệu mẫu đầ u vào Hình b: Tín hiệu đầu vào mẫu cho nhận dạng

Hình 3.2: Tín hiệu đầu vào mẫu

Hình 3.3 Tạo đầu ra mẫu từ mô hình trong Simulink

Các hàm bước nhảy này có độ rộng ngẫu nhiên trong đoạn [0.1;1] và biên độ nằm trong đoạn [-10;10]. Tín hiệu đầu vào mẫu p sẽ được sử dụng để tác động vào đối tượng, và đo đầu ra của đối tượng tương ứng để có tín hiệu đầu ra mẫu.

Tín hiệu đầu ra mẫu thu được từ mô hình trong Simulink như hình 3.3. Trong đó, tín hiệu đầu vão mẫu được đưa vào khối From Workspace và tín hiệu đầu ra mẫu được lưu vào khối To Workspace.

Với đầu vào mẫu p, đầu ra của đối tượng thu thập được tương ứng là t như hình 3.4.

48

Hình 3.4 Tín hiệu đầu ra mẫu

p

Bộ tín hiệu sẽ dược dùng để huấn luyện mạng nơ-ron. Mạng nơ-ron được t

tạo ra trong Matlab có sơ đồ cấu trúc như hình 3.6 . Mạng gồm 2 lớp, lớp thứ nhất có hàm truyền tansig và lớp thứ hai có hàm truyền tuyến tính, khối DB của đầu vào thứ nhất có trễ 1:2 và khối DB của đầu vào thứ 2 có trễ tương tự 1:2, lớp thứ nhất có 6 nơ-ron.

Tín hiệu vào ra được lấy mẫu với chu kì Ts = 0.01 giây, do đó số mẫu là 50001.

Bộ mẫu {pk ;tk} sẽ dược dùng để huấn luyện mạng, phương pháp LM được sử dụng để huấn luyện mạng, các tham số cho quá trình huấn luyện được cài đặt như sau: số kỉ nguyên là 1000, giới hạn dưới của gradient 10−7 , giới hạn dưới của hàm mục tiêu là ε = 10−7 . Ta thấy sau 10 kỉ nguyên giá trị hàm mục tiêu nhỏ hơn nên quá trình huấn luyện mạng kết thúc, ngoài ra ta thấy gradient còn lớn hơn 0.0224. Sau khi huấn luyện mạng, đáp ứng đầu ra của mạng nơ-ron và sai số được vẽ trong hình 3.7.

Đồ thị hàm mục tiêu theo số kỉ nguyên huấn luyện như trong hình 3.8. Sau khi huấn luyện mạng nơ-ron của đối tượng NNp, mạng này sẽ có cấu trúc và tham số xác định. Bước tiếp theo là dùng phương pháp điều khiển dự báo MPC để thiết kế bộ điều khiển dự báo.

49

Hình 3.5 Cấu trúc mạng nơ-ron của đối tượng nnp

Hình 3.6 Sơ đồ cấu trúc mạng nơ-ron

50

Hình 3.7 Đáp ứng đầu ra của mạng nơ-ron và sai số

Hình 3.8 Đồ thị hàm mục tiêu

Nhận xét:

- Giá trị hàm mục tiêu: Giá trị hàm mục tiêu giảm nhanh và tiến tới về không.

- Đáp ứng đầu ra: Đáp ứng đầu ra dao động trong đoạn [-2;2], đáp ứng được tín hiệu điều khiển mong muốn. (adsbygoogle = window.adsbygoogle || []).push({});

- Giá trị sai số: Giá trị sai số rất nhỏ nằm trong khoảng [-0.05;0.05] 3.3 Tuyến tính hóa mạng nơ-ron

Đầu ra của mô hình mạng nơ-ron:

a2 (t ) = LW1,2a1 + b2

với b là bias, a là véc-tơ đầu ra, LWi, j là ma trận trọng số liên kết giữa véc-tơ đầu ra lớp j với đầu vào lớp i.

Đầu ra của lớp nơ-ron thứ nhất là: a1 = f1 (n1)

trong đó : f 1( n1) = en − e−n i i y(t −1) − y( t 2) + b1

Ta có hàm phi tuyến đầu vào phụ thuộc vào v1 , v3 , v3 , v4 .

a2(t ) = g (v1,v2 , v3 , v4 )

Xét tại thời điểm t bất kì , ta có hàm phi tuyến tại thời điểm đó là:

a2(t ) =g (v1, v2 , v3 , v4 )

Coi giá trị hiện tại tại thời điểm t là:

v1 v v = 2 0 v 3 v4 Áp dụng khai triển Taylor ta có:

ˆ y(t)

với g (v0 ) là đầu ra của mạng đầu vào tại thời điểm v = v0 . Vì việc tính a1 rất phức tạp khi mạng ở đây có 2 lớp. Do đó ta dùng quy tắc đạo hàm hợp. a 1 ∂n1 = IW1,1 ∂v1 Đặt: ∂a11 1 ∂n1 0 0 F1 = ∂a1 = ∂n1 0 0 0 với :

a1i = tanh(n1i ) 0 0 0 0 0 53 download by : skknchat@gmail.com

Tín hiệu đầu ra thực tế: y = yˆ − g(u0 ) = LW +IW1,2 (1) với: yˆ =g(v ) 0

3.4 Thiết kế bộ điều khiển dự báo dùng mạng nơ-ron

Với y( t) là đáp e(t) = g(v0 ) − a1v1,0

Áp dụng định luật điều khiển ở (2.69) cho bài toán ta được mô hình dự báo: J =

lệch của

u tại thời điểm

(t + k +1) và (t + k ) .

Với :

∆u(t) = u(t) − u(t −1)

(3.5)là giá trị sai là giá trị sai

∆u(t +1) = u(t +1) −u(t) ∆u(t + 2) = u(t + 2) −u(t +1)

54

với u là:

u(t) u = u(t +1)

u(t + 2) (adsbygoogle = window.adsbygoogle || []).push({});

Từ phương trình hàm J (u ) ở (3.5) ta có phương trình ở bài toán như sau:

J(u) =

trong đó A là ma trận có kích thước 3x3 , là ma trận đối xứng AT = A, B là ma trận 3x1 và C là hằng số.

Đạo hàm hàm J theo u ta được:

Nghiệm của (3.8) là:

Từ (3.5) ta có đáp ứng đầu ra tại thời điểm t +1, t + 2, t + 3 lần lượt là:

yˆ(t + 2) = a1 y(t + 1) + a2 y(t) + a3u(t +1) + a4u (t ) +e(t ) yˆ(t + 3) = a1 y(t + 2) + a2 y(t +1) + a u(t + 2) + a4 u(t +1) +e(t )

Biến đổi công thức (3.6) ta được:

J = ∑ yd2 − 2yd y(t + k) + y2 ( t + k) +ρ∑ ∆ u2 ( t + k)

+

+ yd2 − 2 yd y( t + 3) + y2 ( t+3)

+ ρ(∆u2 (t) + ∆u2 (t +1) + ∆u2 (t +2) )

55

Thay (3.7), (3.11), (3.12), (3.13) vào (3.14) ta được:

J = yd 2 − 2 yd (a1y(t )+ a 2 y(t − 1) + b1u(t ) + b2u (t −1) + e(t )) + (a1y(t) + a2 y(t −1) +b1u(t) +b2u(t −1) +e(t) )2

+ yd2 − 2 yd (a1y(t +1) +a2 y(t) +b1u(t +1) +b2 u(t) +e(t)) +

( a1y(t +1) +a2 y(t) +b1u(t +1) +b2u(t) +e(t) )2

+ yd2 − 2 yd (a1y(t +2) +a2 y(t +1) +b1 u( t +2) +b2 u(t +1) + e(t)) +

( a1y(t +2) +a2 y(t +1) +b1u(t +2) +b2u(t +1) +e(t))2

+ρ (u(t) −u(t −1))

Đặt:

m1 = a1 y(t) + a2 y(t −1) + e(t) m2 = a1 y(t +1) + a2 y(t) + e(t) m3 = a1y(t + 2) + a 2 y(t +1) +e(t)

Ta được: J = yd2 − 2yd (m1 + b1u(t) + b2 u(t −1)) +( m1 + b1 u( t) + b2 u( t −1))2 d + y 2− d + y 2 − (t ) − u (t −1) +ρ (u J = 3y 2− 2y d d [ + m2 + b2u2 (t) 1 1 + m2 + b2u2 (t + 1) + b 2 1 + m2 + b2 u2 (t + 2)+ b 3 1 +ρ[ u 2 (t ) − 2u(t −1)u (t ) +u 2 (t −1) + u2(t +1) −2u(t) u(t +1) + u2(t) + u2 (t + 2) − 2u(t +1)u(t + 2) +u2 (t +1) ]

56 download by : skknchat@gmail.com J = 3y d +m2 + b2u2 1 +u (t) b + b 2 +u(t)u(t +1) +u( t) −2 y [ +u(t +1)[−2 yd (b1 + b2 ) +2m2 b1 +2 m3 b2 ] +u(t + 2)[ −2 yd b1 +2 m3 b1] Kết hợp (3.9) và (3.15) ta được: b 2 1 A= 2 b1 b2 −2ρ và (3.14) (3.15) −2 y Kết luận:

Qua quá trình tính toán ta tìm được :

u

(3.16)

(3.17)

Ở chu kì tiếp theo, ta đưa u∗ (t) ra điều khiển đối tượng và thực hiện lại các bước như trên để tìm u∗ (t +1) . (adsbygoogle = window.adsbygoogle || []).push({});

3.5 Kết quả mô phỏng

Dùng mô hình (3.3) để mô phỏng tay máy và công thức (3.17) để tính toán tín hiệu điều khiển tối ưu của bộ MPC.

Chọn ρ = 0.05 và chu kì lấy mẫu là 5000.

57

8 u 6 4 2 u 0 -2 -4 -6 0 5 10 15 20 25 30 35 40 45 Giây

Hình 3.9 Tín hiệu điều khiển tối ưu

Trong hình 3.9, u là tín hiệu điều khiển tối ưu.

0.8 y r 0.6 0.4 0.2 y 0 -0.2 -0.4 -0.6 0 5 10 15 20 25 30 35 40 45 Giây Hình 3.10 Đáp ứng đầu ra và giá trị đặt

Trong hình 3.10, y là đầu ra của đối tượng và r là giá trị đặt.

Nhận xét: Bộ điều khiển MPC làm cho đầu ra cơ bản là bám sát với tín hiệu mẫu.

3.6 Kết luận chương 3

Trong phần này, phương pháp LM dựa trên thuật toán lan truyển ngược được sử dụng để huấn luyện mạng nơ-ron cho đối tượng. Sau khi huấn luyện mạng nơ- ron, thu được bộ tham số tối ưu của mạng. Quan hệ vào ra của mạng là phi tuyến,

58

do đó nếu dùng mô hình mạng này để thiết kế bộ điều khiển dự báo sẽ gặp khó khăn. Cho nên, mạng nơ-ron đã được tuyến tính hóa xung quanh điểm làm việc hiện tại, hàm mục tiêu có dạng bậc hai, một công thức tổng quát tìm nghiệm tối ưu đã được xây dựng. Để kiểm chứng, chương trình mô phỏng và tính toán tín hiệu điều khiển tối ưu đã được viết. Kết quả thu được thể hiện tính đúng đắn của thuật toán và khả thi trong thực tế.

59

KẾT LUẬN- KIẾN NGHỊ

Luận văn “Ứng dụng mạng nơ-ron trong nhận dạng và điều khiển” đã ra những kết luận và kiến nghị như sau:

• Kết luận:

+Đã nghiên cứu các phương pháp điều khiển dựa trên cơ sở mạng nơ-ron.

+ Đã tìm hiểu và nghiên cứu phương pháp điều khiển dự báo MPC dựa trên mạng nơ-ron.

+Đã tiến hành mô phỏng và kiểm chứng cho cánh tay máy trong Matlab.

+Đã viết chương trình, nhận dạng dùng mạng nơ-ron, tuyến tính hóa mạng nơ-ron và tìm tín hiệu điều khiển tối ưu cho MPC.

• Kiến nghị:

+ Tiếp tục nghiên cứu bài toán MPC sử dụng mạng nơ-ron có đầu vào ràng buộc và sử dụng mô hình phi tuyến.

+Luận văn còn một số hạn chế: mới dừng lại ở mô phỏng cho hệ thống một vào một ra.

60

TÀI LIỆU THAM KHẢO

[1] Martin T. Hagan, Howard B. Demuth, Mark H. Beale, Orlando De

Jesus, "Neural Network Design," Ebook.

[2] Nguyễn Doãn Phước, “Tối ưu hóa trong điều khiển và điều khiển tối ưu”, Nhà xuất bản Bách Khoa Hà Nội, ngày 28 tháng 09 năm 2016. (adsbygoogle = window.adsbygoogle || []).push({});

[3] Nguyễn Hoài Nam, “Bài giảng Điều khiển mờ và mạng nơ-ron”.

[4] Trần Việt Dũng, Trần Xuân Hiên, Nguyễn Xuân Thảo, ‘’Toán học cao

cấp”, tập 2, Giải tích, Nhà xuất bản Giáo dục, năm 2005.

[5] Nørgård, Peter Magnus; Sørensen, Paul Haase; Poulsen, Niels Kjølstad; Ravn, Ole; Hansen, Lars Kai, “Intelligent predictive Control of Nonlienar Processes Using”. Proceedings of the 1996 IEEE International Symposium on Intelligent Control.

[6] Nguyễn Mạnh Tiến, “Điều khiển Robot công nghiệp”, Nhà xuất bản

Khoa học và Kỹ thuật, tháng 5 năm 2007.

[7] GS.TS.Nguyễn Doãn Phước, “Lý thuyết điều khiển tuyến tính”, Nhà

xuất bản Khoa học và Kỹ thuật, năm 2009.

[8] https://atyschool.vn/sinh-hoc-8-noron-te-bao-than-kinh/.

61

PHỤ LỤC Chương trình code điều khiển

• Chương trình tạo tín hiệu đàu vào mẫu:

tmin = .1; tmax = 1; umin = -10; umax = 10;

Ts = 0.01; % Sampling time

t_desired = 50000; % number of samples

data_length = 0;

t_data = 0; % store time

ref_data = rand*umax; % store reference input

while data_length < t_desired

a = tmin + rand*(tmax-tmin); b = umin + rand*(umax-umin); t = [data_length+Ts data_length+a]; t_data = [t_data t]; ref_data = [ref_data b b]; data_length = data_length + a; end reference_input = [t_data;ref_data]'; plot(t_data,ref_data) grid on xlabel('Giây') ylabel('p')

• Chương trình tạo mạng và huấn luyện mạng nơ-ron cho đối tượng NNp:

net=narxnet(1:2,1:2,6); %view(net); net.trainFcn='trainlm'; net.performFcn='mse'; net.trainParam.goal=1e-5; net.trainParam.epochs=1000; %net.trainParam.min_grad=1e- 10; net.trainParam.time=inf; % net.trainParam.sigma=5e-5; % net.trainParam.lambda=5e-10; 62 download by : skknchat@gmail.com

net.trainParam.max_fail=10000; T1 = t1(:,1); x=num2cell(R1'); t=num2cell(T1'); [xs,xi,ai,ts]=preparets(net,x,{},t); [net,tr]=train(net,xs,ts,xi,ai); y=net(xs,xi,ai); y=cell2mat(y); figure(1) n=length(xs); ti=1:n; y1=cell2mat(ts); subplot(2,1,1) plot(ti,y,'r-.',ti,y1,'b') legend('y','t') grid on subplot(2,1,2) plot(ti,y-y1,'r') grid on

legend('Sai so') figure(2) semilogx(tr.perf) grid on title('MSE') • Chương trình sử dụng MPC load chinh_net; yd = 0.7*[1 1]'; v0 = [0 0 0 0]';

%v0=[y(t-1) y(t-2) u(t-1) u(t-2)]'

t = 0; yra = 0; u = 0; ro = .05; Tm = 0.01; yt = 0; y0 = [0;0]; global utemp; de = zeros(2,1); yt = 0; sp = 0; for k = Tm:4500 63 download by : skknchat@gmail.com

if k > 1500 yd = -0.5*[1 1]'; end if k > 3000 yd = 0.4*[1 1]'; end sp = [sp yd(1)]; t=[t k]; % yd = md + 0.02*de;

%Tinh toan thong so cua mo hinh mang Noron dung de du bao

n1 = net.iw{1,1}*v0([3 4],:) + net.iw{1,2}*v0([1 2],:) + net.b{1};

%dau vao net 1 (adsbygoogle = window.adsbygoogle || []).push({});

a1 = tanh(n1); %dau ra lop 1

a2 = net.lw{2,1}*a1+net.b{2}; %dau ra lop 2

%Xap xi y(t) = A1*y(t-1) + A2*y(t-2) + B1*u(t-1) + B2*u(t-2) + e(t');

%Ky hieu t' khac t cho thay no khac voi t, no la thoi diem dang xet, con t la bien thoi gian;

A1=net.iw{1,2}(:,1)'*diag(1-(tanh(n1)).^2)*(net.lw{2,1})'; A2=net.iw{1,2}(:,2)'*diag(1-(tanh(n1)).^2)*(net.lw{2,1})'; B1=net.iw{1,1}(:,1)'*diag(1-(tanh(n1)).^2)*(net.lw{2,1})'; B2=net.iw{1,1}(:,2)'*diag(1-(tanh(n1)).^2)*(net.lw{2,1})';

et = a2 - A1*v0(1) - A2*v0(2) - B1*v0(3) - B2*v0(4); %et o day chinh la nh e(t') o chu thich tren

A = [B1^2+(A1*B1+B2)^2+2*ro B1*(A1*B1+B2) 0; B1*(A1*B1+B2) B1^2+2*ro -ro; 0 -ro ro];

K1 = 2*B1*(et+A1*yt+A2*v0(1)+B2*v0(3)) + 2*((A1+1)*et+ (A1^2+A2)*yt+A1*A2*v0(1)+A1*B2*v0(3))*(A1*B1+B2)- 2*yd(2)*(A1*B1+B2)-2*yd(1)*B1-2*ro*v0(3);

K2 = 2*(A1+1)*et + (A1^2+A2)*yt+A1*A2*v0(1) + A1*B2*v0(3)*B1 - 2*yd(2)*B1;

B = [K1;K2;0];

%Cuc tieu hoa ham muc tieu dang toan phuong

ut=-inv(A)*B;

64

u=[u ut(1)];

utemp=ut(1);

[ttemp,ytemp] = ode45(@(ttemp,ytemp) canhtaymay(ttemp,ytemp),[0 0.01],y0);

y0 = ytemp(end,:)';

yt=ytemp(end,1);

yra=[yra yt];

%Cap nhat vecto trang thai ban dau cho vong lap sau

v01 = [yt v0(1) ut(1) v0(3)]';

%yt = y(t) v0(1)=y(t-1) ut(1)=u(t) v0(3)=u(t-1)

v0 = v01;

end

n = length(u); ts = 0:Tm:(n-1)*Tm; figure(1)

plot(ts,u); legend('u'); grid on; xlabel('Giây')

ylabel('u') figure(2)

plot(ts,yra,'b',ts,sp,'r-.'); legend('y','r'); grid on; xlabel('Giây')

ylabel('y')

65 (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu (LUẬN văn THẠC sĩ) ứng dụng mạng nơ ron trong nhận dạng và điều khiển (Trang 71)