Đột biến (Mutation)

Một phần của tài liệu nghiên cứu giải thuật di truyền để tối ưu hóa tham số bộ điều khiển lqr trong điều khiển hệ chuyển động (Trang 59)

5. Kết cấu luận văn

2.3.3.Đột biến (Mutation)

Đột biến là hiện tƣợng cá thể con mang một (số) tính trạng không có trong mã di truyền của cha mẹ. Phép đột biến xảy ra với xác suất pm, nhỏ hơn rất nhiều so với xác suất lai pc. Mỗi gen trong tất cả các nhiễm sắc thể có cơ hội bị đột biến nhƣ nhau, nghĩa là đối với mỗi nhiễm sắc thể trong quần thể

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

55

hiện hành (sau khi lai) và đối với mỗi gen trong nhiễm sắc thể, quá trình đột biến đƣợc thực hiện nhƣ sau:

-Phát sinh ngẫu nhiên một số r trong khoảng [01] -Nếu r < pm, thì đột biến gen đó.

Đột biến làm tăng khả năng tìm đƣợc lời giải gần tối ƣu của thuật toán di truyền. Đột biến không đƣợc sử dụng thƣờng xuyên vì nó là phép toán tìm kiếm ngẫu nhiên, với tỷ lệ đột biến cao, thuật toán di truyền sẽ còn xấu hơn phƣơng pháp tìm kiếm ngẫu nhiên.

Sau quá trình tái sinh, lai và đột biến, quần thể mới tiếp tục đƣợc tính toán các giá trị thích nghi, sự tính toán này đƣợc dùng để xây dựng phân bố xác suất (cho tiến trình tái sinh tiếp theo), nghĩa là, để xây dựng lại bánh xe roulette với các rãnh đƣợc định kích thƣớc theo các giá trị thích nghi hiện hành. Phần còn lại của thuật toán di truyền chỉ là sự lặp lại chu trình của những bƣớc trên.

2.4. CẤU TRÚC THUẬT TOÁN DI TRUYỀN TỔNG QUÁT

Thuật toán di truyền bao gồm các bƣớc sau:

-Bƣớc 1: Khởi tạo quần thể các nhiễm sắc thể.

-Bƣớc 2: Xác định giá trị thích nghi của từng nhiễm sắc thể.

-Bƣớc 3: Sao chép lại các nhiễm sắc thể dựa vào giá trị thích nghi của chúng và tạo ra những nhiễm sắc thể mới bằng các phép toán di truyền.

-Bƣớc 4: Loại bỏ những thành viên không thích nghi trong quần thể.

-Bƣớc 5: Chèn những nhiễm sắc thể mới vào quần thể để hình thành một quần thể mới.

-Bƣớc 6: Nếu mục tiêu tìm kiếm đạt đƣợc thì dừng lại, nếu không trở lại bƣớc 3.[1]

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

56

2.5. ỨNG DỤNG CỦA GA TRONG THIẾT KẾ BỘ ĐIỀU KHIỂN LQR

GA cho phép các cá thể trong một quần thể phát triển theo quy luật lựa chọn để tối ƣu hóa hàm đánh giá. Cấu trúc cơ bản của GA bao gồm: mã hóa, lựa chọn, ghép lai, đột biến. Và quy trình thiết kế GA bao gồm các bƣớc sau:

Bƣớc 1: Mã hóa: Ngƣời ta sử dụng mã số nhị phân và số lƣợng bit phụ thuộc vào độ chính xác đƣợc yêu cầu. Giả sử biên độ tham số x là [Lx, Ux] và độ chính xác đƣợc yêu cầu là thì ta có số lƣợng bit nhƣ sau:

 

x 2 x x

B log (U L ) / (2.4) Đối với các tham số của ma trận số Q và R (qi và ri) thì số lƣợng bit trong hệ nhiễm sắc thể là: 2 2 n n i i i 1 i 1 Nbit Bq Br       (2.5)

n1 và n2 là tổng tham số có trong Q và R tƣơng ứng.

Bƣớc 2: Phân chia khoảng không nghiên cứu: trƣớc tiên chia các khoảng không nghiên cứu tham số bị chặn thành những phần nhỏ để tránh việc giải bị nhầm lẫn ở các miền nhỏ.

Bƣớc 3: Sắp xếp, khởi tạo quần thể: Lƣợng quần thể ban đầu ngẫu nhiên đƣợc sản sinh ra các cá thể M. Mỗi cá thể là một vec tơ có chiều dài gen nhất định nhƣ trong hình (3.2). Mỗi gen đƣợc mã hóa bằng mã nhị phân với chiều dài bit nhất định (Nbit)

Hình 2.2: Thông số có trong gen trong hệ nhiễm sắc thể

Bƣớc 4: Bình thƣờng hóa bài toán: Giá trị nhị phân của mỗi gen đƣợc bình thƣờng hóa chỉ trong khoảng [qimin, qimax] và [rmin, r max] bằng hàm:

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn (adsbygoogle = window.adsbygoogle || []).push({});

57

i min i max i min

NBit [q (q q )] y(i) gene(i) 2 1      (2.6)

min max min

NBit [(r (r r )] y(i) gene(i) 2 1      (2.7)

Trong đó y (i) là giá trị nhị phân của mỗi gen. Nbit là số bít trên mỗi gien.

Bƣớc 5: Phép tính tƣơng ứng: kết quả của các giải pháp về tập hợp lai tạo đƣợc tính bằng cách sử dụng công thức sau:

GA ev M F f 1   (2.8)

Trong đó, fev là là chức năng chi phí và đƣợc đánh giá bằng diện tích có nghĩa gốc

Do đó, cứ với các nhiễm sắc thể có điểm cao hơn lại có giá trị tƣơng ứng thấp hơn.

Bƣớc 6 Sao chép: các lựa chọn về sao chép quyết định cách GA tạo ra những thế hệ sau tiếp theo từ thế hệ trƣớc. Trong này xét đến 2 loại sao chép:

Sao chép giao nhau: phƣơng thức này đƣợc coi là thuật toán có khả năng tách các gen tốt nhất, cho từng cá thể khác nhau bằng cách chọn gen của một cặp cá thể cùng thế hệ, sau đó tái hợp chúng sinh ra thế hệ sau có tiềm năng tốt hơn. Việc chọn ngẫu nhiên điểm num_c để giao nhau đồng thời sử

dụng phƣơng pháp giao nhau động, tiếp đến là tần số động bằng tỉ số giao nhau (Pc) của mỗi gen (Gen) đƣợc tính nhƣ sau:

Pcexp( Gen / Max _ Gen) (2.9) Sao chép đột biến: Chức năng này tạo ra ít biến đổi ngẫu nhiên trong các cá thể, tạo ra sự đa dạng gen và tăng mức độ sinh kế từ đó thuật toán sẽ tạo ra các cá thể có giá trị tƣơng ứng tốt hơn. Cứ với mỗi cá thể trong tập hợp sẽ tạo ra một con số ngẫu nhiên nằm trong khoảng (0, 1). Nếu các số ngẫu nhiên này thấp hơn một số ngƣỡng đột biến xác định, lúc đó sẽ xảy ra đột

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

58

biến gen. Các điểm num_ m đƣợc lựa chọn ngẫu nhiên trong này để đột biến và đƣợc sử dụng cho đột biến động với tỉ số đột biến của mỗi gen (Gen) đƣợc tính nhƣ sau:

Pmexp(0.05 Gen / Max _ Gen) 1  (2.10)

Bƣớc 7. Hoán vị: Các thế hệ mới trong bƣớc 6 đƣợc sẽ thay thế cho tập hợp lai tạo hiện tại.

Bƣớc 8: Lặp lại các bƣớc từ 3 đến 7 cho đến khi đạt đƣợc: các bƣớc từ 3 đến 6 lặp lại trong thế hệ mới cho đến khi đạt đến điểm tập hợp. Thuật toán này vô hiệu khi tiếp xúc với bất kỳ một trong ba tiêu chuẩn dừng.

Bƣớc 9 Ấn định vị trí tối ƣu cho cá thể sau khi đƣợc hình thành trong 1 khu vực: sau khi đạt đƣợc tiêu chí tập hợp GA, các thế hệ sau chiếm đƣợc vị trí tối ƣu của giá trị tƣơng ứng sẽ đƣợc ấn định các quyết định trong vùng.

Bƣớc 10. Lặp lại các bƣớc từ 2 đến 9 để đạt không gian con cuối cùng.[8]

2.5. KẾT LUẬN

GA là một thuật toán tìm kiếm dựa trên quá trình tiến hóa trong tự nhiên với khả năng hội tụ cao, yêu cầu tính toán thấp và không bị hạn chế về số biến.

Do có sự trao đổi thông tin giữa các đỉnh cực trị trong phép toán di truyền do đó hạn chế khă năng rơi vào cực trị cục bộ. Quá trình làm việc với chuỗi ký hiệu (chuối nhiễm sắc thể) và chỉ cần đánh giá hàm mục tiêu trong quá trình tìm kiếm mà không cần bất kỳ thông tin nào khác nên nó đƣợc ứng dụng trong các bài toán tìm cực trị hàm phi tuyến không yêu cầu về tính khả vi.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

59 CHƢƠNG 3 (adsbygoogle = window.adsbygoogle || []).push({});

MÔ PHỎNG KIỂM CHỨNG BẰNG PHẦN MỀM MATLAB- SIMULINK

3.1 Mô hình động của hệ thống con lắc ngược

Trong đề tài lựa chọn mô hình con lắc ngƣợc để mô phỏng kiểm chứng có sơ đồ nhƣ hình 3.1

Hình 3.1: (a) Hệ thống con lắc ngƣợc; (b) Sơ đồ tách rời của hệ thống Tổng hợp các lực của hệ thống theo các phƣơng ngang và thẳng đứng, ta có phƣơng trình chuyển động sau:

2

(Mm)xbx  ml cos   ml sin F (3.1) 2

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

60

Thiết lập phƣơng trình trạng thái nhƣ sau :

2

2

2 2

(sin ) cos sin cos

cos ( ) sin (cos sin )

cos ( ) x x u ml mg x M m m dx d dt dt u M m g ml ml M m l                                                                  (3.3) yCz hoặc 1 0 0 0 0 0 1 0 x x y Cz x                                   (3.4) Trong đó:

M - khối lƣợng của xe đẩy m – khối lƣợng của con lắc B – Lực ma sát của xe đẩy

L – Khoảng cách đến tâm khối lƣợng của con lắc I – Lực quán tính của con lắc

g – Gia tốc trọng lực

F – Lực tác dụng lên xe đẩy

x, x, x  - Tọa độ vị trí xe đẩy, vận tốc xe đẩy và gia tốc xe đẩy tƣơng ứng

, ,

    - Góc của con lắc so với phƣơng thẳng đứng, vận tốc góc của con lắc và gia tốc góc tƣơng ứng

N – Tổng các lực tác dụng lên xe đẩy

P – Tổng các lực tác dụng lên con lắc theo phƣơng ngang.

3.2 Mô phỏng

Chọn thông số của đối tƣợng nhƣ sau:

M - khối lƣợng của xe đẩy 0,5 kg m – khối lƣợng của con lắc 0.2 kg

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

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

61

B – Lực ma sát của xe đẩy 0.1 Nm-1

s-1

L – Khoảng cách đến tâm khối lƣợng của con lắc 0.3m I – Lực quán tính của con lắc 0.006kg/m2

g – Gia tốc trọng lực 9.81m/s-2

Các yêu cầu về chỉ tiêu chất lƣợng bao gồm:

- Thời gian thiết lập (settling time) ts cho x và θnhỏ hơn 5 giây (ts ≤ 5s). - Độ quá điều chỉnh θ nhỏ hơn 20 độ (OS ≤ 22.5%).

- Thời gian khởi động (rise time) cho x nhỏ hơn 1 giây (tr≤ 1s). - Sai lệch trạng thái ổn định trong phạm vi 2% (ess ≤ 2%).

3.2.1 Cấu trúc điều khiển

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

62

Hình 3.3: Sơ đồ cấu trúc cho con lắc ngược dùng matlab-simulink

3.2.2 Kết quả mô phỏng

Thông số thiết kế cho LQR-GA đƣợc chọn nhƣ sau: miền tìm kiếm cho q1, q2, q3, q4 và r là [1,10 ], ε = 1 × 104 , M = 100, NBit = 20,và Max_Gen = 10. Sau khi GA chạy, véc tơ trọng lƣợng tùy chọn đƣợc tính:

6 7 r[0.0364 10 ], q [[3.2482,0.0376,0.4734,0.0462] 10 Ma trận phản hồi trạng thái: _ [29.8724, 20.2218, 71.5782, 14.4192] LQR GA K

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

63

Hình 3.4 Đồ thị sai lệch góc của con lắc

0 1 2 3 4 5 6 7 8 9 10 -25 -20 -15 -10 -5 0 5 10 0 1 2 3 4 5 6 7 8 9 10 -0.2 0 0.2 0.4 0.6 0.8 1 1.2

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

64

Bảng 1: Các kết quả khi sử dụng phương pháp LQR-GA cho góc con lắc

Đối tƣợng LQR-GA

Gía trị phản hồi, K [-29.8724,20.2218,71.5782,14.4192] Thời gian thiết lập, ts 1.83 s

Khoảng sai số tối đa [11.24°, -24.54°]

Sai lệch tĩnh ess 0

Bảng 2: Các kết quả khi sử dụng phương pháp LQR-GA cho vị trí xe đẩy (adsbygoogle = window.adsbygoogle || []).push({});

Đối tƣợng LQR-GA

Thời gian khởi động, tr 0.58 s

Thời gian thiết lập ts 1.16 s

Phần trăm sai số, OS 0.94 %

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

65

KẾT LUẬN

LQR là một phƣơng pháp dùng để thiết kế bộ điều khiển phản hồi trạng thái tuyến tính. Theo phƣơng pháp này ma trận phản hồi trạng thái đƣợc tính toán sao cho chất lƣợng của hệ thống điều khiển cực tiểu hoá hàm mục tiêu chất lƣợng dạng toàn phƣơng tuyến tính. Việc xác định ma trận phản hồi trạng thái bằng cách giải phƣơng trình RICATI.

Trong phƣơng trình RICATI nếu không biết đƣợc mô hình toán tuyến tính của đối tƣợng điều khiển thì không thể tìm đƣợc lời giải cho bài toán điều khiển LQR theo các biểu thức giải tích (1.134) đƣợc.

Trong luận văn dùng giải thuật di truyền để tìm lời giải tối ƣu cho bài toán LQR mà mô hình toán của đối tƣợng điều khiển không phải dạng tuyến tính. Với đối tƣợng điều khiển là con lắc ngƣợc, các kết quả mô phỏng cho thấy với bộ điều khiển phản hồi trạng thái có các tham số đƣợc xác định bằng GA chất lƣợng điều khiển đáp ứng đƣợc các yêu cầu chất lƣợng để ra.

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn

66

TÀI LIỆU THAM KHẢO

[1] Nguyễn Thị Phƣơng Hà (2008), “Lý thuyết điều khiển hiện đại”,Nhà xuất bản Đại học Bách khoa, Đại học QG tp.HCM

[2] Nguyễn Doãn Phƣớc (2005), “Lý thuyết điều khiển nâng cao”, Nhà xuất bản Khoa học và kỹ thuật, Hà Nội

[3] Hoàn Kiếm - Lê Hoàng Thái (2000), “ Giải thuật di truyền, cách giải

tự nhiên các bài toán trên máy tính”, Nhà xuất bản Giáo dục, Hà Nội.

[4] Vũ Xuân Mạnh (2006), “Phát triển một số kỹ thuật trong tính toán mềm”, Luận án Tiến sĩ, Viện công nghệ thông tin - Hà Nội.

[5] Nguyễn Phùng Quang (2003), “ MATLAB & Simulink dành cho kỹ sư điều khiển tự động”, Nhà xuất bản Khoa học và kỹ thuật, Hà Nội.

[5] David A.Coley: An Instroduction to Genetic Algorithm. [6] Bách khoa toàn thƣ mở: Http://vi.wikipedia.org, 2006.

[7] Http://ieeexplore.ieee.org [8] Http://www.library.cmu.edu

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn 67 PHỤ LỤC Đoạn chƣơng trình % GA_scr_v1.m

% solution of improving edge detection of tracker by % genetic algorithm optimization.

% preliminaries clear all close all clc warning off dbstop if error

if exist('GA_lqr_param.mat','file')==2,load GA_lqr_param, end

num_elements = 15;% number of elements evaluated each genertion

maxgen = 50;% maximum number of generation (iterations)

num_xovers = 3; % number of cross overs (adsbygoogle = window.adsbygoogle || []).push({});

nvar = 11; % number of variables (see next line)

filtr_pole = 0.9;

% field_max_vec = [5*ones(1,4),1000*ones(1,2),2000,1000*ones(1,2),120];

field_max_vec = [5*ones(1.4),1500*ones(1,2),3000];

GA_field_max(:,1) = field_max_vec(1)*ones(num_elements,1); %state wt1

GA_field_max(:,2) = field_max_vec(2)*ones(num_elements,1); %state wt2

GA_field_max(:,3) = field_max_vec(3)*ones(num_elements,1); %state wt3

GA_field_max(:,4) = field_max_vec(4)*ones(num_elements,1); %state wt4

GA_field_max(:,5) = field_max_vec(1)*ones(num_elements,1); %control wt1

GA_field_max(:,6) = field_max_vec(2)*ones(num_elements,1); %control wt2

GA_field_max(:,7) = field_max_vec(3)*ones(num_elements,1); %control wt3

% GA_field_max(:,8) = field_max_vec(1)*ones(num_elements,1); %control wt1 % GA_field_max(:,9) = field_max_vec(2)*ones(num_elements,1); %control wt2 % GA_field_max(:,10) = field_max_vec(3)*ones(num_elements,1); %control wt3

% field_min_vec = [zeros(1,2),2*ones(1,2),200,2*ones(1,2),200];

field_min_vec = [zeros(1,),2*ones(1,2),200];

GA_field_min(:,1) = field_min_vec(1)*ones(num_elements,1); %state wt1

GA_field_min(:,2) = field_min_vec(2)*ones(num_elements,1); %state wt2

GA_field_min(:,3) = field_min_vec(3)*ones(num_elements,1); %state wt3

GA_field_min(:,4) = field_min_vec(4)*ones(num_elements,1); %state wt4

GA_field_min(:,7) = field_min_vec(1)*ones(num_elements,1); %control wt1

GA_field_min(:,8) = field_min_vec(2)*ones(num_elements,1); %control wt2

GA_field_min(:,9) = field_min_vec(3)*ones(num_elements,1); %control wt3

%GA_field_min(:,10) = field_min_vec(1)*ones(num_elements,1); %control wt1 %GA_field_min(:,11) = field_min_vec(2)*ones(num_elements,1); %control wt2 %GA_field_min(:,12) = field_min_vec(3)*ones(num_elements,1); %control wt3

GA_field = GA_field_min + (GA_field_max - GA_field_min).*rand(size(GA_field_min));

if exist('global_best','var'),

GA_field = [GA_field(1:end-1,:);global_best(1,:)];

end

if exist('global_2nd_best','var'),

GA_field = [GA_field(2:end,:);global_2nd_best(1,:)]; end GA_best = GA_field; GA_best_cum = GA_field; perf_index_vec = contr_opt(GA_field); % [perf_index_vec,edge_PI_vec] = get_GA_optim(GA_field); [PImin,ind_PImin] = min(perf_index_vec); glob_best = ones(num_elements,1)*GA_field(ind_PImin,:); xcum = GA_field; perf_index_cum = perf_index_vec;

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn 68 [val ncp] = min(perf_index_cum,[],2); [val1 ncg] = min(val); [temp,nc2b] = sort(val); global_2nd_best = GA_best(nc2b(2),:); glob_best_filt = glob_best(1,:);

for gen = 1:MAXGEN; (adsbygoogle = window.adsbygoogle || []).push({});

temp1 = [glob_best(1,:);glob_best_filt];

temp1 = [temp1;(rand(1,nvar)/15+1).*global_2nd_best(1,:)]; glob_best_mute = ceil(num_elememts/2);

end

for k = 1:glob_best_mute_xovers-1 % mutation computations

temp = (rand(1,nvar)/15+1).*glob_best(1,:); temp1 = [temp1;temp];

end

for k = 1:num_xovers-1 % crossover computation

temp = randi(nvar,[1,5]);% select from 5 variables to get better

spread

minx = min(temp); maxx = max(temp);

temp = GA_field(randi([2 num_elements],1),:); temp(minx:maxx) = glob_best(1,minx:maxx); temp1 = [temp1;temp]; end [nr,nc] = size(temp1); chromo_mute = randi(num_elements,[num_elements-nr,1]); temp2 = [];

for k = 1:num_elements-nr % mutation computations

temp = (randn(1,nvar)/15+1).*GA_field(chromo_mute(k),:); temp2 = [temp2;temp];

end

GA_field = [temp1;temp2];

GA_field = min(GA_field,GA_field_max); % unper constraint

GA_field = max(GA_field,GA_field_min); % lower constraint

xcum = [xcum,GA_field];

perf_index_vec = contr_opt(GA_field);

% [perf_index_vec,edge_PI_vec] = get_GA_optim(GA_field);

perf_index_cum = [perf_index_cum perf perf_index_vec]; [val_ncp] = min(perf_index_cum,[],2); for j = 1:length(ncp) GA_best(j,:) = xcum(j,... [nvar*(ncp(j)-1)+1:nvar*(ncp(j)-1)+nvar]); end GA_best_cum = [GA_best_cum,GA_best]; [temp,nc2b] = sort(val); glob_best = ones(num_elements,1)*GA_best(nc2b(1),:); global_2nd_best = GA_best(nc2b(2),:); glob_best_filt = filt_pole*glob_best_filt + (1- filtr_pole)*global_2nd_best;

%[val nedge_best] = min(sum(edge_PI_vec,2)); %edge_glob_best = edge_PI_vec(nedge_best,:);

%save GA_LQR_param perf_index_cum glob_best GA_best_cum xcum %global_2nd_best edge_glob_best

save GA_LQR_param perf_index_cum glob_best GA_best_cum xcum

global_2nd_best

glob_best(1,:),perf_index_vec',%edge_glob_best

Số hóa bởi Trung tâm Học liệu – ĐHTN http://www.lrc-tnu.edu.vn 69 LQR LQR-GA

Một phần của tài liệu nghiên cứu giải thuật di truyền để tối ưu hóa tham số bộ điều khiển lqr trong điều khiển hệ chuyển động (Trang 59)