Tải bản đầy đủ (.doc) (10 trang)

Báo cáo đồ án trí tuệ nhân tạo: 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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (387.34 KB, 10 trang )

4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
BỘ 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
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
Hà 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ô, …
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
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.
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
a. Khởi tạo (Initializetion)
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
Tạ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
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
Khô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
Thứ tự Quá tải Không quá tải
Giá trị tăng dần Giá trị tăng dần
Rank 1 2 … maxRank
Tính tổng các rank
Xác định số cá thể con định tạo ra
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
Lặ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:
Bố a b c Con1 a b’ c
Mẹ a’ b’ c’ Con2 a’ b c’
* Độ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ệ
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
III. Ứ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
Item mô tả vật chứa trong túi
Knapsack mô tả chiếc balô (cá thể)
GAs thuật toán Gas

Properties và Methods in class
Item
ItemWeight Khối lượng vật
ItemValue Giá trị vật
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
Rank Rank trong quần thể
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
ListItemAmount 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
listItem dsách các đồ vật
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
crossover() lai ghép
mutation() đột biến
evaluation() giải mã và tổng hợp cá thể
gene() tổng hợp các bước
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo
4. 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)
4
Nguyễn Thị Thanh Huyền – TH5A Bài tập lớn môn trí tuệ nhân tạo

×