Giải thuật di truyền và áp dụng cho bài toán chiếc ba lô loại 2
Trang 1Giải thuật gene
và
Bài toán chiếc ba lô loại 2
I Giới thiệu chung 2
II Giải thuật gene 3
1 Các khái niệm 3
2 Cấu trúc cơ bản của GAs 4
III Áp dụng thuật toán gene vào bài toán Knapsack 02 9
1 Mô tả bài toán 9
2 Phương án giải bài toán 9
IV Ưu và nhược điểm 11
1 Ưu điểm 11
2 Nhược điểm 11
V Kết luận 11
Tài liệu tham khảo: 12
Trang 2I Giới thiệu chung.
Xuất phát từ khái niệm lý thuyết Darwin của sự tồn tại thích hợp nhất và được John Holland đưa ra lần đầu tiên vào năm 1975 Thuật toán gene (GAs – Genetic Algorithms) là thuật toán tìm kiếm, chọn lựa giải pháp tối ưu để giải quyết các bài toán khác nhau dựa trên
mô phỏng cơ chế tiến hoá của tự nhiên.
Trong cơ thể sinh vật, các gene liên kết với nhau theo cấu trúc dạng chuỗi gọi là nhiễm sắc thể (Chromosomes), nó đặc trưng co mỗi loài và quyết định
sự sống còn của cơ thể đó Trong tự nhiên một loài muốn tồn tại phải thích nghi với môi trường, cơ thể sống nào thích nghi với môi trường tốt thì tồn tại và phát triển, ngược lại với những loài không thích nghi với môi trường sống sẽ bị đào loại bỏ và dần dần tuyệt chủng Môi trường tự nhiên thay đổi nên cấu trúc nhiễm sắc thể cũng thay đổi để thích nghi với môi trường nên thế hệ sau luôn có độ thích nghi cao hơn thế hệ trước Dựa vào đó các nhà khoa học máy tính xây dựng nên môi trường giải thuật tìm kiếm dựa trên
cơ sở chọn lọc tự nhiên và quy luật tiến hoá, gọi là giải thuật gene.
Năm 1989, Goldberg chỉ ra sự khác nhau chủ yếu giữa GAs và phương pháp tối ưu truyền thống như sau:
- GAs sử dụng theo xác suất, không phải theo quyết định, để tìm kiếm các quy tắc.
- GAs sử dụng các thông tin từ hàm mục tiêu, không
sư dụng thông tin biết được khác.
- Đăc trưng của GAs là sử dụng chính sự mã hoá của tập hợp biến quyết định, không phải là biến quyết định chính bản thân.
- Những sự tìm kiếm của GAs xuất phát từ tập hợp các biến quyết định của quần thể, không phải tập hợp biến quyết định riêng lẻ.
Trang 3II Giải thuật gene.
1 Các khái niệm.
- Nhiễm sắc thể (Chromosomes):
o Trong GAs mỗi cá thể được mã hoá bởi 1 cấu trúc dữ liệu mô tả cấu trúc gen của cá thể đó, ta gọi là nhiễm sắc thể Chúng đại diện cho không gian của các giải pháp ứng cử viên Nhiễm sắc thể có thể được mã hoá nhị phân, hoán vị, giá trị và mã hoá cây
o Đối với bài toán chiếc ba lô loại 2, ta sử dụng mã hoá giá trị
- Quần thể (Population):
o Là một tập hợp các cá thể, được tiến hoá từ thế hệ này tới thế hệ khác phụ thuộc vào sự thích nghi của các cá thể
- Thế hệ (Generation):
o GAs sẽ làm việc trên các cá thể của nhiều quần thể, mỗi quần thể ứng với một giai đoạn phát triển gọi là thế hệ
- Hàm thích nghi (Fitness function):
o GAs yêu cầu 1 hàm thích nghi để chứa điểm của mỗi
cá thể trong cộng đồng hiện tại Từ đó có thể tính toán giải pháp nào được mã hoá và nắm được cách mà chúng giải quyết vấn đề
- Kỳ vọng (Hope):
o Hy vọng hế hệ sinh ra sẽ chứa lời giải tốt cho bài toán
- Toán tử tái sinh (Reproduction) hay toán tử chọn lọn (Selection):
o Các cá thể tốt được chọn lọc để đưa vào thế hệ sau dựa trên hàm thích nghi
- Toán tử lại ghép (Crossover):
o Hai cá thể cha mẹ trao đổi các Gen để tạo ra 2 cá thể con
- Toán tử đột biến (Mutation):
o Một cá thể thay đổi 1 số Gen không theo quy luật để tạo ra thế hệ mới
Trang 42 Cấu trúc cơ bản của GAs.
Trang 5Step 0: Initialization (Khởi tạo)
Step 1: Selection (Lựa chọn)
Step 2: Crossover (Lai ghép)
Step 3: Mutation (Đột biến)
Step 4: Evaluation (Đánh giá)
Step 5: Termination test (Kiểm tra)
Step 6: End (Kết thúc)
Thoả mãn Không thoả mãn
a Mã hoá (Encoding).
- Mã hoá nhị phân (Binary Encoding – BE):
Cài đặt hàm
Procedure GA
begin
t := 0 ; initialize P(t) ; evaluate P(t) ; while (not termination-condition) do
begin
t := t + 1 ; select P(t) from P(t-1) ; alter P(t) ;
evaluate P(t) ;
end;
end;
Trang 6o Là kiểu mã hoá thông dụng nhất bởi vì: nghiên cứu đầu tiên về thuật toán Gen sử dụng kiểu mã hóa này
và bởi vì nó đơn giản
o Trong BE, mọi nhiễm sắc thể là chuỗi bits - 0 or 1.
o NST A 101100101100101011100101
o NST B 111111100000110000011111
o Các mã hóa này thường không tự nhiên cho nhiều bài toán và thỉnh thoảng sai sau khi thự hiện các phép toán lai ghép và đột biến
- Mã hoá hoán vị (Permutation Encoding – PE):
o Có thể sử dụng để giải quyết các bài toán có thứ tự như: Người bán hàng
o Trong PE, tất cả các NST là chuỗi các số biểu diễn vị trí trong một dãy
o NST A 1 5 3 2 6 4 7 9 8
o NST B 8 5 6 7 2 3 1 4 9
o PEđược sử dụng trong các bài toán có thứ tự Trong một vài trường hợp, việc hiệu chỉnh lai ghép và đột biến phải thực hiện để tạo ra NST phù hợp
- Mã hoá giá trị (Value Encoding – VE):
o Được sử dụng trong các bài toán mà việc mã hóa nhị phân là khó thực hiện (Như bài toán knapsack 02)
o Trong VE mỗi nhiễm sắc thể là một chuỗi các giá trị
có thể nhận dạng bất kỳ tùy thuộc vào từng bài toán
cụ thể
o NST A 1.2324 5.3243 0.4556 2.3293 2.4545
o NST B ABDJEIFJDHDIERJFDLDFLFEGT
o NST C (back), (back), (right), (forward), (left)
o Với kiểu mã hóa này thường sẽ phải xây dựng một số phép lai ghép và đột biến cho các bài tóan cụ thể
- Mã hoá dạng cây (Tree Encoding – TE):
o TE thường được sử dụng trong các bài toán hoặc các biểu thức suy luận
o Trong TE, mỗi NST là một cây gồm các đối tượng như
là các hàm hoặc các câu lệnh của ngôn ngữ lập trình
o TE thường được dùng đối với các bìa tóan suy luận hoặc các cấu trúc có thể biểu diễn bằng cây
Trang 7o Các phép lai ghép và đột biến đối với kiểu mã hóa này cũng tương đối dễ thực hiện
b Khởi tạo quần thể.
- Thường được chọn random dựa vào yêu cầu bài toán
c Hàm thích nghi.
- Hàm thích nghi định nghĩa tiêu chuẩn để xếp hạng các
giả thuyết tiềm ẩn và để chọn lọc chúng theo xác suất để đưa vào quần thể thế hệ kế tiếp
- Mỗi bài toán có một hàm thích nghi riêng.
d Chọn lọc.
- Các nhiễm sắc thể được chọn từ quần thể là các cha cho
lai ghép (crossover)
- Theo thuyết tiến hoá của Darwin những cá thể tốt nhất
sẽ được họn để lai ghép
- Có nhiều phương pháp lựa chọn như:
o Roulette Wheel Selection:
Nhiễm sắc thể được chọn thông qua độ thích nghi của chúng.
Nhiễm sắc thể tốt hơn (mang hàm ý xác suất) được chọn.
Minh họa về phương pháp chọn:
Đặt các NST lên roulette wheel.
Kích thước của đoạn trong roulete wheel tương ứng với giá trị của hàm thích nghi.
Một hòn bi được lăn trong roulette wheel và NST nơi nó dừng lại được lựa chọn.
NST với giá trị thích nghi lớn sẽ được chọn nhiều hơn.
Tiến trình trên có thể được mô tả bởi thuật toán sau:
[Tính tổng] Tính tổng S của giá trị thích
nghi của tất cả cá thể trong quần thể.
[Lựa chọn] Chọn ngẫu nhiên một giá trị r trong đoạn (0,S)
Trang 8 [Vòng lặp] Với giá trị ngẫu nhiên r đã
chọn, tương ứng với các thể nào đó khi
hình thành S thì cá thể đó được chọn cho
thế hệ kế tiếp.
o Rank Selection:
Roulette Wheel Selection sẽ có vấn đề khi có sự khác nhau lớn giữa các độ thích nghi.
Ví dụ: nếu NST tốt nhất có độ thích nghi là 90% thì các NST khác rất ít cơ hội được lựa chọn.
Rank selection tính hạng quần thể đầu tiên và sau đó mọi NST nhận lại giá trị thích nghi được định nghĩa bởi hạng của chúng.
NST tồi nhất sẽ có độ thích nghi là 1, NST tồi thứ hai là 2 etc và NST tốt nhất sẽ có độ thích nghi là N (Số nhiễm sắc thể trong quần thể).
o Elitism:
Khi tạo quần thể mới bằng crossover hoặc mutation, có thể làm mất cá thể tốt nhất
Phương pháp Elitism cho phép copy những cá
thể tốt (hoặc một vài cá thể tốt) sang quần thể mới
Thành phần còn lại của quần thể được tạo từ cách khác.
Phương pháp Elitism có thể tăng tốc cho GA, vì
nó ngăn không làm mất cá thể tốt.
o Steady-State Selection.
Trạng thái sẽ
thay đổi sau khi độ thích nghi sẽ được thay đổi bởi hạng của cá thể.
Bây giờ tất cả
các NST sẽ có một số ngẫu nhiên để lựa chọn.
Situation before ranking (graph of fitnesses)
Situation after ranking (graph of order numbers)
Trang 9 Trong tất các thế hệ sẽ có một vài NST tốt (Với
độ thích nghi cao) được chọn để tạo NST con mới
Một vài NST tồi (với độ thích nghi thấp) sẽ bị xóa bỏ và các NST con mới sẽ thay thế chỗ của chúng
Phần còn lại của quần thể tạo ra thế hệ mới.
o Boltzman selection.
e Lai ghép và đột biến.
- Đây là 2 phép toán cơ bản của thuật toán gen Sự hình
thành luật của GAs phụ thuộc rất nhiều vào 2 phép toán này
- Kiểu và sự thể hiện của các toán tử này phụ thuộc vào
kiểu mã hóa và cũng phụ thuộc vào bài toán
- Có nhiều cách để thực hiện việc lai ghép và đột biến:
f Tiêu chuẩn kết thúc.
- Thuật toán dừng khi quần thể hội tụ, i.e cá thể tốt nhất
trong quần thể giống với kết quả mong muốn
- Kết thúc khi số thế hệ sinh ra đạt đến số vòng lặp xác
định trước
11101001000 00001010101
11101010101
00001001000
11101001000
00001010101
11001011000
00101000101
11101001000
00001010101
10001000100
01101011001
Các chu i ban đ u ỗi ban đầu ầ Các cá th con ể
Đ t bi n đi m ột biến điểm ến điểm ểm đơn :
Trang 10- Kết thúc khi các cả thể trở lên giống nhau.
- Kết thúc khi cá thể tốt nhất trong quần thể không thay đổi theo thời gian
III Áp dụng thuật toán gene vào bài toán
Knapsack 02.
1 Mô tả bài toán.
2 Phương án giải bài toán.
a Mã hoá:
Đối với bài toán knapsack 02, do mỗi vật có thể được chọn nhiều lần nên ta dùng mã hoá giá trị cho các nhiễm sắc thể – VD: Có 1 đoạn gen: 0498392
• Số 0 đầu tiên có nghĩa là vật 1 được chọn 0 lần
• Số 4 thứ 2 có nghĩa là vật 2 được chọn 4 lần
• Đơn vị đ/c chuẩn bị hành
quân
• Ngoài những quân dụng
bắt buộc phải mang theo,
đ/c còn phải chọn một số
vật dụng khác phải mang
theo để phục vụ sinh
hoạt
• Tuy nhiên balo của đ/c có
hạn và chỉ để được một
khối lượng k Giả sử 1 đồ
dùng có khối lượng w và
giá trị sử dụng c, 1 vật có
nhiều số lượng và có thể
chọn nhiều lần
• Đ/c phải chọn đồ để bỏ
vào balo sao cho không
vượt quá khối lượng k và
giá trị sử dụng c sao cho
lớn nhất có thể
Trang 11• ….
b Khởi tạo quần thể.
Sau khi mã hoá ta được quần thể với các gen ngẫu nhiên nên
sẽ có những cá thể không thoả mãn yêu cầu đề bài là khối lượng Những cá thể thoả mãn sẽ được giữ lại tạo thành 1 quần thể mới Quần thể này dung để chọn lọc và lai ghép
c Hàm thích nghi.
Hàm thích nghi được xây dựng trên tổng khối lượng của mỗi cá thể Sau khi chọn được cá thể ta sẽ tính khối lượng dựa trên số lần chọn vật và khối lượng từng vật
– Nếu tổng khối lượng lớn hơn khả năng chứa của balo thì
cá thể sẽ bị loại bỏ
– Nếu tổng khối lượng nhỏ hơn hoặc bằng sức chứa của balo thì ta tiếp tục thuật toán
– Nếu số cá thể còn lại ít hơn số cá thể giới hạn của quần thể thì ta tiếp tục lai ghép các cá thể bố mẹ cho đến khi nào đủ cá thể thoả mãn cho quần thể mới
d Lựa chọn cá thể.
Theo yêu cầu của bài toán ta sử dụng phương pháp chọn Elitism Phương pháp này cho phép copy những cá tốt sang quần thể mới Những cá thể còn lại sẽ được chọn theo phương pháp khác
Để đánh giá cá thể tốt hay không ta cần 1 hàm đánh giá, hàm đánh giá này trả về giá trị là tổng giá trị trong balo sau khi chọn các vật Các cá thể có giá trị cao sẽ được lưu lại
e Lai ghép
Là 1 phép toán cơ bản của thuật toán Gen Có nhiều cách
để lai ghép phụ thuộc vào cách mã hoá ở trên Với cách mã hoá giá trị, ta sử dụng cách lai ghép:
Cắt một đoạn Gen của cá thể a ghép vào 1 đoạn gen của cá thể b Sau mỗi lần lai ghép ta phải kiểm tra hàm thích nghi, chỉ lấy những cá thể thoả mã hàm thích nghi
Đối với bài toán này, ta lấy tỉ lệ lai ghép mặc định là 80%
Trang 12f Đột biến.
Đối với bài toán mã hoá theo giá trị ta cộng hoặc trừ đi 1 số
từ các giá trị được chọn trong cá thể đột biến
Về tỉ lệ đột biến: Nếu ta chọn tỉ lệ quá cao thì kết quả sẽ khó có thể hội tụ được Còn nếu quá thấp thì cũng sẽ có ít khả năng ảnh hưởng đến bài toán
Trong chương trình, ta lấy tỉ lệ đột biến mặc định là 1%
g Điều kiện dừng.
Nếu đủ thời gian ta sẽ cho thuật toán chạy đến khi các cá thể không thay đổi theo thời gian hoặc các cá thể sinh ra là giống hệt nhau
Nếu không có đủ thời gian ta sẽ lấy kết quả tốt nhất trong thời gian chạy thuật toán để làm lời giải cho bài toán
Trong chương trình, tôi để mặc định là chạy 1000 lần thì dừng thuật toán
IV Ưu và nhược điểm.
1 Ưu điểm.
- GAs có khả năng chạy song song.
- Ít bị rơi vào cực trị địa phương (Giải quyết bằng đột biến).
- Với cùng cách mã hoá có thể thay đổi hàm thích nghi.
- Khi đã có thuật toán gene cơ bản, chỉ cần viết 1 nhiễm sắc
thể mới để xử lý một bài toán khác
2 Nhược điểm.
- Thời gian tính toán có thể chậm hơn các thuật toán khác.
- Quá trình tính toán có thể kết thúc bất cứ lúc nào, không có
kế hoạch trước
- Giống như tiến hoá tự nhiên, cha mẹ tốt chưa chắc đã sinh
ra con tốt Nên dùng giải thuật gene để giải bài toán này khi giữ lại những cá thể tốt trong quần thể chưa chắc sau khi lai ghép đã sinh ra được cá thể tốt hơn
V Kết luận.
Thuật toán gene là một thuật toán tối ưu khá hiệu quả, mô phỏng sự tiến hoá của tự nhiên Thuật toán này có ưu điểm
mà các thuật toán tìm kiếm khác thường mắc phải đó là giảm thiểu được khả năng rơi vào khoảng nghiệm cục bộ của bài toán
Trang 13Trong quá trình nghiên cứu còn nhiều thiếu xót, kính mong thầy nhận xét và bổ sung cho em để em có thể hoàn thiện được kiến thức của mình
Em xin chân thành cảm ơnn !!!
Tài liệu tham khảo:
o Bài 3-2: Slide trí tuệ nhân tạo – TS.Ngô Hữu Phúc.
o Và một số tài liệu khác trên webside:
www.123doc.vn.