1. Trang chủ
  2. » Luận Văn - Báo Cáo

NGHIÊN CỨU GIẢI THUẬT DI TRUYỀN TRÊN R VÀ ỨNG DỤNG

82 878 3

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 1,67 MB
File đính kèm Luan Van Xuan Huyen.rar (217 KB)

Nội dung

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 1

BỘ 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 2

LỜ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 3

MỤ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 4

1.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 5

3.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 6

DANH 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 7

DANH 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 8

MỞ ĐẦ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 9

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.

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 10

CHƯƠ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 11

CHƯƠ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 12

phá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 13

tí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 14

1.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 15

mà 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 16

Trong đó: 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 17

1.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 18

cho 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 19

Cá 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 20

Tươ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 21

trong đó 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 23

Ví 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 24

kiế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 26

CHƯƠ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 29

monitorFunc 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 30

trong 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 32

Ngoà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 34

Hì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 36

Biể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 37

Ngoà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 38

CHƯƠ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 39

17

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 40

mutationChance = 0.01, elitism = T, evalFunc = evalFunc)

Ngày đăng: 11/04/2016, 21:52

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Trần Việt Chương (2005), Thuật toán di truyền và ứng dụng giải một lớp bài toán tối ưu. Luận Văn Thạc Sĩ, Đại Học Sư Phạm Hà Nội Sách, tạp chí
Tiêu đề: Thuật toán di truyền và ứng dụng giải một lớpbài toán tối ưu
Tác giả: Trần Việt Chương
Năm: 2005
[2] Hoàng Kiếm, Lê Hoàng Thái (2000), Thuật giái di truyền, cách giải tự nhiên các bài toán trên máy tính, NXB Giáo dục Sách, tạp chí
Tiêu đề: Thuật giái di truyền, cách giải tựnhiên các bài toán trên máy tính
Tác giả: Hoàng Kiếm, Lê Hoàng Thái
Nhà XB: NXB Giáo dục
Năm: 2000
[3] Nguyễn Thị Thiếp (2011), Phân tích và xử lý dữ liệu bằng ngôn ngữ R, Khóa luận tốt nghiệp Đại học, Đại học Sư phạm Hà Nội Sách, tạp chí
Tiêu đề: hân tích và xử lý dữ liệu bằng ngôn ngữ R
Tác giả: Nguyễn Thị Thiếp
Năm: 2011
[4] Nguyễn Đình Thúc (2001), Trí tuệ nhân tạo – Lập trình tiến hóa, NXB Giáo dục, Hà Nội Sách, tạp chí
Tiêu đề: Trí tuệ nhân tạo – Lập trình tiến hóa
Tác giả: Nguyễn Đình Thúc
Nhà XB: NXBGiáo dục
Năm: 2001
[5] Nguyễn Văn Tuấn (2005), Phân tích dữ liệu và biểu đồ bằng R, NXB Khoa học Kĩ thuật.Tiếng Anh Sách, tạp chí
Tiêu đề: Phân tích dữ liệu và biểu đồ bằng R
Tác giả: Nguyễn Văn Tuấn
Nhà XB: NXBKhoa học Kĩ thuật.Tiếng Anh
Năm: 2005

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w