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

Thuật toán di truyền và một số ứng dụng với lớp các bài toán NP

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.21 MB, 78 trang )

1

ĐẠI HỌC THÁI NGUYÊN
TRƢỜNG ĐẠI HỌC CÔNGLỜI
NGHỆ
THÔNG
TIN VÀ TRUYỀN THÔNG
CAM
ĐOAN
Sau quá trình học tập tại Trƣờng Đại học công nghệ thông tin & truyền
thông, với những kiến thức lý thuyết và thực hành đã tích lũy đƣợc, với việc vận
dụng các kiến thức vào thực tế, em đã tự nghiên cứu các tài liệu, các công trình
nghiên cứu, đồng thời có sự phân
tích, VŨ
tổng hợp,
đúc kết và phát triển để hoàn thành
TRẦN
MINH
luận văn thạc sĩ của mình.
Em xin cam đoan luận văn này là công trình do bản thân em tự tìm hiểu,
nghiên cứu và hoàn thành dƣới sự hƣớng dẫn của thầy giáo TS. Vũ Vinh Quang.

THUẬT TOÁN DI TRUYỀN
VÀtháng
MỘT
SỐ
Thái Nguyên,
8 năm 2012
Sinh viên

ỨNG DỤNG VỚI LỚP CÁC BÀI TOÁN NP


LUẬN VĂN THẠC SỸ CÔNG NGHỆ
TrầnTHÔNG
Vũ Minh TIN
Chuyên ngành: Khoa học máy tính
Mã số chuyên ngành: 60.48.01

Ngƣời hƣớng dẫn khoa học: TS. Vũ Vinh Quang

Thái Nguyên - 2012
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




2

LỜI CẢM ƠN
Trong thời gian hai năm của chƣơng trình đào tạo thạc sỹ, trong đó gần một nửa
thời gian dành cho các môn học, thời gian còn lại dành cho việc lựa chọn đề tài, giáo viên
hƣớng dẫn, tập trung vào nghiên cứu, viết, chỉnh sửa và hoàn thiện đề tài. Với quỹ thời
gian nhƣ vậy và với vị trí công việc đang phải đảm nhận, không riêng bản thân em mà hầu
hết các sinh viên cao học muốn hoàn thành tốt luận văn của mình trƣớc hết đều phải có sự
sắp xếp thời gian hợp lý, có sự tập trung học tập và nghiên cứu với tinh thần nghiêm túc,
nỗ lực hết mình; tiếp đến cần có sự ủng hộ về tinh thần, sự giúp đỡ về chuyên môn một
trong những điều kiện không thể thiếu quyết định đến việc thành công của đề tài.
Để hoàn thành đƣợc đề tài này trƣớc tiên em xin gửi lời cảm ơn đến thầy giáo
hƣớng dẫn TS. Vũ Vinh Quang, ngƣời đã có những định hƣớng cho em về nội dung và
hƣớng phát triển của đề tài, ngƣời đã có những đóng góp quý báu cho em về những vấn đề
chuyên môn của đề tài, giúp em tháo gỡ kịp thời những vƣớng mắc trong quá trình làm
luận văn.

Em cũng xin cám ơn các thầy cô giáo Trƣờng Đại học Công nghệ thông tin và
Truyền thông cũng nhƣ bạn bè cùng lớp đã có những ý kiến đóng góp bổ sung cho đề tài
luận văn của em. Xin cảm ơn gia đình, ngƣời thân cũng nhƣ đồng nghiệp luôn quan tâm,
ủng hộ hỗ trợ về mặt tinh thần trong suốt thời gian từ khi nhận đề tài đến khi hoàn thiện đề
tài này.
Em xin hứa sẽ cố gắng hơn nữa, tự trau dồi bản thân, tích cực nâng cao năng lực
chuyên môn của mình để sau khi hoàn thành đề tài này sẽ có hƣớng tập trung nghiên cứu
sâu hơn, không ngừng hoàn thiện hơn nữa đề tài của mình để có những ứng dụng thực tiễn
cao trong thực tế.

Thái Nguyên, tháng 8 năm 2012
Sinh viên

Trần Vũ Minh

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




3

MỤC LỤC
Lời cam đoan...............................................................................................................i
Lời cảm ơn..................................................................................................................ii
Mục lục......................................................................................................................iii
Danh mục các ký hiệu, các chữ viết tắt

.................................................................vi


Danh mục các bảng...................................................................................................vii
Danh mục các hình..................................................................................................viii
LỜI MỞ ĐẦU .............................................................................................................1
CHƢƠNG 1 ................................................................................................................3
GIẢI THUẬT DI TRUYỀN .......................................................................................3
1.1 Giới thiệu về GA ...................................................................................................3
1.2 Các khái niệm cơ bản ............................................................................................4
1.2.1 Cá thể, nhiễm sắc thể ......................................................................................4
1.2.2 Quần thể..........................................................................................................4
1.2.3 Chọn lọc (Selection) .......................................................................................4
1.2.4 Lai ghép (Cross-over) ....................................................................................5
1.2.5 Đột biến (Mutation) .......................................................................................5
1.3 Mô hình GA ..........................................................................................................5
1.4 Các tham số của GA ..............................................................................................7
1.4.1 Kích thƣớc quần thể .......................................................................................7
1.4.2 Xác suất lai ghép ............................................................................................7
1.4.3 Xác suất đột biến ............................................................................................7
1.5 Cơ chế thực hiện GA .............................................................................................8
1.5.1 Mã hóa ............................................................................................................8
1.5.2 Khởi tạo quần thể ban đầu ................................................................................9
1.5.3 Xác định hàm thích nghi ................................................................................9
1.5.4 Cơ chế lựa chọn .............................................................................................10
1.5.5 Các toán tử di truyền ....................................................................................11
1.6. Thuật toán di truyền kinh điển ...........................................................................13

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





4

1.6.1. Mã hóa ..........................................................................................................13
1.6.2. Toán tử chọn lọc ...........................................................................................13
1.6.3. Toán tử lai ghép ............................................................................................14
1.6.4. Toán tử đột biến ............................................................................................16
1.6.5. Thuật toán di truyền mã hóa số thực (RCGA) ...............................................18
CHƢƠNG 2 ..............................................................................................................25
CƠ SỞ TOÁN HỌC CỦA GIẢI THUẬT DI TRUYỀN..........................................25
2.1. Định lý sơ đồ của Holland..................................................................................25
2.1.1. Một số khái niệm ..........................................................................................25
2.1.2. Định lý sơ đồ (Holland 1975) ........................................................................26
2.2. Mô hình Markov của GA ...................................................................................27
2.2.1. Tính Markov .................................................................................................28
2.2.2. Xích Markov trong GA .................................................................................29
2.2.3. Sự hội tụ của thuật toán di truyền ..................................................................29
CHƢƠNG 3 ..............................................................................................................32
GIẢI THUẬT DI TRUYỀN ĐỐI VỚI MỘT SỐ BÀI TOÁN THUỘC LỚP NP
3.1. Khái niệm về lớp các bài toán NP ......................................................................32
3.2. Thuật toán di truyền với bài toán TSP ...............................................................33
3.2.1 Giới thiệu bài toán ........................................................................................33
3.2.2 Mô tả bài toán ..............................................................................................34
3.2.3 Giải thuật GA đối với bài toán TSP .............................................................36
3.3 Thuật toán GA giải bài toán TSP ........................................................................39
3.3.1 Biểu diễn NST ..............................................................................................39
3.3.2 Khởi tạo quần thể ban đầu ...........................................................................39
3.3.3 Chọn hàm thích nghi ...................................................................................39
3.3.4 Các toán tử di truyền ....................................................................................39
3.3.5 Toán tử đột biến .............................................................................................39
3.4. Thuật toán di truyền với bài toán tách từ trong văn bản ....................................48

3.4.1 Một số thuật toán tách từ tiếng Việt hiện nay.................................................50

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




5

3.4.2 Công cụ tách từ dùng GA ..............................................................................52
3.4.3 Công cụ Opensource tách từ tiếng việt ........................................................59
KẾT LUẬN ...............................................................................................................67
TÀI LIỆU THAM KHẢO .........................................................................................68
NHẬN XÉT CỦA GIÁO VIÊN HƢỚNG DẪN ......................................................69
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN .........................................................70

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




6

DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
GA – Genetic Algorithm: giải thuật di truyền
TSP - Travelling Salesman Problems: bài toán ngƣời du lịch
EC - Evolutionary computation: tính toán tiến hóa
EP - Evolutionary Programming: quy hoạch tiến hóa
ES - Evolutionary Strategies: các chiến lƣợc tiến hóa
GP - Genetic Programming: lập trình di truyền

CS - Classifier Systems: các hệ thống phân loại
NST – nhiễm sắc thể
Selection: chọn lọc
Cross-over: lai ghép
Mutation: đột biến
Reproduction: sinh sản
pop-size: kích cỡ quần thể
RCGA: thuật toán di truyền mã hóa số thực
BLX-α - Blend Crossover: lai ghép BLX-α
CMX - Center of Mass Crossover: lai ghép CMX
NP-hard: bài toán NP khó
NP-complete: bài toán NP đầy đủ
WFST - Weighted finit-state Transducer: mô hình mạng chuyển dịch trạng thái
hữu hạn có trọng số
IGATEC - Internet and Genetics Algorithm-based Text Categorization for
Documents in Vietnamese: Phƣơng pháp tách từ tiếng Việt dựa trên thống kê từ
Internet và thuật toán di truyền
df - document frequency: tần số tài liệu
fitness: độ thích nghi

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




7

DANH MỤC CÁC BẢNG
Bảng 1: Các tham số điều khiển hoạt động của thuật giải di truyền
Bảng 2. Thống kê độ dài từ trong từ điển

Bảng 3. Tham số thực hiện GA
Bảng 4. Gói vn.hus.mim, tokenizer và các gói con

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




8

DANH MỤC CÁC HÌNH
Hình 1: Sơ đồ mô tả GA
Hình 2: Lai ghép CMX
Hình 3: Phân bố của xjci
Hình 4: Toán tử lai ghép SX
Hình 5: Sự phân lớp các bài toán
Hình 6: Giao diện chương trình TSP
Hình 7: Giao diện nhập dữ liệu chương trình TSP
Hình 8: Giao diện kết quả chương trình TSP
Hình 9. Biểu diễn cá thể bằng các bit 0,1
Hình 10. Thang tỉ lệ phát sinh loại từ
Hình 11. Quá trình lai ghép
Hình 12. Quá trình đột biến
Hình 13. Quá trình sinh sản
Hình 14. Quá trình chọn cá thể
Hình 15. Giao diện chính vnToolkit 3.0.0
Hình 16. Kết quả tách từ
Hình 17. Kết quả thống kê từ
Hình 18. Kết quả gỡ rối tách từ
Hình 19. Kết quả tách câu

Hình 20. Kết quả gán nhãn
Hình 21. Bộ dán nhãn được sử dụng

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




9

LỜI MỞ ĐẦU
Hiện nay trong ngành khoa học máy tính, việc tìm kiếm lời giải tối ƣu cho các
bài toán là vấn đề luôn đƣợc các nhà khoa học đặc biệ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 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ị ) hoặc các thuật toán tìm kiếm có thông tin
đƣợc sử dụng nhiều trong không gian tìm kiếm nhỏ. Đối với không gian tìm kiếm
lớn, việc tìm kiếm các lời giải tối ƣu cho bài toán gặp nhiều khó khăn. Do đó, cần
thiết phải có những thuật giải tốt và sử dụng kỹ thuật trí tuệ nhân tạo 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 GA) 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. Cùng với logic mờ, GA đƣợc ứng dụng rất rộng rãi
trong các lĩnh vực phức tạp. Sự kết hợp giữa GA và logic mờ đã chứng tỏ đƣợc hiệu
quả trong các vấn đề khó mà trƣớc đây thƣờng đƣợc 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, GA đã trở
thành một trong những đề tài nghiên cứu thu hút đƣợc nhiều sự quan tâm và hiện
nay đã và đang đem đến rất nhiều ứng dụng trong thực tiễn.
Xuất phát từ thuyết tiến hóa muôn loài của Darwin, GA là một kỹ thuật chung
giúp giải quyết vấn đề bài toán bằng cách mô phỏng sự tiến hóa của con ngƣời hay của
sinh vật nói chung trong những điều kiện đƣợc qui định sẵn của môi trƣờng. GA là một

thuật giải và mục tiêu của GA 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.
John Holland (1975) và Goldberg (1989) đã đề xuất và phát triển GA, là thuật
giải tìm kiếm dựa trên cơ chế chọn lọc và di truyền tự nhiên. Thuật giải này sử dụng
các nguyên lý di truyền về sự thích nghi và sự sống các cá thể thích nghi nhất trong
tự nhiên.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




10

Ngày nay, GA đƣợc ứng dụng khá nhiều trong các lĩnh vực nhƣ khoa học,
kinh doanh và giải trí. Đầu tiên phải kể đến là các bài toán tối ƣu bao gồm: tối ƣu số
và tối ƣu tổ hợp; đã sử dụng GA để tìm lời giải nhƣ là bài toán ngƣời du lịch
(Travelling Salesman Problems - TSP).
Một ứng dụng khác cũng đang đƣợc ứng dụng rộng rãi của GA là giải quyết
vấn đề bùng nổ về lƣợng thông tin trên mạng internet bao gồm: thƣ viện điện tử,
thông tin điện tử... dẫn đến phát sinh một số lƣợng lớn văn bản với tốc độ tăng
chóng mặt. Vấn đề làm sao để tổ chức và tìm kiếm một lƣợng thông tin lớn nhƣ vậy
một cách có hiệu quả? GA hiện đang đƣợc ứng dụng hiệu quả trong việc phân loại
thông tin phục vụ cho việc tìm kiếm văn bản.
Với những lý do trên, em chọn đề tài: “Thuật toán di truyền và một số ứng
dụng với lớp các bài toán NP” làm luận văn tốt nghiệp.
Nội dung chính của luận văn gồm 3 chƣơng:
Chương 1 trình bày các khái niệm cơ bản, mô hình, các tham số cơ bản, các
phép toán, cơ chế thực hiện tổng quát của thuật toán di truyền, thuật toán di truyền
mã hóa số thực.

Chương 2 trình bày cơ sở toán học về sự hội tụ của thuật toán di tuyền thông
qua mô hình Markov và định lý sơ đồ của Holland.
Chương 3 trình bày hai nội dung chính:
+ Giới thiệu bài toán ngƣời du lịch (Travelling Salesman Problems – TSP) là
một trong những bài toán thuộc lớp NP và phƣơng pháp giải bài toán này bằng thuật
toán di truyền.
+ Giới thiệu về bài toán tách từ trong văn bản, ứng dụng của GA đối với bài
toán tách từ trong văn bản thông qua bộ công cụ tách từ dùng thuật giải di truyền
vnToolkit 3.0.
Các kết quả lý thuyết về bài toán TSP và bài toán tách từ trong văn bản đã
đƣợc kiểm nghiệm thông qua các chƣơng trình thực nghiệm viết trên nền ngôn ngữ
C# và Java.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




11

Chƣơng 1
GIẢI THUẬT DI TRUYỀN
1.1 Giới thiệu về GA
Trong công nghệ thông tin, GA là một thành phần của Tính toán tiến
hóa (Evolutionary computation – EC), một lĩnh vực đƣợc coi là có tốc độ phát triển
nhanh của trí tuệ nhân tạo. Có thể chia EC thành 5 hƣớng nghiên cứu nhƣ sau :
- GA (Genetic Algorithm - GA): Dựa vào quá trình di truyền trong tự nhiên
để cải tiến lời giải qua các thế hệ bắt nguồn từ một tập các lời giải ban đầu.
- Quy hoạch tiến hoá (Evolutionary Programming - EP): Dựa vào quy luật
tiến hoá, tìm phƣơng pháp kết hợp đủ khả năng giải quyết trọn vẹn một bài toán từ

một lớp các phƣơng pháp giải quyết đƣợc một số phần của bài toán.
- Các chiến lƣợc tiến hoá (Evolutionary Strategies - ES): Dựa trên một số
chiến lƣợc ban đầu, tiến hoá để tạo ra những chiến lƣợc mới phù hợp với môi
trƣờng thực tế một cách tốt nhất.
- Lập trình di truyền (Genetic Programming - GP): Mở rộng GA trong lĩnh
vực các chƣơng trình của máy tính. Mục đích của nó là để sinh ra một cách tự động
các chƣơng trình máy tính giải quyết một cách tối ƣu một vấn đề cụ thể.
- Các hệ thống phân loại (Classifier Systems- CS): Các GA đặc biệt đƣợc
dùng trong việc học máy và việc phát hiện các quy tắc trong các hệ dựa trên các
quy tắc.
GA cũng nhƣ các thuật toán tiến hoá đều đƣợc hình thành dựa trên một quan
niệm đƣợc coi là một tiên đề phù hợp với thực tế khách quan. Đó là quan niệm
"Quá trình tiến hoá 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". Quá trình tiến hoá thể hiện tính tối ƣu ở chỗ thế hệ sau bao giờ
cũng tốt hơn thế hệ trƣớc.
Sự hình thành và phát triển của GA trên thế giới có thể đƣợc điểm qua các
mốc thời gian quan trọng nhƣ sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




12

Năm 1960, ý tƣởng đầu tiên về Tính toán tiến hoá đƣợc Rechenberg giới
thiệu trong công trình “Evolution Strategies” (Các chiến lƣợc tiến hoá). Ý tƣởng
này sau đó đƣợc nhiều nhà nghiên cứu phát triển.
Năm 1975, Giải thuật gen do John Holland phát minh và đƣợc phát triển bởi
ông cùng với các đồng nghiệp và những sinh viên. Cuốn sách "Adaption in Natural

and Artificial Systems" (Sự thích nghi trong các hệ tự nhiên và nhân tạo) đã tổng
hợp các kết quả của quá trình nghiên cứu và phát triển đó.
Năm 1992, John Koza đã dùng GA để xây dựng các chƣơng trình giải quyết
một số bài toán và gọi phƣơng pháp này là “lập trình gen”.
Ngày nay GA càng trở nên quan trọng, đặc biệt là trong lĩnh vực tối ƣu hoá,
một lĩnh vực có nhiều bài toán thú vị, đƣợc ứng dụng nhiều trong thực tiễn nhƣng
thƣờng khó và chƣa có giải thuật hiệu quả để giải .
1.2 Các khái niệm cơ bản
1.2.1 Cá thể, nhiễm sắc thể
Trong GA, một cá thể biểu diễn một phƣơng án của bài toán. Trong trƣờng
hợp tổng quát, một cá thể có nhiều NST (NST), ở đây ta quan niệm một cá thể chỉ
có một NST. Do đó khái niệm cá thể và NST trong GA 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 GA, một gen đƣợc coi nhƣ một phần tử trong
chuỗi NST.
1.2.2 Quần thể
Quần thể là một tập hợp các cá thể có cùng một số đặc điểm nào đấy. Trong
GA ta quan niệm quần thể là một tập các lời giải của một bài toán.
1.2.3 Chọn lọc (Selection)
Trong tự nhiên, quá trình chọn lọc và đấu tranh sinh tồn đã làm thay đổi các cá
thể trong quần thể. Những cá thể tốt, thích nghi đƣợc với điều kiện sống thì có khả
năng đấu tranh lớn hơn, do đó có thể tồn tại và sinh sản. Các cá thể không thích
nghi đƣợc với điều kiện sống thì dần mất đi. Dựa vào nguyên lý của quá trình chọn
lọc và đấu tranh sinh tồn trong tự nhiên, chọn lựa các cá thể trong GA chính là cách

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





13

chọn các cá thể có độ thích nghi tốt để đƣa vào thế hệ tiếp theo hoặc để cho lai
ghép, với mục đích là sinh ra các cá thể mới tốt hơn. Có nhiều cách để lựa chọn
nhƣng cuối cùng đều nhằm đáp ứng mục tiêu là các cá thể tốt sẽ có khả năng đƣợc
chọn cao hơn.
1.2.4 Lai ghép (Cross-over)
Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để sinh ra thế
hệ con. Trong GA, lai ghép đƣợc coi là một sự tổ hợp lại các tính chất (thành phần)
trong hai lời giải cha mẹ nào đó để sinh ra một lời giải mới mà có đặc tính mong
muốn là tốt hơn thế hệ cha mẹ. Đây là một quá trình xảy ra chủ yếu trong GA.
1.2.5 Đột biến (Mutation)
Đột biến là một sự biến đổi tại một (hay một số) gen của NST ban đầu để tạo
ra một NST mới. Đột biến có xác suất xảy ra thấp hơn lai ghép. Đột biến có thể tạo
ra một cá thể mới tốt hơn hoặc xấu hơn cá thể ban đầu. Tuy nhiên trong GA thì ta
luôn muốn tạo ra những phép đột biến cho phép cải thiện lời giải qua từng thế hệ.
1.3 Mô hình GA
Với các khái niệm đƣợc giới thiệu ở trên, GA đƣợc mô tả bởi sơ đồ sau đây

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




14

Bắt đầu

Nhận các tham số
của bài toán


Khởi tạo quần thể
ban đầu

Tính giá trị thích nghi

Điều kiện
dừng

Sinh sản

Lai ghép

Lựa chọn giải pháp tốt
nhất

Đột biến

Kết
thúc

Hình 1: Sơ đồ mô tả GA
1. Xác lập các tham số ban đầu của bài toán.
2. Khởi tạo: Sinh ngẫu nhiên một quần thể gồm n cá thể (là n lời giải ban
đầu của bài toán).
3. Xác lập quần thể mới: tạo quần thể mới bằng cách lặp lại các bƣớc sau
cho đến khi quần thể mới hoàn thành, bao gồm:
3.1 Tính độ thích nghi của mỗi cá thể.
3.2 Kiểm tra điều kiện kết thúc giải thuật.
3.3 Chọn lọc các cá thể bố mẹ từ quần thể cũ theo độ thích nghi của chúng

(cá thể có độ thích nghi càng cao thì càng có nhiều khả năng đƣợc chọn).
3.4 Tiến hành lai ghép các cặp bố-mẹ với một xác suất lai ghép đƣợc chọn để
tạo ra một cá thể mới.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




15

3.5 Tiến hành đột biến với xác suất đột biến đƣợc chọn xác định cá thể đột
biến.
4. Kiểm tra điều kiện dừng: Nếu điều kiện đƣợc thỏa mãn thì thuật toán kết
thúc và trả về lời giải tốt nhất chính là quần thể hiện tại.
1.4 Các tham số của GA
1.4.1 Kích thƣớc quần thể
Kích thƣớc quần thể cho biết có bao nhiêu cá thể trong một quần thể (trong
một thế hệ). Qua các nghiên cứu cũng nhƣ các thử nghiệm đã cho thấy kích thƣớc
quần thể không nên quá bé cũng nhƣ không quá lớn. Nếu có quá ít cá thể thì ít có
khả năng thực hiện lai giống và chỉ một phần nhỏ không gian tìm kiếm đƣợc dùng.
Nhƣ vậy sẽ dễ xảy ra trƣờng hợp bỏ qua các lời giải tốt. Nhƣng quá nhiều cá thể
cũng không tốt vì GA sẽ chạy chậm đi, ảnh hƣởng đến hiệu quả của giải thuật. Các
nghiên cứu cũng đã chỉ ra không có lợi khi tăng kích thƣớc quần thể lên quá một
giới hạn cho phép.
1.4.2 Xác suất lai ghép
Xác suất lai ghép cho biết việc lai ghép tạo ra thế hệ mới đƣợc thực hiện
thƣờng xuyên nhƣ thế nào. Nếu xác suất lai ghép là pc, khi đó khả năng để một cá
thể đƣợc lai ghép là pc. Nếu không thực hiện lai ghép, con sinh ra sẽ giống hoàn
toàn bố mẹ. Nếu đƣợc lai ghép, con sinh ra sẽ có một phần giống bố và một phần

giống mẹ.
1.4.3 Xác suất đột biến
Xác suất đột biến cho biết các gen của NST thay đổi thƣờng xuyên nhƣ thế
nào. Nếu xác suất đột biến là pm, khi đó khả năng để mỗi gen của một NST bất kỳ bị
đột biến là pm. Toán tử đột biến có tác dụng ngăn ngừa GA rơi vào tình trạng cực trị
địa phƣơng, tuy nhiên nếu thực hiện đột biến với xác suất quá cao sẽ biến GA thành
giải thuật tìm kiếm ngẫu nhiên.
Nhận xét:
Xuất phát từ sơ đồ thực hiện GA, chúng ta có thể có một số nhận xét nhƣ sau:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




16

+ GA lập luận mang tính chất ngẫu nhiên để tìm giải pháp tối ƣu cho những
vấn đề phức tạp, thay vì xác định nhƣ toán học giải tích. Tuy nhiên đây là hình thức
ngẫu nhiên có hƣớng dẫn bởi trị số thích nghi. Chính hàm thích nghi giúp GA tìm
giải pháp tối ƣu trong rất nhiều giải pháp có thể có.
+ GA không để ý đến chi tiết vấn đề, trái lại chỉ chú ý đến giải pháp cho vấn
đề, hay tìm điều kiện tối ƣu cho việc điều hành và phân nhóm những giải pháp có
đƣợc.
+ GA đƣợc sử dụng đặc biệt cho những bài toán yêu cầu tìm kiếm tối ƣu toàn
cục với không gian tìm kiếm lớn và không thể kiểm soát nhờ khả năng duyệt qua
không gian tìm kiếm đại diện mà không thực sự đi qua từng điểm của toàn bộ
không gian.
1.5 Cơ chế thực hiện GA
1.5.1 Mã hóa

Để có thể thực hiện GA, vấn đề đầu tiên là xuất phát từ bài toán thực tế, ta
cần phải mô tả các phƣơng án của bài toán dƣới một dạng nào đó (mô hình toán
học, tin học, …). Vấn đề mô tả đó đƣợc gọi là các phƣơng pháp mã hóa. Thông
thƣờng ngƣời ta sử dụng một trong các phƣơng pháp nhƣ sau:

+ Mã hoá nhị phân
Mã hoá nhị phân là phƣơng pháp mã hoá NST phổ biến nhất. Trong mã hoá
nhị phân, mỗi NST 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 nghiệm.
Mã hoá nhị phân thƣờng hay dùng trong các bài toán tối ƣu các hàm một biến
hay nhiều biến. Khi đó, mỗi chuỗi nhị phân sẽ biểu diễn hàm tại một tập giá trị của
các biến. Ngoài ra nó còn đƣợc áp dụng trong nhiều loại bài toán khác.
Mã hoá nhị phân tuy là phổ biến nhƣng nó có một nhƣợc điểm là có thể tạo ra
không gian mã hoá lớn hơn so với không gian giá trị của NST. Do đó, với nhiều bài
toán thì biểu diễn nhị phân là không hữu hiệu.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




17

+ Mã hoá hoán vị
Trong mã hoá hoán vị, mỗi NST là một chuỗi các số biểu diễn một thứ tự sắp
xếp. 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 NST chính là hoán vị các số trong chuỗi đó làm thay
đổi thứ tự của nó. Mã hoá hoá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.
+ Mã hoá số thực

Mã hoá 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 NST 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 toán, từ số nguyên, số thực, kí tự cho đến
các đối tƣợng phức tạp hơn.
Mã hoá số thực 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. Thông thƣờng mỗi NST đƣợc mã hóa là một véc tơ trong không gian. Cách
mã hóa này thƣờng sử dụng đối với các bài toán tối ƣu số và đƣợc phát triển mạnh
trong giai đoạn hiện nay.
+ Mã hóa dạng cây
Phƣơng pháp này đƣợc sử dụng trong các biểu thức toán học. Mỗi NST là
một cây của một nhóm đối tƣợng nào đó.
1.5.2 Khởi tạo quần thể ban đầu
Khởi tạo quần thể ban đầu là bƣớc đầu tiên trong GA. Thông thƣờng để khởi
tạo quần thể trong bài toán tối ƣu, ta tạo ra một cách ngẫu nhiên các lời giải có thể
(thƣờng là các lời giải thỏa mãn ràng buộc của bài toán nhƣng chƣa biết là đại
lƣợng cần tối ƣu đã là tối ƣu hay chƣa). Tuỳ vào từng bài toán cụ thể mà ta có các
phƣơng pháp khởi tạo khác nhau. Chất lƣợng của quần thể ban đầu càng cao thì lời
giải mà GA đƣa ra càng tốt.
1.5.3 Xác định hàm thích nghi
Theo các nghiên cứu và các thử nghiệm của nhiều nhà nghiên cứu về GA thì
hàm tính độ thích nghi là một trong hai yếu tố quan trọng nhất quyết định sự thành

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




18


công hay thất bại của GA. Hàm thích nghi đƣợc xây dựng sao cho giá trị thích nghi
phải phản ánh đƣợc giá trị thực của NST trong việc đáp ứng yêu cầu của bài toán.
1.5.4 Cơ chế lựa chọn
Cơ chế lựa chọn đƣợc áp dụng khi chọn các cá thể từ quần thể P(t ) để thực
hiện việc lai ghép và đột biến, tạo ra quần thể P(t  1) . Có nhiều cách để lựa chọn
các cá thể từ một quần thể. Sau đây sẽ giới thiệu một số cơ chế hay áp dụng.
Ta sử dụng các kí hiệu nhƣ sau:
- Kí hiệu NST thứ i là v i .
- Hàm tính độ thích nghi của NST v i là f (vi )
- Kích thƣớc quần thể là pop_size().
- Số NST cần chọn là N.
+ Cơ chế lựa chọn theo bánh xe Roulette
Bƣớc 1: Tính tổng độ thích nghi của cả quần thể: F 

pop _ size

 f (v )
i 1

Bƣớc 2: Tính xác suất chọn pi cho mỗi NST vi : pi 

i

f (v i )
F

i

Bƣớc 3: Tính vị trí xác suất qi của mỗi NST: q i   p i
j 1


Bƣớc 4: Sử dụng cơ chế lựa chọn theo bánh xe Roulette đƣợ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 NST từ quần thể hiện hành
vào quần thể mới theo nguyên tắc:
- Phát sinh ngẫu nhiên một số r trong khoảng [0,1] .
- Nếu r  q1 thì chọn NST v1; ngƣợc lại thì chọn NST thứ i (2  i  pop_size)
sao cho qi-1  r  qi.
Với cơ chế lựa chọn nhƣ thế này thì có một số nhiếm sắc thể sẽ đƣợc chọn
nhiều lần. Điều này phù hợp với lý thuyết lƣợc đồ: các NST tốt nhất thì có nhiều
bản sao, NST trung bình thì không đổi , NST kém thì chết đi.
+ Cơ chế lựa chọn xếp hạng
Cơ chế lựa chọn xếp hạng đƣợc mô tả nhƣ sau:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




19

Bƣớc 1: Sắp xếp các NST trong quần thể theo độ thích nghi từ thấp đến cao.
Bƣớc 2: Đặt lại độ thích nghi cho quần thể đã sắp xếp theo kiểu: NST thứ nhất
có độ thích nghi là 1, NST thứ hai có độ thích nghi là 2, .v.v., NST thứ pop_size có
độ thích nghi là pop_size.
Theo phƣơng pháp này việc một NST đƣợc chọn nhiều lần nhƣ trong lựa chọn
theo kiểu bánh xe Roulette đã giảm đi. Nhƣng nó có thể dẫn đến sự hội tụ chậm và
NST có độ thích nghi cao cũng không khác mấy so với các NST khác.
+ Cơ chế lựa chọn theo lấy mẫu ngẫu nhiên
Cơ chế lựa chọn theo mẫu đƣợc thực hiện nhƣ sau:
Bƣớc 1: Biểu diễn xác suất chọn các NST lên trên một đƣờng thẳng.
Bƣớc 2: Đặt N điểm chọn lên đƣờng thẳng. Các điểm chọn này cách nhau

điểm đầu tiên đặt ngẫu nhiên trong khoảng [0,

1
,
N

1
]
N

Bƣớc 3: Với một điểm chọn, NST gần với nó nhất về bên phải sẽ đƣợc chọn.
Phƣơng pháp này có đặc điểm là các điểm chọn đƣợc phân bố đều trên trục số,
do đó sẽ gần với điểm xứng đáng đƣợc chọn.
1.5.5 Các toán tử di truyền
Các toán tử di truyền của GA là toán tử lai ghép và đột biến. Đây là hai toán tử
có tác động lớn đến chất lƣợng của giải thuật. Các toán tử này đƣợc xây dựng phụ
thuộc vào cách mã hoá các NST. Ở đây chỉ đƣa ra toán tử lai ghép và đột biến trên
một số cách mã hoá NST để chỉ ra đƣợc ý tƣởng xây dựng toán tử lai ghép và đột
biến trong GA. Còn tuỳ thuộc vào các bài toán cụ thể và cách mã hoá NST mà ta
xây dựng hai loại toán tử này.
Toán tử lai ghép
+ Lai ghép đơn điểm:
- Một điểm cắt đƣợc chọn tại một vị trí thứ k trên NST.
- Từ đầu NST đến vị trí thứ k, NST con sao chép từ cha, phần còn lại sao chép
từ mẹ.
Với NST cha: X = 11001010, NST mẹ Y = 11101001
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên





20

Con sinh ra do lai ghép đơn (điểm cắt k=4):
Con : 1100 | 1001
+ Lai ghép hai điểm:
- Hai điểm cắt đƣợc chọn .
- Từ đầu cho đến điểm cắt thứ nhất đƣợc sao chép từ cha, từ điểm cắt thứ nhất
đến điểm cắt thứ hai sao chép từ mẹ và phần còn lại sao chép từ cha.
Xét

Cha : 11| 0010 | 10
Mẹ : 11| 1010 | 01

Con sinh ra do lai ghép hai điểm cắt :
Con : 11 | 1010| 10
+ Lai ghép mặt nạ :
- Xây dựng một mặt nạ là một chuỗi nhị phân có chiều dài bằng chiều dài
NST, Mặt nạ đƣợc phát sinh ngẫu nhiên đối với từng cặp cha mẹ.
- Xây dựng NST mới: Duyệt qua mặt nạ, bit có giá trị 1 thì sao chép gen tại
vị trí đó từ NST cha sang con, bit có giá trị 0 thì sao chép từ mẹ. Ví dụ xét
Cha :
Mẹ

11001010
:

10101001

Mặt nạ :


10101000

Con sinh ra do lai ghép mặt nạ :
Con :

10001001

+ Lai ghép số học:
NST con đƣợc tạo thành bằng cách thực hiện một phép toán logic nào đó nhƣ
AND, OR, … với cặp NST bố mẹ. Ví dụ xét
Cha

:

11001010

Mẹ

:

10101001

Con (AND): 10001000
Toán tử đột biến
Phép đảo bit : Bit đƣợc chọn sẽ bị đảo (Bit đƣợc chọn có gạch chân)
Nếu

trƣớc đột biến :


11011001

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




21

Thì

sau đột biến :

11010001

1.6. Thuật toán di truyền kinh điển
1.6.1. Mã hóa
GA kinh điển sử dụng mã hóa nhị phân, mỗi cá thể đƣợc mã hóa là một
chuỗi nhị phân có chiều dài cố định.
Sử dụng véc tơ nhị phân có độ dài L nhƣ một NST để biểu diễn giá trị của
biến x  [l x , u x ] (độ dài L của NST phụ thuộc vào yêu cầu cụ thể của bài toán). Một
bit mã hóa x ứng với một giá trị trong khoảng [0, 2L] sẽ đƣợc ánh xạ lên giá trị thực
thuộc miền [l x , u x ] .
Tỷ lệ co giãn của ánh xạ: g 

ux  lx
2L

Giá trị x tƣơng ứng với chuỗi NST nhị phân là:


x  l x  decimal( NST ) * g
Decimal(NST) là giá trị thập phân của chuỗi NST nhị phân.
Để khởi tạo quần thể chỉ cần tạo pop-size (kích cỡ quần thể) NST ngẫu nhiên
theo từng bit. Tiếp theo, lƣợng giá từng NST (tính giá trị hàm f trên các chuỗi biến
nhị phân đã đƣợc giải mã), chọn quần thể mới thỏa mãn phân bố xác suất dựa trên
độ thích nghi và thực hiện các phép đột biến và lai tạo để tạo các cá thể thế hệ mới.
Sau một số thế hệ, nếu không đƣợc cải thiện thêm gì nữa, NST tốt nhất sẽ đƣợc xem
nhƣ lời giải tối ƣu (thƣờng là toàn cục). Thông thƣờng sẽ cho dừng thuật giải di
truyền sau một số bƣớc lặp cố định tùy thuộc vào điều kiện về tốc độ hay tài nguyên
máy tính.
1.6.2. Toán tử chọn lọc
a/ Sử dụng bánh xe Roulette
Có nhiều cách để thực hiện toán tử chọn lọc, chủ yếu theo cách nếu các thể
có độ thích nghi cao hơn thì khả năng đƣợc chọn nhiều hơn. Tuy nhiên, để đơn giản
và hiệu quả nhất là sử dụng bánh xe Roulette.

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




22

Mỗi cá thể trong quần thể chiếm một khe có độ rộng tỷ lệ thuận với giá trị
phù hợp. Độ rộng của khe đƣợc tính bằng tỷ lệ % giá trị phù hợp của một cá thể trên
tổng giá trị phù hợp toàn quẩn thể.
Giả sử f i là độ phù hợp của cá thể thứ i trong quần thể gồm N cá thể. Khi
đó, cá thể i sẽ đƣợc chọn với xác suất pi 

fi


.

N

f
i 1

i

b/ Thủ tục xếp hạng các cá thể
Trong thủ tục này các cá thể đƣợc sắp xếp theo giá trị của hàm mục tiêu. Cá
thể đầu tiên là các thể tốt nhất, cá thể cuối cùng là cá thể tồi nhất.
Cá thể thứ ( N  j) trong dãy có xác suất chọn lựa: p N  j 

j
N

k
k 1

Các bƣớc tiến hành thủ tục là:
- Sắp xếp các chuỗi theo thứ tự giảm dần của hàm mục tiêu (bài toán cực đại)
hoặc theo thứ tự tăng dần của hàm mục tiêu (bài toán cực tiểu).
- Tính độ phù hợp của chuỗi.
c/ Thủ tục chọn lọc cạnh tranh
Trong thủ tục này cách tiến hành nhƣ sau:
- Chọn t cá thể từ quần thể hiện tại một cách ngẫu nhiên và chọn cá thể tốt
nhất trong t cá thể đó để sao chép sang quần thể tạm thời.
- Lặp lại bƣớc trên N lần sẽ đƣợc quần thể tạm thời.

Giá trị t khi đó gọi là kích cỡ của chọn lọc cạnh tranh. Khi t  2 ta có chọn
lọc cạnh tranh nhị phân.
1.6.3. Toán tử lai ghép
a/ Lai ghép một điểm
Giả sử với hai cá thể cha và mẹ đã đƣợc chọn P1, P2:
P1= (1110001010), P2= (0101100111), độ dài L  10 .
Toán tử này cần sinh ngẫu nhiên một vị trí k (1  k  L) , sau đó hai cá thể
con đƣợc tạo thành bằng cách tráo đổi các gen của cặp cha mẹ tính từ điểm cắt.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




23

Giả sử điểm cắt đã chọn k  8 , hai con đƣợc sinh ra nhƣ sau:
C1= (1110001011), C2= (0101100110)
Thủ tục lai ghép một điểm
Procedure lai1diem(k, P1, P2: var C1,C2);
Begin
For i:=1 to k do
Begin
C1[i]:=P1[i];
C2[i]:=P2[i];
End;
For i:=k+1 to L do
Begin
C1[i]:=P1[i];
C2[i]:=P2[i];
End;

End;
b/ Lai ghép nhiều điểm
Lai ghép nhiều điểm thực hiện tƣơng tự lai ghép một điểm. Với hai cá thể
cha k mẹ đã chọn P1, P2, toán tử này cần sinh ngẫu nhiên k vị trí i1 , i2 ,..., ik (giả
thiết i1  i2  ...  ik ). Các điểm cắt chia các cá thể đã chọn thành các đoạn đƣợc
đánh số chẵn và lẻ. Hai cá thể con đƣợc tạo thành bằng cách tráo đổi các gen cha
mẹ tùy theo đoạn chẵn hay đoạn lẻ.
Giả sử các điểm cắt đã chọn là: 2,4,6,9.
P1= 1001110101, P2= 0100111110
C1= 1000111111, C2= 0101110101
c/ Lai ghép mặt nạ
Với hai cá thể cha mẹ đã chọn P1, P2 và phát sinh một chuỗi nhị phân ngẫu
nhiên cũng có độ dài L gọi là chuỗi mặt nạ.
P1= (1110001010), P2= (0101100111), U= (0110011001), độ dài L  10 .
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




24

Các con đƣợc tạo ra dựa trên chuỗi mặt nạ này để quyết định lấy thành phần
của cá thể cha hay cá thể mẹ dựa trên nguyên tắc:
Gen thứ i của cá thể con C1 đƣợc lấy gen thứ i của P1 nếu bit mặt nạ tƣơng
ứng là 1 và lấy gen thứ i của P2 nếu bit mặt nạ là 0. C2 thì ngƣợc lại.
C1= (0111101110), C2= (1100000011)
Thủ tục lai ghép mặt nạ:
Procedure laimatna(u, P1, P2; var C1, C2);
Begin
For i:=1 to L do

Begin
If U[i]=1 then
Begin
C1[i]:=P1[i]; C2[i]:=P2[i];
End
Else
Begin
C1[i]:=P2[i]; C2[i]:=P1[i];
End;
End;
End;
1.6.4. Toán tử đột biến
Toán tử đột biến làm thay đổi các thông tin của quần thể ở mức bit (gen).
Đột biến làm thay đổi giá trị của một bit bất kỳ theo xác suất pm. Mỗi bit đều có cơ
hội đột biến nhƣ nhau.
Toán tử đột biến bao gồm: toán tử đột biến chuẩn, đột biến đều và không
đều.
Thuật toán đột biến:
For i:=1 to m do
If random[0,1] < pm then invert (parent[i]);

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




25

Với invert(u) là hàm đảo ngƣợc bit u.
Thuật toán GA cổ điển đƣợc mô tả một cách tƣờng minh nhƣ sau:

Algorithm GA_codien;
Begin
{Khởi tạo quần thể gồm m quần thể}
t:=0;
Creat initial population B0=(b10,b20,…,bm0);
While (stopping condition not fulfilled) do
Begin
{Chọn lọc tỷ lệ}
For i:=1 to m do
Begin
r:=random[0,1];
k:=1;
i

While (k
 f (b , t )
j:1

j

m

 f (b , t )
j:1

) do k : k  1;

j


bi ,t 1 : bk ;
End;
{lai ghép 1 điểm}
For i:=1 to m-1 step 2 do
Begin
If random[0,1]Begin
pos:= random{1, …, n-1};
for k:=pos+1 to n do
begin

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên




×