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.
Trang 1MỤ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
Trang 22 Ứ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
Trang 3LỜ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
Trang 4A - 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ư
Trang 5 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
Trang 6B - 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
Trang 7Giả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
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
Trang 8má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
Trang 9Đ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 pc, 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
Trang 103.5 Sơ đồ tổn thể của giải thuật
Trang 11Cá 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) = x 2 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 đoạn [0,31] bởi một số nhị phân có độ dài 5, chẳng hạn chuỗi 11000 là mã số nguyên 24
Hàm thích nghi được xác định chính là hàm f (x) = x 2 , quần thể ban đầu gồm 4 cá thể ( kích thước quần thể n = 4) thực hiện quá trình chọn lọc ta có bảng sau:
Số hiệu
cá thể
Quần thể ban đầu
Thực hiện quá trình lai ghép với xác suất lai ghép p c = 1 cả 4 cá thể sau
chọn lọc đều được lai ghép kết quả như sau:
Trang 12Trong bảng này, chuỗi thứ nhất được lai ghép với chuỗi thứ 2 với điểm lai ghép là 4, 2 chuỗi còn lại được lai ghép với nhau tại điểm ghép là 2
Để thực hiện quá trình đột biến, ta chọn xác suất đột biến p m = 0.001 hay
là 1%, tức là ta hy vọng có 5 x 4 x 0.001 = 0.02 bit được đột biến Như vậy thế hệ quần thể mới là thế hệ quần thể sau lai ghép
Ta thấy rằng trong thế hệ ban đầu độ thích nghi cao nhất là 576 và độ thích nghi trung bình là 292 Còn trong 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, ở đây mỗi chuỗi nhiễm sắc thể (cá thể) chiếm một khe nhất định trong vòng tròn Roulette có độ rộng tỷ lệ với giá trị hàm mục tiêu của chuỗi Mỗi lần quay vòng tròn Roulette ta nhận được một chuỗi và coi như đó là cách lựa chọn cho việc tái tạo quần thể Các bước thực hiện như sau:
Tính giá trị hàm mục tiêu của từng cá thể gọi la F i
Tính tổng các giá trị hàm mục tiêu của các các thể trong quần
quần thể hiện hành vào quần thể mới theo cách sau:
Chọn một số ngẫu nhiên r trong khoản [0,1]
Trang 13 Nếu r < q 1 thì chọn nhiễm sắc thể đầu tiên v 1, ngược lại thì
chọn nhiễm sắc thể thứ i thuộc đoạn [2,n] sao cho
q i-1 < r < q i
Như vậy có thể một nhiễm sắc thể có thể được chọn nhiều lần, điều này là phù hợp vì các nhiễm sắc thể tốt nhất cần có nhiều bản sao hơn các nhiễm sắc thể trung bình, còn cá thể kép nhất thì chết đi
Quá trình tiến hóa
Thông qua cơ chế chọn lọc tự nhiên và thực hiện các toán tử lai ghép, đột biến cho nên quần thể ở thế hệ sau sẽ tốt hơn thế hệ trước, quá 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 thể khác 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
Hình 2
Trang 145.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 nhiễm sắc thể được mã hóa thành vector thực
có cùng chiều dài với vector lời giải Mỗi phần tử được chọn lúc khởi tạo sao cho thuộc miền xác định của nó, và các toán tử được thiết kế để bảo toàn các ràng buộc này (không có vấn đề như vậy trong biểu diễn nhị phân, nhưng thiết kế của các toán tử này khá đơn giản, ta không thấy điều đó là bất lợi, mặt khác nó lại đem lại những lợi ích khác được trình bày dưới đây)
Ví dụ: Xét bài toán cực đại hàm 4 biến f(x1,x2,…,x4) với nhiều ràng buộc sau:
Trang 15Hơ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 hợp miền xác định không cụ thể) Mặt khác trong biểu diễn nhị phân độ chính xác sẽ giảm khi tăng kích thước miền, do chiều dài chuỗi nghị phân cố định cho trước
Các toán tử ta sẽ sử dụng rất khác các toán tử cổ điển, vì chúng làm việc trong một không gian khác (có giá trị thực) Hơn nữa một vài toán tử không đồng bộ, nghĩa là hành động của chúng phụ thuộc vào tuổi của quần thể (tuổi của quần thể hiện tại là số thứ tự của thế hệ đang xét)
S’5 = (-0.320,-0.930,-3.950,-0.011) và S’6 = (-0.351,-0.970,-4.410,-0.031)
Lai số học đơn: Phép lai số học đơn xác định như sau:
Nếu s t v = <v 1 ,…,v m > và
s t w = <w 1 ,…,w m > được lai ghép kết quả là:
s t+1 v = <v 1 ,…,v’ k ,…,v m > và
s t+1 w = <w 1 ,…,w’ k ,…,w m >
Trang 16 Lai ghép số học toàn cục: Lai ghép số học toàn cục là tổ hợp tuyến tính của hai vector được xác định như sau:
Trang 17Nếu s t v = <v 1 ,…,v m > và
s t w = <w 1 ,…,w m > được lai ghép kết quả là:
s t+1 v = × + (1 − ) × và
s t+1 w = × + (1 − ) × với a là một tham số nằm trong đoạn [0,1]
s’5 = (0.083,-0.954,-4.226,0.006)
Ta có các phần tử của s’6 là:
Pt1 = -0.320×0.6+0.4×0.351=-0.052 Pt2 =(-0.930)×0.6+0.4×(-0.970)=-0.946 Pt3 = (-0.950)×0.6+0.4×(-4.410)=-4.134 Pt4 = 0.031×0.6+0.4×(-0.011)=0.014
s’5 = (-0.052,-0.946,-4.134,0.014) 5.1.2 Nhóm toán tử đột biến
Trang 18 Đột biến đồng bộ:
Đột biến đồng bộ được định nghĩa tương tự với định nghĩa của
phiên bản cổ điển: nếu s v = <v 1 ,…,v m > là nhiễm sắc thể, thì mỗi phần tử v k có cơ hội trải qua tiến trình đột biến ngang nhau Kết quả của một lần ứng dụng toán tử này là vector
s t v = <v 1 ,…,v k ,…,v m > và v k là giá trị ngẫu nhiên trong miền tham
Đột biến không đồng bộ là một trong những toán tử có nhiệm
vụ tìm về độ chính của hệ thống Nó được định nghĩa như sau:
Nếu s v = <v 1 ,…,v m > là nhiễm sắc thể và phần tử vk được chọn đột biến này (miền của v k là [l k ,u k])
Kết quả của đột biến không đồng bộ là một vector
st+1v = <v1,…,v’k,…,vm> với k ∈ [1,…,n] và
vk = + ∆( , − ) ế ℎữ ố ẫ ℎ ê à 0
− ∆( , − ) ế ℎữ ố ẫ ℎ ê à 1Trong đó hàm ∆( , ) trả về trong khoảng [0,y] sao cho xác suất của ∆( , ) gần bằng 0 sẽ tăng khi t tăng Xác suất này buộc
toán tử tìm kiếm không gian thoạt đầu là đồng bộ (khi t nhỏ) và
rất cục bộ ở những giai đoạn sau Ta sử dụng hàm sau:
Trang 19∆( , ) = × ( ) , với r là số ngẫu nhiên trong khoảng [0,…,1], T là số thế hệ tối đa và b là tham số hệ thống xác định
Ví dụ: Giả sử phần tử thứ 2 của vector S4 = (-0.370,-0.950,-4.071,-0.051) được chọn đột biến Biết x2 ∈ [-1.851,-0.815], lúc đó
Vì k chẵn nên:
= − ∆( , 0.950— 1.815) = − ∆( , 0.865)Giả sử = 0.4, = 0.5, = 2 ta có:
∆( , 0.865) = 0.865 × 1 − 0.4 . = 0.865 × 0.6 = 0.519
Do đó = −0.950 − 0.519 = −1.469 ∈ [−1.851, −0.815]
5.2 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
Trang 20Chươ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ư”
1 Bài toán “Người đưa thư”
1.1 Lịch sử
Thử đặt ra một vấn đề đơn giản sau: bạn là một nhân viên đưa thư và khách hàng của bạn lại nằm rải rác trên một loạt các thành phố Bạn biết chính xác khoảng cách giữa mỗi 2 thành phố và muốn tìm con đường ngắn nhất để có thể đến thăm mỗi thành phố một lần và sau đó trở về nhà, nơi bạn xuất phát
Trong khoa học máy tính, ví dụ trên được gọi là "bài toán người đưa thư" hay bài toán “người bán hàng” (traveling salesman problem) Đây là một vấn đề rất cơ bản và ứng dụng của nó thì nhiều vô kể Một ứng dụng rất điển hình là hoạt động hàng ngày của các công ty chuyển phát Công việc của họ là phải phân phát và tiếp nhận hàng hóa sao cho ít tốn thời gian và chi phí nhiên liệu nhất trong khi vẫn đảm bảo không bỏ sót bất cứ điểm đến nào Ngoài ra, vấn đề trên còn được các nhà sản xuất điện tử áp dụng để tạo
ra những con chíp siêu nhỏ tốt hơn hay được các nhà di truyền học sử dụng vào chuỗi DNA
Vấn đề trên không phải dễ và phương pháp trực tiếp nhằm tìm ra lời giải phổ biến là kiểm tra tất cả các tổ hợp Tuy nhiên, trên thực tế phương pháp này không thật sự khả thi bởi nếu lấy mẫu chỉ gồm 20 thành phố thì sẽ có gần 60,8 triệu tỉ phép so sánh để tìm ra hành trình có lợi nhất
1.2 Phát biểu bài toán như sau
Cho đồ thị đầy đủ đỉnh vô hướng, có trọng số G = (V,E) Tìm chu trình
→ → ⋯ → → ớ ∈ à ∈ [1, ] sao cho tổng trọng số
hành trình trên các cạnh (v i ,v i+1 ) và (v n ,v 1) là nhỏ nhất
Một chu trình như vậy gọi là chu trình Hamilton, nó đi qua tất cả các đỉnh của đồ thị đúng một lần, đồ thị đầy đủ luôn tồn tại chu trình Hamilton 1.3 Phần tích độ phức tạp
Bài toán người đưa thư thuộc lớp bài toán NP-Khó (lớp các bài toán không có giải thuật trong thời gian đa thức)
Trang 21Việc thực hiện liệt kê hết tất cả các chu trình là điều gần như không thể với số đỉnh lớn (đồ thị n đỉnh phải duyệt n! chu trình) Số chu trình phải duyệt tăng rất nhanh khi số đỉnh n càng lớn Ngay với 1 đồ thị 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 của bài toán dưới dạng chuỗi các gene tạo thành các nhiễm sắc thể và xây dựng quy tắc đánh giá độ thích nghi cũng như xây dựng các toán tử di truyền của
nó theo ngữ cảnh của bài toán Với bài toán này em lựa chọn phương pháp mã hóa nhiễm sắc thể bằng ký tự
Kí hiệu các địa điểm là A,B,C,… mỗi địa điểm là 1 gene của nhiễm sắc thể, nhiễm sắc thể đại diên cho một cá thể trong một quần thể Mỗi nhiễm sắc thể là
sự mã hóa của lời giải biểu diễn lộ trình mà người đưa thư đi qua
Ví dụ: GFHBACDE sẽ là kí hiệu của hành trình từ:
G -> F -> H -> B -> A -> C -> D -> E
Mỗi địa điểm(gene) sẽ chỉ xuất hiện trong danh sách này chỉ một lần Vấn đề
này dẫn 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
Ghép chép tại 2 điểm:
Hình 3
Trang 22Điều kiện chỉ xuất hiện một trong danh sách hoàn vị ở hai ví dụ trên đã bị vi phạm Do đó đòi hỏi phải xây dựng các kỹ thuật ghép chéo mới phù hợp với ý nghĩa của bài toán
2.1 Ghép chéo riêng từng phần (Partailly matched crossover – PMX)
PMX được cải tiến từ phương pháp lai ghép thông thường Bước đầu tiên là sao chép cấu trúc nhiễm sắc thể của cha và mẹ tạo ra một cặp cá thể con giống cặp cá thể bố mẹ
Sao chép để tạo 2 cá thể con:
Bước tiếp theo PMX chọn ngẫu nhiên 2 vị trí, vi dụ: 2 và 5:
PMX nhận thấy gene H trong nhiễm sắc thể 2 được thấy thế gene C trong nhiễm sắc thể 1, vì vậy nó sẽ chuyển đổi H của nhiễm sắc thể 1 thành
C và C trong nhiễm sắc thể 2 thành H Quá trình được thực hiện tượng tự với
2 gene còn lại và cuối cùng ta nhận được con cái như sau:
Hình 4
Hình 6
Hình 7
Trang 232.2 Ghép chéo có thứ tự (Order crossover – OX)
Bước đầu tiên OX cũng thực hiện sao chép cấu trúc nhiễm sắc thể của cha và mẹ tạo ra một cặp cá thể con giống cặp cá thể bố mẹ
Sao chép để tạo 2 cá thể con:
Bước tiếp theo OX chọn ngẫu nhiên 2 vị trí, vi dụ: 2 và 5: và thực hiện hoàn đổi các gene trong doạn được chọn và bỏ trống một số gene trùng lặp ở các đoạn còn lại như sau
Hình 8
Hình 9
Hình 10
Hình 11
Trang 24Tiếp đó OX dịch chuyển dịch chuyển các chỗ trống đếm khi chúng gặp nhau tại miền giao nhau (trong đoạn đã chọn ở trên)
Cuối cùng OX thực hiện sao chép các gene trong đoạn được chọn từ cá thể bố mẹ sang cá thể con cái ta được các con cái như sau:
2.3 Phép đảo vị trí (Inversion operator)
Để tăng tính đa dạng của quần thể có thể đưa thêm vào bài toán phép hoàn vị, thực hiện việc đảo ngược vị trí các gene trong nhiễm sắc thể
Ví dụ:
Đảo vị trí tại 1 điểm:
Đảo vị trí tại 2 điểm:
Hình 12
Hình 13
Hình 14
Hình 15