TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

42 35 0
TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

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

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

Thông tin tài liệu

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/2019 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 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 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 2019 Sinh viê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 MUC LUC LỜI MỞ ĐẦU CHƯƠNG I- TÌM HIỂU VỀ BÀI TOÁN LẬP LỊCH 1.1 Tìm hiểu chung 1.2 Các đặc tính tố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 đề 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 toán 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 tố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 sử dụng nhiều 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 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 yêu cầu nhiều toán ứng dụng Thuật giải di truyền 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 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 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 ứ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 tố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 đị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 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 toán Những kỹ thuật bao gồm: tiếp cận Trí tuệ nhân tạo 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 TOÁN LẬP LICH 1.2 Các đặc tính tốn lập lịch Tài nguyên: nguồn liệu đầu vào tốn Các tài ngun phục hồi không Tác vụ: đánh giá qua tiêu chuẩn thực 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 toán Khi mục tiêu thỏa mãn ràng buộc phải 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 toá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 cịn gọi Phân công chuyên 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 trình chọn lọc tự nhiên, kỹ thuật chung giúp giải vấn đề toá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 hoá 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 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 mã hóa sang chuỗi (hay cấu trúc mã hóa khác) tương tự nhiễm sắc thể tự nhiên Mỗi chuỗi bao gồm giải pháp tốn Giải thuật di truyền sử dụng toán tử 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 toá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ả 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 gọi q trình đột biến tính trạng không 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ả 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 q trình tiến hóa Quá 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 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 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 ư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 , 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, 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 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 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ơ, 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 biểu diễn lớp Schedule 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ể 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 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 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 phép đột biến diễn cách tình trạng không 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 TOÁ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 lựa chọn ngẫu nhiên khác Số lớp học di chuyển vào thao tác đơn lẻ 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 nr = Configuration::GetInstance().GetNumberOfRooms(); int dur = cc1->GetDuration(); int day = rand() % DAYS_NUM; int room = rand() % nr; int time = rand() % ( DAY_HOURS + - dur ); int 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 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 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 TỐ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 khố 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 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 *Áp dụng 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 khố biểu AI 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 kết đạt khơng phải 100% + Giải thuật Di Truyền giải toá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 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 q 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 ... 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 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... 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

Ngày đăng: 29/08/2020, 18:04

Hình ảnh liên quan

Mô hình cá thể trong lịch cơ sở. - TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

h.

ình cá thể trong lịch cơ sở Xem tại trang 25 của tài liệu.
Bảng lớp dành cho nhiễm sắc thể dược dùng để quyết định slot đầu tiên của lớp - TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

Bảng l.

ớp dành cho nhiễm sắc thể dược dùng để quyết định slot đầu tiên của lớp Xem tại trang 30 của tài liệu.
Quá trình lai ghép kết hợp các dữ liệu trong bảng băm của hai nhiễm sắc thể cha mẹ, và sau đó nó tạo ra véc tơ của các slot theo nội dung của bảng băm mới - TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

u.

á trình lai ghép kết hợp các dữ liệu trong bảng băm của hai nhiễm sắc thể cha mẹ, và sau đó nó tạo ra véc tơ của các slot theo nội dung của bảng băm mới Xem tại trang 32 của tài liệu.
/ Thay đổi đầu vào của bảng lớp để chỉ tới các slot - TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH

hay.

đổi đầu vào của bảng lớp để chỉ tới các slot Xem tại trang 35 của tài liệu.

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan