Tìm hiểu giải thuật di truyền ứng dụng giải bài toán lập lịch

42 1.3K 4
Tìm hiểu giải thuật di truyền ứng dụng giải bài toán lập lịch

Đ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/2009 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 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 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 _Ct90125 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 .6 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 .6 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 .8 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.4Toá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ở 24 3.2.1 Chọn mơ hình cá thể 24 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 27 CHƯƠNG IV- 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ể 29 4.4 Các tham số giải thuật di truyền 30 4.4.1 Phép lai ghép 31 4.4.2 Phép đột biến 35 4.6 Độ thích nghi 36 4.7 Chương trình thực nghiệm .39 Kết luận hướng phát triển .42 Tài Liệu Tham Khảo 43 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 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 tốn thời gian nhỏ Các thuật tố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 _Ct90125 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 _Ct90125 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 tố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 _Ct90125 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁ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 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 _Ct90125 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TỐ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 đề 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 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 _Ct90125 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ả 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 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 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 _Ct90125 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ể chép dựa độ thích nghi Độ thích nghi hàm gán giá trị thực cho cá thể quần thể Phép tái sinh mơ 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 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 mô tả 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 _Hồng Chính Nghĩa _Ct90125 10 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 u cầu bắt buộc khơng bắt buộc khóa học tùy thuộc vào hoà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 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 Khố học Phần khóa học có ID tên khóa học Lớp học Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 28 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 khơng thể 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, 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ể Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 29 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 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% ; Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 30 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.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ụ: 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 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 31 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 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 _Ct90125 32 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 _Ct90125 33 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 _Ct90125 34 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; 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; Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 35 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 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í Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 36 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 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++; • 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 Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 37 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TỐN LẬP LICH • 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 ) 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 ); Báo Cáo Đồ Án Tốt Nghiệp _Hồng Chính Nghĩa _Ct90125 38 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 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 _Ct90125 39 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 _Ct90125 40 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 _Ct90125 41 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 tốn thời khố biểu Xây dựng thành cơng chương trình demo xếp thời khố 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 kết đạt 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 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 _Ct90125 42 ... _Ct90125 32 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 _Ct90125 33 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... _Ct90125 26 TÌM HIỂU GIẢI THUẬT DI TRUYỀN ÁP DỤNG GIẢI BÀI TOÁN LẬP LICH 3.2.5 Chọn điểm dừng thuật tốn Đã nói giai đoạn phần áp dụng thuật giải di truyền vào toán, điểm dừng thuật toán dựa độ... Chính Nghĩa _Ct90125 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

Ngày đăng: 21/12/2013, 20:22

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