Thuật toán di truyền GA đã được áp dụng để giải quyết bài toán lập lịch trong trường đại học nhằm khắc phục những hạn chế hạn chế trong các phương pháp truyền thống.. Trong [2] chỉ ra rằ
Trang 1VIỆN ĐẠI HỌC MỞ HÀ NỘI
-
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGHỆ CẤP VIỆN
NGHIÊN CỨU VÀ XÂY DỰNG ỨNG DỤNG HỖ TRỢ
TỰ ĐỘNG XẾP LỊCH HỌC THEO TÍN CHỈ DỰA TRÊN PHƯƠNG PHÁP TÌM KIẾM TỐI ƯU
Trang 2DANH SÁCH THÀNH VIÊN THAM GIA NGHIÊN CỨU ĐỀ TÀI
Trang 3MỤC LỤC
DANH MỤC BẢNG BIỂU 4
DANH MỤC HÌNH VẼ 5
DANH MỤC TỪ VIẾT TẮT 6
PHẦN I: MỞ ĐẦU 7
I.1 Tính cấp thiết của đề tài 7
I.2 Tình hình nghiên cứu 8
I.3 Mục đích nghiên cứu 9
I.4 Đối tượng và phạm vi nghiên cứu 9
I.5 Phương pháp nghiên cứu 9
PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 10
Chương 1 Kiến thức cơ sở về giải thuật di truyền và ứng dụng 10
1.1 Giới thiệu giải thuật di truyền 10
1.2 Các vấn đề trong giải thuật di truyền 13
1.2.1 Biểu diễn lời giải của bài toán 13
1.2.2 Đánh giá cá thể 15
1.2.3 Khởi tạo quần thể ban đầu 17
1.2.4 Các phép toán di truyền 17
1.3 Ứng dụng của giải thuật di truyền 23
Chương 2 Ứng dụng giải thuật di truyền trong xếp lich học tín chỉ 25
2.1 Bài toán xếp lịch học tín chỉ 25
2.2 Phương pháp biểu diễn - mã hóa cá thể và đánh giá độ phù hợp 31
2.2.1 Phương pháp biểu diễn - mã hóa cá thể 31
2.2.2 Đánh giá độ phù hợp 32
2.3 Các phép toán di truyền áp dụng 33
Chương 3 Xây dựng chương trình phần mềm và thử nghiệm 36
3.1 Thử nghiệm với bài toán ví dụ mẫu 36
3.2 Thử nghiệm với bài toán thực tế 39
PHẦN III: KẾT LUẬN & KIẾN NGHỊ 45
III.1 Kết luận 45
III.2 Kiến nghị 45
Trang 4DANH MỤC BẢNG BIỂU
Bảng 2.1 Biểu diễn lịch của các lớp tín chỉ 28
Bảng 3.1- Các tham số của dữ liệu ví dụ thử nghiệm 36
Bảng 3.2- Xác định giảng viên vào giảng các lớp tín chỉ 36
Bảng 3.3- Ràng buộc giữa lớp tín chỉ và phòng học (CR) 37
Bảng 3.4- Ràng buộc giữa giảng viên và thời gian (LT) 37
Bảng 3.5- Ràng buộc giữa sinh viên và các lớp tín chỉ (S×C) 37
Bảng 3.6- Các tham số chạy thuật toán xếp lịch 38
Bảng 3.7- Kết quả lịch được xếp theo thuật toán 38
Bảng 3.8- Kết quả lịch theo trọng số hàm fitness (w1=0.9, w2=0.01, w4=0.09) 39
Bảng 3.9- Xác định trước các giảng viên vào các lớp tín chỉ 41
Bảng 3.10- Các tham số chạy thuật toán trên dữ liệu thực 42
Bảng 3.11- Lịch học được xếp bởi thuật toán 43
Trang 5DANH MỤC HÌNH VẼ
Hình 1.1- Sơ đồ giải thuật di truyền 12
Hình 1.2- Minh họa kiểu mã hóa nhị phân của hai chuỗi gen 14
Hình 1.3- Minh họa phương pháp mã hóa hoán vị 14
Hình 1.4- Minh họa phương pháp mã hóa giá trị 14
Hình 1.5- Minh họa phương pháp mã hóa dạng cây 15
Hình 1.6- Minh họa sơ đồ chọn theo bánh xe Roulette 18
Hình 1.7- Sơ đồ minh họa phép chọn lọc xếp hạng 19
Hình 1.8- Minh họa lai ghép một điểm cắt trên chuỗi nhị phân 20
Hình 1.9- Minh họa phép lai ghép đều 21
Hình 2.1- Biểu diễn lựa chọn mức độ ưu tiên của giảng viên theo thời gian 29
Hình 2.2- Biểu diễn đánh giá mức độ thỏa mãn của giảng viên 30
Hình 2.3- Sơ đồ chuỗi gen mã hóa lời giải (bảng lịch) 32
Hình 3.12- Biểu đồ sự biến đổi độ phù hợp cá thể (fitness) qua các lần tiến hóa 44
Hình 3.13- Biểu đồ sự biến đổi số vi phạm ràng buộc cứng qua các lần tiến hóa 44
Trang 6DANH MỤC TỪ VIẾT TẮT
1 GA Genetic Algorithm, giải thuật di truyền
2 SA Simulated Anualing, giải thuật mô phỏng tôi luyện
3 LISP Locator/Identifier Separation Protocol, là ngôn
7 L Lecture, giảng viên
8 S Student, sinh viên
9 T Timeslot, khe thời gian cho xếp lịch
10 LT Lecture-Time, ma trận giảng viên và thời gian
11 CC Course-Course, ma trận ràng buộc giữa các lớp
Trang 7PHẦN I: MỞ ĐẦU
I.1 Tính cấp thiết của đề tài
Bài toán xếp lịch là một bài toán kinh điển, và là một trong những bài toán rất có ý nghĩa trong nhiều lĩnh vực của thực tế Tuy nhiên nó thuộc lớp bài toán khó với nhiều loại đầu vào khác nhau, các ràng buộc giữa các yếu tố và thường
có nhiều mục tiêu, yêu cầu đặt ra Hiện nay, trong các cơ sở đào tạo và đặc biệt
là đào tạo đại học, công tác xếp lịch còn gặp nhiều khó khăn, đôi khi chúng ta rất khó để kiểm soát hết các trường hợp của bài toán, vì thế hiệu quả đem lại chưa cao Bên cạnh đó, đã có nhiều tác giả nghiên cứu đưa ra các phương pháp để giải quyết vấn đề này và trong đó, phương pháp tìm kiếm tối ưu dựa trên giải thuật di truyền chứng tỏ hiệu quả ở nhiều công trình nghiên cứu
Xếp lịch học theo tín chỉ trong trường đại học có rất nhiều yếu tố phức tạp hơn so với dạng bài toán lập lịch thông thường, như giáo viên, sinh viên, thời gian, phòng học, các lớp tín chỉ và đặc biệt là các ràng buộc giữa các yếu tố này Tổng quát hơn, bài toán xếp lịch học gồm nhiều yếu tố được xem xét liên quan, chẳng hạn như việc thi cử, thực hành, giảng đường, vv [6] Các nghiên cứu của Even và Itai đề cập trong [6] đã chứng tỏ rằng bài toán lập lịch là thuộc lớp bài toán NP-đầy đủ Thông thường, bài toán lập lịch được tiến hành theo cách truyền thống, bằng trực quan và tính toán trực tiếp của con người Hiện nay, do sự đa dạng và nhiều thay đổi của các ràng buộc giữa các yếu tố, đó là những hạn chế
về nguồn lực và sự phức tạp của các yếu tố, giải bài toán lập lịch thường mất rất nhiều thời gian và nhân lực, kết quả do đó dẫn đến các ràng buộc mềm hầu như không đạt được, thậm chí không thể thỏa mãn hết các ràng buộc cứng mà phải chấp nhận sự thỏa hiệp Vì vậy việc sử dụng máy tính để thực hiện quá trình lập lịch, không những để cho thấy sự quan tâm nghiên cứu của các tác giả, mà còn cho phép đạt được các mục tiêu kết quả cao mặc dù có nhiều ràng buộc Rõ ràng, điều này dẫn đến tiết kiệm rất nhiều thời gian và công sức
Trong đề tài này, chúng tôi nghiên cứu sâu về bài toán lập lịch trong đào tạo tín chỉ tại trường đại học Cùng với đó là nghiên cứu về giải thuật di truyền, và
có đưa yếu tố nhiệt độ tôi luyện tham gia vào các phép toán di truyền để nhằm điều khiển quá trình tiến hóa đạt hiệu quả cao Trên cơ sở nghiên cứu các phương pháp giải bài toán lập lịch của nhiều tác giả đã đề cập, đề tài sẽ đề xuất một phương pháp cho bài toán lập lịch theo đào tạo tín chỉ với những điều kiện
Trang 8ràng buộc được sử dụng tham số mờ gia tử Phương pháp đề xuất sẽ sử dụng giải thuật di truyền có đưa thêm yếu tố nhiệt độ để tác động vào các phép toán di truyền (đề cập bởi [19]) nhằm đem lại hiệu quả cao
I.2 Tình hình nghiên cứu
Bài toán lập lịch và phương pháp giải bài toán đã được các học giả nghiên cứu từ những năm 1960 Trong [6], chỉ ra rằng, Hertz đã đề xuất sử dụng phương pháp tìm kiếm tabu để giải quyết bài toán lập lịch gồm hai giai đoạn (TATI/TAG) và chỉ ra rằng cách tiếp này là phù hợp để giải bài toán lập lịch học
và lịch thi với quy mô lớn Thuật toán di truyền (GA) đã được áp dụng để giải quyết bài toán lập lịch trong trường đại học nhằm khắc phục những hạn chế hạn chế trong các phương pháp truyền thống Thuật toán tối ưu hóa đàn kiến (ACO) được Nothegger và cộng sự đề cập sử dụng để giải quyết bài toán này Trong khi
đó, Tassopoulos và Beligiannis áp dụng phương pháp tối ưu hóa bầy đàn để lập thời gian biểu cho các trường học khác nhau tại Hy Lạp Al-Betar và cộng sự đề xuất phương pháp tìm kiếm lai (HHS) để giải quyết bài toán lập lịch cho trường đại học Thuật toán HHS tích hợp tối ưu hóa bầy đàn và leo đồi để cân bằng giữa yếu tố thăm dò và tìm kiếm
Trong [2] chỉ ra rằng các thuật toán di truyền (GA) là phương pháp thích hợp
có thể được sử dụng để tìm kiếm, giải quyết một vấn đề tối ưu hóa, đặc biệt là bài toán lập lịch Các tác giả tập trung vào bài toán lập lịch của trường đại học,
nó có thể được chia thành lập lịch học và lập lịch thi Theo đó, phương pháp dựa trên GA được cải tiến để giải quyết bài toán này với việc thay đổi phép chọn lọc, lai ghép và đột biến để đạt được hiệu quả cao Các tác giả cũng sử dụng một chiến lược thay thế, để tránh rơi vào tối ưu địa phương
M Abbaszadeh và công sự trong [1] sử dụng thuật toán GA để giải bài toán lập lịch trong trường đại học, họ đã có các thay đổi về cấu trúc biểu diễn chuỗi gen, phép đột biến gen nhằm đạt được việc chuyển 15% các cá thể tốt hơn sang thế hệ sau Hơn nữa, để tránh rơi vào tối ưu địa phương họ đã xem xét tác động tham số đột biến, xóa bỏ các chuỗi gen lặp lại và thay thế bằng chuỗi gen tốt hơn Kết quả đem lại hiệu quả cao và tối đa hóa độ chính xác đối với các ràng buộc
Các tác giả trong [5] đề xuất thuật toán di truyền với các yếu tố ràng buộc của bài toán sử dụng độ đo mờ (fuzzy) nhằm thích nghi với các ràng buộc thực
Trang 9tế, chẳng hạn như yêu cầu của giảng viên đối với thời gian, chuyên môn giảng dạy
I.3 Mục đích nghiên cứu
Nghiên cứu áp dụng phương pháp tính toán mềm mà ở đây là giải thuật di truyền để giải quyết bài toán lập lịch và ứng dụng cho công tác xếp lịch học theo tín chỉ trong các cơ sở đào tạo đại học, trước hết là ứng dụng tại Khoa CNTT – Viện Đại học Mở Hà Nội
I.4 Đối tượng và phạm vi nghiên cứu
Nghiên cứu giải thuật di truyền, các vấn đề liên như phương pháp mã hóa cá thể, phương pháp đánh giá độ phù hợp cá thể theo mục tiêu của bài toán, các phép toán di truyền Ở đây, đề tài sẽ nghiên cứu sử dụng tham số nhiệt tôi luyện
để tác động vào quá trình tiến hóa nhằm đem lại hiệu quả cao cho phương pháp Nghiên cứu về bài toán lập lịch nói chung, các trường hợp áp dụng trong thực tế, phương pháp hay giải thuật đã được nghiên cứu và công bố Phân tích và
áp dụng một số ràng buộc dựa trên tham số mờ gia tử nhằm làm phù hợp hơn yêu cầu thực tế của bài toán ứng dụng
Đề xuất phương pháp (hay thuật toán giải) cho bài toán lập lịch, đưa ra những điều kiện đặc trưng của phạm vi ứng dụng thực tế để có những thiết kế phù hợp và hiệu quả Xây dựng chương trình phần mềm và ứng dụng thử nghiệm
ở phạm vi khoa Công nghệ thông tin – Viện Đại học Mở Hà Nội
I.5 Phương pháp nghiên cứu
Thu thập, khảo sát và hệ thống hóa các kết quả nghiên cứu đã có về vấn đề ứng dụng giải thuật di truyền cho bài toán lập lịch
Nghiên cứu các mô hình lý thuyết, các thuật toán kết hợp lập trình thử nghiệm trên máy tính Đưa vào ứng dụng trong thực tế để so sánh và đánh giá hiệu quả của phương pháp
Trang 10PHẦN II: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
Chương 1 Kiến thức cơ sở về giải thuật di truyền và ứng dụng
1.1 Giới thiệu giải thuật di truyền
Giải thuật di truyền (Gennetic Algorithims – GA) là một kỹ thuật trong tính toán mềm giúp giải quyết bài toán bằng cách mô phỏng sự tiến hóa tự nhiên của con người hay của sinh vật nói chung trong điều kiện quy định sẵn của môi trường
Giải thuật di truyền cũng như các giải thuật tiến hóa nói chung 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à quá trình hoàn hảo nhất, hợp lý nhất và tự nó đã mang tính tối ưu Quá trình tiến hóa thể hiện tính tối ưu ở chỗ, thế hệ sau bao giờ cũng tốt hơn (phát triển và hoàn thiện hơn) thế
hệ trước Tiến hóa được duy trì nhờ 2 quá trình cơ bản: sinh sản và chọn lọc Trong quá trình tiến hóa các thế hệ mới luôn được sinh ra để bổ sung, thay thế cho thế hệ cũ Những cá thể không tốt sẽ bị đào thải Các cá thể mới sinh ra trong quá trình tiến hóa nhờ sự lai ghép thế hệ cha mẹ Một cá thể mới có thể mang những tính trạng của cha mẹ (di truyền), cũng có thể mang những tính trạng hoàn toàn khác (đột biến)
Giải thuật di truyền thực hiện tiến trình tìm kiếm lời giải tối ưu theo nhiều hướng bằng cách duy trì một quần thể các lời giải và thúc đẩy sự hình thành và trao đổi thông tin giữa các hướng này Quần thể trải qua quá trình tiến hóa, ở mỗi thế hệ lại tái sinh các lời giải tương đối “tốt” trong khi các lời giải tương đối
“xấu” thì chết đi Để phân biệt các lời giải khác nhau (tốt – xấu) thì ta sử dụng hàm mục tiêu để đánh giá
Giải thuật di truyền (GA) là một trong những mô hình tính toán phổ biến và thành công trong lĩnh vực tính toán mềm [20] Cùng với các kỹ thuật tính toán thông minh khác như tính toán mờ (fuzzy computing), mạng Nơ-ron (neural networks), hệ đa tác tử (multiagent systems), trí tuệ bầy đàn (swarm intelligence), giải thuật di truyền ngày càng phát triển, được áp dụng rộng rãi trong các lĩnh vực của cuộc sống Có thể nói, GA đã bước đầu được áp dụng thành công trong các trường hợp, mà việc mô tả toán học cho bài toán gặp rất nhiều khó khăn Ví dụ: các hệ thống phức tạp (complex systems) với các hàm mục tiêu ẩn và các mối ràng buộc phức tạp, các bài toán thiết kế với các hàm
Trang 11mục tiêu quá phức tạp không tuyến tính, hay các bài toán lập kế hoạch/lập lịch với không gian tìm kiếm NP-khó (NP-hard)
Tương tự thuật toán GA, thuật toán SA [19] là những phương pháp thích nghi để tìm kiếm tối ưu Trong khi GA là một thuật toán tìm kiếm ngẫu nhiên chủ yếu dựa trên hai phép toán gen là lai ghép và đột biến thì SA được xem như một thuật toán áp dụng kỹ thuật “leo đồi” theo xác suất Đã có nhiều tác giả nghiên cứu áp dụng GA và SA để giải bài toán tối ưu Tuy nhiên, mỗi thuật toán đều có những thế mạnh riêng và một số tác giả đã kết hợp hai thuật toán trên làm tăng sức mạnh tìm kiếm Trong nhiều nghiên cứu, các tác giả đã nhúng tham số nhiệt độ T mô phỏng nhiệt tôi luyện trong SA để điều khiển các phép toán gen của GA Trong đó, các tham số xác suất để chọn lọc, lai ghép và đột biến được thay đổi qua từng thế hệ di truyền, chúng được tính dựa trên tham số nhiệt độ của thế hệ hiện tại Tham số nhiệt ban đầu được tính dựa trên số thế hệ tiến hóa (thường khá lớn đảm bảo tính đa dạng của quần thể), sau mỗi thế hệ tham số nhiệt giảm dần để đảm bảo tính hội tụ và tính ổn định Kết hợp này phù hợp với các chiến lược thay đổi tham số trong GA, làm tăng tốc độ hội tụ tìm kiếm và hiệu quả của thuật toán, ta gọi đây là thuật toán di truyền lai (SGA)
Theo [20], giải thuật di truyền (hay giải thuật tiến hóa nói chung) là một trong những phát triển quan trọng của những nhà nghiên cứu về tính toán ứng dụng cuối thế kỷ trước trong việc giải xấp xỉ các bài toán tối ưu toàn cục Việc khai thác nguyên lí tiến hóa như là một định hướng heuristics đã giúp cho giải thuật di truyền giải quyết hiệu quả các bài toán tối ưu (với các lời giải chấp nhận được) mà không cần sử dụng các điều kiện truyền thống (liên tục hay khả vi) như là điều kiện tiên quyết Một trong những đặc tính quan trọng của giải thuật
di truyền là làm việc theo quần thể các giải pháp Việc tìm kiếm bây giờ được thực hiện song song song trên nhiều điểm (multipoints) Tuy nhiên, đây không phải là là thuật toán tìm kiếm đa điểm đơn thuần vì các điểm có tương tác với nhau theo nguyên lí tiến hóa tự nhiên Trong ngữ cảnh sử dụng giải thuật di truyền, người ta có thể dùng khái niệm “cá thể” tương đương với khái niệm “giải pháp”
Sơ đồ tổng thể của thuật toán di truyền nói chung được mô tả như sau:
Trang 12Nhận các tham số đầu vào của bài toán
Khởi tạo quần thể ban đầu
• Bước 1: Nhập các tham số đầu vào của bài toán, thiết lập các tham số cho
thuật toán từ các tham số đầu vào
• Bước 2: Xuất phát với thế hệ khởi đầu t=0; Khởi tạo quần thể xuất phát P(t)
= {x1, x2,… ,xN} ngẫu nhiên, với N là số lượng cá thể tại mỗi thế hệ (độ lớn của quần thể)
• Bước 3: Tính giá trị thích nghi hay còn gọi là hàm mục tiêu (fitness) của
các cá thể trong P(t)
• Bước 4: Kiểm tra điều kiện dừng thuật toán, có thể đạt được cá thể tốt nhất
cần tìm kiếm hoặc đạt đến thế cuối cùng được thiết lập Trường hợp chưa đạt, thuật toán chuyển sang bước tiếp ở sau để thực hiện tiến hóa
Trang 13• Bước 5: Chọn lọc các cá thể từ quần thể hiện tại để tạo bể lai ghép MP =
se{P(t)} gồm các thể đóng vai trò là bố mẹ, với se là toán tử lựa chọn
• Bước 6: Thực hiện lại ghép để tạo quần thể P’(t) = cr{MP} gồm các thể
con, với cr là toán tử lai ghép
• Bước 7: Thực hiện đột biến các cá thể trong P’(t) để tạo quần thể mới P”(t)
= mu{P’(t)} gồm các cá thể con sau khi áp dụng phép đột biến, với mu là toán tử đột biến
• Bước 7: Xác định P(t+1) = P”(t), đặt t = t+1 và quay lại Bước 3
1.2 Các vấn đề trong giải thuật di truyền
1.2.1 Biểu diễn lời giải của bài toán
Biểu diễn lời giải của bài toán hay còn gọi là mã hóa cá thể (chromosome encoding) là việc biểu diễn một ứng viên lời giải của bài toán gồm nhiều yếu tố, nhiều tham số thành một chuỗi gen (chromosome), một hoặc một số gen biểu diễn cho một thành tố trong lời giải Trong giải thuật di truyền cách mã hóa cá thể rất quan trọng, nó không chỉ quyết định đến hiệu quả của thuật toán mà còn ảnh hướng đến việc áp dụng các toán tử tiến hóa trong các bước lai ghép và đột biến Với đặc trưng của mỗi bài toán khác nhau chúng ta có thể có nhiều cách biểu diễn cá thể
Một trong những cách biểu diễn truyền thống của GA là biểu diễn nhị phân Với phép biểu diễn này, lời giải cho bài toán được biểu diễn như là một véc-tơ gồm các chữ số nhị phân, trong đó chia thành các đoạn gọi là nhiễm sắc thể (chromosome) Mỗi nhiễm sắc thể bao gồm nhiều gen, trong đó một gen đại diện cho một tham số thành phần của lời giải Cách biểu diễn thứ hai cũng thường dùng là biểu diễn dạng giá trị (số nguyên hoặc số thực hoặc các ký tự) Với phép biểu diễn này, các toán tử tiến hóa sẽ thực hiện trực tiếp trên các giá trị số (genes) của cá thể Phương pháp biểu diễn thứ ba là mã hóa hoán vị, trong đó lời giải của bài toán là một hoán vị các tham số biểu diễn Cuối cùng là phương pháp mã hóa dưới dạng cây dựa trên lời định đạng giải của bài toán cần giải quyết Chi tiết các phương pháp mã hóa được mô tả như sau [21]
a) Mã hóa nhị phân
Đây là hình thức phổ biến nhất của mã hóa trong đó các giá trị dữ liệu được chuyển đổi thành các chuỗi nhị phân Mã hóa nhị phân cho nhiều nhiễm sắc thể
Trang 14với một số lượng nhỏ của các alen Một nhiễm sắc thể được biểu diễn trong bảng
mã nhị phân như thể hiện trong hình 1.2
Hình 1.2- Minh họa kiểu mã hóa nhị phân của hai chuỗi gen
Hình 1.3- Minh họa phương pháp mã hóa hoán vị c) Mã hóa giá trị
Mã hóa trị có thể được cấu thành từ dạng số (nguyên hoặc thực), các ký tự tạo nên một bản thể đối tượng phức tạp Mã hóa giá trị là kỹ thuật trong đó mỗi nhiễm sắc thể là một chuỗi các giá trị và kiểu mã hóa này được sử dụng một khi nhiều các giá trị phức hợp được yêu cầu Nó có thể được thể hiện như thể hiện trong hình 1.4
Hình 1.4- Minh họa phương pháp mã hóa giá trị
Trang 15d) Mã hóa dạng cây
Là phương pháp phù hợp cho việc tiến hóa các biểu thức hoặc tiến hóa các chương trình, chẳng hạn lập trình tiến hóa Trong mã hóa dạng cây, mỗi nhiễm sắc thể là một cây các đối tượng, hàm hoặc các lệnh trong ngôn ngữ lập trình Ngôn ngữ lập trình LISP (Locator/identifier separation protocol) được sử dụng cho kiểu mã hóa này Chương trình LISP có thể được biểu diễn trong một cấu trúc cây với hai phép lai ghép và đột biến Trong mã hóa dạng cây, các nhiễm sắc thể được biểu diễn như thể hiện trong hình 1.5
Hình 1.5- Minh họa phương pháp mã hóa dạng cây Một điều đáng quan tâm là các phương pháp mã hóa ở trên có thể biểu diễn trực tiếp lời giải của bài toán, tức là các tham số trong lời giải được thể hiện rõ trong cách mã hóa Tuy nhiên, trong một số bài toán hoặc các trường hợp đặc biệt, lời giải bài toán khó để biểu diễn trực tiếp và do đó cần phải áp dụng việc biễn diễn gián tiếp lời giải cho cá thể của GA Theo cách này, chúng ta cần một công cụ để sinh đầy đủ lời giải của bài toán từ cá thể được mã hóa và thường được xây dựng bởi một đơn vị hàm hoặc đơn vị chương trình
Theo [21], không có bất kỳ một công cụ hoặc phương pháp nào để xác định việc sử dụng loại lược đồ mã hóa nào là thích hợp cho một vấn đề cụ thể, thay vào đó, nó phụ thuộc vào cụ thể từng bài toán ứng dụng và các yêu cầu của bài toán
1.2.2 Đánh giá cá thể
Việc đánh giá cá thể (là biểu diễn lời giải ứng viên của bài toán) nhằm xác định mức độ tốt xấu của lời giải tương ứng đối với bài toán Thông thường để đánh giá cá thể, chúng ta sử dụng một hàm để tính toán ra một giá trị thực với
Trang 16mục đích đo lường độ phù hợp của lời giải (fitness) Giá trị của hàm là giá trị độ phù hợp
Hàm fitness là một dạng đặc biệt để tổng hợp các mục tiêu của bài toán thành một giá trị đơn, giá trị này nhằm xác định mức độ gần với lời giải đúng của bài toán cho lời giải ứng viên trong biểu diễn của cá thể
Đặc biệt, trong lĩnh vực lập trình di truyền và các thuật toán di truyền, mỗi lời giải ứng viên thường được biểu diễn như là một chuỗi các con số (nhiễm sắc thể - chromosome) Sau mỗi đợt thử, hoặc kiểm nghiệm, ý tưởng là để xóa bỏ các lời giải tồi, và nhân giống những lời giải mới từ các lời giải tốt Mỗi lời giải,
do đó, cần phải được ghi nhận để chỉ cách biến đổi nó đến lời giải đúng của bài toán Điều này có được bằng cách áp dụng hàm fitness để thử, hoặc kiểm nghiệm, xác định kết quả thu được từ các giải pháp ứng viên
Việc thiết kế hàm fitness trong thuật toán di truyền không thể được xem nhẹ, những nỗ lực tham gia thiết kế một hàm fitness hoàn toàn khả thi là rất cần thiết Nếu chúng ta có một thiết kế hàm fitness tồi, thuật toán di truyền hoặc sẽ hội tụ
về một giải pháp không phù hợp, hoặc sẽ gặp khó khăn khi hội tụ toàn cục
Hơn nữa, hàm fitness không những phải tương quan chặt chẽ với mục tiêu của bài toán, mà nó cũng phải được thiết kế để có thể tính toán một cách nhanh chóng Tốc độ thực hiện của thuật toán trong quá trình tiến hóa là rất quan trọng, thuật toán di truyền là điển hình trong việc giải quyết các bài toán tối ưu phức tạp, cần phải lặp lại nhiều lầm để tạo ra một lời giải chấp nhận được cho một bài toán
Hai lớp hàm fitness thường được xem xét thiết kế sử dụng: một là hàm fitness không thay đổi cho mọi đánh giá cá thể; hai là hàm fitness có thể thay đổi cấu trúc tính toán trong quá trình tiến hóa
Việc định nghĩa rõ ràng một hàm fitness là không đơn giản trong nhiều trường hợp và thường được thực hiện lặp đi lặp lại nếu lời giải ứng viên sinh bởi
GA là không biểu diễn trực tiếp những ý đáp số của bài toán cần Trong một số trường hợp, nó là rất khó hoặc không thể đưa ra ngay cả với một dự đoán về những gì cần định nghĩa cho hàm fitness Các thuật toán di truyền tương tác giải quyết khó khăn này bằng cách đưa đánh giá độ phù hợp cá thể của GA cho các
bộ phận bên ngoài (thường là con người)
Trang 171.2.3 Khởi tạo quần thể ban đầu
Là quá trình sinh ngẫu nhiên các cá thể, mỗi cá thể gồm chuỗi nhiễm sắc thể
là các gen biểu diễn lời giải của bài toán Mỗi gen theo phương pháp biểu diễn sẽ
có một miền giá trị và chúng ta sẽ khởi tạo giá trị ngẫu nhiên trong miền đó Một
số trường hợp biểu diễn cần phải kiểm soát việc khởi tạo để sao cho lời giải được biểu diễn trong cá thể tạo ra không mâu thuẫn và vi phạm các điều kiện đặt
ra của bài toán Tạo quần thể khởi đầu trong giải thuật di truyền là nơi xuất phát của quá trình tiến hóa, bao gồm tất cả các giá trị thô ban đầu Tùy theo yêu cầu của từng bài toán mà chúng ta có thể có các cách khởi tạo khác nhau
1.2.4 Các phép toán di truyền
a) Phép chọn lọc (selection)
Phép chọn lọc là một phần quan trọng trong thuật toán di truyền (GA), dựa trên một tiêu chí đánh giá (hàm fitness) để trả về một phép đo giá trị cho bất kỳ nhiễm sắc thể trong không gian của bài toán Đó là giai đoạn của giải thuật di truyền nhằm thực hiện chọn một tập cá thể bố mẹ từ các thể của thế hệ hiện tại
để thực hiện các phép toán lai ghép Các kỹ thuật thường được sử dụng để chọn lọc các nhiễm sắc thể là phương pháp bánh xe Roulette, chọn lọc theo xếp hạng
và chọn lọc dựa trên trạng thái ổn định
xe Roulette được mô tả như sau:
Bước 1) Tính tổng độ phù hợp của tất cả các cá thể trong quần thể, từ đây có
thể xác định tỷ lệ phần trăm tương ứng phần bánh xe Roulette cho mỗi cá thể
Bước 2) Lấy số ngẫu nhiên trong đoạn [0,1]
Bước 3) Đi từ đầu và qua lần lượt các cá thể trong quần thể, đồng thời tính
tổng mức phần trăm đã xác định ở bước 1 của mỗi cá thể đi qua Khi một cá thể
Trang 18mà tại đó số tổng này là nhiều hơn hoặc bằng giá trị lấy ở bước 2 thì dừng lại và trả về cá thể đó
Hình 1.6 cho thấy bánh xe Roulette có sáu cá thể (F1,F2,…,F6) với giá trị fitness khác nhau Cá thể thứ sáu chiếm phần bánh xe to hơn so các cá thể còn lại vì nó có độ phù hợp lớn nhất Điều này với hy vọng rằng xác suất để bánh xe Roulette chọn cá thể thứ sáu cao hơn bất kỳ cá thể nào khác
Hình 1.6- Minh họa sơ đồ chọn theo bánh xe Roulette
- Phương pháp chọn lọc xếp hạng
Việc áp dụng phương pháp chọn lọc theo bánh xe Roulette là không phù hợp trong các thuật toán di truyền (GA) khi mà giá trị độ phù hợp của các cá thể là có
sự khác nhau rất lớn Nó là một kỹ thuật hội tụ chậm, trong đó việc xếp hạng các
cá thể theo các tiêu chí nhất định và mỗi nhiễm sắc thể của cá thể nhận giá trị độ phù hợp được xác định dựa trên bảng xếp hạng này Phương pháp này ngăn chặn
sự hội tụ nhanh vào lời giải cục bộ của thuật toán Các cá thể trong quần thể được xếp hạng dựa trên giá trị độ phù hợp và kỳ vọng của mỗi cá thể được lựa chọn phụ thuộc vào thứ hạng của nó chứ không phải là giá trị độ phù hợp tuyệt đối của nó
Phương pháp chọn lọc xếp hạng được thể hiện trong hình 1.7 Ví dụ, nếu giá trị fitness của cá thể tốt nhất là 80%, chu vi của nó chiếm 80% của bánh xe roulette và vì vậy các cá thể khác sẽ có ít cơ hội để được lựa chọn Việc chọn lọc theo thứ hạng được thực hiện như sau, đầu tiên xếp các cá thể theo giá trị fitness của chúng và sau đó mỗi nhiễm sắc thể (của cá thể) nhận thứ tự xếp hạng Cá thể
Trang 19hợp bằng 2, và một trong những cá thể tốt nhất sẽ có giá trị fitness là n, với n là
số lượng cá thể trong quần thể
Hình 1.7- Sơ đồ minh họa phép chọn lọc xếp hạng
- Chọn lọc theo trạng thái ổn định
Phương pháp này thay thế một số cá thể trong mỗi thế hệ, và không phải là một phương pháp điển hình cho phép chọn lọc thành các thể bố mẹ Chỉ có một
số lượng nhỏ các thể con mới được tạo ra thay thế vào cá thể bố mẹ tương ứng
Ý tưởng chính của chọn lọc theo trạng thái ổn định là việc giữa lại phần lớn các nhiễm sắc thể của các thể trong thế hệ kế tiếp
- Chọn lọc cạnh tranh
Chọn K cá thể từ quần thể hiện tại một cách ngẫu nhiên và chọn cá thể tốt nhất trong K cá thể đó để sao chép sao chép sang quần thể tạm thời Lặp lại bước chọn trên N lần chúng ta sẽ có quần thể tạm thời làm quần thể bố mẹ Giá trị K được gọi là kích cỡ của chọn lọc cạnh tranh Khi K=2 chúng ta chọn lọc cạnh tranh nhị phân
b) Phép lai ghép (crossover)
Nó là quá trình trong đó các gen được lựa chọn từ các nhiễm sắc thể của bố
mẹ (parents) để tạo ra cá thể con (children hoặc offspring) mới Phép lai ghép
thường được áp dụng theo một xác suất lai ghép là p c Phép lai ghép có thể được thực hiện với mã hóa nhị phân, mã hóa hoán vị, mã hóa giá trị và mã hóa dạng cây
Trang 20Trong sinh sản hữu tính, theo cách mà phép lai ghép xuất hiện trong thế giới thực, các sinh vật được di truyền từ cả hai bố mẹ là hỗn hợp (trộn) các gen từ bố
mẹ của chúng Thông thường, nhiễm sắc thể được chia tách ngẫu nhiên và sáp nhập, kết quả là cá thể con có một số gen đến từ một trong hai bố mẹ trong khi những gen khác đến từ cá thể bố mẹ còn lại
Phép lai ghép là một công cụ rất mạnh để sinh cá thể mới và duy trì sự đa dạng trong di truyền, theo đó đặc điểm nổi bật là cá thể bố mẹ tốt thì cũng sản sinh cá thể con tốt hoặc thậm chí còn tốt hơn bố mẹ Một số nghiên cứu [22] đã
đi đến kết luận rằng lai ghép là lý do tại sao các loài sinh sản hữu tính đã thích nghi nhanh hơn so với những loài sinh sản vô tính
Về cơ bản, lai ghép là việc trao đổi gen giữa các nhiễm sắc thể của hai bố
mẹ Trong trường hợp đơn giản, chúng ta có thể nhận ra quá trình này bằng cách cắt hai chuỗi gen của bố mẹ tại một vị trí được chọn ngẫu nhiên và hoán đổi hai phần đuôi sẽ tạo hai cá thể con mới Quá trình này, chúng ta sẽ gọi là lai ghép một điểm cắt (one-point crossover), xem trong hình 1.8
Hình 1.8- Minh họa lai ghép một điểm cắt trên chuỗi nhị phân
Theo [22], trong các thuật toán GA đơn giản, ngoài lại ghép một điểm cắt, chúng ta có thể thực hiện lai ghép N điểm cắt, lai ghép phân đoạn, lai ghép đều, lai ghép hỗn hợp
- Phép lai ghép N-điểm cắt (N-point crossover): Thay vì chỉ có một, N điểm cắt được lựa chọn ngẫu nhiên trên chiều dài chuỗi gen Trong đó, mỗi đoạn cắt
số chẵn tính từ đầu là đổi chỗ trên hai bố mẹ để tạo hai cá thể con Theo cách này, lai ghép hai điểm cắt là đặc biệt quan trọng
- Lai ghép phân đoạn (segmented crossover): Tương tự như lai ghép N-điểm cắt nhưng có sự khác biệt đó là số các điểm có thể khác nhau trong quá trình tiến
Trang 21- Lai ghép đều (uniform crossover): Với mỗi vị trí trên chiều dài chuỗi gen,
sẽ quyết định ngẫu nhiên xem giá trị gen tại vị trí đó được đổi chỗ trên hai bố mẹ hay không Minh họa bởi hình sau
Hình 1.9- Minh họa phép lai ghép đều
- Lai ghép hỗn hợp: Trước hết một hoán vị ngẫu nhiên được chọn để áp dụng trên hai bố mẹ, sau đó lai ghép N-điểm cắt được áp dụng tạo hai cá thể con Cuối cùng, các cá thể con được biến đổi ngược trở lại với hoán vị của bố mẹ tương ứng
Ngoài ra, tùy vào từng phương pháp biểu diễn, các nhà nghiên cứu [21] đề xuất áp dụng nhiều biến thể của phép lại ghép khác nhau nhằm đem lại hiệu quả cho thuật toán được áp dụng đối với bài toán tương ứng Chẳng hạn như lại ghép toán học (Arithmetic Crossover), lai ghép theo mã hóa hoán vị (Permutation encoding crossover), lai ghép theo mã hóa giá trị (Value encoding crossover) hay lai ghép theo mã hóa dạng cây (Tree encoding crossover)
c) Phép đột biến (mutation)
Hội tụ sớm là một vấn đề quan trọng trong hầu hết các kỹ thuật tối ưu, bao gồm quần thể mà chúng ta đạt được khi chuỗi gen của bố mẹ có độ phù hợp cao trong quần thể sinh sản nhiều cá thể con tương tự nhau trong thời gian đầu của tiến hóa Phép lai ghép của thuật toán di truyền không thể tạo ra con cái hoàn toàn khác với cha mẹ của chúng, vì những thông tin có được sử dụng để lai ghép trên chuỗi gen Một phép toán khác đó là đột biến, có thể tìm kiếm trên các khu vực mới trong không gian lời giải của bài toán, đây là sự tương phản với lai ghép Lai ghép được xem như là phép khai thác trong khi đột biến như là phép thăm dò hay khám phá Giống như lai ghép, đột biến cũng có thể được thực hiện cho tất cả các loại kỹ thuật mã hóa cá thể
Trong sinh sản tự nhiên, xác suất mà một gen nào đó bị đột biến là gần như
bằng nhau cho tất cả các gen Tuy nhiên, chúng ta cần một xác suất đột biến p m
Trang 22đủ bé để quá trình tiến hóa không bị phân tán lung tung dẫn đến khó hội tụ Tương tự như phép lai ghép, sự lựa chọn phù hợp kỹ thuật đột biến phụ thuộc vào phương pháp mã hóa cá thể và chính bài toán đang giải quyết Chúng ta sẽ
đề cập đến một vài phép đột biến như sau [22]
- Đột biến đảo ngược: chọn hai vị trí ngẫu nhiên trong một nhiễm sắc thể và sau đó, lấy đảo ngược chuỗi gen giữa hai vị trí này
Ví dụ:
Nhiễm sắc thể ban đầu: 9 3 8 5 7 1 6 4 2
Nhiễm sắc thể sau khi đột biến : 9 3 1 7 5 8 6 4 2
- Đột biến chèn: chọn ngẫu nhiên một gen và sau đó chèn nó vào vị trí ngẫu nhiên khác
Trang 23Sau đột biến (trái): 9 8 3 5 7 1 6 4 2
Sau đột biến (phải): 9 3 5 8 7 1 6 4 2
Ngoài ra, theo [21], chúng ta có thể áp dụng các biến thể của phép đột biến khác nhau tùy theo cách mã hóa cá thể và bài toán Chẳng hạn có phép đột biến theo mã hóa hoán vị, đột biến theo mã hóa giá trị, đột biến theo mã hóa dạng cây
1.2.5 Điều kiện kết thúc
Để kết thúc quá trình tiến hóa, thì tùy thuộc vào bài toán sẽ có các cách kết thúc khác nhau một khi đã đạt đến điều kiện yêu cầu Một vài trường hợp kết thúc quá trình tiến hóa thông thường như sau:
- Kết thúc theo kết quả: khi có một cá thể trong thế hiện tại đạt đến mức giá trị độ phù hợp theo yêu cầu thì dừng quá trình tiến hóa
- Kết thúc dựa vào số thế hệ: chọn số thế hệ tối đa trước khi tiến hóa, quá trình sẽ dừng đạt số thế hệ đã chọn đó, không cần kiểm tra kết quả là như thế nào
- Tính theo thời gian: bỏ qua việc tiến hóa bao nhiêu thế hệ hay kết quả như thế nào, chỉ dựa vào thời gian tiến hóa đã qui định trước để kết thúc
- Hỗn hợp: dùng nhiều phương án khác nhau ở trên, khi đạt đến một trong các điều kiện thì dừng thuật toán
1.3 Ứng dụng của giải thuật di truyền
Giải thuật di truyền (GA) được ứng dụng cho những bài toán khó, chẳng hạn như điều khiển quá trình phi tuyến phức tạp với bài toán tối ưu theo tham số GA hiện đã được ứng dụng thành công cho một số bài toán như: lập kế hoạch, điều khiển tương thích, chương trình trò chơi, các bài toán vận tải, bài toán người đi