Nghiên cứu và xây dựng giải thuật di truyền giải bài toán người đưa thư.Hiện nay và trong tương lai, trí tuệ nhân tạo (Artifiticial Intelligent) đã và đang được nghiên cứu, phát trển mạnh mẽ và được ứng dụng rộng rãi trong cuộc sống. Ví dụ như: các tập đoàn hàng đầu về công nghệ như Microsoft, Google… cũng đã ứng dụng trí tuệ nhân tạo lên những sản phẩm của họ thành công như công nghệ Google Now Của Google, hay Cortana của Microsoft…Trí tuệ nhân tạo còn được ứng dụng trong các lĩnh vực dự báo thảm thọa thiên tai, cũng như trong lĩnh vực y tế... và còn nhiều lĩnh vực khác trong đó có lĩnh vực tính toán thông minh (Computational Intelligent). Trong đó có giải thuật di truyền (Generic Algorithms) đã đem lại những phương pháp mới để giải các bài toán mà nếu áp dụng phương pháp truyền thống sẽ gặp nhiều khó khăn.
Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 1 Đề Tài: Giải thuật di truyền – Generic Algorithms MỤC LỤC LỜI CẢM ƠN 3 A - MỞ ĐẦU 4 Đề tài 4 Lý do chọn đề tài 4 Đối tượng và phạm vi nghiên cứu 4 Mục đích của đề tài 4 Cấu trúc của đồ án 5 B - NỘI DUNG 6 Chương I: Cơ sở Lý Thuyết về giải thuật di truyền 6 1. Giới thiệu giải thuật di truyền 6 2. Ứng dụng của giải thuật di truyền 7 3. Giải thuật di truyền tiêu chuẩn 8 3.1. Hàm mục tiêu 8 3.2. Toán tử lai ghép 8 3.3. Toán tử đột biến 9 3.4. Toán tử tái tạo 9 3.5. Sơ đồ tổn thể của giải thuật 10 3.6. Ví dụ áp dụng giải thuật di truyền 11 4. Cơ chế hoạt động của giải thuật di truyền 12 5. Các phương pháp biểu diễn nhiễm sắc thể 13 Chương II: Bài toán “Người đưa thư”, ứng dụng giải thuật di truyền để giải bài toán “Người đưa thư”. 20 1. Bài toán “Người đưa thư” 20 1.1. Lịch sử 20 1.2. Phát biểu bài toán như sau 20 1.3. Phần tích độ phức tạp 20 Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 2 Đề Tài: Giải thuật di truyền – Generic Algorithms 2. Ứng dụng giải thuật di truyền để giải bài toán người đưa thư, biểu diễn nhiễm sắc thể bằng ký tự 21 2.1. Ghép chéo riêng từng phần (Partailly matched crossover – PMX) 22 2.2. Ghép chéo có thứ tự (Order crossover – OX) 23 2.3. Phép đảo vị trí (Inversion operator) 24 2.4. Phép đột biết 25 Chương III: Môi trường cài đặt ứng dụng và công cụ hỗ trợ lập trình 26 1. Giới thiệu môi trường cài đặt thuật toán 26 2. Ngôn ngữ sử dụng để cài đặt 26 3. Công cụ hỗ trợ lập trình 28 Chương IV: Thiết kế và cài đặt ứng dụng 29 1. Mô tả ứng dụng 29 2. Thiết kế ứng dụng 29 2.1. Thiết kế giao diện người dùng 29 2.2. Thiết kế các đối tượng của bài toán 32 3. Cài đặt ứng dụng 33 3.1. Cài đặt các đối tượng 33 3.1.1. Đối tượng Gene 33 3.1.2. Đối tượng Chromosome 34 3.1.3. Đối tượng Populations 38 3.2. Cài đặt chương trình 41 3.2.1. Cài đặt lớp thao tác cơ sở dữ liệu 41 3.2.2. Cài đặt các form 42 4. Kiểm thử ứng dụng 46 4.1. Bộ dữ liệu 1 46 4.2. Bộ dữ liệu 2 47 4.3. Bộ dữ liệu 3 48 C - KẾT LUẬN 49 TÀI LIỆU THAM KHẢO 50 Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 3 Đề Tài: Giải thuật di truyền – Generic Algorithms LỜI CẢM ƠN Em xin chân thành cảm ơn sự giúp đỡ TS.Phạm Thanh Hà người đã trực tiếp hướng dẫn, chỉ bảo tận tình và tạo điều kiện, giúp đỡ em hoàn thành khóa luận đúng thời hạn. Em xin chân thành cảm ơn tất cả các thầy, cô giáo trong khoa Công nghệ thông tin – trường Đại Học Giao Thông Vận Tải, những người đã nhiệt tình giảng dạy và truyền đạt những kiến thức trong suốt thời gian em học tập tại trường, để em hoàn thành tốt khóa luận. Cuối cùng em xin cảm ơn tất cả các bạn đã góp ý kiến, trao đổi hỗ trợ em trong suốt thời gian vừa qua. Em xin chân thành cảm ơn! Hà Nội, tháng 05 năm 2014 Sinh viên Hà Văn Tân Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 4 Đề Tài: Giải thuật di truyền – Generic Algorithms A - MỞ ĐẦU Đề tài Nghiên cứu và xây dựng giải thuật di truyền giải bài toán người đưa thư. Lý do chọn đề tài Hiện nay và trong tương lai, trí tuệ nhân tạo (Artifiticial Intelligent) đã và đang được nghiên cứu, phát trển mạnh mẽ và được ứng dụng rộng rãi trong cuộc sống. Ví dụ như: các tập đoàn hàng đầu về công nghệ như Microsoft, Google… cũng đã ứng dụng trí tuệ nhân tạo lên những sản phẩm của họ thành công như công nghệ Google Now Của Google, hay Cortana của Microsoft… Trí tuệ nhân tạo còn được ứng dụng trong các lĩnh vực dự báo thảm thọa thiên tai, cũng như trong lĩnh vực y tế và còn nhiều lĩnh vực khác trong đó có lĩnh vực tính toán thông minh (Computational Intelligent). Trong đó có giải thuật di truyền (Generic Algorithms) đã đem lại những phương pháp mới để giải các bài toán mà nếu áp dụng phương pháp truyền thống sẽ gặp nhiều khó khăn. Đối tượng và phạm vi nghiên cứu Đối tượng nghiên cứu Giải thuật di truyền Bài toán người đua thư Phạm vi nghiên cứu Ứng dụng giải thuật di truyền thiết kế giải thuật tìm tru trình ngắn nhất để giải bài toán người đưa thư. Nghiên cứu và cài đặt giải thuật di truyền bằng phương pháp lập trình hướng đối tượng. Mục đích của đề tài Mục đích của đề tài là muốn tìm một hướng tiếp cận mới bằng giải thuật di truyền để giải bài toán người đưa thư. Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 5 Đề Tài: Giải thuật di truyền – Generic Algorithms Cấu trúc của đồ án Nội dung của đồ án được trình bày trong 4 chương: Chương I: Cơ sở lý thuyết về giải thuật di truyền Chương II: Bài toán “Người đưa thư” Ứng dụng giải thuật di truyền để giải bài toán “Người đưa thư”. Chương III: Môi trường cài đặt ứng dụng và công cụ hỗ trợ lập trình. Chương IV: Thiết kế và cài đặt ứng dụng. Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 6 Đề Tài: Giải thuật di truyền – Generic Algorithms B - NỘI DUNG Chương I: Cơ sở lý thuyết về giải thuật di truyền 1. Giới thiệu giải thuật di truyền Giải thuật di truyền (Generic Algorithm, viết tắt là GA) là giải thuật tìm kiếm, chọn lựa các giải pháp tối ưu để giải quyết các bài toán khác nhau dựa trên cơ chế chọn lọc tự nhiên của ngành di truyền học. Trong cơ thể sinh vật, các gene liên kết với nhau theo cấu trúc dạng chuỗi gọi là nhiễm sắc thể, nó đặc trưng cho mỗi loài và quyết định sự sống còn của cơ thể đó. Một loài muốn tồn tại phải thích nghi với môi trường sống, cơ thể nào thích nghi với môi trường hơn thi sẽ tồn tại và sinh sản với số lượng ngày càng nhiều , trái lại những loài không thích nghi với môi trường sống sẽ dần bị diệt chủng. Môi trường tự nhiên luôn biến đổi nên cấu trúc nhiễm sắc thể cũng thay đổi để thích nghi với môi trường, và ở thế hệ sau luôn có độ thích nghi cao hơn thế hệ trước. Cấu trúc này cố được nhờ vào sự trao đổi thông tin ngẫu nhiên giữa môi trường bên ngoài và giữa chúng với nhau. Dựa vào đó các nhà khoa học máy tính xây dựng nên một giải thuật tìm kiếm dựa trên cơ sở chọn lọc tự nhiên và quy luật tiến hóa, gọi là giải thuật gi truyền. Các nguyên lý cơ bản của giải thuật được tác giả Holland đề xuất vào năm 1962. Nền tảng toán học của giải thuật GA được tác giả công bố trong quấn sách “Sự thích nghi trong các hệ thống tự nhiên và nhân tạo” xuất bản năm 1975. Giải thuật GA được xem như một phương pháp tìm kiếm có bước chuyển ngẫu nhiên mang tính tổng quát để giải các bài toán tối ưu hóa. Giải thật GA thuộc lớp các giải thuật tiến hóa. Khác với phần lớn các giải thuật tìm kiếm theo điểm khác, giải thuật GA thực hiện tìm kiếm song song trên một tập hợp gọi là quần thể các lời giải có thể. Thông qua việc áp dụng các toán tử di truyền, Giải thuật GA trao đổi thông tin giữa các cực trị và do đó làm giảm thiểu khả năng kết thúc giải thuật tại cực trị địa phương. Trong thực tế, giải thuật GA đã được áp dụng thành công trong nhiều lĩnh vực. Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 7 Đề Tài: Giải thuật di truyền – Generic Algorithms Giải thuật GA mô phỏng quá trình tồn tại của các cá thể có độ phù hợp tốt nhất thông qua quá trình chọn lọc tự nhiên, sao cho khi giải thuật được thực thi quần thể các lời giải tiến hóa tiến dần tới lời giải mong muốn. Giải thuật GA duy trì một quần thể các lời giải có thể của bài toán tối ưu hóa. Thông thường, các lời giải này được mã hóa dưới dạng một chuỗi các gene. Giá trị của các gene có trong chuỗi được lấy từ một bảng các ký tự được định nghĩa trước. Mỗi chuỗi gene được liên kết với một giá trị được gọi là độ phù hợp, giá trị này được dùng trong quá trình chọn lọc. Cơ chế chọn lọc đảm bảo các cá thể có độ phù hợp tốt hơn có xác suất được chọn cao hơn. Quá trình chọn lọc sao chép các bản sao của các cá thể có độ phù hợp tốt vào quần thể tạm thời được gọi là quần thể bố mẹ. Các cá thể trong quần thể bố mẹ được gép đôi một cách ngẫu nhiên và tiến hành lai ghép tạo ra các cá thể con. Sau khi tiến hành quá trình lai ghép, giải thuật GA mô phỏng quá trình khác trong tự nhiên là quá trình đột biến, trong các gene của các cá thể con tự thay đổi vị trí với một xác suất nhỏ. Tóm lại, có 6 khía cạnh cần được xem xét trước khi áp dụng giải thuật GA để giải một bài toán, cụ thể là: Mã hóa lời giải thành các cá thể dạng chuỗi. Hàm xác định giá trị độ phù hợp. Sơ đồ chọn lọc các cá thể bố mẹ. Toán tử lai ghép. Toán tử đột biến. Chiến lược thay thế hay còn gọi là toán tử tái tạo. Có nhiều lựa chọn khác nhau cho từng vấn đề trên. Phần tiếp theo sẽ đưa ra các lựa chọn theo J.H. Holland khi thiết kế phiên bản giải thuật GA đầu tiên gọi là giải thuật di truyền tiêu chuẩn (Standard Generic Algorithm gọi tắt là SGA). 2. Ứng dụng của giải thuật di truyền Ban đầu giải thuật di truyền được ứng dụng chủ yếu trong lĩnh vực tối ưu hóa và máy học. Đến nay nó đã phát triển mạnh mẽ và có nhiều ứng dụng thực tế, đặc biệt là trong lĩnh vực trí tuệ nhân tạo. Ví dụ: năm 1967 Beglay xây dựng Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 8 Đề Tài: Giải thuật di truyền – Generic Algorithms máy chơi cờ Hexapawn dựa trên giải thuật di truyền và nhận ra rằng giải thuật di truyền có thể thực hiện tốt mà không phụ thuộc vào độ phức tạp của trò chơi. Trong lĩnh vực tối ưu hóa có nhiều bài toán được áp dụng giải thuật di truyền và đã thành công như tối ưu hóa hàm một hay nhiều biến, bài toán người đưa thư, bài toán hộp đen, bài toán nhận dạng… Trong lĩnh vực trí tuệ nhân tạo giải thuật di truyền được ứng dụng vào việc thiết kế mạng nơron, kiến trúc lẫn trọng số, quỹ đạo cho người máy, các hệ phi tuyến động như phỏng đoạn và phần tích dữ iệu. 3. Giải thuật di truyền tiêu chuẩn Trong giải thuật di truyền của mình J.H Holland sử dụng mã hóa nhị phân để biểu diễn các cá thể, lý do là phần lớn các bài toán tối ưu hóa đều có thể được mã hóa thành chuỗi nhị phân đơn giản. 3.1. Hàm mục tiêu Hàm mục tiêu, hàm cần tối ưu, được chọn làm cơ sở để tính độ phù hợp của từng chuỗi cá thể. Giá trị độ phù hợp của từng cá thể sau đó được dùng để tính xác suất chọn lọc. Sơ đồ chọn lọc trong giải thuật SGA là sơ đồ chọn lọc tỷ lệ. Trong sơ đồ chọn lọc này, cá thể có độ phù hợp f i có xác suất lựa chọn = / ∑ , ở đây N là số cá thể trong quần thể. 3.2. Toán tử lai ghép Toán tử lai ghép trong giải thuật SGA là toán tử lai ghép một điểm cắt. Giả sử chuỗi cá thể có độ dài L(có L bit), toán tử lai ghép được tiến hành qua hai giai đoạn là: Hai cá thể trong quần thể bố mẹ được chọn một cách ngẫu nhiên với phân bố xác suất đều. Sinh ngẫu nhiên j trong khoảng [1,L-1]. Hai cá thể con được tạo ra bằng việc sao chép các ký tự từ 1 đến j và tráo đổi các ký tự j+1 đến L. Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 9 Đề Tài: Giải thuật di truyền – Generic Algorithms Điều đáng lưu ý là giải thuật GA không yêu cầu toán tử lai ghép luôn xảy ra đối với 2 cá thể bố mẹ được chọn. Sự lai ghép chỉ xảy ra khi số ngẫu nhiên tương ứng với cặp cá thể bố mẹ được sinh ra trong khoảng [0,1] không lớn hơn một tham số p c (gọi là xác suất lai ghép). Nếu số ngẫu nhiên này lớn hơn p c , toán tử lai ghép không xảy ra. Khi đó cá thể con là bản sao trực tiếp của hai cá thể bố mẹ. 3.3. Toán tử đột biến Tiếp theo, J.H. Holland xây dựng toán tử đột biến cho giải thuật SGA. Toán tử này được gọi là toán tử đột biến tiêu chuẩn. Toán tử đột biến duyệt từng gene của cá thể con được sinh ra sau khi tiến hành toán tử lai ghép và tiến hành biến đổi giá trị từ 0 sang 1 hoặc ngược lại với một xác suất p m được gọi là xuất đột biến. 3.4. Toán tử tái tạo Cuối cùng là chiến lược thay thế hay còn gọi là toán tử tái tạo. Trong giải thuật SGA, quần thể con được sinh ra từ quần thể hiện tại thông qua ba toán tử là chọn lọc, lai ghép và đột biến và thay thế hoàn toàn quần thể hiện tại và trở thành quần thể hiện tại của thế hệ tiếp theo. Hình 1 Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 10 Đề Tài: Giải thuật di truyền – Generic Algorithms 3.5. Sơ đồ tổn thể của giải thuật ThuTuc_SGA(input N,p c ,p m ,G) { k = 0; //khởi tạo quần thể P 0 một cách ngẫu nhiên với N cá thể KhoiTao(P k ,N); //tính giá trị hàm mục tiêu cho từng cá thể TinhHamMucTieu(P k ); /*đặt lời giải của giải thuật bằng cá thể có giá trị hàm mục tiêu tốt nhất*/ X best = TotNhat(P k ); do { /* chuyển đổi giá trị hàm mục tiêu thành giá trị độ phù hợp và tiến hành chọn lọc tạo ra quần thể bố mẹ P parent */ P parent = ChonLoc(P k ); /*tiến hành lai ghép với xác suất p c và đột biến với xác suất p m tạo ra quần thể cá thể con P child */ P child = LaiGhep(P k ,p c ); P child = DotBien(P k ,p m ); /*thay thế quần thể hiện tại bằng quần thể cá thể con*/ k = k + 1; P k = P child ; /*nếu giá trị hàm mục tiêu obj(X) của cá thể tốt nhất X trong quần thể P k lớn hơn giá trị hàm mục tiêu của X best thì thay thế lời giải*/ X = TotNhat(P k ); if(obj(X) > obj(X best )) X best = X; } while(k < G);//tiến hành G thế hệ Return Xbest;//trả về lời giải tốt nhất của giải thuật SGA } Giả thuật di truyền phụ thuộc vào 4 tham số (N,p c ,p m ,G), trong đó: N là số cá thể trong quần thể p c là xác suất lai ghép p m là xác suất đột biến G là số thế hệ cần tiến hóa Đây chính là các tham số điều khiển của giải thuật di truyền tiêu chuẩn SGA. [...]... và các toán tử di truyền ứng với từng phương pháp biểu di n nhiễm sắc thể đó, nhằm đa dạng khả năng tối ưu hóa của giải thuật di truyền trong nhiều lớp bài toán khác nhau Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 13 Đề Tài: Giải thuật di truyền – Generic Algorithms 5.1 Giải thuật di truyền với biểu di n nhiễm sắc thể bằng số thực Trong biểu di n thực, mỗi...Đề Tài: Giải thuật di truyền – Generic Algorithms Cá thể có giá trị hàm mục tiêu tốt nhất của mọi thế hệ là lời giải cuối cùng của giải thuật SGA Quần thể đầu tiên được khởi tạo một cách ngẫu nhiên 3.6 Ví dụ áp dụng giải thuật di truyền Ví dụ: xét bài toán tìm Max của hàm f(x) = x2 với x là số nguyên trên đoạn [0,31] Để sử dụng giải thuật di truyền ta mã hóa số nguyên x trong... Giải thuật di truyền với biểu di n nhiễm sắc thể bằng mã hóa ký tự Đễ tránh việc trùng lặp về nội dung chi tiết về phương pháp biểu di n nhiễm sắc thể bằng mã hóa ký tự sẽ được trình bày chi tiết ở chương II Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 19 Đề Tài: Giải thuật di truyền – Generic Algorithms Chương II: Bài toán “Người đưa thư”, ứng dụng giải thuật di. .. 100 đỉnh, việc duyệt toàn bộ cũng là điều rất khó thực hiện 2 Ứng dụng giải thuật di truyền để giải bài toán người đưa thư, biểu di n nhiễm sắc thể bằng ký tự Giải thuật di truyền mô phỏng sự tiến hóa của thế giới tự nhiên, ở đó thông tin về một cấu trúc sống được mã hóa dưới dạng nhiễm sắc thể Do đó áp dụng giải thuật di truyền vào bài toán người đưa thư, ta cũng phải tìm cách mã hóa các lời giải... trình này lặp di lặp lại ở nhiều thế hệ dẫn đến sự tiến hóa, làm cho làm cho các cá thể hội tụ gần tới lời giải của bài toán hơn 5 Các phương pháp biểu di n nhiễm sắc thể Giải thuật di truyền với phương pháp biểu di n nhiễm sắc thể bằng mã hóa nhị phân đã được đề cập chi tiết trong mục 2 (Giải thuật di tryền tiêu chuẩn) Ở mục này chúng ta sẽ tìm hiểu một số phương pháp phương pháp biểu di n nhiễm sắc... chung là tốt hơn nhiều so với biểu di n nhị phân Đương nhiên là ta luôn có thể tăng độ chính xác của biểu di n nghị phân khi tăng thêm các bit, nhưng điều đó làm giải thuật chậm đi đáng kể Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 14 Đề Tài: Giải thuật di truyền – Generic Algorithms Hơn nữa biểu di n thực có khả năng biểu di n một miền rất rộng (hoặc các trường... ứng dụng giải thuật di truyền giải bài toán người đưa thư, em xây dựng một ứng dụng nhỏ gồm chức năng chính là đưa ra chu trình ngắn nhất của những địa chỉ được chọn Ngoài ra ứng dụng còn cho phép người sử dụng cài đặt những tham số của giải thuật di truyền cũng như việc quản lý và lưu trữ các địa điểm, để nhằm mục đích tái sử dụng 2 Thiết kế ứng dụng 2.1 Thiết kế giao di n người dùng Giao di n người... tới khó khăn không thể áp dụng các kỹ thuật sinh sản, đột biến thường được sử dụng trong giải thuật di truyền tiêu chuẩn Ví dụ: với ý nghĩa lai ghép chéo thông thường ta nhận được kết quả như sau: Ghép chéo tại 1 điểm Hình 3 Ghép chép tại 2 điểm: Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 21 Đề Tài: Giải thuật di truyền – Generic Algorithms Hình 4 Điều... Lớp LT.CNTT-K16A Trang 24 Đề Tài: Giải thuật di truyền – Generic Algorithms 2.4 Phép đột biết Phép đột biến được định nghĩa lại rất đơn giản dưới dạng hoán vị vị trí của 2 gene bất kỳ trong nhiễm sắc thể Ví dụ chọn 2 vị trí ngẫu nhiên là 2 và 6: Hình 16 Giảng viên hướng dẫn: TS.Phạm Thanh Hà Sinh viên: Hà Văn Tân – Lớp LT.CNTT-K16A Trang 25 Đề Tài: Giải thuật di truyền – Generic Algorithms Chương III:... thế hệ mới, độ thích nghi cao nhất là 729 và độ thích nghi trung bình là 438 Như vậy chỉ qua một thế hệ, các cá thể đã “tốt lên” rất nhiều 4 Cơ chế hoạt động của giải thuật di truyền Giống như quá trình tiến hóa của sinh vật giải thuật di truyền cũng hoạt động dựa vào cơ chế chọn lọc tự nhiên và quá trình tiến hóa Chọn lọc tự nhiên Quá trình chọn lọc tự nhiên đơn dựa trên phương pháp dùng bánh xe Roulette,