Tải bản đầy đủ (.pdf) (44 trang)

Tìm hiểu giải thuật di truyền và ứng dụng giải quyết bài toán người du lịch

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 (1.05 MB, 44 trang )

Đồ án tốt nghiệp đại học

TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THÔNG TIN
--------------------------

NGUYỄN BẢO CHUNG

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC

Tên đề tài:

TÌM HIỂU GIẢI THUẬT DI TRUYỀN VÀ ỨNG
DỤNG GIẢI QUYẾT BÀI TOÁN NGƢỜI DU LỊCH

Nghệ An, 01/ 2017

SV: Nguyễn Bảo Chung

1

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

TRƯỜNG ĐẠI HỌC VINH
KHOA CÔNG NGHỆ THƠNG TIN
--------------------------

ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC



TÌM HIỂU GIẢI THUẬT DI TRUYỀN VÀ ỨNG
DỤNG GIẢI QUYẾT BÀI TOÁN NGƢỜI DU LỊCH

Sinh viên thực hiện:

Nguyễn Bảo Chung

Mã số sinh viên:

1251075314

Giáo viên hướng dẫn:

ThS. Trần Thị Kim Oanh

Nghệ An, 01/2017

SV: Nguyễn Bảo Chung

2

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

LỜI CẢM ƠN
Lời đầu tiên em xin gửi lời cám ơn chân thành sâu sắc tới các thầy cô
giáo trong khoa Công nghệ Thông tin nói chung, bộ mơn Hệ thống Thơng Tin

nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, kinh nghiệm
quý báu trong suốt thời gian qua.
Đặc biệt em xin gửi lời cảm ơn đến cô giáo, ThS. Trần Thị Kim Oanh,
cơ đã tận tình giúp đỡ, trực tiếp chỉ bảo, hướng dẫn em trong suốt quá trình làm
đồ án tốt nghiệp. Trong thời gian làm việc với cô, em không ngừng tiếp thu
thêm nhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ
nghiên cứu khoa học nghiêm túc, hiệu quả, đây là những điều rất cần thiết cho
em trong quá trình học tập và cơng tác sau này.
Mặc dù đã có nhiều cố gắng nhưng do kiến thức còn hạn chế cùng với
kinh nghiệm chưa có nên khơng tránh khỏi thiếu sót.Vì vậy em rất mong nhận
được những ý kiến đóng góp bổ sung của thầy cơ giáo và các bạn để bài làm báo
cáo đồ án tốt nghiệp của em được hoàn thiện hơn.
Em xin chân thành cảm ơn!.
Nghệ An, ngày 08 tháng 1 năm 2017
Sinh viên thực hiện
Nguyễn Bảo Chung

SV: Nguyễn Bảo Chung

1

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

MỤC LỤC
Trang
LỜI CẢM ƠN ...................................................................................................... 1
LỜI NÓI ĐẦU ..................................................................................................... 4

CHƢƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI ......................................................... 5
1.1. Lý do chọn đề tài ........................................................................................... 5
1.2. Mục tiêu nghiên cứu...................................................................................... 5
1.3. Đối tượng, phạm vi và phương pháp nghiên cứu........................................... 6
1.4. Nội dung nghiên cứu ...................................................................................... 6
1.5. Ý nghĩa của đề tài.......................................................................................... 6
CHƢƠNG 2: TỔNG QUAN NGHIÊN CỨU VỀ GIẢI THUẬT DI
TRUYỀN (GENETIC ALGORITHMS) ........................................................... 7
2.1. Giải thuật di truyền........................................................................................ 7
2.2. Các tính chất của giải thuật di truyền ............................................................. 7
2.3. Nội dung và cấu trúc của Giải thuật di truyền ............................................... 8
2.4. Biểu diễn di truyền đối với lời giải tiềm tàng của bài toán ............................ 9
2.4.1. Biểu diễn dưới dạng chuỗi nhị phân ........................................................... 9
2.4.2. Biểu diễn dưới dạng hoán vị ..................................................................... 10
2.4.3. Mã hoá theo giá trị .................................................................................... 11
CHƢƠNG 3: GIẢI THUẬT DI TRUYỀN - PHƢƠNG PHÁP TÌM KIẾM
CỰC MẠNH ....................................................................................................... 12
3.1. Phương pháp đạo hàm .................................................................................. 12
3.2. Phương pháp liệt kê ...................................................................................... 13
3.3. Phương pháp tìm kiếm ngẫu nhiên .............................................................. 13
3.4. Giải thuật di truyền đơn giản........................................................................ 14
3.4.1. Tái tạo ........................................................................................................ 15
3.4.2. Lai ghép ..................................................................................................... 16
3.4.3. Đột biến .................................................................................................... 18

SV: Nguyễn Bảo Chung

2

Lớp 53K2 – Khoa CNTT



Đồ án tốt nghiệp đại học

3.5. Giải thuật di truyền cải tiến .......................................................................... 20
3.5.1. Các sơ đồ lựa chọn .................................................................................... 20
3.5.2. Các toán tử cao cấp ................................................................................... 21
3.6. Các ứng dụng của giải thuật di truyền ......................................................... 25
CHƢƠNG 4: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN GIẢI QUYẾT BÀI
TOÁN NGƢỜI DU LỊCH (TRAVELLING SALESMAN PROBLEM –
TSP) ................................................................................................................... 26
4.1. Phát biểu bài tốn ......................................................................................... 26
4.2. Phân tích độ phức tạp bài tốn ..................................................................... 27
4.3. Giải thuật đề xuất ......................................................................................... 27
4.3.1. Mã hóa bài toán ........................................................................................ 27
4.3.2. Khởi tạo quần thể ...................................................................................... 28
4.3.3. Lai ghép ..................................................................................................... 28
4.3.4. Đột biến ..................................................................................................... 28
4.3.5. Tính tốn độ thích nghi ............................................................................. 36
4.3.6. Tiến hóa ..................................................... Error! Bookmark not defined.
4.4. Giới thiệu về chương trình ........................................................................... 38
4.5. Kết quả thử nghiệm ...................................................................................... 38
KẾT LUẬN ........................................................................................................ 40
1.

Kết quả đạt được ......................................................................................... 41

2.

Hạn chế........................................................................................................ 41


3.

Hướng phát triển ......................................................................................... 41

TÀI LIỆU THAM KHẢO ................................................................................ 42

SV: Nguyễn Bảo Chung

3

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

LỜI NÓI ĐẦU
Giải thuật di truyền xuất hiện từ đầu những năm 50 của thế kỷ XX, khi
một số nhà sinh học sử dụng máy tính để tái hiện các hệ thống sinh học trên máy
tính. Song phải đến gần 30 năm sau đó thì giải thuật di truyền mới gây được sự
chú ý, sự quan tâm của các nhà nghiên cứu. Giải thuật di truyền xây dựng dựa
trên cơ sở học thuyết tiến hoá của ĐacUyn, mơ phỏng những gì mà tự nhiên đã
làm, đó là sự đào thải, di truyền và tiến hố. Những cá thể tốt sẽ được duy trì,
sinh sản ra các cá thể mới, còn những cá thể yếu kém khơng có khả năng thích
nghi sẽ bị diệt vong. Sự tiến hố đã diễn ra khơng ngừng để tạo ra các thế hệ sau
gồm các cá thể khoẻ hơn, dễ thích nghi hơn.
Bài tốn người du lịch là một trong những bài toán được nghiên cứu sâu
nhất trong lĩnh vực tối ưu hóa.
Trong khn khổ nội dung đề tài này, em đã trình bày tổng quan về giải
thuật di truyền, giải thuật di truyền truyền thống và giải thuật di truyền cải tiến,

đồng thời trình bày một hướng tiếp cận giải quyết bài toán người du lịch sử dụng
giải thuật di truyền. Phần cuối của đề tài, em có viết một chương trình đơn giản
minh hoạ giải thuật di truyền.

SV: Nguyễn Bảo Chung

4

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

CHƢƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1. Lý do chọn đề tài
Hiện nay, tối ưu hóa là một nội dung quan trọng của Tin học ứng dụng,
có liên quan đến nhiều lĩnh vực của tự nhiên, xã hội.
Tuy đã có nhiều phương pháp để giải quyết các bài tốn tối ưu, nhưng
nhìn chung các phương pháp chỉ dừng lại ở lớp các bài toán với thơng tin rõ
ràng. Do đó việc tìm một phương pháp tối ưu mới để giải quyết bài toán tối ưu
khi các thông tin đưa ra là không thực sự rõ ràng là cần thiết và có ý nghĩa thực
tế.
Giải thuật di truyền (GAs) là một trong những kỹ thuật giúp tìm kiếm lời
giải tối ưu đáp ứng được yêu cầu tìm ra lời giải tối ưu nhất cho bài tốn với thời
gian nhỏ nhất khi mà khơng gian tìm kiếm rất lớn, điều làm cho giải thuật GAs
khác biệt các giải thuật thông thường khác.
GAs là phương thức giải quyết vấn đề mơ phỏng lại sự tiến hóa thơng
qua các quy luật tự nhiên. Nó tìm ra giải pháp tối ưu hay tốt nhất trong điều kiện
thời gian và không gian cho phép. Khác với các thuật toán khác, GAs bắt đầu
làm việc với một tập lời giải ban đầu, sau đó loại bỏ những lời giải khơng thích

hợp và chọn những lời giải có độ thích nghi cao hơn để tái tạo và đột biến nhằm
tạo ra các thế hệ mới có khả năng thích nghi ngày càng cao.
Ngày nay, GAs được dùng khá nhiều trong các lĩnh vực của đời sống như
khoa học, kinh doanh,… Đầu tiên phải kể đến là các bài toán tối ưu số và bài
toán tối ưu tổ hợp đã sử dụng GAs để tìm kiếm lời giải như bài tốn người du
lịch (Travelling Salesman Problems - TSP), thiết kế và điều khiển robo,…
Với những ưu điểm kể trên, em đã chọn “Tìm hiểu giải thuật di truyền và
ứng dụng giải quyết bài toán người du lịch” làm đồ án Tốt nghiệp đại học cho
mình.
1.2. Mục tiêu nghiên cứu
- Tìm hiểu về giải thuật di truyền
- Nghiên cứu ứng dụng giải thuật di truyền trong giải bài toán tối ưu
SV: Nguyễn Bảo Chung

5

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

- Viết chương trình mơ phỏng giải thuật.
1.3. Đối tƣợng, phạm vi và phƣơng pháp nghiên cứu
- Đối tượng nghiên cứu:
 Giải thuật di truyền.
 Bài toán người du lịch (Travelling Salesman Problems - TSP).
- Phạm vi nghiên cứu:
 Giải thuật di truyền và ứng dụng giải quyết bài toán người du lịch.
- Phương pháp nghiên cứu:
 Nghiên cứu tài liệu.

 Sử dụng những gì tìm hiểu được từ giải thuật di truyền áp dụng vào
giải quyết bài toán người du lịch.
1.4. Nội dung nghiên cứu
Nội dung nghiên cứu của đề tài được chia thành 2 phần chính:
- Tìm hiểu về các kiến thức cơ bản trong giải thuật di truyền,
- Giới thiệu về bài toán người du lịch và đề xuất giải bài toán người du
lịch bằng giải thuật di truyền.
1.5. Ý nghĩa của đề tài
- Áp dụng giải thuật di truyền vào máy tính là phương pháp áp dụng các
quy luật tiến hóa của tự nhiên vào việc giải quyết các bài toán phức tạp mà các
giải thuật trước đó khơng đáp ứng được.
- Đề xuất cách giải mới áp dụng vào bài tốn người du lịch, đó là áp dụng
giải thuật di truyền vào việc biểu diễn, xử lý bài tốn.
- Ngồi bài tốn người du lịch, giải thuật di truyền cịn có thể được ứng
dụng trong nhiều bài tốn tối ưu khác. Vì vậy kết quả nghiên cứu của đề tài sẽ
tạo nền tảng và cơ sở để tiếp tục nghiên cứu về sau.

SV: Nguyễn Bảo Chung

6

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

CHƢƠNG 2: TỔNG QUAN VỀ GIẢI THUẬT DI TRUYỀN
(GENETIC ALGORITHMS)
2.1. Giải thuật di truyền
Giải thuật di truyền xuất hiện từ đầu những năm 50 của thế kỷ XX, khi

một số nhà sinh học sử dụng máy tính để tái hiện các hệ thống sinh học trên máy
tính. Song phải đến gần 30 năm sau đó thì giải thuật di truyền mới gây được sự
chú ý, sự quan tâm của các nhà nghiên cứu. Giải thuật di truyền xây dựng dựa
trên cơ sở học thuyết tiến hố của ĐacUyn, mơ phỏng những gì mà tự nhiên đã
làm, đó là sự đào thải, di truyền và tiến hố. Những cá thể tốt sẽ được duy trì,
sinh sản ra các cá thể mới, còn những cá thể yếu kém khơng có khả năng thích
nghi sẽ bị diệt vong. Sự tiến hố đã diễn ra khơng ngừng để tạo ra các thế hệ sau
gồm các cá thể khoẻ hơn, dễ thích nghi hơn.
Trong thực tế, đã có nhiều bài toán ứng dụng tin học lý thú mà việc áp
dụng các phương pháp giải truyền thống chưa hợp lý, đặc biệt còn rất hạn chế về
mặt thời gian. Phần lớn, đây là các bài toán tối ưu mà thường là cốt lõi của nhiều
ứng dụng thực tế. Cuối cùng, con người cũng đã tìm ra được phương pháp giải
phù hợp cho các bài toán này. Tuy nhiên, kết quả thu được là xấp xỉ tối ưu
nhưng chúng ta hoàn toàn chấp nhận nó. Một trong những phương pháp đó là
giải thuật di truyền của Holland, được công bố vào năm 1975 cùng với sự chứng
minh bằng toán học chặt chẽ. Holland cho rằng tính hiệu quả và tính dễ thích
nghi của sự sống có được là do tiến hố có chọn lọc tự nhiên. Do đó, có thể áp
dụng chính các nguyên lý đó trong các hệ thống nhân tạo. Giải thuật di truyền ra
đời đã giải quyết có hiệu quả hầu hết các bài toán tối ưu và từ đó nhiều ứng dụng
tin học cũng được hồn thành.
2.2. Các tính chất của giải thuật di truyền
Giải thuật di truyền (GAs) là giải thuật mơ phỏng những gì mà tự nhiên
đã làm dựa trên nền tảng thuyết tiến hoá của ĐacUyn, đó là các cơ chế chọn lọc
tự nhiên, di truyền học và tiến hoá. Đối với một bài toán tối ưu, xuất phát từ tập
các lời giải ban đầu, qua q trình chọn lọc, tiến hố chúng ta sẽ nhận được tập
SV: Nguyễn Bảo Chung

7

Lớp 53K2 – Khoa CNTT



Đồ án tốt nghiệp đại học

các lời giải tốt hơn. Mục tiêu của GAs không nhằm đưa ra lời giải chính xác tối
ưu mà là đưa ra lời giải tương đối tối ưu.
Một cá thể trong GAs sẽ biểu diễn một lời giải của bài toán. Tuy nhiên,
nếu trong tự nhiên thì một cá thể có thể có nhiều nhiễm sắc thể (NST) thì trong
phạm vi GAs, ta quan niệm một cá thể chỉ có một NST. Do đó khái niêm cá thể
và NST ở trong GAs coi như là tương đương
Một NST được tạo thành từ nhiều gen, mỗi gen có thể có các giá trị khác
nhau để quy định một tình trạng nào đó. Trong GAs, một gen được coi như một
phần tử trong chuỗi NST.
Quần thể là tập hợp các cá thể có cùng một số đặc điểm chung nào đấy.
2.3. Nội dung và cấu trúc của giải thuật di truyền
Giải thuật di truyền được mô tả đơn giản như sau:
Procedure Giải_thuật_di_truyền
{
1) T  0;
2) Khởi tạo P(t);
3) Đánh giá P(t);
4) While (not điều kiện kết thúc) do
{
5)

t=t+1;

6)

Chọn lọc P(t) từ P(t-1)


7)

Kết hợp các cá thể của P(t)

8)

Đánh giá P(t)

}
}
Giải thích:
Ban đầu, giải thuật di truyền khởi tạo ngẫu nhiên tập hợp các lời giải có
thể (nhiễm sắc thể ) P(t) = (xt1 xt2 ... xtn), trong đó n là số lượng cá thể của quần
thể P(t). Mỗi lời giải xti được đánh giá nhằm xác định độ phù hợp của nó. Quá
SV: Nguyễn Bảo Chung

8

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

trình chọn lọc tự nhiên, di truyền, tiến hố bắt đầu ở vịng lặp t+1, một tập hợp
mới được hình thành nhờ sự lựa chọn các cá thể phù hợp nhất. Một số thành
phần của tập hợp này lại được tái sản xuất nhờ các tốn tử “lai ghép” và “đột
biến”. Ta có tập lời giải mới phù hợp hơn. Và cứ thế cho đến khi vòng lặp kết
thúc ta nhận được tập lời giải có chứa lời giải tối ưu hoặc gần tối ưu nhất.
Toán tử “lai ghép” kết hợp các đặc trưng của hai nhiễm sắc thể cha và

mẹ nhằm tạo ra 2 con thừa hưởng các điểm tốt của cha mẹ.
Toán tử “đột biến” tại một hoặc một số Gene của một nhiễm sắc thể
được thực hiện nhờ sự thay đổi ngẫu nhiên Gene đó theo xác suất đột biến.
Như vậy, giải thuật di truyền cho một bài toán cụ thể bao gồm 5 vấn đề sau:
1. Biểu diễn di truyền cho lời giải có thể của bài tốn .
2. Khởi tạo tập lời giải ban đầu P(t).
3. Xác định hàm đánh giá nhằm xác định mức độ phù hợp của từng lời giải.
4. Các toán tử di truyền (lai ghép và đột biến).
5. Các giá trị tham số sử dụng trong giải thuật di truyền như kích thước
quần thể, các xác suất đột biến, lai ghép.
2.4. Biểu diễn di truyền đối với lời giải tiềm tàng của bài toán
Việc biểu diễn di truyền đối với lời giải tiềm tàng của bài toán là rất cần
thiết. Đối với từng bài toán cụ thể, chúng ta nên tìm cách biểu diễn sao cho phù
hợp với các tốn tử di truyền. Thơng thường, lời giải tiềm tàng của bài toán
được biểu diễn theo một trong các cách sau:
- Biểu diễn dưới dạng chuỗi nhị phân
- Biểu diễn dưới dạng hoán vị
- Biểu diễn dưới dạng chuỗi giá trị thực
2.4.1. Biểu diễn dƣới dạng chuỗi nhị phân
Trong tất cả các phương pháp mã hóa thì phương pháp mã hoá nhị phân là
phương pháp mã hoá nhiễm sắc thể đơn giản và ra đời sớm nhất. Trong mã hoá
nhị phân, mỗi nhiễm sắc thể là một chuỗi nhị phân, mỗi bit trong nó có thể biểu
diễn một đặc tính của lời giải.
SV: Nguyễn Bảo Chung

9

Lớp 53K2 – Khoa CNTT



Đồ án tốt nghiệp đại học

Độ dài của vectơ nhiễm sắc thể là số n nguyên dương nhỏ nhất thoả mãn:
(UB - LB)  2n – 1, trong đó UB và LB là cận trên và cận dưới của các
miền giá trị.
Ví dụ:
Tìm giá trị lớn nhất của hàm số f(x) = −x2/10+3x với x nguyên và 0≤x ≤31.
Ta thực hiện mã hoá mỗi số nguyên x ∈ [0,31] như một cá thể bởi một số
nhị phân có độ dài 5 bits:
0 = 00000
1 = 00001
2 = 00010

31 = 11111
2.4.2. Biểu diễn dƣới dạng hốn vị
Mã hố hốn vị có thể được sử dụng trong các bài toán liên quan đến thứ
tự như bài toán du lịch hay bài toán lập lịch.
Trong mã hoá hoán vị, mỗi nhiễm sắc thể là một chuỗi các số biểu diễn
một trình tự.
Ví dụ :
Nhiễm sắc thể 1: 1 5 4 3 2 6 7 9 8
Nhiễm sắc thể 2: 9 1 7 3 8 5 6 4 2
Mã hoá hoán vị phù hợp cho các bài toán liên quan đến thứ tự. Đối với
các bài toán này, việc thao tác trên các nhiễm sắc thể chính là hốn vị các số
trong chuỗi đó làm thay đổi trình tự của nó.
Ví dụ:
Trong bài tốn người du lịch, để biểu diễn một cách đi của người du lịch
thì dùng một nhiễm sắc thể mà trình tự các số trong chuỗi cho biết thứ tự các
thành phố mà người du lịch đi qua.


SV: Nguyễn Bảo Chung

10

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

2.4.3. Mã hoá theo giá trị
Mã hố trực tiếp theo giá trị có thể được dùng trong các bài toán sử dụng
giá trị phức tạp như trong số thực. Trong đó, mỗi nhiễm sắc thể là một chuỗi các
giá trị. Các giá trị có thể là bất cứ cái gì liên quan đến bài tốn, từ số nguyên, số
thực, kí tự cho đến các đối tượng phức tạp hơn.
Ví dụ:
Nhiễm sắc thể 1: 1.23

5.32

0.34

2.98

3.54

Nhiễm sắc thể 2: (back), (back), (right), (forward), (left)
Mã hoá theo giá trị thường dùng cho các bài toán đặc biệt. Trong cách mã
hoá này ta thường phải phát triển các toán tử đột biến và lai ghép cho phù hợp
với từng bài toán.


SV: Nguyễn Bảo Chung

11

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

CHƢƠNG 3: GIẢI THUẬT DI TRUYỀN ĐƠN GIẢN VÀ
GIẢI THUẬT DI TRUYỀN CẢI TIẾN
Vào năm 1975, Holland đã đưa ra khái niệm giải thuật di truyền trong một
cơng trình nghiên cứu của ơng và đã đề xuất một phương pháp tìm kiếm mới với
các chứng minh tốn học chặt chẽ, đó là giải thuật di truyền. Đây là phương
pháp tìm kiếm dựa trên các cơ chế chọn lọc tự nhiên, di truyền học và sự tiến
hoá. Chúng kết hợp sự tồn tại của các cá thể khỏe nhất và sự trao đổi thông tin
về cấu trúc giữa các cá thể này để tạo ra các cá thể mới thừa hưởng các điểm tốt
của các cá thể cha, mẹ. Trong mỗi thế hệ, một tập mới các cá thể được tạo ra
nhờ các cơ chế chọn lọc tự nhiên, lai ghép và đột biến từ các cá thể đã tồn tại.
Giải thuật di truyền đã được chứng minh bằng lý thuyết và thực nghiệm là thuật
toán tìm kiếm tồn cực mạnh, song việc thực thi của chúng trên máy tính thì lại
đơn giản. Ngồi ra, sử dụng giải thuật di truyền cho việc tìm kiếm khơng bị hạn
chế bởi các giả định về khơng gian tìm kiếm, như tính liên tục, sự tồn tại đạo
hàm của hàm giá trị.
Để thấy rõ tính mạnh của giải thuật di truyền chúng ta sẽ xét các giải thuật
tìm kiếm truyền thống đã và đang sử dụng trong nhiều ứng dụng.
Các phương pháp tìm kiếm truyền thống có 3 loại chính là:
- Phương pháp đạo hàm
- Phương pháp vét cạn
- Phương pháp tìm kiếm ngẫu nhiên

3.1. Phƣơng pháp đạo hàm
Phương pháp này có thể được chia nhỏ thành 2 loại là: Phương pháp tìm
kiếm gián tiếp và phương pháp tìm kiếm trực tiếp.
- Phương pháp tìm kiếm gián tiếp:
Là phương pháp tìm kiếm cực trị địa phương bằng việc giải hệ phương
trình (thường là khơng tuyến tính) thu được bằng việc đặt Gradient của hàm mục
tiêu bằng 0 theo mọi hướng.
- Phương pháp tìm kiếm trực tiếp:

SV: Nguyễn Bảo Chung

12

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

Phương pháp này tìm kiếm cực trị bằng cách tính trực tiếp giá trị hàm
mục tiêu và di chuyển theo hướng liên quan đến Gradient cục bộ. Đó chính là
chiến lược “leo đồi” (hill climbing) tức tìm kiếm theo hướng tốt nhất có thể.
Ưu điểm:
- Thuận lợi cho các hàm chỉ có một cực trị.
Nhược điểm:
- Phương pháp này mang tính cục bộ địa phương. Các cực trị tìm được gần
với điểm hiện tại. Vì vậy, đối với các hàm đa cực trị nếu điểm xuất phát gần cực trị
thấp sẽ bỏ qua cực trị tồn cục cao, dẫn tới việc khơng tìm được cực trị toàn cục.
- Phương pháp này dựa trên sự tồn tại của đạo hàm. Trong rất nhiều ứng
dụng thực tế, khơng gian tìm kiếm thường khơng liên tục, nhiều nhiễu và giả
định về sự tồn tại đạo hàm cũng không có. Điều này hạn chế khả năng ứng dụng

của phương pháp đạo hàm vào các ứng dụng thực tế.
3.2. Phƣơng pháp vét cạn
Phương pháp này tìm kiếm các giá trị của hàm mục tiêu tại tất cả các
điểm trong không gian tìm kiếm.
Ưu điểm:
- Độ chính xác cao.
Nhược điểm:
- Khó giải quyết được những bài tốn có khơng gian tìm kiếm lớn.
- Độ phức tạp tính tốn lớn.
3.3. Phƣơng pháp tìm kiếm ngẫu nhiên
Qua việc phân tích trên ta thấy rằng, các phương pháp truyền thống nói
chung là cục bộ và không hiệu quả. Tuy nhiên, con người thường không áp dụng
riêng một phương pháp nào mà thường kết hợp vài, ba phương pháp trong cùng
một ứng dụng và đã đạt kết quả tốt. Mặc dù vậy, các nhược điểm của các
phương pháp truyền thống vẫn chưa khắc phục được. Sau khi giải thuật di
truyền ra đời, người ta đã nhận thấy các điểm mạnh của nó. Giải thuật di truyền
khác với các giải thuật tìm kiếm truyền thống ở bốn điểm cơ bản sau:
- Giải thuật di truyền làm việc với mã của tập thông số chứ không làm
việc với các giá trị của các thông số.
SV: Nguyễn Bảo Chung

13

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

- Giải thuật di truyền tìm kiếm từ một quần thể các điểm chứ khơng phải
từ một điểm.

- Giải thuật di truyền chỉ sử dụng thông tin giá trị của các hàm mục tiêu
chứ không sử dụng thông tin nào khác.
- Giải thuật di truyền sử dụng các luật chuyển đổi mang tính xác suất, chứ
khơng phải các luật mang tính tiền định.
Cùng một lúc, giải thuật di truyền có thể tìm kiếm tại nhiều điểm. Do đó,
khả năng tìm được nhiều cực trị. Nhờ áp dụng các tốn tử di truyền nó sẽ trao
đổi thông tin giữa các đỉnh giúp giảm bớt khả năng kết thúc tại một cực trị địa
phương mà khơng tìm thấy cực trị tồn cục. Điều này đã giải thích tại sao giải
thuật di truyền là một phương pháp tìm kiếm toàn cực mạnh.
3.4. Giải thuật di truyền đơn giản
Giải thuật di truyền xử lý những chuỗi bit hay những chuỗi giá trị số thực,
mỗi chuỗi đại diện cho một tập thơng số trong khơng gian tìm kiếm và được gọi
là lời giải tiềm tàng của bài tốn. Do đó, trong tất cả các lời giải tiềm tàng có thể
tồn tại lời giải tối ưu hoặc gần tối ưu của bài toán. Mỗi lời giải tiềm tàng, sau khi
khởi tạo sẽ được giải mã thành tập thông số và từ đó tính được giá trị hàm mục
tiêu của từng lời giải tiềm tàng. Tuỳ vào từng bài toán mà hàm mục tiêu có thể
là cực đại hay cực tiểu. Sau đó, mỗi giá trị hàm mục tiêu của từng lời giải tiềm
tàng lại được biến đổi thành giá trị đo độ thích nghi của lời giải tiềm tàng đó.
Quần thể ban đầu được khởi tạo ngẫu nhiên, sau đó được tiến hoá từ thế hệ này
sang thế hệ khác nhờ vào các toán tử tái tạo, lai ghép và đột biến, song lực lượng
của quần thể không thay đổi. Quá trình tiến hố cứ diễn ra liên tục và đến một
thế hệ thứ n nào đó (n đủ lớn) thì quần thể ở thế hệ này sẽ chứa lời giải tối ưu
hoặc gần tối ưu của bài toán.
Đối với những bài tốn khơng q phức tạp, chúng ta có thể sử dụng giải
thuật di truyền đơn giản. Giải thuật di truyền đơn giản chỉ sử dụng ba toán tử cơ
bản là:
- Tái tạo
- Lai ghép
- Đột biến
SV: Nguyễn Bảo Chung


14

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

3.4.1. Tái tạo
Tái tạo là quá trình các chuỗi được sao chép lại theo giá trị đo độ thích
nghi của từng chuỗi, nhằm biến quần thể ở thế hệ mới thành quần thể ở thế hệ
cha. Việc sao chép các chuỗi theo giá trị đo độ thích nghi của chuỗi nghĩa là
những chuỗi có giá trị đo độ thích nghi lớn sẽ có xác suất lớn trong việc đóng
góp một hay nhiều con cháu trong thế hệ tiếp theo. Tốn tử này mơ phỏng hoạt
động chọn lọc tự nhiên theo thuyết tiến hoá của ĐacUyn. Trong các quần thể tự
nhiên, độ thích nghi chính là khả năng sống sót của cá thể, chống lại những khó
khăn trong q trình trưởng thành. Trong giải thuật di truyền, giá trị đo độ thích
nghi sẽ quyết định sự tồn tại hay diệt vong của chuỗi.
Toán tử tái tạo có thể được thực hiện theo nhiều cách, song cách đơn giản
và hiệu quả nhất là sử dụng vòng tròn định hướng Rulet. Ở đây, mỗi chuỗi trong
quần thể chiếm một dải quạt có độ rộng tỷ lệ với độ thích nghi của chuỗi. Độ
rộng của dải quạt được tính theo tỷ lệ phần trăm độ thích nghi của chuỗi với
tổng mức thích nghi của tồn quần thể là 100%. Mỗi lần quay vịng trịn Rulet,
chúng ta có một ứng cử viên cho việc tái tạo.
Việc quay vòng tròn để chọn ứng cử viên cho việc tái tạo được thực hiện
theo các bước sau:
- Đánh số các cá thể trong quần thể.
- Tính tổng mức thích nghi của tồn quần thể.
- Ứng với mỗi cá thể, ta tính một tổng tích luỹ bằng tổng mức thích nghi
của cá thể đó với mức thích nghi của các cá thể đứng trước nó.

- Sinh một số ngẫu nhiên n trong khoảng từ 0 đến tổng mức thích nghi.
- Cá thể đầu tiên trong quần thể có tổng tích luỹ lớn hơn hoặc bằng n sẽ
được chọn.
Một khi được chọn, một bản sao của ứng cử viên sẽ được sao chép vào một
quần thể tạm thời để thực hiện các toán tử đột biến và lai ghép tiếp theo. Theo cách
này, những chuỗi có độ thích nghi càng lớn sẽ có xác suất được sao chép càng lớn
và do đó, đóng góp càng nhiều con cháu cho thế hệ tiếp theo.

SV: Nguyễn Bảo Chung

15

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

Ví dụ:
Bảng 3.1. Quần thể gồm 4 cá thể
STT

Chuỗi

Độ thích nghi Tỷ lệ %

Tổng tích luỹ

1

01001


82

7.8

82

2

10010

325

31.0

407

3

00100

17

1.6

424

4

11001


626

59.6

1050

1050

100.0

Tổng

Hình 3.1. Vịng trịn Rulet của quần thể trong bảng 3.1

1

22
4

3

Với quần thể gồm 4 cá thể từ trong bảng 1, chúng ta có vịng trịn Rulet như
hình 1. Mỗi lần quay vịng trịn Rulet ta có một ứng cử viên cho việc tái tạo. Chẳng
hạn, với số ngẫu nhiên là n = 400 thì chuỗi thứ hai trong bảng 1 được chọn.
3.4.2. Lai ghép
Lai ghép là toán tử nhằm tạo ra các cá thể mới từ hai cá thể cha và mẹ
theo một xác suất lai ghép Plg, với hy vọng cá thể con sẽ được thừa hưởng những
điểm tốt của cha và mẹ nó.
- Với cách biểu diễn lời giải tiềm tàng theo chuỗi nhị phân


SV: Nguyễn Bảo Chung

16

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

Theo cách biểu diễn này, toán tử lai ghép thường được dùng là toán tử lai
ghép đơn giản.
Lai ghép đơn giản:
Quá trình lai ghép đơn giản diễn ra như sau:
- Hai chuỗi trong quần thể được lựa chọn sẽ đóng vai trị là cha và mẹ
- Sinh một số ngẫu nhiên k trong khoảng [1, l - 1], (l độ dài của chuỗi) và
sẽ là điểm lai ghép. Hai con được sinh ra bằng cách:
 Con 1: Phần đầu của cha và phần cuối của mẹ
 Con 2: Phần đầu của mẹ và phần cuối của cha
Ví dụ:
NST A = (00001|00001100101001110)
NST B = (11010|11100010000101001)
Giả sử rằng, điểm lai ghép được chọn ngẫu nhiên sau Gene thứ 5. Kết quả:
Con 1 :

0000111100010000101001

Con 2 :

1101000001100101001110


- Với cách biểu diễn lời giải tiềm tàng theo giá trị
+ Lai ghép đơn giản:
Giả sử xti = (v1 v2 ... vk ... vn) và xtj = (w1 w2 ... wk ... wn) được thực hiện lai
ghép tại vị trí thứ k. Kết quả hai con là:
xt+1i = (v1 v2 ... vkwk+1 ... wn)
xt+1j = (w1 w2 ... wkvk+1 ... vn)
+ Lai ghép số học đơn:
Được định nghĩa như một sự kết hợp tuyến tính giữa 2 vectơ
xti = (v1 v2 ... vk … vn)
xtj = (w1 w2 ... wk … wn)
Kết quả lai ghép được hai con
xt+1i = (v1 v2 ... vk’ ... vn)
xt+1j = (w1 w2 ... wk’ ... wn)
trong đó
SV: Nguyễn Bảo Chung

17

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

v’k = a* wk + (1 - a) * vk
w’k = a* vk + (1 - a) * wk
Ở đây a là tham số được xác định riêng cho mỗi lai ghép số học đơn và
mỗi Gene.
a  [max(, ), min(, )]


nếu vk > wk

a=0

nếu vk = wk

a  [max(, ), min(, )]

nếu vk < wk

  (l ( k ) x

t

  (u ( k ) x
  (l ( k ) x

t

 w k ) /( v k  w k )

j

t

i

 v k ) /( w k  v k )

i


  (u ( k ) x

 v k ) /( w k  v k )

t

j

 v k ) /( v k  w k )

+ Lai ghép số học toàn cục:
Được định nghĩa là sự kết hợp tuyến tính giữa 2 vectơ
Giả sử chọn cha là xti = (v1 v2 ... vk … vn) và mẹ xtj = (w1 ... wk … wn) để l
ai ghép, kết quả ta nhận được hai con là:
x it+1 = a * xjt + (1 - a) * xit
x jt+1 = a * xit + (1 - a) * xjt
Toán tử này dùng tham số hệ thống tĩnh đơn giản a (a  [0, 1]) để đảm
bảo tính khép kín.
3.4.3. Đột biến
- Với cách biểu diễn lời giải tiềm tàng theo chuỗi nhị phân
Với cách biểu diễn này, người ta thường dùng toán tử đột biến cổ điển là
toán tử đột biến ngẫu nhiên.
Đột biến ngẫu nhiên:
Toán tử này thay đổi một hoặc nhiều Gene với xác suất bằng tỷ lệ đột biến.
Ví dụ:
NST A = (11010|01110100101)
Giả sử thực hiện đột biến ở Gene thứ 5 ta có:

SV: Nguyễn Bảo Chung


18

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

NST A’ = (11011|01110100101)
- Với cách biểu diễn lời giải tiềm tàng theo giá trị
Theo cách biểu diễn này, chúng ta có thể sử dụng một số toán tử đột biến
cải tiến hơn so với toán tử đột biến cổ điển.
+ Đột biến đều:
Được định nghĩa tương tự như đột biến cổ điển. Giả sử xti = (v1 v2 … vk
... vn) là một nhiễm sắc thể thì mỗi phần tử vk có cơ hội như nhau để thực hiện
xử lý đột biến. Kết quả sau khi đột biến ta thu được vectơ (v1 v2 ... vk’ ... vn), 1 
k  n và vk’ là một giá trị ngẫu nhiên trong miền tham số tương ứng.
+ Đột biến không đều:
Giả sử xti = (v1 v2 ... vk ... vn) là một nhiễm sắc thể và phần tử vk được
chọn cho đột biến này. Miền xác định của vk là [lk, uk], kết quả sau đột biến ta
thu được vector xit+1 = (v1 v2 ... vk’ ... vn), 1  k  n, trong đó:
vk + (t, uk – vk) nếu số ngẫu nhiên bằng 0
vk’ =
vk - (t, vk – lk) nếu số ngẫu nhiên bằng 1
Trong đó hàm (t, y)  [0, y], khi t tăng thì xác suất (t , y)  0 tăng. Có
thể biểu diễn (t , y) bởi hàm sau:
(t , y) =

y+( 1- r(1 - t/T))b


trong đó, r là số ngẫu nhiên thuộc [0,1], T là số lần lặp tối đa, b là tham số
hệ thống xác định tính khơng đơng đều.
Ba tốn tử tái tạo, lai ghép, đột biến được tiến hành trong một vòng lặp.
Quần thể mới bao gồm các cá thể: bị đột biến sau khi lai ghép, lai ghép nhưng
không đột biến, không lai ghép mà cũng không đột biến mà chỉ đơn giản là sao
chéo lại.
Như vậy, trong giải thuật di truyền ta cần các định 4 thông số sau:
- Lực lượng quần thể pop_size

SV: Nguyễn Bảo Chung

19

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

- Xác suất đột biến Pđb
- Xác suất lai ghép Plg
- Độ gối của quần thể G
Thông số G do tác giả De Jong đưa vào giải thuật di truyền đơn giản năm
1975, cho phép quần thể mới chứa một phần quần thể cũ. G thuộc [0, 1], với ý
nghĩa sau:
- G = 0: Quần thể cũ bị diệt vong. Quần thể mới chỉ bao gồm các cá thể
được sinh ra bởi ba toán tử trên.
- 0 < G < 1: nG cá thể được chọn tiếp tục di truyền. Con cháu được sinh ra
qua hoạt động này sẽ được xếp một cách ngẫu nhiên vào quần thể hiện tại.
3.5. Giải thuật di truyền cải tiến
Phần trước ta đã đề cập đến giải thuật di truyền đơn giản. Trong phần này,

dựa trên nền tảng đó, các sơ đồ lựa chọn, các toán tử cao cấp đã được đưa ra
nhằm cải tiến các hoạt động của giải thuật di truyền đối với những bài toán phức
tạp.
3.5.1. Các sơ đồ lựa chọn
Trong giải thuật di truyền đơn giản, việc lựa chọn các cá thể tốt được thực
hiện dựa vào vòng tròn định hướng Rulet. Sơ đồ này có nhược điểm là có thể
xảy ra trường hợp cá thể tốt nhất không được lựa chọn. Để khắc phục nhược
điểm này người ta đã đưa ra một số sơ đồ thay thế vòng tròn Rulet như sau:
a. Ưu tiên cá thể tốt
Mục đích là sao chép cá thể tốt nhất của mỗi thế hệ vào thế hệ tiếp theo.
Việc làm này tăng tốc độ chiếm ưu thế của các cá thể siêu khoẻ và do đó tăng
tốc độ tìm kiếm, song cũng chỉ là sự tìm kiếm cục bộ. Tuy nhiên, đây cũng là
chiến lược có cải tiến của giải thuật di truyền.
b. Lấy mẫu tiền định
Theo cách này, xác suất lựa chọn được tính như trong giải thuật di truyền
đơn giản, ps = fi / fj . Sau đó, số bản sao chép của chuỗi Ai được xác định tiền
SV: Nguyễn Bảo Chung

20

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

định là ei = nps. Mỗi chuỗi đóng góp số con vào thế hệ tiếp theo bằng phần
nguyên của giá trị ei. Sau đó, để lấp đầy quần thể của thế hệ mới này ta sao chép
các chuỗi tốt nhất từ thế hệ trước sang.
c. Lấy mẫu xác suất phần dư và thay thế
Sơ đồ này xuất phát từ sơ đồ lấy mẫu tiền định. Số bản sao chép e i của

mỗi chuỗi đuợc tính như trên. Điều khác là, phần dư còn lại của e i được dùng để
tính các trọng số trong việc lựa chọn bằng vòng tròn Rulet để lấp đầy quần thể.
d. Lấy mẫu xác suất phần dư và không thay thế
Sơ đồ này cũng xuất phát từ sơ đồ lấy mẫu tiền định. Phần dư của e i đuợc
coi như xác suất. Trước hết, các chuỗi có số con ít nhất bằng số nguyên của số ei
được đóng góp vào thế hệ tiếp theo. Sau đó, quần thể được lấp đầy bằng việc
chọn các con khác cho mỗi chuỗi với xác suất bằng phần dư của ei.
Thực nghiệm cho thấy, sơ đồ này có rất nhiều ưu điểm và đã được sử
dụng rộng rãi trong nhiều ứng dụng.
e. Thủ tục phân hạng
Là thủ tục không tham số cho việc lựa chọn. Theo phương pháp này, các
cá thể trong quần thể được sắp xếp theo mức thích nghi giảm dần. Sau đó, các cá
thể được gán cho số con là thứ tự của nó trong dãy.
3.5.2. Các tốn tử cao cấp
Trong phần này chúng ta sẽ đưa ra hai toán tử mới nhằm cải tiến hoạt
động và tính hiệu quả của giải thuật di truyền đơn giản, đó là: tốn tử vi mô tác
động tới Gene của từng cá thể và tốn tử vĩ mơ tác động đến tồn quần thể.
a. Tốn tử vi mơ
- Lai ghép tại nhiều điểm:
Cách 1:

SV: Nguyễn Bảo Chung

21

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học


Trong giải thuật di truyền đơn giản đã có sử dụng tốn tử lai ghép nhưng
chỉ lai ghép tại một điểm. Toán tử lai ghép có thể được mở rộng thành tốn tử lai
ghép tại nhiều điểm, trong đó số điểm lai ghép là Nlg được chọn từ trước.
Với Nlg = 1 thì tốn tử này trở thành toán tử lai ghép đơn giản.
Với Nlg chẵn, chuỗi được xét coi như một vịng trịn khơng đầu cuối. N lg
được chọn một cách ngẫu nhiên xung quanh vịng trịn.
Với Nlg lẻ, một vị trí cắt ngẫu nhiên ln được coi là vị trí 0.
Ví dụ:
Hình 3.2.

a, Thực hiện lại ghép tại 4 điểm
b, Thực hiện lai ghép tại 3 điểm

Mẹ

Cha

Cha

Mẹ
Lai ghép tại 4 điểm

Lai ghép tại 3 điểm

cắt ngẫu nhiên

Con 1

Con 2


cắt ngẫu nhiên

Con 1

Con 2

a.

SV: Nguyễn Bảo Chung

b.

22

Lớp 53K2 – Khoa CNTT


Đồ án tốt nghiệp đại học

Cách 2:
Một cách khác để thực hiện toán tử lai ghép tại nhiều điểm là tốn tử lai
ghép đều. Theo cách này, mỗi vị trí bit của hai con sẽ được quyết định một cách
ngẫu nhiên là sẽ lấy từ cha hay mẹ theo một mẫu ngẫu nhiên.
Ví dụ:
Cha

00111010

Mẹ


10011011

Mẫu

01101001

Con 1

10111010

Con 2

00011011

Mặc dầu, tốn tử lai ghép nhiều điểm có nhiều ưu điểm, song ta phải rất
thận trọng khi sử dụng chúng, bởi khi tăng số điểm cắt tốn tử dễ gây ra sự xáo
trộn khơng mang tính cấu trúc.
- Tốn tử xếp lại
Tốn tử xếp lại tìm các mã Gene tốt hơn, đồng thời tìm các tập Gene tốt
hơn. Tốn tử này thích hợp đối với những bài tốn mà ở đó độ thích nghi phụ
thuộc vào sự sắp xếp của các Gene trong chuỗi, chẳng hạn bài toán “Traveling
Salesman”. Một chuỗi kết hợp cả các giá trị của Gene và thông tin về trật tự có
thể biểu diễn, chẳng hạn:
12345678
10011001
Ở đây, 1, 2, …, 8 là các vị trí của Gene và được gọi là tên của các Gene.
Một trong những toán tử xếp lại của giải thuật di truyền là toán tử đảo ngược.
Dưới sự tác động của toán tử này, hai điểm được chọn ngẫu nhiên theo chiều dài
của chuỗi và chuỗi sẽ bị cắt tại hai điểm đó. Hai chuỗi Gene con ở hai đầu được
đổi chỗ cho nhau tạo thành chuỗi mới.


SV: Nguyễn Bảo Chung

23

Lớp 53K2 – Khoa CNTT


×