3.1 CÁC PHƯƠNG PHÁP GI ẢI BÀI TOÁN TỐI ƯU MPC
3.1.2 Giải thuật di truyền (Genetic Algorithm)
Thuật toán di truyền là thuật toán tối ưu ngẫu nhiên dựa trên cơ chế chọn lọc tự nhiên và tiến hóa di truyền. Nguyên lý cơ bản của thuật toán di truyền đã được Holland giới thiệu vào năm 1962. Cơ sở toán học đã được phát triển từ cuối những năm 1960 v à đã được giới thiệu trong quyển sách đầu tiên của Holland, Adaptive in Natural and Artificial Systems. Thuật toán di truyền được ứng dụng đầu tiên trong hai lĩnh vực chính: tối ưu hóa và học tập của máy. Trong lĩnh vực tối ưu hóa thuật toán di truyền được phát triển nhanh chóng và ứng dụng trong nhiều lĩnh vực khác nhau nh ư tối ưu hàm, xử lý ảnh, bài toán hành trình người bán hàng, nhận dạng hệ thống và điều khiển. Thuật toán di truyền cũng như các thuật toán tiến hóa nói chung, hình thành dựa trên quan niệm cho rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ưu.
Quan niệm này có thể xem như một tiên đề đúng, không chứng minh đ ược, nhưng phù hợp với thực tế khách quan. Quá trình tiến hóa thể hiện tính tối ưu ở chỗ, thế hệ sau bao giờ cũng tốt hơn (phát triển hơn, hoàn thiện hơn) thế hệ trước bởi tính kế thừa v à đấu tranh sinh tồn.
Thực ra, GA thuộc lớp thuật giải xác suất, nh ưng lại rất khác những thuật giải ngẫu nhiên vì chúng kết hợp các phần tử tìm kiếm trực tiếp và ngẫu nhiên. Khác biệt quan
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 45 trọng trong tìm kiếm của GA và các phương pháp tìm kiếm khác là GA duy trì và xử lý một tập các lời giải ( gọi là một quần thể) – các phương pháp khác chỉ xử lý tại một điểm trong không gian tìm kiếm.
Đơn cử, ta so sánh Giải thuật di truyền với ph ương pháp tìm kiếm được sử dụng rộng rãi: Leođồi và Mô phỏng luyện thép.
Phương pháp leo đồi dùng kỹ thuật lặp và áp dụng cho một điểm duy nhất ( điểm hiện hành trong không gian tìm kiếm ). Trong mỗi bước lặp , một điểm mới đ ược chọn trong lân cận điểm hiện hành ( vì thế Leo đồi còn được gọi là phương pháp tìm kiếm lân cận hay tìm kiếm cục bộ). Nếu điểm mới cho giá trị của hàm mục tiêu tốt hơn thì điểm mới sẽ trở thành điểm hiện hành. Nếu không, một lân cận khác đ ược chọn và thử. Quá trình trên sẽ kết thúc nếu như không cải thiện thêm được cho lời giải hiện hành.
Rừ ràng là phương phỏp Leo đồi chỉ cung cấp cỏc giỏ trị tối ưu cục bộ và những giỏ trị này phụ thuộc vào điểm khởi đầu. Hơn nữa, không có thông tin sẵn có về sai số t ương đối ( thỏa tối ưu toàn cục) của lời giải tìmđược.
Để tăng cơ hội thành công, phương pháp leo đ ồi thường được thực hiện nhiều lần với các điểm khởi đầu khác nhau.
Kỹ thuật mô phỏng luyện thép là một kỹ thuật khắc phục các nh ược điểm của phương pháp leo đồi. Lời giải không còn phụ thuộc nhều vào điểm khởi đầu nữa, và thường là gần với điểm tối ưu. Đạt được điều này là nhờ vào xác suất nhận p. Xác suất p là hàm theo giá trị của hàm mục tiêu đối với điểm hiện hành và điểm mới, và một tham số điều khiển bổ sung, tham số “nhiệt độ” T. Nói chung, nhiệt độ T càng thấp thì cơ hội nhận điểm mới càng nhỏ. Khi thực hiện thuật toán thì nhiệt độ T được hạ thấp dần theo từng bước. Thuật giải ngừng khi T nhỏ hơn một ngưỡng cho trước; với ngưỡng này thì hầu như không còn thayđổi nào được chấp nhận nữa.
Như đã trình bày, GAs thực hiện tiến trình tìm kiếm lời giải tối ưu theo nhiều hướng bằng cách duy trì một quần thể các lời giải v à thúc đẩy sự hình thành và trao đổi thông tin giữa các hướng này. Quần thể trải qua tiến trình tiến hóa : ở mỗi thế hệ lại tái sinh các lời giải tương đối tốt, trong khi phần lớn các lời giải tương đối xấu thì chết đi. Để phân biệt các lời giải khác nhau thì hàm mục tiêu được dùng để đóng vai trò môi trường.
Một thuật giải di truyền áp dụng cho một bài toán cu thể phải bao gồm năm thành phần sau đây:
Cách biểu diễn di truyền cho lời giải của bài toán.(hay còn gọi là mã hóa nhiễm sắc thể.)
Cách khởi tạo quần thể ban đầu.
Xây dựng hàm lượng giá đóng vai trò môi trường, đánh giá các lời giải theo mức độ thích nghi của chúng.
Các phép toán di truyền
Các tham số khác (kích thước quần thể, xác suất áp dụng các phép toán di truyền…)
Sau đây chúng ta sẽ áp dụng giải thuật di truyền trong bài toán tối ưu MPC 3.1.2.1 Mã hóa nhiễm sắc thể (Encoding)
Lời giải trong bài toán điều khiển theo mô hình dự báo là chuỗi tín hiệu điều khiển trong phạm vi (miền) điều khiển –Horizon Control. Như vậy, mỗi cá thể trong quần thể sẽ biều diễn một chuỗi tín hiệu đi ều khiển:
i , i 1 ,... i c 1 1,..., pop
u u k u k u kH i N (3.1)
hoặc chuỗi biến thiên của tín hiệu:
i , i 1 ,..., i c 1
u u k u k u k H
(3.2)
Trong đó, Npop là số lượng nhiễm sắc thể trong quần thể.
H là phạm vi điều khiển.C
Để đơn giản, chúng ta sẽ sử dụng ph ương phápmã hóa nhị phân. Tức là: mỗi phần tử trong chuỗi tín hiệu điều khiển hoặc biến thiên tín hiệu điều khiển được mã hóa bằng một chuỗi nhị phân có độ dài là n bits. Như thế, mỗi cá thể sẽ có độ dài là n H c bits, vớin được xác định dựa vào khoảng bị chặn của tín hiệu điều khiển v à độ chính xác của nghiệm cần tìm.
Giả sử u t D a b, R, và cần m số lẻ đối với giá trị của các u, như vậy miền giới hạn D phải được chia thành ba.10m phần bằng nhau. n là số nguyên nhỏ nhất thỏa bất đẳng thức sau:
ba.10m2n1 (3.3)
Việc biểu diễn như vậy rừ ràng là bảo đảm được độ chớnh xỏc yờu cầu. Cụng thức quy đổi từ chuỗi nhị phân sang giá trị thập phân (Decoding):
1001...012
2n 1 b a
u a decimal
(3.4)
3.1.2.2 Khởi tạo quần thể
Để khởi tạo quần thể ta có thể thực hiện đơn giản là tạo popsize nhiễm sắc thể ngẫu nhiên theo từng bit. Một cách phức tạp hơn, ta có thể vận dụng xác suất về phân phối để khởi tạo quần thể ban đầu thì tốt hơn.
3.1.2.3 Xây dựng hàm thich nghi (Fitness)
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 47 Trong bài toán tối ưu MPC thì hàm thích nghiđược xây dựng dựa vào giá trị của hàm mục tiêu (hàm chi phí):
1
2 2
1
| | 1|
p C
H H
k n k
J u k y t k t t k t k u t k t
(3.5)
n là giới hạn dưới của miền dự báo;1 H H là phạm vi điều khiển và phạm vi dực, p báo. Các hệ số ( )j và ( )j xác định trọng số các thành phần trong hàm mục tiêu.
Tuy nhiên đây là bài toán t ối thiểu hàm mục tiêu nên nhiễm sắc thể nào có giá trị hàm chi phí nhỏ hơn thì sẽ có độ thích nghi cao h ơn. Trên cơ sở đó, có nhiều phương pháp xây dựng hàm thích nghi. Để đơn giản ta sẽ xây dựng hàm thích nghi có tương quan tỉ lệ nghịch với hàm chi phí:
1
f u
J u
(3.6)
được bổ sung để tránh khả năng f . 3.1.2.4 Các phép toán của thuật toán di truyền
1.Tái sinh (Reproduction)
Tái sinh là quá trình chọn quần thể mới thỏa phân bố xác suất dựa trên độ thích nghi.
Độ thích nghi là một hàm gán một giá trị thực cho nhiễm sắc thể hay cá thể trong quần thể. Các cá thể có độ thích nghi lớn sẽ có nhiều bản sao trong thế hệ mới. Hàm thích nghi có thể không tuyến tính, không tồn tại đạo hàm, không liên tục bởi vì thuật toán di truyền chỉ cần liên kết hàm thích nghi với các chuỗi số. Quá trình này được thực hiện dựa trên bánh xe quay Roulette (bánh xe sổ xố) với các rãnh được định kích thước theo độ thích nghi. Kỹ thuật này được gọi là lựa chọn cha mẹ theo bánh xe roulette. Bánh xe roulette được xây dựng như sau (giả định rằng, các độ thích nghi đều dương, trong trường hợp ngược lại thì ta có thể dùng một vài phép biến đổi tương ứng để định lại tỷ lệ sao cho các độ thích nghi đều dương).
- Tính độ thích nghi fi, i=1÷ n của mỗi nhiễm sắc thể trong quần thể hiện hành,với nlà kích thước của quần thể (số nhiễm sắc thể trong quần thể).
- Tìm tổng giá trị thích nghi toàn quần thể:
1 n
i i
F f
- Tính xác suất chọnpi cho mỗi nhiễm sắc thể:
F pi fi - Tính vị trí xác suất qi của mỗi nhiễm sắc thể:
i
j j
i p
q
1
Hình 3.1: Bánh xe quay Roulette
Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe roulette n lần, mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới theo cách sau:
- Phát sinh ngẫu nhiên một sốr (quay bánh xe roulette) trong khoảng [0÷1]
- Nếu rq1thì chọn nhiễm sắc thể đầu ti ên; ngược lại thì chọn nhiễm sắc thể thứi sao cho: qi1rqi
Kết quả của quá trình này là các cá thể có độ thích nghi cao thì có nhiều khả năng sống sót và được nhân bản. Còn các cá thể kém thích nghi thi ít có c ơ hội sống hơn và được loại bỏ bớt khỏi quá trinh tiến hóa. Điều này thực sự cũng phù hợp với tiến hóa của tự nhiên.
2. Lai ghép (Crossover)
Phép lai là quá trình hình thành nhiễm sắc thể mới trên cơ sở các nhiễm sắc thể cha - mẹ, bằng cách ghép một hay nhiều đoạn gen của hai (hay nhiều) nhiễm sắc thể cha - mẹ với nhau. Phép lai xảy ra với xác suất pc, được thực hiện như sau:
- Đối với mỗi nhiễm sắc thể trong quần thể mới, phát sinh ngẫu nhiên một số r trong khoảng [0÷1], nếur < pc thì nhiễm sắc thể đó được chọn để lai ghép.
- Ghép đôi các nhiễm sắc thể đã chọn được một cách ngẫu nhi ên, đối với mỗi cặp nhiễm sắc thể được ghép đôi, ta phát sinh ngẫu nhiên một số nguyên pos trong khoảng [0÷m-1] (m là tổng chiều dài của một nhiễm sắc thể - tổng số gen). Sốpos cho biết vị trí của điểm lai. Điều n ày được minh họa nhưsau:
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 49
1 2 os os+1
1 2 os os+1
... ...
... ...
p p m
p p m
b b b b b b
c c c c c c
- Chuyển đổi các gen nằm sau vị trí lai:
1 2 os os+1
1 2 os os+1
... ...
... ...
p p m
p p m
b b b b c c
c c c c b b
Như vậy phép lai này tạo ra hai chuỗi mới, mỗi chuổi đều đ ược thừa hưởng những đặc tính lấy từ cha và mẹ của chúng.
Trên đây là sơ đồ kiểu lai ghép tại một điểm. Tuy nhiên còn có kiểu lai ghép phức tạp hơn là : lai ghép tại đa điểm (thông thường là hai điểm :two-point crossover).
Mặc dù phép lai ghép sử dụng lựa chọn ngẫu nhi ên, nhưng nó không đư ợc xem như là một lối đi ngẫu nhiên qua không gian tìm kiếm. Sự kết hợp giữa tái sinh và lai ghép làm cho thuật toán di truyền hướng việc tìm kiếm đến những vùng tốt hơn.
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ể 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ếur pm, thìđột biến gen đó.
Đột biến đưa thêm thông tin mới vào quần thể, 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.
3.1.2.5 Cấu trúc của 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:
Vị trí lai
- 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.
Hình 3.2: Sơ đồ thực thi giải thuật di truyền Bắt đầu
Định nghĩa hàm đánh giá; chọn các biến, thông
số di truyền.
Khởi tạo quần thể ban đầu.
Giải mã nhiễm sắc thể
Tính độ thích nghi
Tái sinh
Lai ghép
Đột biến
Số thế hệ
= Max ?
Kết thúc
N
Y
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 51 3.1.2.6 Thực thi thuật toán
Giải thuật di truyền được xây dựng trên công cụ lập trình bậc cao là Matlab.
Các mô phỏng dưới đây được thực hiện trên máy tính PC có cấu hình: Pentium IV 2.8GHz, DRAM 512.
Điều khiển đối tượng nhiệt:
Xét đối tượng nhiệt có hàm truyền đạt:
20
120 1 50 1
e s
G s s s
(3.7)
Đây là đối tượng tương đối chậm, thời gian trễ lớn.
Sau khi thu thập số liệu từ quá trình, ta tiến hành nhận dạng băng mô hình mờ. Mô hình này được sử dụng để dự báo đầu ra của đối t ượng. Bộ điều khiển MPC sử dụng giải thuật di truyền được xây dựng trong Matlab d ưới dạng hàm:
function u = ga_fis (myfis,lamda,TDLy,TDLu,...
model,Ts,Hc,Hp,num_bit,num_chro,num_gen);
myfis : mô hình mờ sau khi nhận dạng
model : mô hình đối tượng ( dùng để tính giá trị phản hồi) Hp : phạm vi dự báo đầu ra
Hc : phạm vi điều khiển num_bit : số bit để mã hóa u
num_chro: số nhiễm sắc thể trong quần thể num_gen : số thế hệ tiến hóa.
Các hàm con sử dụng trong chương trình:
function generation=genbin(pop,nbit) : tạo quần thể gồm pop nhiễm sắc thể, mỗi nhiễm sắc thể dài nbit.
function val=bin2real(chro,range,pos) : chuyển đổi chuỗi nhị phân sang giá trị thập phân.
function newgen = selectmin(gen,myfis,Hp,cur_state,ref) : tái sinh có chọn lọc.
function newgen = mate (gen,ma): thực hiện lai ghép
function newgen=mutate(gen,mu) : thực hiên đột biến.
function J=cost(myfis,du,Hp,cur_state,ref) : hàm mục tiêu.
Kết quả mô phỏng:
Với giả thiết:
- u bị chặn trong khoảng [-0.5,0.5]
- u bịchặn trong khoảng [0, 1]
- Hc= 1;
- xác suất lai ghép: pc 0.7 - xác suất đột biến: pm 0.007 - chu kỳ trích mẫu: Ts = 10s
với Hp=5, num_bit=15, num_chro =50, num_gen=3, Lamda =0.001.
- Thời gian lớn nhất mỗi bước tính Tmax ~ 3.1 s .(<Ts=10s)
- Đầu ra bám được với tín hiệu đặt, tuy nhiên tín hiệu điều khiển lại thay đổi khá mạnh, nghiệm tìmđược chưa phải là nghiệm tối ưu.
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
y(t)
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
u(t)
time(s)
Hình 3.3: Đáp ứng với lamda = 0.001 - Ta sẽ tăng lamda để hy vọng tín hiều điều khiển sẽ “trơn” hơn.
với Hp=5, num_bit=15, num_chro =50, num_gen=3, Lamda =0. 1.
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 53
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
y(t)
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
time (s)
u(t)
Hình 3.4: Đáp ứng với lamda =0.1
- tín hiệu điều khiển trơn hơn, tuy nhiên lại làm phản ứng của hệ thống trở nên xấu hơn.
- Như vậy, trọng số lamda ảnh h ưởng khá lớn đến chất l ượng của hệ thống. Việc chọn tham số này phải qua thực nghiệm và phụ thuộc từng bài toán cụ thể: nếu muốn chú trọng bám tín hiệu đặt h ơn thì nhỏ, thậm chí có thể gán 0. Ngược lại, khi cần tối ưu về năng lượng hơn thì phải tăng .
với Hp=5, num_bit=15, num_chro =50, num_gen=3, Lamda =0. 01.
0 200 400 600 800 1000 1200 0
0.2 0.4 0.6 0.8 1
y(t)
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
time (s)
u(t)
Hình 3.5: Đáp ứng với lamda =0.01
Hp=5, num_bit=10, num_chro =50, num_gen=3, Lamda =0. 01
- khi giảm số bit để mã hóa nhiễm sắc thể, đồng nghĩa với việc giảm độ chính xác củalời giải, tuy nhiên bù lại, ta lại có thể giảm bớt thời gian của mỗi b ước tính.
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
y(t)
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
u(t)
time(s)
Hình 3.6: Đáp ứng vớinum_bit=10
MAI VĂN SỸ, NGUYỄN NGỌC LINH – ĐKTĐ – KSTN– K48 55
Trong trường hợp cần chất lượng điều khiển cao h ơn và cho phép tăng th ời gian mỗi bước tính thì ta có thể tăng miền điều khiển, miền dự báo, số l ượng nhiễm sắc thể trong quần thể, và số thế hệ tiến hóa. Sau đây là kết quả khi tăng phạm vi dự báo: Hp = 8.
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
y(t)
0 200 400 600 800 1000 1200
0 0.2 0.4 0.6 0.8 1
time (s)
u(t)
Hình 3.7: Tăng khoảng dự báo đầu ra Hp=8
Rừ ràng lời giải đó tốt hơn. Thời gian của mỗi bước tớnh là khoảng 5s (<Ts=10s) Như vậy trong trường hợp đối tượng này ta vẫn còn có khả năng tăng các thông số trên. Tuy nhiên, đến lúc này, chất lượng khó mà cải thiện đáng kể nữa:
Hp=8, num_bit=15, num_chro =60, num_gen=5, Lamda =0. 01.