Giới thiệu Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho các bài toán là vấn đề được các nhà khoa học máy tính đặc biệt rất quan tâm. Mục đích chính của các thuật toán tìm kiếm lời giải là tìm ra lời giải tối ưu nhất cho bài toán trong thời gian nhỏ nhất. Các thuật toán như tìm kiếm không có thông tin / vét cạn (tìm kiếm trên danh sách, trên cây hoặc đồ thị) sử dụng phương pháp đơn giản nhất và trực quan nhất hoặc các thuật toán tìm kiếm có thông tin sử dụng heurictics để áp dụng các tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời gian cần thiết cho việc tìm kiếm được sử dụng nhiều nhưng chỉ với không gian tìm kiếm nhỏ và không hiệu quả khi tìm kiếm trong không gian tìm kiếm lớn. Tuy nhiên, trong thực tiễn có rất nhiều bài toán tối ưu với không gian tìm kiếm rất lớn cần phải giải quyết. Vì vậy, việc đòi hỏi thuật giải chất lượng cao và sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt rất cần thiết khi giải quyết các bài toán có không gian tìm kiếm lớn. Thuật giải di truyền (genetic algorithm) là một trong những kỹ thuật tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều bài toán và ứng dụng. Hiện nay, thuật toán di truyền cùng với logic mờ được ứng dụng rất rộng rãi trong các lĩnh vực phức tạp. Thuật toán di truyền kết hợp với logic mờ chứng tỏ được hiệu quả của nó trong các vấn đề khó có thể giải quyết bằng các phương pháp thông thường hay các phương pháp cổ điển, nhất là trong các bài toán cần có sự lượng giá, đánh giá sự tối ưu của kết quả thu được. Chính vì vậy, thuật giải di truyền đã trở thành đề tài nghiên cứu thú vị và đem đến nhiều ứng dụng trong thực tiễn. Tuy giải thuật Gene (GA) có thể chậm hơn một số thuật toán khác song GA lại có một vài ưu điểm nổi trội như: dễ thể hiện, không bị rơi vào trạng thái cực trị địa phương, dễ thay đổi hàm thích nghi, … Vì vậy, thuật toán Gene là một lựa chọn thích hợp cho dạng bài toán quyết định. Ví dụ như bài toán tìm đường, bài toán balô, … Trong khuôn khổ của đề tài này, em xin trình bày nội dung của giải thuật Gene và ứng dụng của nó trong việc giải quyết bài toán Chiếc ba lô loại 2 (Knapsack 2) với phương pháp lựa chọn Rank Selection.
Trang 1BỘ MÔN KHOA HỌC MÁY TÍNH– KHOA CNTT
HỌC VIỆN KỸ THUẬT QUÂN SỰ
BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO
Đề bài: Xây dựng chương trình mô tả không gian trạng thái của toán chiếc
balô loại 2 giải quyết theo giải thuật Gene với phương pháp chọn Rank.
Sinh viên thực hiện: Nguyễn Thị Thanh Huyền Lớp: Tin học 5A
Khóa 5
Trang 2Hà Nội, 2010
Giới thiệu
Trong ngành khoa học máy tính, tìm kiếm lời giải tối ưu cho các bài
toán là vấn đề được các nhà khoa học máy tính đặc biệt rất quan tâm
Mục đích chính của các thuật toán tìm kiếm lời giải là tìm ra lời giải
tối ưu nhất cho bài toán trong thời gian nhỏ nhất Các thuật toán như
tìm kiếm không có thông tin / vét cạn (tìm kiếm trên danh sách, trên
cây hoặc đồ thị) sử dụng phương pháp đơn giản nhất và trực quan nhất
hoặc các thuật toán tìm kiếm có thông tin sử dụng heurictics để áp
dụng các tri thức về cấu trúc của không gian tìm kiếm nhằm giảm thời
gian cần thiết cho việc tìm kiếm được sử dụng nhiều nhưng chỉ với
không gian tìm kiếm nhỏ và không hiệu quả khi tìm kiếm trong không
gian tìm kiếm lớn Tuy nhiên, trong thực tiễn có rất nhiều bài toán tối
ưu với không gian tìm kiếm rất lớn cần phải giải quyết Vì vậy, việc
đòi hỏi thuật giải chất lượng cao và sử dụng kỹ thuật trí tuệ nhân tạo
đặc biệt rất cần thiết khi giải quyết các bài toán có không gian tìm
kiếm lớn Thuật giải di truyền (genetic algorithm) là một trong những
kỹ thuật tìm kiếm lời giải tối ưu đã đáp ứng được yêu cầu của nhiều
bài toán và ứng dụng Hiện nay, thuật toán di truyền cùng với logic
mờ được ứng dụng rất rộng rãi trong các lĩnh vực phức tạp Thuật toán
di truyền kết hợp với logic mờ chứng tỏ được hiệu quả của nó trong
các vấn đề khó có thể giải quyết bằng các phương pháp thông thường
hay các phương pháp cổ điển, nhất là trong các bài toán cần có sự
lượng giá, đánh giá sự tối ưu của kết quả thu được Chính vì vậy, thuật
giải di truyền đã trở thành đề tài nghiên cứu thú vị và đem đến nhiều
ứng dụng trong thực tiễn
Tuy giải thuật Gene (GA) có thể chậm hơn một số thuật toán khác
song GA lại có một vài ưu điểm nổi trội như: dễ thể hiện, không bị rơi
vào trạng thái cực trị địa phương, dễ thay đổi hàm thích nghi, … Vì
vậy, thuật toán Gene là một lựa chọn thích hợp cho dạng bài toán
quyết định Ví dụ như bài toán tìm đường, bài toán balô, …
Trang 3Trong khuôn khổ của đề tài này, em xin trình bày nội dung của giải
thuật Gene và ứng dụng của nó trong việc giải quyết bài toán Chiếc ba
lô loại 2 (Knapsack 2) với phương pháp lựa chọn Rank Selection
I Giải thuật di truyền (Genertic Algorithm - GAs)
1 Giới thiệu:
GAs (John Holland, 1975) mô phỏng tiến hóa tự nhiên (Darwinian
Evolution) ở mức gen sử dụng tư tưởng của survival of the fittest
(chọn lọc tự nhiên) Một cá thế (chromosome) mô tả một lời giải ứng
viên của bài toán Một tập các cá thể “alive”, gọi là quần thể
(population) được tiến hóa 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ệ sinh ra sẽ chứa lời giải của bài
toán
Giải thuật:
- Khởi tạo quần thể P(0)
- chỉ số i chỉ thế hệ thứ i
- Lặp đến khi quần thể hội tụ hoặc
đạt đến tiêu chuẩn kết thúc
+ Đánh giá độ thích nghi của mỗi cá thể trong P(i)
+ Lựa chọn các cha từ P(i) dựa trên độ thích nghi của chúng trong P(i).
+ Áp dụng các toán tử Gen (crossover, mutation) từ các cha đã
chọn để sinh ra các con
+ Đạt được thế hệ tiếp theo
P(i + 1) gồm các cá thể con và cha P(i)
2 Các thành phần cơ bản của Gas
Trang 4Tạo ngẫu nhiên một số cá thể chấp nhận được để được một quần thể phù hợp với kích thước quần thể được quy định sẵn
b Hàm thích nghi (Fitness Function) Gán giá trị thích nghi cho mỗi cá thể Giá trị thích nghi càng sát với thực tế thì độ chính xác càng cao
c Lựa chọn để kết hợp lại (Selection For Recombine)
Có nhiều kiểu lựa chọn + roulette wheel selection + Boltzman selection + Tournament selection + rank selection
+ steady state selection + Elitism
d Mã hóa
Mã hóa chuỗi gene của mỗi cá thể thành dạng thích hợp (nhị phân, mã hóa giá trị, mã hóa hoán vị)
e Lai ghép Sau khi chọn được các cặp NST dùng để lai, ta tiến hành cắt ghép để tạo được các NST mới (con mới)
Có nhiều hình thức lai ghép: lai 1 điểm, lai nhiều điểm, lai bằng các phép toán nhị phân, …
f Đột biến Sau khi lai ghép, để tạo sự đa dạng quần thể, ta làm phép đột biến đối với một vài cá thể Trên chuỗi gene, tại 1 vài vị trí, làm thay đổi giá trị của 1 đoạn gene nào đó
g Đánh giá Khi đã có quần thể mới, ta tiến hành kiểm tra đánh giá xem
cá thể nào tốt nhất, cá thể nào tồi Loại bỏ bớt những cá thể tồi để lặp lại các bước trên đó
h Tiêu chuẩn kết thúc
Trang 5Không có quá trình nào là không thể kết thúc Quá trình tiến hóa có thể dừng lại sau một khoảng tgian được quy định(một
số thế hệ) hoặc sau khi đã hội tụ (không thể tìm thêm được
cá thể tốt hơn)
II Bài toán Ba lô 2
1 Phát biểu bài toán:
Bạn chuẩn bị đi du lịch và bạn cần chuẩn bị một số thứ Tuy nhiên,
bạn không thể đem tất cả đi được vì sức người có hạn Bạn phải
đem theo đồ gì, số lượng mỗi loại là bao nhiêu để đạt được tổng giá
trị là lớn nhất nhưng vẫn trong khả năng có thể đem theo được
2 Ứng dụng Gas để giải quyết bài toán:
a Các bước thực hiện:
* Khởi tạo đồ vật và trọng lượng tối đa ba lô:
- Tạo ra x đồ vật với khối lượng và giá trị khác nhau (ngẫu nhiên)
- Ấn định khối lượng tối đa của túi
* Khởi tạo quần thể:
Tạo ra n chiếc ba lô, mỗi ba lô chứa số lượng các vật
là khác nhau, không ba lô nào bị quá tải
Số lượng mỗi vật trong balô là một số ngẫu nhiên trong khoảng từ 0 → KL balô/KL vật
Tìm balô tốt nhất
* Lựa chọn:
Xếp các balô từ thế hệ trước theo thứ tự và được xếp rank
Giá trị tăng dần Giá trị tăng dần
Tính tổng các rank
Trang 6Lặp đến khi đủ số cá thể con Lấy ngẫu nhiên 1 số thuộc khoảng (1; tổng Rank) Cộng các Rank đến khi đc giá trị > giá trị ngẫu nhiên
Xác định Gene được chọn và đưa vào mảng để lai
* Mã hóa:
Với các Gene được chọn để đem lai, mã hóa chúng thành dạng chuỗi bằng phương pháp mã hóa giá trị
* Lai:
Phương pháp lai được chọn là lai 2 điểm
Chuỗi gen được chia thành 3 phần, phần 1 có độ dài = ¼ chuỗi gene, phần 2 có độ dài = ½ chuỗi gene, phần 3 là phần còn lại Cách lai:
* Đột biến Dựa vào tỉ lệ đột biến → số lần đột biến → số cá thể đột biến
Chọn 3 vị trí để đột biến Giá trị đột biến = vị trí
* Đánh giá Giải mã gene: Từ chuỗi mã hóa đưa về dạng knapsack
→ Sau quá trình lai ghép, quần thể gồm cả các cá thể cha và con
Vì quần thể có kích thước cố định nên phải đánh giá để chọn ra
n cá thể tốt cho thế hệ kế tiếp
* Lặp lại các bước trên đến khi quần thể hội tụ hoặc sau k thế hệ
Trang 7III Ứng dụng mô phỏng bài toán:
1 Môi trường xây dựng ứng dụng:
- Framework:.Net 3.5
- IDE: Microsoft Visual Studio 2008
2 Cấu trúc ứng dụng:
Ứng dụng được chia thành 2 phần:
- Core: Chứa các file class mô tả thuật toán
- Presentation: Chứa các file mô tả giao diện
3 Một số thành phần của chương trình:
Class
Properties và Methods in class
Item
Knapsack knapsackMaxWeight KL tối đa của túi
KnapsackCurrentWeight KL hiện tại của túi KnapsackValue Giá trị hiện tại
Trang 8ListItemAmount Mảng chứa sl mỗi vật overload() Kiểm tra túi quá tải showItem() Hiển thị sl các vật dạng
string
GAs
KnapsackWeight KL tối đa của túi knapsackAmount SL túi trong 1 thế hệ mutationProp tỉ lệ đột biến
listKnapsack dsách các cá thể trong 1 thế
hệ newListKnapsack danh sách cá thể cũ và mới ksBestCurrent chiếc túi tốt nhất
maxValue giá trị của túi tốt nhất goodGeneration thế hệ có túi tốt nhất encodedListKnapsack mảng các gene đc mã hóa initialize() khởi tạo quần thể
selectionFor NewGeneration()
chọn từ quần thể sau khi sinh ra các cá thể tốt
selectionFor Recombination() các cặp được đem lai encoding() mã hóa các cặp sẽ lai với
nhau
evaluation() giải mã và tổng hợp cá thể
Trang 94 Giao diện
Kết quả hiển thị là quần thể sau khi tiến hóa (con mới sinh và cha)