1. Lý do chọn đề tài: Trong ngành khoa học máy tính, bài toán tìm kiếm lời giải tối ưu cho các bài toán là vấn đề đang được các nhà khoa học rất quan tâm. Mục đích 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 trên đồ 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. Tuy nhiên, trong thực tế có nhiều bài toán tối ưu với không gian tìm kiếm rất lớn mà chúng ta cần phải giải quyết. Vì vậy, việc đòi hỏi thuật toán 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 khi giải quyết các bài toán có không gian tìm kiếm lớn. Giải thuật di truyền (genetic algorithm GAs) 2 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. Giải thuật di truyền lấy ý tưởng từ quá trình tiến hóa tự nhiên, xuất phát từ một lớp các lời giải tiềm năng ban đầu, thuật giải di truyền tiến hành tìm kiếm trên không gian lời giải bằng cách xây dựng lớp lời giải mới tương đối tốt, có thể là tốt nhất. Quá trình xây dựng lớp lời giải mới được tiến hành dựa vào việc chọn lọc, lai ghép, đột biến từ lớp lời giải ban đầu. Quần thể mới được trải qua quá trình tiến hóa: Ở mỗi thế hệ lai tái sinh các lời giải tương đối tốt hơn các thế hệ lời giải ban đầu, trong khi các lời giải “xấu” thì chết đi. Hiện nay giải thuật di truyền được ứng dụng rộng rãi giải các bài toán trong các lĩnh vực như khoa học, kinh doanh và giải trí. Phải kể đến là bài toán người du lịch (TSP), bài toán xếp thời khóa biểu…1 7 12 13 18. Một trong những ngôn ngữ sử dụng thành công ý tưởng của giải thuật di truyền là R. R là một phần mềm sử dụng chính trong cho phân tích thống kê và đồ thị. Nó rất cần thiết và quan trọng đối với các nhà nghiên cứu trong nhiều ngành như sinh học, địa lý, toán học. R có rất nhiều package hỗ trợ cho việc phân tích dữ liệu, ví dụ như boot, class, cluster, lattice, moments, hexbin. Ngoài ra, trong đó có một số package đặc biệt hỗ trợ giải thuật di truyền như: genalg,GA. Với kiến thức đã tìm hiểu được về giải thuật di truyền, ngôn ngữ R và được sự định hướng của thầy hướng dẫn, em đã lựa chọn đề tài “Nghiên cứu giải thuật di truyền trên R và ứng dụng” làm đề tài nghiên cứu.
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI
-
-LÊ THỊ XUÂN HUYỀN
NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN
HÀ NỘI - NĂM 2014
Trang 2LỜI CẢM ƠN
Để hoàn thành tốt luận văn này, trước hết tôi xin chân thành cảm ơn các thầy
cô giáo khoa Công nghệ thông tin trường Đại học Sư phạm Hà Nội đã giảng dạy rấtnhiệt tình và giúp tôi mở rộng thêm kiến thức
Đặc biệt, tôi xin gửi lời cảm ơn sâu sắc đến TS Đặng Xuân Thọ, người Thầy
đã hướng dẫn tận tình, chu đáo cho tôi Đồng thời, thầy luôn có những định hướng,
hỗ trợ tôi trong suốt quá trình nghiên cứu và làm luận văn
Tôi xin gửi lời cảm ơn đến gia đình, bạn bè và người thân đã luôn sát cánh,động viên giúp đỡ tôi cả về mặt tinh thần và vật chất để tôi có thể hoàn thành tốtluận văn của mình
Mặc dù đã cố gắng hoàn thiện luận văn bằng tất cả sự nhiệt tình và năng lựccủa mình, tuy nhiên không thể tránh khỏi những thiếu sót Rất mong nhận được sựđóng góp ý kiến của thầy cô, bạn bè đồng nghiệp và độc giả
Hà Nội, ngày tháng 11 năm 2014
Học viên
Lê Thị Xuân Huyền
Trang 3MỤC LỤC
LỜI CẢM ƠN
DANH MỤC CÁC HÌNH VẼ
DANH MỤC BẢN
MỞ ĐẦU 1
1 Lý do chọn đề tài: 1
2 Lịch sử nghiên cứu: 2
3 Mục đích nghiên cứu: 2
4 Đối tượng và phạm vi nghiên cứu: 2
5 Tóm tắt nội dung luận văn: 2
6 Phương pháp nghiên cứu: 3
CHƯƠNG 1 GIẢI THUẬT DI TRUYỀN 4
1.1 Lịch sử về giải thuật di truyền 4
1.2 Thuật ngữ sinh học 5
1.2.1 Cá thể 5
1.2.2 Sinh sản 5
1.3 Cơ bản về giải thuật di truyền 5
1.4 Các thành phần trong giải thuật di truyền 7
1.4.1 Biểu diễn nhiễm sắc thể 7
1.4.2 Phương pháp chọn lọc 8
1.4.3 Phương pháp lai ghép 10
1.4.4 Toán tử đột biến 15
1.5 Các tham số của giải thuật di truyền 16
Trang 41.5.1 Kích thước quần thể 16
1.5.2 Xác suất lai ghép 16
1.5.3 Xác suất đột biến 17
1.6 Tổng kết chương I 17
CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN TRÊN R 18
2.1 Giới thiệu ngôn ngữ R 18
2.2 Một số package liên quan đến giải thuật di truyền 18
2.2.1 Package genalg 19
2.2.1.1 Tổng quan genalg 19
2.2.1.2 Ví dụ minh họa 21
2.2.2 Package GA 22
2.2.2.1 Tổng quan GA 22
2.2.2.2 Ví dụ minh họa 25
2.3 Tổng kết chương 2 28
CHƯƠNG 3 THỰC NGHIỆM 30
3.1 Bài toán cái túi 30
3.1.1 Giới thiệu bài toán 30
3.1.2 Áp dụng gói thư viện genalg 31
3.1.2.1 Cách thức áp dụng 31
3.1.2.2 Kết quả 32
3.1.3 Áp dụng gói thư viện GA 34
3.1.3.1 Cách thức áp dụng 34
3.1.3.2 Kết quả 35
3.2 Bài toán người du lịch 37
3.2.1 Giới thiệu bài toán 37
Trang 53.2.2 Cách thức áp dụng sử dụng thư viện GA 39
3.2.3 Kết quả 41
3.3 Bài toán thời khóa biểu THCS 46
3.3.1 Giới thiệu bài toán 46
3.3.2 Cách thức áp dụng sử dụng thư viện GA 49
3.3.3 Kết quả 56
3.4 Một số nhận xét 57
PHỤ LỤC: KẾT QUẢ THỬ NGHIỆM MỘT SỐ BỘ DỮ LIỆU 58
Phụ lục 1 Kết quả thử nghiệm bộ dữ liệu 4 lớp 58
Phụ lục 2 Kết quả thử nghiệm bộ dữ liệu 8 lớp 60
Phụ lục 3 Kết quả thử nghiệm bộ dữ liệu 12 lớp 62
Phụ lục 4 Kết quả thử nghiệm bộ dữ liệu 16 lớp 64
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 68
KẾT LUẬN 68
HƯỚNG PHÁT TRIỂN 68
TÀI LIỆU THAM KHẢO 69
Trang 6DANH MỤC CÁC HÌNH VẼ
Hình 1.1 Sơ đồ khối mô tả giải thuật di truyền tổng quát 6
Hình 1.2 Ví dụ phương pháp lai ghép có chu trình 15
Hình 2.1 Đồ thị hàm số f(x) 26
Hình 2.2 Biểu đồ hiển thị giá trị fitness qua mỗi thế hệ 28
Hình 3.1 Kết quả giá trị tối ưu bài toán Knapsnack áp dụng thư viện genalg 33
Hình 3.2 Biểu đồ hiển thị giá trị tối ưu và giá trị trung bình áp dụng thư viện genalg .34
Hình 3.3 Biểu đồ hiển thị giá trị tối ưu và giá trị trung bình áp dụng thư viện GA.36 Hình 3.4 Chu trình của bài toán người du lịch với tập dữ liệu mẫu eurodist 43
Hình 3.5 Chu trình của bài toán người du lịch với tập dữ liệu mẫu USCA50 45
Hình 3.6 Sơ đồ biểu diễn một vòng lặp của giải thuật di truyền trong bài toán thời khoá biểu 49
Hình 3.7 Đồ thị kết quả fitness với số lớp được xếp là 4 lớp 58
Hình 3.8 Kết quả thời khóa biểu bộ dữ liệu thứ 1 59
Hình 3.9 Đồ thị kết quả fitness với số lớp được xếp là 8 lớp 60
Hình 3.10 Kết quả thời khóa biểu bộ dữ liệu thứ 2 61
Hình 3.11 Đồ thị kết quả fitness với số lớp được xếp là 12 lớp 62
Hình 3.12 Kết quả thời khóa biểu bộ dữ liệu thứ 3 63
Hình 3.13 Đồ thị kết quả fitness với số lớp được xếp là 16 lớp 64
Hình 3.14 Kết quả thời khóa biểu bộ dữ liệu thứ 4 66
Trang 7DANH MỤC BẢNG
Bảng 3.1 Dữ liệu thử nghiệm bài toán cái túi 30
Bảng 3.2 Ví dụ thời khóa biểu minh họa 50
Bảng 3.3 Danh sách lớp học và phòng học 53
Bảng 3.4 Danh sách môn học 53
Bảng 3.5 Danh sách tập phân công 54
Bảng 3.6 Danh sách tập phân công giáo viên – môn học 55
Bảng 3.7 Kết quả thử nghiệm 56
Trang 8MỞ ĐẦU
1 Lý do chọn đề tài:
Trong ngành khoa học máy tính, bài toán tìm kiếm lời giải tối ưu cho các bàitoán là vấn đề đang được các nhà khoa học rất quan tâm Mục đích là tìm ra lời giảitố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 trên đồ thị) sử dụngphươ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ôngtin 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ếmnhằm giảm thời gian cần thiết cho việc tìm kiếm Tuy nhiên, trong thực tế có nhiềubài toán tối ưu với không gian tìm kiếm rất lớn mà chúng ta cần phải giải quyết Vìvậy, việc đòi hỏi thuật toán chất lượng cao và sử dụng kỹ thuật trí tuệ nhân tạo đặcbiệt rất cần khi giải quyết các bài toán có không gian tìm kiếm lớn Giải thuật ditruyền (genetic algorithm GAs) [2] 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
Giải thuật di truyền lấy ý tưởng từ quá trình tiến hóa tự nhiên, xuất phát từmột lớp các lời giải tiềm năng ban đầu, thuật giải di truyền tiến hành tìm kiếm trênkhông gian lời giải bằng cách xây dựng lớp lời giải mới tương đối tốt, có thể là tốtnhất Quá trình xây dựng lớp lời giải mới được tiến hành dựa vào việc chọn lọc, laighép, đột biến từ lớp lời giải ban đầu Quần thể mới được trải qua quá trình tiếnhóa: Ở mỗi thế hệ lai tái sinh các lời giải tương đối tốt hơn các thế hệ lời giải banđầu, trong khi các lời giải “xấu” thì chết đi
Hiện nay giải thuật di truyền được ứng dụng rộng rãi giải các bài toán trongcác lĩnh vực như khoa học, kinh doanh và giải trí Phải kể đến là bài toán người dulịch (TSP), bài toán xếp thời khóa biểu…[1] [7] [12] [13] [18]
Một trong những ngôn ngữ sử dụng thành công ý tưởng của giải thuật ditruyền là R R là một phần mềm sử dụng chính trong cho phân tích thống kê và đồthị Nó rất cần thiết và quan trọng đối với các nhà nghiên cứu trong nhiều ngànhnhư sinh học, địa lý, toán học R có rất nhiều package hỗ trợ cho việc phân tích dữ
Trang 9liệu, ví dụ như boot, class, cluster, lattice, moments, hexbin Ngoài ra, trong đó cómột số package đặc biệt hỗ trợ giải thuật di truyền như: genalg, GA.
Với kiến thức đã tìm hiểu được về giải thuật di truyền, ngôn ngữ R và được
sự định hướng của thầy hướng dẫn, em đã lựa chọn đề tài “Nghiên cứu giải thuật
di truyền trên R và ứng dụng” làm đề tài nghiên cứu.
2 Lịch sử nghiên cứu:
Qua khảo sát và tìm hiểu ý tưởng từ lý thuyết đến ứng dụng liên quan đếnnội dung đề tài, chúng tôi nhận thấy các bài toán cái túi, người du lịch (TSP), xếpthời khóa biểu là những bài toán tương đối cũ, tuy nhiên hướng tiếp cận ứng dụnggiải thuật di truyền vào bài toán thời khóa biểu trên ngôn ngữ R là một hướng đimới Qua đề tài hy vọng sẽ cung cấp một hướng đi tiềm năng để giải quyết bài toáncái túi, người du lịch (TSP), xếp thời khóa biểu THCS hay một số lớp bài toántương tự
3 Mục đích nghiên cứu:
Nghiên cứu, tìm hiểu giải thuật di truyền và các packages về giải thuật ditruyền trong R trên cơ sở đó tiếp cận để giải quyết một số ứng dụng trong thực tế ví
dụ như bài toán cái túi, người du lịch (TSP), xếp thời khóa biểu THCS
4 Đối tượng và phạm vi nghiên cứu:
- Tìm hiểu giải thuật di truyền.
- Tìm hiểu ngôn ngữ R
- Tìm hiểu giải thuật di truyền trên R
- Nghiên cứu một số ứng dụng giải thuật di truyền trên R cho bài toán cái túi,người du lịch (TSP), xếp thời khóa biểu THCS
5 Tóm tắt nội dung luận văn:
Luận văn gồm các chương có nội dung như sau:
2
Trang 10CHƯƠNG 1 GIẢI THUẬT DI TRUYỀN
Trong chương, trình bày các khái niệm, thuật ngữ liên quan đến giải thuật ditruyền cá thể, quần thể, các phép toán trong thuật giải Các phương pháp lai ghép,đột biến, các tham số và điều kiện dừng của thuật giải Ví dụ minh họạ cụ thể sựhoạt động cơ bản của giải thuật di truyền
CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN TRÊN R
Nội dung chương tìm hiểu ngôn ngữ R và các thư viện được xây dựng dựatrên ý tưởng của giải thuật di truyền Ngoài ra, tìm hiểu cơ chế hoạt động, cú pháp,phương thức sử dụng vận dụng vào một số bài toán cụ thể Nội dung trong chươnglàm cơ sở, nền tảng trong việc sử dụng thư viện GA cho thực nghiệm chương sau
CHƯƠNG 3 THỰC NGHIỆM
Tìm hiểu và định nghĩa bài toán cái túi, người du lịch, xếp thời khóa biểuTHCS và hướng tiếp cận sử dụng giải thuật di truyền giải các bài toán Trong đóvận dụng thư viện genalg và GA cho bài toán cái túi Đối với bài toán người du lịch
và thời khóa biểu sử dụng thư viện GA để tiếp cận tìm lời giải Nội dung trongchương cũng cho chúng ta một số lời giải, kết quả tốt làm cơ sở để đánh giá lựachọn thư viện dùng giải các lớp bài toán khác
6 Phương pháp nghiên cứu:
- Phương pháp đọc tài liệu
- Phương pháp phân tích, tổng hợp
- Phương pháp quan sát, thực nghiệm, thảo luận, trình bày, tham khảo ý kiếnđánh giá
Trang 11CHƯƠNG 1 GIẢI THUẬT DI TRUYỀN
1.1 Lịch sử về giải thuật di truyền
Từ trước đến nay, trong các nghiên cứu và các ứng dụng trong tin học đãxuất hiện nhiều bài toán chưa tìm ra phương pháp giải nhanh và hợp lý, phần lớn đó
là các bài toán tối ưu nảy sinh từ các ứng dụng trong thực tế Để giải các bài toánnày người ta thường tìm đến các thuật giải nhanh và hiệu quả nhưng kết quả thuđược chỉ là gần tối ưu Trong nhiều trường hợp chúng sử dụng thuật giải xác suất,tuy không đảm bảo kết quả tối ưu nhưng có thể chọn các kết quả sao cho sai số cóthể chấp nhận được, nhỏ như mong muốn
Từ các yêu cầu thực tế đặt ra, có nhiều vấn đề cần được giải quyết cho đếnnhững năm 1950 và 1960 A.S Fraser là người tiên phong nêu lên sự tương đồnggiữa sự tiến hóa của sinh vật và chương trình tin học giả tưởng về GeneticAlgorithm Tuy nhiên, chính John Henry Holland là người triển khai ý tưởng vàphương thức giải quyết vấn đề dựa theo quá trình tiến hóa của sinh vật Từ nhữngbài giảng, bài báo cáo của mình, ông cùng các đồng nghiệp đã đúc kết các ý tưởng
vào trong cuốn sách đầu tay “Adaptation in Natural and Altificial Systems” được
xuất bản năm 1975 [8] Lần đầu tiên Holland nghiên cứu thuật giải này chúng hoàntoàn không có tên, do nguồn gốc của phương pháp này là từ các gen di truyền nênHolland đã đặt tên là thuật giải di truyền Thuật giải di truyền hay thuật toán tiếnhóa nói chung được hình thành dựa trên quan niệm cho rằng, quá trình tiến hóa tựnhiên là hoàn hảo nhất, hợp lý nhất và tự nó mang tính tối ưu Quan niệm này đượcxem như là một tiên đề đúng không chứng minh được, nhưng phù hợp với thực tếkhách quan Quá trình tiến hóa thể hiện tính tối ưu ở chỗ thế hệ sau bao giờ cũng tốthơn, phát triển hơn, hoàn thiện hơn thế hệ trước Tiến hóa tự nhiên được duy trì nhờhai quá trình cơ bản là: sinh sản và chọn lọc tự nhiên Xuyên suốt quá trình tiến hóa
tự nhiên, các thế hệ mới luôn được sinh ra để bổ sung, thay thế thế hệ cũ Cá thể nào
4
Trang 12phát triển, thích ứng với môi trường sẽ tồn tại, cá thể nào không thích ứng sẽ bị đàothải Sự thay đổi môi trường là động lực thúc đẩy quá trình tiến hóa [4].
1.2 Thuật ngữ sinh học
1.2.1 Cá thể
Tất cả các sinh vật sống bao gồm các tế bào, mỗi tế bào tương ứng với một
bộ nhiễm sắc thể Nhiễm sắc thể là mỗi chuỗi ADN đại diện cho một cơ thể của cáthể Đơn vị nhiễm sắc thể là gen, dãy ADN Mỗi gen được mã hóa một phần củaprotein Về cơ bản có thể nói rằng mỗi gen được mã hóa một đặc điểm của cơ thểsinh vật Ví dụ như màu của mắt Mỗi đặc điểm có thể được cài đặt (xanh, nâu) gọi
là alen Mỗi gen có một vị trí riêng trong nhiễm sắc thể
Một cơ chế di truyền đầy đủ (tất cả các nhiễm sắc thể) được gọi là tập gen.Tập hợp trình tự các gen trong bộ gen được gọi là kiểu di truyền, nó bao gồm nhưtính chất vật lý, tính cách của mỗi cá thể, giống như màu mắt, thông minh…
1.2.2 Sinh sản
Trong suốt quá trình sinh sản, tái tổ hợp (lai ghép) Các gen từ cơ thể bố mẹđược kết hợp tạo thành một nhiễm sắc thể mới Cá thể mới được tạo ra có thể xảy raquá trình đột biến Đột biến có nghĩa là thành phần ADN đã bị thay đổi Các thayđổi chủ yếu là do lỗi sao chép từ gen bố mẹ Sự phù hợp của sinh vật được đo bởi
sự thành công của sinh vật đó trong đời sống của mình
1.3 Cơ bản về giải thuật di truyền
Trong lĩnh vực nghiên cứu giải thuật di truyền người ta dùng thuật ngữ vaymượn của di truyền học như: cá thể, nhiễm sắc thể, gen, quần thể, độ thích nghi,
chọn lọc, lai ghép, đột biến, v.v… Trong đó cá thể (individual, genotypes, structure)
biểu diễn một lời giải, giải pháp của bài toán, không giống như trong tự nhiên một
cá thể có thể có nhiều nhiễm sắc thể, ở đây chúng ta quy ước mỗi cá thể chỉ có một
nhiễm sắc thể (chromosome) Các nhiễm sắc thể là một cá thể là một chuỗi tuyến
Trang 13tính, trong nhiễm sắc thể có thể có các đơn vị nhỏ hơn đó là gen Quần thể
(population) là một tập hợp hữu hạn xác định các cá thể, trong giải thuật di truyền,
quần thể là một tập các cá thể biểu diễn một tập các lời giải Các phép toán chọn lọc
(selection), lai ghép (crossover), đột biến (mutation) được thực hiện trên quần thể
để tạo ra một quần thể mới [2] Một bài toán được giải bằng giải thuật di truyềnthông thường phải qua các bước như sau:
B1: Biểu diễn lời giải của bài toán (hay nhiễm sắc thể) bằng chuỗinhị phân, chuỗi ký tự, số thập phân, …
B2: Khởi tạo quần thể ban đầu gồm N cá thể một cách ngẫu nhiên
B3: Xây dựng hàm thích nghi làm tiêu chuẩn đánh giá các cá thểtheo độ thích nghi của chúng
B4: Xác định xác suất lai tạo, xác suất đột biến, …
B5: Xây dựng các phép toán lai tạo, chọn lọc, đột biến
Lưu đồ giải thuật di truyền:
Hình 1.1 Sơ đồ khối mô tả giải thuật di truyền tổng quát
6
đáp ứng yêu cầu chưa?
Tính độ thích nghi của cá thể
Lai tạo
Đột biến
Chọn lọc
Trang 141.4 Các thành phần trong giải thuật di truyền
1.4.1 Biểu diễn nhiễm sắc thể
Một nhiễm sắc thể biểu diễn một giải pháp, lời giải của bài toán Một nhiễmsắc thể có thể chứa nhiều gen khác nhau để quy định một hay nhiều tính trạng nào
đó Có nhiều phương pháp biểu diễn nhiễm sắc thể như: biểu diễn nhị phân, biểudiễn sử dụng hoán vị, biểu diễn bằng giá trị, biểu diễn theo cấu trúc,
dụng nhất, mỗi nhiễm sắc thể được biểu diễn bằng chuỗi nhị phân, mỗi bit miêu tảđặc tính của nhiễm sắc thể
Ví dụ: Hai nhiễm sắc thể được biểu diễn thành chuỗi nhị phân như sau
Như vậy, biểu diễn nhị phân truyền thống có một số bất lợi khi áp dụng giảithuật di truyền giải các bài toán cần độ chính xác cao, nhưng đối với các bài toánkhông gian với số chiều lớn, thì chiều dài của vectơ nhị phân lớn nên thuật giải sẽlàm việc kém hiệu quả
quan đến trình tự Biểu diễn loại này phù hợp với các bài toán như bài toán người
du lịch, bài toán lập lịch, … Với mỗi giải pháp là một chuỗi các số biểu diễn mộtthứ 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
Trong bài toá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ố
Trang 15mà người du lịch đi qua Ví dụ điển hình của phương pháp biểu diễn sử dụng hoán
vị là bài toán người du lịch (Travelling Salesman Problem – TSP)
lời giải của bài toán bằng nhị phân hay hoán vị thường không hiệu quả 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ênquan đến bài toán như số nguyên, số thực, kí tự cho đến các đối tượng phức tạp hơn
trong quần thể chiếm một tỷ lệ trong vòng tròn (Roulette), có độ rộng tỷ lệ với giá
trị hàm mục tiêu của cá thể (nhiễm sắc thể) Với mỗi lần quay vòng tròn Roulette tanhận được một cá thể và coi như đó là cách lựa chọn cá thể cho việc lai tạo
Trang 16Trong đó: pop_size: kích thước của một quần thể đang xét.
eval(vi): Hàm đánh giá độ thích nghi của cá thể vi
Quá trình chọn lọc được thực hiện bằng cách quay bánh xe Roulette vớipop_size lần Mỗi lần chọn một nhiễm sắc thể từ quần thể cũ vào quần thể mới theocách sau:
- Sinh ngẫu nhiên một số r trong khoảng [0 1]
- Nếu r<q1 thì chọn nhiễm sắc thể đầu tiên (v1), ngược lại chọn nhiễm sắcthể thứ i, vi (2 ¿ i ¿ pop_size) sao cho qi-1< r ¿ qi
Theo phương pháp này việc một nhiễm sắc thể đượ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 có thể dẫn đến sự hội
tụ chậm và nhiễm sắc thể có độ thích nghi cao cũng không khác so với các nhiễmsắc thể khác
từ quần thể hiện tại, cá thể tốt nhất trong m cá thể trên được đưa vào quần thể mới.
Tiến hành thực hiện N (kích thước quần thể mới) bước chọn như vậy ta thu được
một quần thể mới Trong đó m được gọi là kích thước cạnh tranh.
Trang 171.4.3 Phương pháp lai ghép
Lai ghép trong tự nhiên là sự kết hợp các tính trạng của bố mẹ để tạo ra cácthế hệ con Trong giải thuật di truyền, lai ghép được coi là sự trao đổi thông tin giữacác lời giải, tổ hợp các tính chất trong hai lời giải của cha mẹ để sinh ra một lời giảimới có đặc tính mong muốn là tốt hơn thế hệ bố mẹ Trong giải thuật di truyền córất nhiều phương pháp lai ghép được sử dụng khác nhau như: lai ghép một điểm
(One Point Crossover), lai ghép đa điểm (Multi Point Crossover), ánh xạ từng phần (Partial Mapped Crossover – PMX), lai ghép có trật tự (Order Crossever – OX), lai ghép dựa trên vị trí (Position Based Crossver – PBX), lai ghép thứ tự tuyến tính (Linear Order Crossever – LOX), … Tuỳ thuộc vào từng bài toán, từng cách biểu
diễn nhiễm sắc thể mà chúng ta sẽ sử dụng phương pháp lai ghép phù hợp
ghép đơn giản nhất, nó được sử dụng cho hầu hết tất cả các phương pháp biểu diễn.Với cặp bố, mẹ X, Y là các vectơ n chiều, toán tử lai ghép một điểm sẽ chọn ngẫunhiên một vị trí k ¿)
Với phương pháp lai ghép một điểm thường được sử dụng trong cách biểudiễn nhiễm sắc thể là chuỗi nhị phân.Ví dụ: Lai ghép với điểm k=10
Con1: X’=11010001011110010111 Con2: Y’=11010111000000011101
chọn ngẫu nhiên k điểm j1, j2, …, jk từ bố X, mẹ Y, sao cho 1 ≤ j1≤ j2≤ …<n, để tạo rathế hệ con X’, Y’bằng cách đánh số các đoạn [ji, ji+1] từ 0, khi đó: cá thể con X’ đượctạo ra bằng cách chọn lần lượt các đoạn gen cho cá thể con X’ như sau: x’ i lấy bằng
xi tại những đoạn có số hiệu chẵn và lấy yi tại những đoạn có số hiệu lẻ Tương tự
10
Trang 18cho cá thể con Y’ được tạo ra bằng cách chọn gen yi’ lấy bằng yi tại những đoạn có
số hiệu lẻ
Ví dụ: Giả sử chọn giá trị k =4, tương ứng với các điểm 5, 9, 15, 18
Con1: X’=11010|1011|111010|101|00 Con2: Y’=11100|0010|100000|111|01
Lingde đề nghị [8], phương pháp tạo ra con mới bằng cách chọn một chuỗi con từcha, mẹ đồng thời bảo toàn thứ tự và vị trí của tối đa cá thể của cha, mẹ kia Mộtchuỗi con được chọn bằng cách chọn hai điểm cắt ngẫu nhiên, được dùng làm haigiới hạn cho các thao tác hoán vị và kết hợp với một thuật toán sửa chữa đặc biệt đểgiải quyết những vị trí bất hợp lệ Thuật toán gồm các bước sau:
- Chọn hai điểm cắt nhau cùng với một chuỗi một cách ngẫu nhiên Chuỗicon được định nghĩa bởi hai điểm cắt được gọi là ánh xạ từng phần
- Trao đổi hai chuỗi con giữa hai nhiễm sắc thể cha, mẹ để tạo ra nhiễm sắcthể con
- Xác định ánh xạ giữa các thành phần ánh xạ
- Hợp thức cá thể con tương ứng với các quan hệ ánh xạ
Ví dụ minh hoạ cho phương pháp: trong bài toán người du lịch gồm 9 thành phốbài toán được biểu diễn bằng phương pháp hoán vị các chu trình của các thành phố
Trang 19Cá thể con 1: x x x | 6 4 8 9 | x x
Cá thể con 2: x x x | 2 4 7 5 | x x
Cuối cùng điều chỉnh các quan hệ ánh xạ và bổ sung các thành phố trong hai
cá thể con mà không có xung đột Cá thể con 1: 5 3 1 | 6 4 8 9 | 2 7
Cá thể con 2: 1 8 3 | 2 4 7 5 | 6 9
bằng cách chọn một chuỗi con từ một cha, mẹ và bảo tồn thứ tự tương đối của cha,
mẹ kia Lai ghép có trật tự (OX) có thể thực hiện thông qua các bước sau:
- Chọn ngẫu nhiên một chuỗi con từ cá thể cha, mẹ
- Tạo ra các cá thể con bằng cách sao chép chuỗi con tương ứng vào những
vị trí tương ứng trong cá thể cha, mẹ Các vị trí khác xem như chưa biết
- Tạo ra một trình tự bắt đầu từ điểm cắt của cha (mẹ) được chọn và xoácác gen đã được chọn ở mẹ (cha)
- Cuối cùng bổ sung các gen vào cá thể được chọn bắt đầu điểm cắt
Ví dụ: Cá thể cha: 9 3 | 8 5 7 1 | 6 4 2 Cá thể mẹ: 3 5 | 2 6 1 4 | 8 7 9
Phân đoạn từ hai điểm cắt để tạo ra cá thể con như sau:
Con 1: x x | 8 5 7 1 | x x x Con 2: x x | 2 6 1 4 | x x xTạo ra một thứ tự bắt đầu từ điểm cắt, cá thể được chọn ở đây là cá thể cha:
6 – 4 – 2 – 9 – 3 – 8 – 5 – 7 – 1
Và xoá các gen đã có trong cá thể mẹ: 9 – 3 – 8 – 5 – 7
Bổ sung các gen vào trong con 2 bắt đầu điểm cắt ta được: 5 7 2 6 1 4 9 3 8
12
Trang 20Tương tự với cá thể con 1 bắt đầu điểm cắt ta được: 6 4 8 5 7 1 9 3 2
ghép đồng nhất cho mã hoá theo định nghĩa đột biến kết hợp với một thủ tục sửachữa Toán tử lai ghép đồng nhất được đề nghị cho mã hoá chuỗi bit bởi (Syswerda)[8] Ý tưởng của phương pháp lai ghép dựa trên vị trí và kết hợp sử dụng mặt nạ(nhị phân) làm tiêu chuẩn lựa chọn gen của bố mẹ Với mỗi giá trị của mặt nạ, nếumặt nạ có giá trị là 1 thì cá thể con sẽ nhận gen của cha, ngược lại là gen của mẹ.Các bước thực hiện thuật toán như sau: Giả sử nhiễm sắc thể cha, mẹ tương ứng X,
Y và mặt nạ M sẽ tạo ra cá thể con X’
Ví dụ: Cá thể cha: 9 3 1 2 4 7 5 6 8 Cá thể mẹ: 1 7 3 6 4 8 9 2 5
Giả sử ta có mặt nạ M như sau: 101011100
Thực hiện lai ghép tạo ra cá thể con bằng cách, với mỗi giá trị tương ứng củamặt nạ M, nếu m[i]=1, thì cá thể con nhận gen của cha, ngược lại m[i]=0 thì cá thểcon nhận gen của mẹ Trong quá trình thực hiện kết hợp với thuật toán sửa chữa đểtránh các xung đột Trong ví dụ ta thực hiện từng bước như sau:
- Giá trị m[1]=1 tức gen đầu tiên của cá thể con X’ nhận gen của cá thể cha,nếu trong cá thể con chưa nhận gen đó: 9 x x x x x x x x
- Giá trị m[2]=0 gen thứ 2 của cá thể con X’ nhận gen của cá thể mẹ, nếutrong cá thể con chưa tồn tại gen đó: 9 7 x x x x x x x
- Tương tự với các giá trị m[i], ta nhận cá thể con X’: 9 7 3 6 1 2 4 8 5
một sửa đổi của lai ghép dựa trên thứ tự Lai ghép dựa trên thứ tự có khuynh hướngtruyền những vị trí tương đối với các gen thay vì những vị trí tuyệt đối Vì lý donày, người ta phát triển một biến thể của OX gọi là lai ghép thứ tự tuyến tính (LOX)
Trang 21trong đó nhiễm sắc thể được xem xét tuyến tính thay vì xoay vòng LOX làm việcnhư sau:
- Chọn ngẫu nhiên chuỗi con từ hai cá thể cha, mẹ
- Xoá các gen đã xuất hiện ở vùng chọn ở cá thể cha, mẹ và đánh dấu các
cá thể con theo cách mỗi vị trí của nó xuất phát từ một vị trí trong các cha, mẹ Laighép có chu trình giống với lai ghép dựa trên vị trí, nó chọn một số gen từ cá thểcha hoặc mẹ và các gen còn lại được chọn từ cá thể cha hoặc mẹ khác Cụ thể chúng
ta biểu diễn lai ghép có chu trình làm việc như sau:
- Tìm một chu trình được xác định bởi những vị trí tương ứng của các kýhiệu giữa các cá thể cha, mẹ
- Sao chép các gen trong chu trình vào cá thể con bởi những vị trí tươngứng trong một cá thể cha hoặc mẹ
14
Trang 22- Xác định các ký hiệu còn lại cho cá thể con bằng cách xoá những ký hiệutrong một chu trình của cá thể cha mẹ khác.
- Điền các cá thể con với các ký hiệu còn lại
Ví dụ: Cá thể cha: 1 2 3 4 5 6 7 8 9 Cá thể mẹ: 9 3 7 8 2 6 5 1 4
Hình 1.2 Ví dụ phương pháp lai ghép có chu trình
1.4.4 Toán tử đột biến
Đột biến có thể sinh cá thể con có thể tốt hơn hoặc xấu hơn cá thể bố mẹ của
nó, xác suất đột biến xảy ra thấp hơn lai ghép và đột biến góp phần làm tăng quá
trình hội tụ Có nhiều phương pháp đột biến như: Đột biến đảo ngược (Inversion Mutation), đột biến chèn (Insertion Mutation), đột biến thay thế (Displacement Mutation), đột biến tương hỗ (Reciprocal Exchange Mutation), đột biến chuyển dịch (Shift Mutation)…
nhiên một đoạn trong nhiễm sắc thể và thực hiện hoán vị đoạn nhiễm sắc thể đó
Ví dụ: Giả sử vị trí chọn đột biến bắt đầu tại 4 có chiều dài 4 như sau:
nhiễm sắc thể và chèn vào vị trí ngẫu nhiên khác trong cùng nhiễm sắc thể
Trang 23Ví dụ: Nhiễm sắc thể: 9 4 2 5 3 8 7 6 1
chèn thì chỉ chọn một gen và chèn vào vị trí thích hợp, đột biến thay thế chọn ngẫunhiên một đoạn gen và chèn vào vị trí tuỳ ý
hoán vị chúng trên cùng một nhiễm sắc thể
chọn sang trái hoặc sang phải
1.5 Các tham số của giải thuật di truyền
1.5.1 Kích thước quần thể
Kích thước quần thể cho biết số lượng cá thể trong một quần thể (trong mộtthế hệ) Qua các nghiên cứu cũng như các thử nghiệm đã cho thấy nếu kích thướcquần thể quá ít thì quá trình lai tạo sẽ ít và không gian tìm kiếm nhỏ vì vậy có thể bỏqua các lời giải tốt Nhưng nếu kích thước quần thể quá lớn, tuy không gian tìm
16
Trang 24kiếm nhiều có khả năng đạt được kết quả tốt, nhưng tốc độ xử lý sẽ chậm, tốn nhiềutài nguyên và sẽ có ảnh hưởng đến thuật giải
1.5.2 Xác suất lai ghép
Lai ghép được xem là tổ hợp các tính chất của cha mẹ để sinh ra cá thể mới
có đặc tính mong muốn là tốt hơn thế hệ cha mẹ của nó Xác suất lai ghép cho biếtviệc lai ghép tạo ra thế hệ mới được thực hiện mức độ như thế nào Nếu xác suất laighép là pc , khi đó khả năng để một cá thể được lai ghép là pc Nếu không thực hiệnlai ghép, con sinh ra sẽ giống hoàn toàn bố mẹ Nếu được lai ghép, con sinh ra sẽ sởhữu các tính chất tốt của cả cha và mẹ
1.5.3 Xác suất đột biến
Phép đột biến làm cho chất liệu di truyền thêm phong phú, hy vọng góp phần
làm tăng nhanh quá trình hội tụ Nếu xác suất đột biến là p m, khi đó khả năng để mỗi
gen của một nhiễm sắc thể bất kỳ bị đột biến là p m Toán tử đột biến có tác dụngngăn ngừa giải thuật di truyền rơi vào tình trạng cực trị địa phương, tuy nhiên nếu
mà thực hiện đột biến với xác suất quá cao sẽ biến giải thuật di truyền thành giảithuật tìm kiếm ngẫu nhiên
1.6 Tổng kết chương I
Trong chương, trình bày các nguồn gốc ra đời và phát triển của thuật giải ditruyền, các khái niệm liên quan đến thuật giải di truyền và một số thuật ngữ được sửdụng trong thuật giải như cá thể, quần thể, các phép toán trong thuật giải Cácphương pháp lai ghép, đột biến, các tham số và điều kiện dừng của thuật giải
Trang 26CHƯƠNG 2 GIẢI THUẬT DI TRUYỀN TRÊN R
2.1 Giới thiệu ngôn ngữ R
Năm 1996, hai nhà thống kê học Ross Ihaka và Robert Gentleman lúc đóthuộc trường đại học Auckland, New Zealand phác hoạ một ngôn ngữ mới cho phântích thống kê mà họ đặt tên là R Sáng kiến này được rất nhiều nhà thống kê họctrên thế giới tán thành và tham gia vào việc phát triển R Cho đến nay, ngày càng cónhiều nhà thống kê học, toán học, nghiên cứu trong mọi lĩnh vực đã chuyển sang sửdụng R để phân tích dữ liệu khoa học
Xét về bản chất, R là ngôn ngữ máy tính đa năng, có thể sử dụng cho nhiều
mục tiêu khác nhau: từ tính toán đơn giản, toán học giải trí (recreational mathematics), tính toán ma trận (matrix) đến các phân tích thống kê phức tạp Vì là
một ngôn ngữ, cho nên người ta có thể sử dụng R để phát triển thành các phần mềmchuyên cho một vấn đề tính toán cá biệt
R là một ngôn ngữ tương tác (interactive language), có nghĩa là khi chúng ta
ra lệnh, và nếu lệnh theo đúng “văn phạm” thì R sẽ “đáp” lại bằng một kết quả Và
sự tương tác tiếp tục cho đến khi chúng ta đạt được yêu cầu “Văn phạm” chung của
R là một lệnh (command) hay hàm (function) Mà đã là hàm thì phải có thông số;
cho nên theo sau hàm là những thông số mà chúng ta phải cung cấp Cú pháp chungcủa R là như sau:
đối tượng <- function(thông số 1, thông số 2, …, thông số n)
2.2 Một số package liên quan đến giải thuật di truyền
Trong R có nhiều thư viện được xây dựng trên ý tưởng của giải thuật ditruyền, các thư viện được xây dựng với nhiều mục đích khác nhau, nhằm giải cáclớp bài toán khác nhau cụ thể như:
Trang 27- Thư viện gaotim [11], rgenoud [19] vận dụng giải thuật di truyền tìm lời giảitối ưu cho các hàm một hoặc nhiều biến Các thư viện này tương đối giới hạn nhưkhông hỗ trợ biểu diễn chuỗi nhiễm sắc thể nhị phân hay kiểu số nguyên
- Thư viện rgp [16], GALGO [21] được xây dựng trên ý tưởng lập trình ditruyền nó là một trường hợp đặc biệt của giải thuật di truyền, vì thế nó hạn chếtrong việc biểu diễn nhiễm sắc thể cho các lớp bài toán lập lịch
- Thư viện genalg [20] được xây dựng trên ý tưởng cơ bản của giải thuật di
truyền, tương ứng tìm kiếm giá trị tối ưu với phương thức biểu diễn nhiễm sắc thể là
số thực và chuỗi nhị phân, vì vậy phù hợp các bài toán tối ưu hàm và các bài toánbiểu diễn nhiễm sắc thể là chuỗi nhị phân
- Thư viện GA [15] xây dựng hoàn chỉnh nhất trên ý tưởng giải thuật ditruyền, với các phương thức biểu diễn nhiễm sắc thể và các phép toán di truyềnkhác nhau để tìm giá trị tối ưu như số thực, nhị phân và kiểu vectơ Vì vậy có thểnói GA là thư viện tổng hợp các ý tưởng trên
Trong giới hạn của đề tài chúng tôi tìm hiểu và vận dụng hai thư viện đượcxây dựng giải thuật di truyền là genalg và GA để vận dụng tiếp cận giải các bài toáncái túi, người du lịch và xếp lịch
2.2.1 Package genalg
2.2.1.1 Tổng quan genalg
Package genalg [20] là gói thư viện được xây dựng dựa trên giải thuật di
truyền cơ bản, cho phép người dùng giải các bài toán dựa trên giải thuật mà lời giảicủa bài toán được biểu diễn nhiễm sắc thể và được mã hóa nhị phân hoặc số thực
Trong genalg bao gồm một số hàm như: plot.rbga, rbga, rbga.bin, summary.rbga.
Chức năng và công dụng của các hàm được mô tả tương ứng như sau:
20
Trang 28- Plot.rbga: thực hiện vẽ biểu đồ hiển thị kết quả trong quá trình thực hiện
thuật toán, trên biểu đồ biểu diễn giá trị đánh giá tốt nhất và trung bình trong toàn
bộ tiến trình thực hiện thuật toán
Cú pháp: plot(x, type="default", breaks=10, )
Trong đó: x: là một đối tượng của rbga
Type: một trong các giá trị hist, vars, default Breaks: số giá trị hiển thị trong biểu đồ
…: tham số tùy chọn
- Rbga.bin: hàm giải thuật di truyền đơn giản tìm kiếm giá trị tối ưu, trong đó
hàm đánh giá được người dùng định nghĩa và nhiễm sắc thể được biểu diễn dướidạng chuỗi nhị phân
Cú pháp:
Rbga.bin(stringMin=c(),stringMax=c(),suggestions=NULL,popSize=20,iters=1 00,mutationChance=NA,elitism=NA,monitorFunc=NULL,evalFunc=NULL,sho wSettings=FALSE, verbose=FALSE)
Trong đó:
stringMin Gen có giá trị nhỏ nhất.
stringMax Gen có giá trị lớn nhất
Suggestions Danh sách tham số lựa chọn
popSize Kích thước quần thể
Elitism Số nhiễm sắc thể sẽ được giữ lại và dùng cho thế hệ kế tiếp Giá
trị mặc định là 20% tổng cá thể trong quần thể
Trang 29monitorFunc Phương thức hiển thị xem kết quả sau mỗi thế hệ.
evalFunc Phương thức đánh giá cá thể trong quẩn thể, phương thức do
người dùng định nghĩa
showSettings Nếu true hiển thị các tham số sau khi dừng thuật toán, ngược lại
false Giá trị mặc định là false.
Tương tự như phương thức gbga.bin, trong thư viện còn có rbga, phương
thức tìm kiếm giá trị tối ưu với nhiễm sắc thể được biểu diễn là khoảng giá trị thực
2.2.1.2 Ví dụ minh họa
Ví dụ minh họa sử dụng hàm rbga.bin, cho bài toán sinh chuỗi nhị phân lớn
nhất sử dụng thư viện rbga.bin.
Hàm đánh giá tính giá trị fitness chuỗi nhị phân hiện tại
fitness<- function(string=c()) {
returnFitness = 1 / sum(string);
returnFitness }
Gọi phương thức rbga.bin và cài đặt các tham số như sau:
results=rbga.bin(size=10, mutationChance=0.01, zeroToOneRatio=0.5, evalFunc=fitness)
Kết quả sau khi thực hiện thuật toán:
Trang 30trong gói thư viện là ga nó chứa các tham số được mô tả bằng cú pháp trên R là:
ga(type = c("binary", "real-valued", "permutation"),
fitness, ,min, max, nBits, population = gaControl(type)@population, selection = gaControl(type)@selection, crossover = gaControl(type)@crossover, mutation = gaControl(type)@mutation, popSize = 50,
pcrossover = 0.8, pmutation = 0.1, elitism = max(1, round(popSize * 0.05)), monitor = gaMonitor,
maxiter = 100, run = maxiter, maxfitness = -Inf, names = NULL, suggestions, seed) Trong đó các tham số được mô tả như sau:
Type Kiểu biểu diễn nhiễm sắc thể, cá thể cho bài toán Có 3 cách biểu
diễn: “binary”: kiểu nhị phân; “real-value”: giá trị thực;
Trang 31“permutation”: cho các bài toán liên quan đến loại danh sách Fitness Hàm đánh giá cá thể, hàm có tham số vào là chuỗi nhiễm sắc thể và
giá trị trả về là giá trị biểu diễn cá thể đó
… Các tham số mở rộng cho hàm đánh giá, cho phép hàm đánh giá giữ
lại một vài biến trong quá trình tìm kiếm
Min (max) Giá trị tìm kiếm nhỏ (lớn) nhất trong không gian tìm kiếm nếu cá thể
được biểu diễn dưới dạng số thực; chiều dài nhỏ (lớn) nhất nếu cá thểbiểu diễn dưới dạng danh sách
nBits Số chỉ số bit nếu biểu diễn nhiễm sắc thể dạng nhị phân
population Tên phương thức hoặc số quần thể được khởi tạo ban đầu
Selection Tên phương thức chọn lọc hoặc hàm chiến lược lựa chọn cá thể cho
quần thể kế tiếp dựa trên mục tiêu hàm đánh giá
Crossover Tên phương thức lai ghép hoặc hàm thực hiện lai ghép của các cá thể
trong quần thể
Mutation Tên phương thức đột biến hoặc hàm thực hiện đột biến cá thể
popSize Kích thước quần thể
pcrossover Xác suất lai ghép của quẩn thể giữa các cặp nhiễm sắc thể, giá trị mặc
Monitor Hiển thị quần thể trong quá trình tìm kiếm hàm mặc định là
gaMonitor hiển thị giá trị trung bình và tốt nhất qua mỗi thế hệ.
Maxiter Số lần lặp tối đa khi không tìm được giá trị tối ưu trước khi dừng tìm
kiếm trong GA
Maxfitness Cận trên của giá trị thích khi tìm kiếm trong GA bị ngắt
Names Vector tên của tập biến
Suggestion
s
Ma trận tập lời giải đề xuất bao gồm cả quẩn thể khởi tạo
24
Trang 32Ngoài các tham số trong phương thức GA trên, trong R còn có một số cáctham số khác được xây dựng trong thư viện GA như:
Iter Cho biết thế hệ hiện tại
Population Ma trận quẩn thể có kích thước object@popSize
Fitness Giá trị đánh giá của cá thể trong quần thể hiện tại
Best Giá trị tốt nhất trong mỗi thế hệ tìm kiếm
Mean Giá trị trung bình trong mỗi lần tìm kiếm
Thư viện GA trong R đã được biên dịch theo chuẩn và một trong những yếu
tố quan trọng, quyết định trong thư viện GA là hàm đánh giá cá thể (fitness) Nếu
hàm đánh giá được xây dựng đơn giản thì thuật toán cho lời giải nhanh, ngược lạivới hàm đánh giá phức tạp thì sẽ tăng thời gian tính toán của thuật toán
Như đã nêu trong giải thuật di truyền, một trong các yếu tố góp phần làmtăng, giảm tiến trình hội tụ thuật toán là các phép toán di truyền Trong thư viện GA
đã được xây dựng sẵn một số phép toán chuẩn như sau:
- Phương pháp khởi tạo quẩn thể (population):
object@nbit giá trị nhị phân.
trong khoảng [object@min, object@max].
trị trong khoảng [object@min, object@max].
Như vậy, tham số khởi tạo quẩn thể được xây dựng trong GA theo cấu trúc:
Trang 33- Chọn lọc tuyến tính (Linear rank selection): gabin_lrSelection, gareal_lrSelection, gaperm_nlrSelection.
- Chọn lọc không tuyến tính (Nonlinear rank selection): gabin_nlrSelection, gareal_nlrSelection, gaperm_nlrSelection.
- Chọn lọc bánh xe roulet (roulette wheel): gabin_rwSelection, gareal_rwSelection, gaperm_rwSelection.
- Chọn lọc tranh đấu (tournament selection): gabin_tourSelection, gareal_tourSelection, gaperm_tourSelection.
- Phương pháp lai ghép (crossover):
- Lai ghép một điểm (single point crossover): gareal_spCrossover, gabin_spCrossover.
- Lai ghép đồng dạng (uniform crossover): gareal_uCrossover, gabin_uCrossover.
- Lai ghép vòng (cycle crossover): gaperm_cxCrossover.
- Lai ghép ánh xạ từng phần (partially matched crossover): gaperm_pmxCrossover.
- Lai ghép dựa trên vị trí (position based crossover): gaperm_bpxCrossover.
- Lai ghép có thứ tự (Order crossover): gaperm_oxCrossover.
- Phương pháp đột biến (mutation):
- Đột biến đảo đoạn (simple inversion mutation): gaperm_simMutation.
- Đột biến chèn (insertion mutation): gaperm_ismMutation.
Ngoài các phép toán trên, trong R còn hỗ trợ một số phương thức mặc định
hiển thị một số kết quả trong khi thực hiện thuật toán như gaControl(), summary().
Trang 34Hình 2.3 Đồ thị hàm số f(x)
Định nghĩa hàm fitness trên R:
fitness<- function(x) - f(x)
Giá trị tối ưu của hàm f(x) là giá trị thực nên nhiễm sắc thể được biểu diễn kiểu
“real-value” Tìm giá trị tối ưu sử dụng GA trên R được định nghĩa như sau:
GA <- ga(type = "real-valued", fitness = fitness, min = min, max = max)
Giá trị được tìm thấy qua một số thế hệ như:
Iter = 1 | Mean = -8.953076 | Best = -1.530282
Iter = 2 | Mean = -6.148991 | Best = -1.112692
Iter = 3 | Mean = -3.941457 | Best = -1.11269
……
Iter = 100 | Mean = -2.218994 | Best = -1.00001
Kết quả summary() của thuật toán cho kết quả bao gồm kiểu dữ liệu được thiết kế,
số quần thể được khởi tạo, số lượng quần thể tiến hóa, các thông số về xác suất laighép, đột biến, giá trị tối ưu và số giải pháp được tìm thấy trong ví dụ như sau:
summary(GA)
+ -+
Trang 35| Genetic Algorithm | + -+
GA settings:
Type = real-valued Population size = 50
Trang 36Biểu đồ hiển thị giá trị tối ưu và giá trị trung bình của hàm số f(x)
Hình 2.4 Biểu đồ hiển thị giá trị fitness qua mỗi thế hệ
GA thư viện xây dựng hoàn chỉnh trên ý tưởng giải thuật di truyền với các
phương thức biểu diễn nhiễm sắc thể khác nhau để tìm giá trị tối ưu như số thực,nhị phân và kiểu vectơ Trong thư viện đã xây dựng một số phương thức và cácphép toán cơ bản trong giải thuật di truyền như các phương thức khởi tạo, phép toán
di truyền chọn lọc, lai ghép và đột biến
Trang 37Ngoài các thư viện chúng tôi tìm hiểu như trên còn có một số các thư việnnhư: rgenoud, gaotim vận dụng giải thuật di truyền tìm lời giải tối ưu cho các hàmmột hoặc nhiều biến, thư viện rgp, GALGO được xây dựng trên ý tưởng lập trình ditruyền nó là một trường hợp đặc biệt của giải thuật di truyền.
Như vậy, trong chương chúng tôi đã tìm hiểu sâu về ngôn ngữ R và các thưviện vận dụng ý tưởng GA xây dựng thuật toán Các thư viện trong R chúng tôi đãnghiên cứu, tìm hiểu phương thức thực hiện, cấu trúc của giải thuật di truyền trên R.Trong mỗi thư viện được xây dựng trên R với mỗi gói thư viện được xây dựng dùng
để giải lớp các bài toán khác nhau, như đã trình bày ở trên thư viện genalg giải cáclớp bài toán mà cấu trúc nhiễm sắc thể là chuỗi nhị phân Thư viện trên không phùhợp để tiếp cận giải các bài toán người du lịch, thời khóa biểu Ngoài ra trong R đãxây dựng thư viện GA thuận lợi cho việc tiếp cận giải bài toán người du lịch và thờikhóa biểu Ở chương 3 sẽ trình bày hướng tiếp cận GA trên R cho bài toán cái túi,người du lịch và thời khóa biểu
30
Trang 38CHƯƠNG 3 THỰC NGHIỆM
3.1 Bài toán cái túi
3.1.1 Giới thiệu bài toán
Bài toán cái túi hay bài toán ba lô (knapsack) là bài toán tối ưu tổ hợp thuộc lớp bài toán NP Bài toán được định nghĩa khái quát như sau: trong siêu thị có n đồ vật, đồ vật thứ i có trọng lượng là w i , và có giá trị là v i , Một tên trộm đột nhập vào siêu thị mang theo một cái túi có thể chứa tối đa trọng lượng M Vấn đề được đặt ra
là tên trộm chọn những đồ vật nào để có tổng giá trị lớn nhất sao cho tổng trọnglượng của các đồ vật được chọn phải nhỏ hơn hoặc bằng khả năng chứa của cái túi
Ở đây chúng ta xét bài toán cái túi dạng 0-1 tức là có thể chọn hoặc không chọn một
Áp dụng giải thuật di truyền vào bài toán cái túi
Biểu diễn nhiễm sắc thể: Bài toán cái túi nhị phân được mô tả như trên tức
chọn hoặc không chọn đồ vật thứ i, giả sử ta có n đồ vật, nếu đồ vật được chọn thì
được đánh dấu là 1, ngược lại là 0 Như vậy nhiễm sắc thể hay cá thể là một chuỗinhị phân có kích thước là bằng tổng số đồ vật sẽ chọn Lời giải của bài toán là mộtchuỗi nhị phân thể hiện trình tự của đồ vật được chọn hoặc không chọn
Ví dụ ta có bảng các đồ vật và tương ứng với giá trị và trọng lượng của mỗi đồvật như sau:
Bảng 3.1 Dữ liệu thử nghiệm bài toán cái túi
0
43
13
25
11
34
12
0
232
Trang 3917
19
25
13
Giả sử chọn các đồ vật tuần tự theo nhị phân như:
10101100000=> Tương ứng với giá trị 1 là các đồ vật được chọn: A, C, E, F
Các đồ vật không được chọn: B, D, G, H, I, J, K
Hàm đánh giá: Mục tiêu bài toán cái túi tìm cách chọn các đồ vật sao cho
tổng giá trị lớn nhất và thỏa mãn điều kiện nhỏ hơn hoặc bằng khả năng của cái túi
Cú pháp thực hiện giải thuật di truyền trong R sử dụng thư viện genalg cho bài
toán cái túi:
fitness <- function(x)
{
CurrentItemsBenefit = x %*% dataset$ItemsBenefit CurrentItemsWeight = x %*% dataset$ItemsWeight
if (CurrentItemsWeight > WeightConstrain)
return(0) else
return(-CurrentItemsBenefit)}
Knapsack.bin <- rbga.bin(size =11, popSize = 100, iters = 100,
32
Trang 40mutationChance = 0.01, elitism = T, evalFunc = evalFunc)