Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
828,9 KB
Nội dung
TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC DÂN LẬP HẢI PHÕNG iso 9001 : 2008 BÁO CÁO TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN Địa điểm thực tập: Trƣờng Đại học Dân lập Hải Phòng Đề tài: Tìm Hiểu Giải Thuật Di Truyền Ứng Dụng Giải Bài Toán Lập Lịch Giáo viên hƣớng dẫn: Th.S Đỗ Văn Chiểu Sinh viên :Hồng Chính Nghĩa Lớp : CT901 Mã số: 090036 Khố:9 Hải Phòng,3/2009 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH LỜI CẢM ƠN Để hoàn thành báo cáo thực tập này, trƣớc hết, em xin cảm ơn thầy giáo, cô giáo Khoa Công nghệ thông tin Trƣờng Đại học Dân lập Hải Phòng, ngƣời dạy dỗ, trang bị cho em kiến thức chuyên môn bốn năm học,và giúp chúng em hiểu rõ lĩnh vực nghiên cứu để hoàn thành đề tài đƣợc giao Em xin bày tỏ lòng biết ơn xâu sắc tới thầy giáo Thạc sĩ Đỗ Văn Chiểu, ngƣời hƣớng dẫn, bảo tận tình để em hồn thành q trình thực tập Xin cảm ơn bạn bè gia đình động viên cổ vũ, đóng góp ý kiến, trao đổi, động viên suốt trình học nhƣ làm tốt nghiệp, giúp em hoàn thành đề tài thời hạn Em xin chân thành cảm ơn ! Hải Phòng, tháng năm 2009 Sinh viên Hồng Chính Nghĩa Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH MUC LUC LỜI MỞ ĐẦU CHƢƠNG I- TÌM HIỂU VỀ BÀI TỐN LẬP LỊCH 1.1 Tìm hiểu chung 1.2 Các đặc tính toán lập lịch 1.3 Bài Toán Lập Lịch Thời Khoá Biểu 1.3.1 Giới thiệu toán 1.3.2 Dữ liệu toán 1.4 Một số bƣớc để giải toán lập lịch thời khoá biếu CHƢƠNG II-GIẢI THUẬT DI TRUYỀN (GAs) 2.1 Tìm hiểu chung Gas 2.2 Các toán tử giải thuật di truyền 12 2.3 Các tham số giải thuật di truyền 13 2.4 Công thức Giải thuật Di Truyền 14 2.5 Các thành phần thuật giải di truyền 15 2.5.1 Khởi động quần thể ban đầu 15 2.5.2 Đánh giá cá thể 15 2.5.3 Toán tử lai ghép 16 2.5.4 Toán tử đột biến 16 2.5.5 Điều kiện kết thúc 17 CHƢƠNG III- ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN XẾP LỊCH THỜI KHOÁ BIỂU 17 3.1 Giai đoạn - xếp lịch học lớp 18 3.1.1 Chọn mơ hình cá thể 18 3.1.2 Tạo quần thể ban đầu 21 3.1.3 Độ thích nghi - chọn cá thể 22 3.1.4 Thuật toán lai ghép đột biến 23 3.2 Giai đoạn - xếp lịch học cho toàn sở 23 3.2.1 Chọn mơ hình cá thể 23 3.2.2 Tạo quần thể ban đầu 25 3.2.3 Độ thích nghi - chọn cá thể 25 3.2.4 Thuật toán lai ghép đột biến 26 3.2.5 Chọn điểm dừng thuật toán 26 CHƢƠNG 4- THIẾT KẾ HỆ THỐNG LẬP LỊCH THỜI KHÓA BIỂU 27 4.1 Thiết kế sở liệu toán 27 4.2 Các đối tƣợng lịch học 28 4.3 Biểu diễn nhiễm sắc thể 28 4.4 Các tham số giải thuật di truyền 30 4.4.1 Phép lai ghép 30 4.4.2 Phép đột biến 33 4.6 Độ thích nghi 34 4.7 Chƣơng trình thực nghiệm 37 Kết luận hƣớng phát triển 40 Tài Liệu Tham Khảo 41 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH LỜI MỞ ĐẦU Trong ngành khoa học máy tính, tìm kiếm lời giải tối ƣu cho toán vấn đề đƣợc nhà khoa học máy tính đặc biệt quan tâm Mục đích thuật tốn tìm kiếm lời giải tìm lời giải tối ƣu cho toán thời gian nhỏ Các thuật tốn nhƣ tìm kiếm khơng có thơng tin / vét cạn ( tìm kiếm danh sách, đồ thị ) sử dụng phƣơng pháp đơn giản trực quan thuật toán tìm kiếm có thơng tin sử dụng heurictics để áp dụng tri thức cấu trúc 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 đƣợc sử dụng nhiều nhƣng với khơng gian tìm kiếm nhỏ khơng hiệu tìm kiếm khơng gian tìm kiếm lớn Tuy nhiên, thực tiễn có nhiều tốn tối ƣu với khơng gian tìm kiếm lớn cần phải giải Vì vậy, việc đòi hỏi thuật giải chất lƣợng cao sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt cần thiết giải toán có khơng gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối ƣu đáp ứng đƣợc yêu cầu nhiều toán ứng dụng Thuật giải di truyền đƣợc phát minh để bắt chƣớc trình phát triển tự nhiên điều kiện quy định sẵn mơi trƣờng Các đặc điểm q trình thu hút ý John Holand (ở đại học Michigan) từ năm 1970 Holand tin gắn kết thích hợp thuật giải máy tính tạo kỹ thuật giúp giải vấn đề khó khăn giống nhƣ tự nhiên diễn ra-thơng qua q trình tiến hóa Trên giới nay, Thuật Giải Di Truyền kết hợp với Công nghệ thông tin đƣợc ứng dụng để giải vấn đề phức tạp hệ thống điện Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH cách hiệu Nhƣng đề tài này, nghiên cứu ứng dụng Thuật Giải Di Truyền xếp Thời khoá biểu trƣờng Đại học Nội dung báo cáo gồm lời nói đầu bốn chƣơng chính: Chƣơng 1- Tìm hiểu toán lập lịch Chƣơng 2- Giải thuật di truyền Chƣơng 3- Ứng dụng giải thuật Di truyền vào toán xếp thời khoá biểu Chƣơng 4- Thiếp kế hệ thống lập lich thời khố biểu CHƢƠNG I- TÌM HIỂU VỀ BÀI TỐN LẬP LỊCH (Scheduling problem) 1.1 Tìm hiểu chung Lập lịch đƣợc định nghĩa tốn tìm kiếm chuỗi tối ƣu để thực tập hoạt động chịu tác động tập ràng buộc cần phải đƣợc thỏa mãn Ngƣời lập lịch thƣờng cố gắng thử đến mức tối đa sử dụng cá thể, máy móc tối thiểu thời gian đòi hỏi để hồn thành tồn q trình nhằm xếp lịch.Vì tốn lập lịch vấn đề khó để giải Hiện có nhiều khả để phát triển kỹ thuật để giải tốn Những kỹ thuật bao gồm: tiếp cận Trí tuệ nhân tạo nhƣ hệ thống tri thức sở (knowledge-based systems), toán thoả mãn ràng buộc, hệ chuyên gia, mạng Nơron tiếp cận Nghiên cứu hoạt động: lập trình tính tốn, lập trình động, tìm kiếm nhánh đƣờng biên, kỹ thuật mơ phỏng, tìm kiếm Tabu phƣơng pháp nút cổ chai Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TỐN LẬP LICH 1.2 Các đặc tính tốn lập lịch Tài ngun: nguồn liệu đầu vào toán Các tài nguyên phục hồi khơng Tác vụ: đƣợc đánh giá qua tiêu chuẩn thực nhƣ thời gian thực hiện, chi phí, mức tiêu thụ nguồn tài nguyên Ràng buộc: điều kiện cần thỏa mãn để tốn đƣa lời giải tốt Mục tiêu: đánh giá độ tối ƣu lịch trình lời giải tốn Khi mục tiêu đƣợc thỏa mãn ràng buộc phải đƣợc thỏa mãn 1.3 Bài Toán Lập Lịch Thời Khoá Biểu 1.3.1 Giới thiệu toán Bài toán đặt vấn đề cần xếp thời khoá biếu cho trƣờng đại học với nhiều sở khác Cần có xếp lịch học cho lớp phòng địa điểm, cho vừa phù hợp lại vừa tiện dụng 1.3.2 Dữ liệu toán Danh sách sở Danh sách khoa Danh sách khoá học Danh sách học phần học lớp học kỳ Danh sách lớp học Danh sách giáo viên Danh sách phòng học Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TỐN LẬP LICH Danh sách mơn học số tiết Bảng phân công giáo viên giảng dạy lớp Bảng yêu cầu ràng buộc giáo viên vớI lịch dạy Bảng yêu cầu ràng buộc lớp với lịch học Bảng yêu cầu ràng buộc phòng với lịch sử dụng phòng 1.4 Một số bƣớc để giải toán lập lịch thời khoá biếu Bƣớc Khởi tạo liệu thời khóa biểu Bƣớc Nhập, điều chỉnh liệu gốc thời khóa biểu Bƣớc Nhập, sửa, điều chỉnh ràng buộc thời khóa biểu Các ràng buộc thời khóa biểu nhóm liệu có nhiệm vụ định hình khn dạng thời khóa biểu Đây nhóm lệnh quan trọng tốn phần mềm thời khóa biểu Bƣớc Nhập bảng Phân công giảng dạy (PCGD) Bảng phân công giảng dạy (hay gọi Phân cơng chun mơn) phần liệu quan trọng phức tạp thời khóa biểu Bảng phân cơng cụ thể thời khóa biểu: giáo viên dạy lớp nào, môn học tuần dạy tiết Bƣớc Chuẩn bị xếp thời khóa biểu Bƣớc Xếp tự động TKB Bƣớc Điều chỉnh, tinh chỉnh liệu thời khóa biểu Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Bƣớc Hồn thiện thời khóa biểu (sử dụng RAD) Bƣớc In ấn TKB Bƣớc 10 Tổng hợp, thống kê truy vấn thơng tin thời khóa biểu CHƢƠNG II-GIẢI THUẬT DI TRUYỀN (GAs) 2.1 Tìm hiểu chung Gas Genetic algorithms (thuật giải di truyền) giải thuật mơ theo q trình chọn lọc tự nhiên, kỹ thuật chung giúp giải vấn đề tốn cách mơ tiến hóa ngƣời hay sinh vật nói chung (dựa thuyết tiến hóa mn lồi Darwin) điều kiện qui định sẵn môi trƣờng Lấy ý tƣởng từ q trình tiến hố tự nhiên, xuất phát từ lớp lời giải tiềm ban đầu, GA tiến hành tìm kiếm khơng gian lời giải cách xây dựng lớp lời giải tốt (tối ƣu hơn) lời giải cũ Quá trình xây dựng lớp lời giải đƣợc tiến hành dựa việc chọn lọc, lai ghép, đột biến từ lớp lời giải ban đầu Quần thể lời giải trải qua q trình tiến hố: hệ lại tái sinh lời giải tƣơng đối tốt, lời giải “xấu” chết Vậy GAs làm gì? Trong GA, tập biến tốn đƣa đƣợc mã hóa sang chuỗi (hay cấu trúc mã hóa khác) tƣơng tự nhƣ nhiễm sắc thể tự nhiên Mỗi chuỗi bao gồm giải pháp toán Giải thuật di truyền sử dụng toán tử đƣợc sinh chọc lọc tự nhiên quần thể chuỗi nhị phân (hoặc cấu trúc khác), mã hóa khoảng tham số hệ, khảo sát phạm vi khác không gian tham số, định hƣớng tìm kiếm đối Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH với khoảng mà xác suất cao để tìm kiếm thực tốt Thuật tốn di truyền gồm có bốn quy luật lai ghép, đột biến, sinh sản chọn lọc tự nhiên Quá trình lai ghép (phép lai) trình diễn cách ghép hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hình thành nhiễm sắc thể mang đặc tính cha lẫn mẹ Phép lai mơ tả nhƣ sau: -Chọn ngẫu nhiên hai hay nhiều cá thể quần thể Giả sử chuỗi nhiễm sắc thể cha mẹ có chiều dài m Tìm điểm lai cách tạo ngẫu nhiên số từ đến m-1 Nhƣ vậy, điểm lai chia hai chuỗi nhiễm sắc thể cha-mẹ thành hai nhóm nhiễm sắc thể m1 m2 Hai chuỗi nhiễm sắc thể lúc m11+m22 m21+m12 Đƣa hai chuỗi nhiễm sắc thể vào quần thể để tiếp tục tham gia q trình tiến hóa Q trình đột biến (phép đột biến) q trình tiến hóa đƣợc gọi trình đột biến tính trạng khơng đƣợc thừa hƣởng từ hai chuỗi nhiễm sắc thể cha-mẹ Phép đột biến xảy với xác suất thấp nhiều lần so với xác suất xảy phép lai Phép đột biến mơ tả nhƣ sau: -Chọn ngẫu nhiên số k từ khoảng ≥ k ≥ m -Thay đổi giá trị gen thứ k -Đƣa nhiễm sắc thể vào quần thể để tham gia trình tiến hóa Q trình sinh sản chọn lọc (phép tái sinh phép chọn) Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Phép tái sinh: trình cá thể đƣợc chép dựa độ thích nghi Độ thích nghi hàm đƣợc gán giá trị thực cho cá thể quần thể Phép tái sinh mơ nhƣ sau: -Tính độ thích nghi cá thể quần thể, lập bảng cộng dồn giá trị thích nghi (theo thứ tự gán cho cá thể) ta đƣợc tổng độ thích nghi Giả sử quần thể có n cá thể Gọi độ thích nghi cá thể thứ i Fi, tổng dồn thứ i Ft Tổng độ thích nghi Fm Tạo số ngẫu nhiên F có giá trị đoạn từ đến Fm -Chọn cá thể k thỏa mãn F ≥ Ft đƣa vào quần thể hệ Phép chọn: trình loại bỏ cá thể xấu để lại cá thể tốt Phép chọn đƣợc mô tả nhƣ sau: - Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần - Loại bỏ cá thể cuối dãy, để lại n cá thể tốt Báo Cáo Đồ Án Tốt Nghiệp _Hoàng Chính Nghĩa _Ct901 10 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH CHƢƠNG IV- THIẾT KẾ HỆ THỐNG LẬP LỊCH THỜI KHÓA BIỂU 4.1 Thiết kế sở liệu toán Khi tạo lịch lớp học cần xem xét đến nhiều yêu cầu số lƣợng giảng viên, học sinh, số lớp học, phòng học, kích cỡ phòng học trang thiết bị lớp học( máy tính, máy chiếu…) nhiều yếu tố khác Các yêu cầu đƣợc chia thành nhiều nhóm tuỳ theo tầm quan trọng chúng Các yêu cầu bắt buộc (nếu vi phạm yêu cầu này, lịch học thành vô hiệu, bất khả thi): - Lớp diễn phòng học - Khơng giảng viên hay nhóm sinh viên nhiều lớp học lúc - Lớp học phải đủ chỗ cho tất học sinh - Để lớp học diễn phòng học, lớp học phải có thiết bị cần thiết Một số yêu cầu không bắt buộc vi phạm lịch học khả thi: - Thời gian học lớp đƣợc ƣu tiên cho giảng viên - Phòng học giảng viên chọn - Phân bổ (thời gian không gian) lớp học dành cho nhóm sinh viên giảng viên Các yêu cầu bắt buộc không bắt buộc khóa học tùy thuộc vào hồn cảnh cụ thể Trong hệ thống lập lịch thời khóa biểu đề cập đến yêu cầu bắt buộc Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 27 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 4.2 Các đối tƣợng lịch học Giảng viên Phần giảng viên có ID( danh) tên giảng viên Nó chứa danh sách lớp mà giảng viên dạy Nhóm sinh viên Phần nhóm sinh viên chứa danh tính tên nhóm sinh viên , nhƣ số lƣợng sinh viên( kích cỡ nhóm) Nó chứa danh sách lớp học mà nhóm tham gia học Phòng học Phần phòng học chứa ID tên phòng học, nhƣ số lƣợng chỗ ngồi máy tính( có) Nếu phòng học có máy tính, dự kiến chỗ ngồi có máy tính Các ID đƣợc tạo nội tự động Khoá học Phần khóa học có ID tên khóa học Lớp học Phần lớp học giới thiệu khóa học lớp học đó, giảng viên danh sách nhóm sinh viên tham dự lớp giảng viên Phần đƣa số lƣợng chỗ ngồi cần thiết( số lƣợng nhóm sinh viên) , lƣợng máy tính lớp học (nếu cần) thời lƣợng lớp học ( tính giờ) 4.3 Biểu diễn nhiễm sắc thể Để trình bày nhiễm sắc thể ta cần slot cho mỗt phòng học hàng ngày thời khóa biểu Ngồi ra, khẳng định bắt đầu lớp học trƣớc sáng nên kết thúc trƣớc vào lúc đêm (tổng 12giờ) ngày làm việc từ thứ Hai đến thứ Sáu (tổng ngày).Vì vậy, chúng Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 28 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH ta cần điều chỉnh số lớp học (12*5*số phòng học) Các slot sau đƣợc kế thừa từ slot trƣớc q trình thực thuật tốn cho phép nhiều lớp học thời điểm slot Ta dùng thêm ánh xạ bảng băm để lấy slot thời điểm lớp học bắt đầu( vị trí theo vectơ) từ địa đối tƣợng lớp Mỗi lớp học có mục nhập riêng biệt véc tơ, nhƣng có mục nhập cho lớp học ánh xạ bảng băm Biểu diễn cá thể Nhiễm sắc thể với số lƣợng 100 đƣợc biểu diễn lớp Schedule đƣợc lƣu trữ thuộc tính Các khe thời gian, khe biểu diễn lớp học Vector<list<CourseClass*>>_slots; Bảng lớp dành cho nhiễm sắc thể dược dùng để định slot lớp //Được sử dụng để định khe thời gian sử dụng lớp học Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 29 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Hash_map<CourseClass*, int> _classes; Đồng thời nhiễm sắc thể đƣợc lƣu trữ giá trị phù hợp tham số việc sử dụng thao táo giải thuật Những giá trị phù hợp đƣợc lƣu trữ tại: Float_fitness; //Các cờ thỏa rang buộc lớp Vector<bool>_criteria; 4.4 Các tham số giải thuật di truyền Số điểm lai ghép bảng lớp cha mẹ int_numberOfCrossoverPoints= ; Số lượng lớp mà di chuyển ngẫu nhiên thao tác đột biến đơn giản int_mutationSize= ; Xác suất lai ghép xảy int_crossoverProbability= 80% ; Xác suất đột biến xảy int_mutationProbability= 3% ; 4.4.1 Phép lai ghép Nhƣ nói phép lai ghép diễn cách ghép hay nhiều đoạn gen từ hai nhiễm sắc thể cha-mẹ để hình thành nhiễm sắc thể mang đặc tính cha lẫn mẹ Ví dụ: Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 30 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Trong hệ thống thao tác lai ghép ban đầu kiểm tra số với xác suất lai ghép lớn tiến hành lai ghép trả nhiễm sắc thể gọi nhiễm sắc thể Quá trình lựa chọn điểm lai ghép ngẫu nhiên if( rand() % 100 > _crossoverProbability ) return new Schedule( *this, false ); Schedule* n = new Schedule( *this, true ); int size = (int)_classes.size(); vector cp( size ); for( int i = _numberOfCrossoverPoints; i > 0; i ) { while( ) { int p = rand() % size; if( !cp[ p ] ) { cp[ p ] = true; break; } } } Quá trình lai ghép kết hợp liệu bảng băm hai nhiễm sắc thể cha mẹ, sau tạo véc tơ slot theo nội dung bảng băm Lai ghép 'Tách' bẳng băm hai nhiễm sắc thể cha mẹ thành phần có kích thƣớc ngẫu nhiên Số thành phần đƣợc xác định số lƣợng điểm lai ghép (cộng thêm một) theo tham số nhiễm sắc thể Sau đó, chép thay luân phiên phần nhiễm sắc thể cha mẹ mẫu thành nhiễm sắc thể mới, hình thức thao tác lai ghép Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 31 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH hash_map::const_iterator it1 = _classes.begin(); hash_map::const_iterator it2 = parent2._classes.begin(); // // // // // bool first = rand() % == 0; for( int i = 0; i < size; i++ ) { if( first ) { Chèn lớp từ nst cha me đến bảng nst n->_classes.insert( pair( ( *it1 ).first, ( *it1 ).second ) ); Tất slot lớp chép for( int i = ( *it1 ).first->GetDuration() - 1; i >= 0; i ) n->_slots[ ( *it1 ).second + i ].push_back( ( *it1 ).first ); } else { Chèn lớp từ nst cha mẹ hệ thứ vào bảng nst n->_classes.insert( pair( ( *it2 ).first, ( *it2 ).second ) ); Tất slot lớp chép for( int i = ( *it2 ).first->GetDuration() - 1; i >= 0; i ) n->_slots[ ( *it2 ).second + i ].push_back( ( *it2 ).first ); } Số điểm lai ghép if( cp[ i ] ) first = !first; it1++; it2++; } Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 32 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 4.4.2 Phép đột biến Cũng giống nhƣ phép đột biến diễn cách tình trạng khơng đƣợc thừa hƣởng từ hai chuỗi nhiễm sắc thể cha mẹ Phép đột biến xảy với xác suất thấp nhiều so với xác suất xảy phép lai ghép Ví dụ: Trong hệ thống thao tác đột biến ban đầu kiểm tra xác suất đột biến với số if( rand() % 100 > _mutationProbability ) return; Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 33 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TỐN LẬP LICH Sau thao tác đột biến tạo lớp ngẫu nhiên di chuyển nhiễm sắc thể đến slot đƣợc lựa chọn ngẫu nhiên khác Số lớp học đƣợc di chuyển vào thao tác đơn lẻ đƣợc xác định kích thƣớc đột biến tham số nhiễm sắc thể // Lựa chọn điểm lớp cách ngẫu nhiên int int int int int int nr = Configuration::GetInstance().GetNumberOfRooms(); dur = cc1->GetDuration(); day = rand() % DAYS_NUM; room = rand() % nr; time = rand() % ( DAY_HOURS + - dur ); pos2 = day * nr * DAY_HOURS + room * DAY_HOURS + time; // Di chuyển slot for( int i = dur - 1; i >= 0; i ) { // Lo ại b ỏ lớp từ slot thời gian thời list& cl = _slots[ pos1 + i ]; for( list::iterator it = cl.begin(); it != cl.end(); it++ ) { if( *it == cc1 ) { cl.erase( it ); break; } } // Di chuyển lớp tới slot thời gian _slots.at( pos2 + i ).push_back( cc1 ); // Thay đổi đầu vào bảng lớp để tới slot (khe) thời gian _classes[ cc1 ] = pos2; 4.6 Độ thích nghi Đây phần giải yêu cầu đƣa cho toán, chủ yếu xem xét thành phần ràng buộc Tƣơng ứng với loại ràng buộc Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 34 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH gán cho chúng giá trị thích nghi đó, mà cá thể qua, ràng buộc đƣợc lắp đặt vào, cho giá trị thích nghi cụ thể cho cá thể đó, kết thúc cơng việc tính độ thích nghi Bây cần phải ấn định giá trị thích hợp cho nhiễm sắc thể Ta áp dụng yêu cầu tối thiểu cho lịch học lớp (khơng có lạ, ví dụ, cơng nhận giảng viên đứng lớp lúc nào).Cách làm nhƣ sau: Mỗi lớp học có từ đến vị trí Nếu lớp học sử dụng phòng trống, ta gia tăng score bool ro = false; for( int i = dur - 1; i >= 0; i ) { if( _slots[ p + i ].size() > ) { ro = true; break; } } if( !ro ) score++; _criteria[ ci + ] = !ro; Nếu lớp học đòi hỏi phải có máy tính phòng học, ta tăng score Nhƣng lớp học khơng cần máy tính, tăng score cách _criteria[ ci + ] = !cc->IsLabRequired() || ( cc->IsLabRequired() && r->IsLab() ); if( _criteria[ ci + ] ) score++; Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 35 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Nếu lớp học phòng có đủ chỗ ngồi, ta tăng score _criteria[ ci + ] = r->GetNumberOfSeats()>cc>GetNumberOfSeats(); if( _criteria[ ci + ] ) score++; Nếu giảng viên lên lớp ( khơng có lớp học khác) thời điểm đó, tăng score lớp lên lần Và tiêu chí cuối cần kiểm tra liệu nhóm sinh viên lớp có phải học lớp khác thời điểm không, không tăng score lớp for( int i = numberOfRooms, t = day * daySize + time; i > 0; i ,t += DAY_HOURS ) { for( int i = dur - 1; i >= 0; i ) { const list& cl =_slots[ t + i ]; for( list::const_iterator it =cl.begin(); it != cl.end(); it++ ) { if( cc != *it ) { if( !po && cc>ProfessorOverlaps(**it ) ) po = true; if( !go && cc->GroupsOverlap( **it ) ) go = true; if( po && go ) goto total_overlap; } } } } total_overlap: if( !po ) Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 36 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH score++; _criteria[ ci + ] = !po; if( !go ) score++; _criteria[ ci + ] = !go; Tổng số lịch tổng hợp tất mặt lớp học _fitness = (float)score / Configuration::GetInstance().GetNumberOfCourseClasses() * DAYS_NUM ); 4.7 Chƣơng trình thực nghiệm Kết demo chạy thử nghiệm chƣơng trình lập lịch thời khoá biểu giải thuật di truyền Chƣơng trình demo bao gồm phần sở liệu tạo phòng( room room 2) với tên giáo viên, tên mơn học, tên phòng học, số học ( quy định 2h), lớp học với thuộc tính đƣợc lập trình sẵn Chƣơng trình dừng hàm Fitness có giá trị 1.00000 Chƣơng trình Thử nghiệm Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 37 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 38 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 39 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Kết luận hƣớng phát triển I Kết đạt đƣợc *Áp dụng đƣợc giải thuật di truyền để giải toán thời khoá biểu Xây dựng thành cơng chƣơng trình demo xếp thời khoá biểu II Hạn chế - Hƣớng phát triển tƣơng lai Hạn chế: + Do giải thuật di truyền mang tính chất ngẫu nhiên nên đơi kết đạt đƣợc 100% + Giải thuật Di Truyền giải tốn tối ƣu (cực tiểu hóa hàm mục tiêu) với n biến vào Tuy nhiên, với số lƣợng biến vào nhiều, giá trị hàm mục tiêu đạt đƣợc thƣờng không gần với kết tối ƣu thực Để khắc phục vấn đề này, tăng số lƣợng vòng lặp, hy vọng lần sinh sản muộn hình thành cháu với độ thích nghi cao ứng với giá trị hàm mục tiêu gần kết tối ƣu thực Hƣớng phát triển tƣơng lai + Sắp thời khóa biểu thực hành theo nhiều mức độ ƣu tiên hơn( ƣu tiên cho giảng viên….) + Hoàn thiện số chức hiệu chỉnh để ngƣời dùng linh động trình hiệu chỉnh Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 40 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH Tài Liệu Tham Khảo Lập trình tiến hố_Ts Nguyễn Đình Thúc Giới thiệu giải thuật Di truyền Tính tốn Tiến hóa _PGS.TS Randy Ribler khoa tin trƣờng đại học Lynchburg,VA,USA http://forum.mait.vn http://www.kh-sdh.udn.vn http://baigiang.violet.vn http://www.vninformatics.com Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct901 41 ... _Hồng Chính Nghĩa _Ct901 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH MUC LUC LỜI MỞ ĐẦU CHƢƠNG I- TÌM HIỂU VỀ BÀI TỐN LẬP LỊCH 1.1 Tìm hiểu chung ... II-GIẢI THUẬT DI TRUYỀN (GAs) 2.1 Tìm hiểu chung Gas 2.2 Các toán tử giải thuật di truyền 12 2.3 Các tham số giải thuật di truyền 13 2.4 Công thức Giải thuật. .. biệt cần thiết giải tốn có khơng gian tìm kiếm lớn Thuật giải di truyền (genetic algorithm) kỹ thuật tìm kiếm lời giải tối ƣu đáp ứng đƣợc yêu cầu nhiều toán ứng dụng Thuật giải di truyền đƣợc