1. Trang chủ
  2. » Luận Văn - Báo Cáo

BÀI TOÁN TỐI ƯU ĐA MỤC TIÊU VÀ ỨNG DỤNG XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU - Full 10 điểm

71 1 0

Đ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

Thông tin cơ bản

Tiêu đề Bài Toán Tối Ưu Đa Mục Tiêu Và Ứng Dụng Xây Dựng Chương Trình Lập Thời Khóa Biểu
Tác giả Nguyễn Thị Thúy Kiều
Người hướng dẫn ThS. Huỳnh Tấn Khải
Trường học Trường Đại Học Quảng Nam
Chuyên ngành Công Nghệ Thông Tin
Thể loại Khóa Luận Tốt Nghiệp Đại Học
Năm xuất bản 2017
Thành phố Quảng Nam
Định dạng
Số trang 71
Dung lượng 1,82 MB

Cấu trúc

  • Phần 1. MỞ ĐẦU (7)
    • 1.1. Lí do chọn đề tài (7)
    • 1.2. Mục tiêu của đề tài (8)
    • 1.3. Đối tượng và phạm vi nghiên cứu (8)
    • 1.4. Phương pháp nghiên cứu (8)
    • 1.5. Đóng góp của đề tài (8)
    • 1.6. Cấu trúc của đề tài (9)
  • Phần 2. NỘI DUNG NGHIÊN CỨU (10)
  • Chương 1. CƠ SỞ LÝ THUYẾT (10)
    • 1.1. Giới thiệu bài toán tối ưu tổng quát và phân loại (10)
      • 1.1.1. Giới thiệu bài toán tối ưu tổng quát (10)
      • 1.1.2. Phân loại các bài toán tối ưu (11)
    • 1.2. Ứng dụng của lý thuyết tối ưu (13)
      • 1.2.1. Phương pháp mô hình hóa (13)
      • 1.2.2. Một số ứng dụng của lý thuyết tối ưu (13)
    • 1.3. Các phương pháp giải bài toán tối ưu đa mục tiêu (16)
      • 1.3.1. Phương pháp ràng buộc (Constraint method) (16)
      • 1.3.2. Phương pháp tổng trọng số (17)
      • 1.3.3. Phương pháp sử dụng giải thuật di truyền (Genetic Alogithm – GA) (19)
    • 1.4. Kết chương (28)
  • Chương 2. ỨNG DỤNG GIẢI THUẬT DI TRUYỀN (29)
    • 2.1. Tìm hiểu chung về bài toán lập thời khóa biểu (29)
      • 2.1.1. Mô tả bài toán lập thời khóa biểu (29)
      • 2.1.2. Các đối tượng của thời khóa biểu (30)
      • 2.1.3. Quy trình lập thời khóa biểu (31)
    • 2.2. Ứng dụng giải thuật di truyền vào bài toán lập thời khóa biểu (31)
      • 2.2.1. Giai đoạn 1: Xếp lịch học các lớp (32)
      • 2.2.2. Giai đoạn 2: Xếp lịch học cho toàn bộ cơ sở (39)
    • 2.3. Kết chương (42)
  • Chương 3: XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU (43)
    • 3.1. Phân tích chức năng của hệ thống (43)
      • 3.1.1. Biểu đồ phân cấp chức năng (FDD) (43)
      • 3.1.2. Mô tả chi tiết chức năng (43)
      • 3.1.3. Danh sách các tác nhân (45)
    • 3.2. Xây dựng chức năng của hệ thống (47)
      • 3.2.1. Thu thập thông tin tài nguyên (47)
      • 3.2.2. Xây dựng chức năng (49)
    • 3.3. Một số giao diện hệ thống (52)
      • 3.3.1. Giao diện chính của hệ thống (52)
      • 3.3.2. Giao diện giới thiệu hệ thống (53)
      • 3.3.3. Giao diện các ràng buộc Giáo viên (54)
      • 3.3.4. Giao diện các ràng buộc Lớp học (54)
      • 3.3.5. Giao diện các ràng buộc chung về Khóa học (55)
      • 3.3.6. Giao diện in danh sách giáo viên (56)
      • 3.3.7. Giao diện trang in thời khóa biểu cho giáo viên (56)
      • 3.3.8. Giao diện thiết lập các ràng buộc cho Giáo viên (58)
      • 3.3.9. Giao diện thiết lập thông tin (58)
      • 3.3.10. Giao diện thiết lập tiết dạy được/ không được phép xếp thời khóa biểu . 53 3.3.11. Giao diện xếp thời khóa biểu tự động (59)
      • 3.3.12. Giao diện trang in thời khóa biểu chính (60)
  • Phần 3. KẾT LUẬN VÀ KIẾN NGHỊ (62)
    • 1. Kết luận (62)
    • 2. Kiến nghị (62)
  • Phần 4. TÀI LIỆU THAM KHẢO (63)

Nội dung

UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN -----  ----- NGUYỄN THỊ THÚY KIỀU BÀI TOÁN TỐI ƯU ĐA MỤC TIÊU VÀ ỨNG DỤNG XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC Quảng Nam, tháng 04 năm 2017 LỜI CẢM ƠN Trên thực tế không có thành công nào mà không gắn liền với sự hỗ trợ, giúp đỡ dù ít hay nhiều, dù trực tiếp hay gián tiếp từ người khác Thật vậy! Trong suốt thời gian thực hiện đề tài khóa luận của mình, tôi luôn nhận được sự quan tâm hướng dẫn, chỉ bảo tận tình từ Thầy giáo, Thạc sĩ Huỳnh Tấn Khải để có thể hoàn thành tốt luận văn này Tôi xin trân trọng gửi đến Thầy một lời cảm ơn sâu sắc! Tôi cũng xin chân thành cảm ơn quý Thầy, Cô khoa Công nghệ thông tin, trường Đại học Quảng Nam đã tận tình truyền đạt kiến thức cho tôi trong suốt bốn năm học tại trường Với vốn kiến thức được tiếp thu trong quá trình học tập không chỉ là nền tảng cho quá trình nghiên cứu đề tài này mà còn là hành trang quý báu để tôi bước vào đời một cách vững chắc và tự tin Tôi cũng thầm biết ơn sự ủng hộ của gia đình, bạn bè và những người thân yêu luôn là chỗ dựa tinh thần vững chắc cho tôi Cuối cùng, tôi xin kính chúc quý Thầy, Cô dồi dào sức khỏe và thành công trong sự nghiệp trồng người cao quý Trong quá trình thực hiện đề tài, khó tránh khỏi sai sót, rất mong quý Thầy, Cô bỏ qua Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tiễn còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, rất mong nhận được ý kiến đóng góp từ quý Thầy, Cô để tôi có thể học hỏi thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn bài báo cáo sắp tới Xin chân thành cảm ơn! Qu ả ng Nam, ngày 13 tháng 04 n ă m 2017 Sinh viên thực hiện Nguyễn Thị Thúy Kiều UBND TỈNH QUẢNG NAM TRƯỜNG ĐẠI HỌC QUẢNG NAM KHOA: CÔNG NGHỆ THÔNG TIN ----  ----- KHÓA LUẬN TỐT NGHIỆP Tên đề tài: BÀI TOÁN TỐI ƯU ĐA MỤC TIÊU VÀ ỨNG DỤNG XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU Sinh viên thực hiện: NGUYỄN THỊ THÙY KIỀU MSSV: 2113021017 CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN KHÓA: 2013 – 2017 Cán bộ hướng dẫn ThS HUỲNH TẤN KHẢI Quảng Nam, ngày 14 tháng 04 năm 2017 MỤC LỤC Phần 1 MỞ ĐẦU 1 1 1 Lí do chọn đề tài 1 1 2 Mục tiêu của đề tài 2 1 3 Đối tượng và phạm vi nghiên cứu 2 1 4 Phương pháp nghiên cứu 2 1 5 Đóng góp của đề tài 2 1 6 Cấu trúc của đề tài 3 Phần 2 NỘI DUNG NGHIÊN CỨU 4 Chương 1 CƠ SỞ LÝ THUYẾT 4 1 1 Giới thiệu bài toán tối ưu tổng quát và phân loại 4 1 1 1 Giới thiệu bài toán tối ưu tổng quát 4 1 1 2 Phân loại các bài toán tối ưu 5 1 2 Ứng dụng của lý thuyết tối ưu 7 1 2 1 Phương pháp mô hình hóa 7 1 2 2 Một số ứng dụng của lý thuyết tối ưu 7 1 3 Các phương pháp giải bài toán tối ưu đa mục tiêu 10 1 3 1 Phương pháp ràng buộc (Constraint method) 10 1 3 2 Phương pháp tổng trọng số 11 1 3 3 Phương pháp sử dụng giải thuật di truyền (Genetic Alogithm – GA) 13 1 4 Kết chương 22 Chương 2 ỨNG DỤNG GIẢI THUẬT DI TRUYỀN 23 VÀO BÀI TOÁN LẬP THỜI KHÓA BIỂU 23 2 1 Tìm hiểu chung về bài toán lập thời khóa biểu 23 2 1 1 Mô tả bài toán lập thời khóa biểu 23 2 1 2 Các đối tượng của thời khóa biểu 24 2 1 3 Quy trình lập thời khóa biểu 25 2 2 Ứng dụng giải thuật di truyền vào bài toán lập thời khóa biểu 25 2 2 1 Giai đoạn 1: Xếp lịch học các lớp 26 2 2 2 Giai đoạn 2: Xếp lịch học cho toàn bộ cơ sở 33 2 3 Kết chương 36 Chương 3: XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU 37 3 1 Phân tích chức năng của hệ thống 37 3 1 1 Biểu đồ phân cấp chức năng (FDD) 37 3 1 2 Mô tả chi tiết chức năng 37 3 1 3 Danh sách các tác nhân 39 3 1 4 Biểu đồ ca sử dụng (USECASE - UC) 40 3 2 Xây dựng chức năng của hệ thống 41 3 2 1 Thu thập thông tin tài nguyên 41 3 2 2 Xây dựng chức năng 43 3 3 Một số giao diện hệ thống 46 3 3 1 Giao diện chính của hệ thống 46 3 3 2 Giao diện giới thiệu hệ thống 47 3 3 3 Giao diện các ràng buộc Giáo viên 48 3 3 4 Giao diện các ràng buộc Lớp học 48 3 3 5 Giao diện các ràng buộc chung về Khóa học 49 3 3 6 Giao diện in danh sách giáo viên 50 3 3 7 Giao diện trang in thời khóa biểu cho giáo viên 50 3 3 8 Giao diện thiết lập các ràng buộc cho Giáo viên 52 3 3 9 Giao diện thiết lập thông tin 52 3 3 10 Giao diện thiết lập tiết dạy được/ không được phép xếp thời khóa biểu 53 3 3 11 Giao diện xếp thời khóa biểu tự động 54 3 3 12 Giao diện trang in thời khóa biểu chính 54 Phần 3 KẾT LUẬN VÀ KIẾN NGHỊ 56 1 Kết luận 56 2 Kiến nghị 56 Phần 4 TÀI LIỆU THAM KHẢO 57 DANH MỤC HÌNH ẢNH Hình 1 1 - Các giả thiết của bài toán 10 Hình 1 2 - Kết quả (giải bằng thuật toán PRIM) 10 Hình 1 3 - Sơ đồ khối của giải thuật di truyền 17 Hình 1 4 - Toán tử Chéo hóa áp dụng cho chuỗi số nguyên hoán vị 18 Hình 1 5 - Toán tử chéo hóa áp dụng cho chuỗi nhị phân 18 Hình 1 6 - Toán tử Chéo hóa áp dụng cho chuỗi hoán vị 18 Hình 1 7 - Toán tử chéo hóa áp dụng cho chuỗi hoán vị 19 Hình 1 8 - Toán tử chéo hóa áp dụng cho chuỗi hoán vị 19 Hình 1 9 - Đột biến 2 gen gần nhau 20 Hình 1 10 - Đột biến 2 gen cách xa nhau 20 Hình 1 11 - Đột biến 3 gen cách xa nhau 20 Hình 1 12 - Đột biến đảo ngược chuỗi con 21 Hình 1 13 - Đột biến bằng cách dịch chuyển 21 Hình 2 1 - Quy trình lập thời khóa biểu 25 Hình 2 2 - Mô hình cá thể trong lịch lớp học 26 Hình 2 3 - Phân bổ các nhiễm sắc thể môn học 28 Hình 2 4 - Bảng phân bố các môn học trên lịch học 29 Hình 2 5 - Lai ghép tạo ra 2 cá thể con từ 2 nhiễm sắc thể cha – mẹ 31 Hình 2 6 - Xác suất xảy ra đối với phép đột biến 33 Hình 2 7 - Mô hình cá thể lịch cơ sở 34 Hình 3 1 - Biểu đồ phân cấp chức năng hệ thống lập thời khóa biểu 37 Hình 3 2 - Ký hiệu của ca sử dụng 41 Hình 3 3 - Biểu đồ ca sử dụng của hệ thống Lập thời khóa biểu 41 Hình 3 4 - Giao diện chính của hệ thống 47 Hình 3 5 - Giao diện giới thiệu hệ thống 48 Hình 3 6 - Giao diện ràng buộc chung cho Giáo viên 48 Hình 3 7 - Giao diện các ràng buộc chung cho Lớp học 49 Hình 3 8 - Giao diện các ràng buộc chung về Khóa học 50 Hình 3 9 - Giao diện in danh sách giáo viên 50 Hình 3 10 - Giao diện trang in thời khóa biểu cho giáo viên 51 Hình 3 11 - Giao diện thiết lập các ràng buộc cho Giáo viên 52 Hình 3 12 - Giao diện thiết lập thông tin 53 Hình 3 13 - Giao diện thiết lập tiết dạy được/ không được phép xếp thời khóa biểu 53 Hình 3 14 - Giao diện xếp TKB tự động 54 Hình 3 15 - Giao diện trang in thời khóa biểu chính 55 [Document title] GVHD: Th S Huỳnh Tấn Khải 1 Phần 1 MỞ ĐẦU 1 1 Lí do chọn đề tài Trong cuộc sống, ta thường bắt gặp các bài toán liên quan đến xếp lịch như xếp lịch công tác, xếp lịch giảng dạy, xếp lịch học cho học sinh - sinh viên, xếp lịch biểu cho các ca trực ở một bệnh viện, xếp lịch làm việc, xếp lịch vận hành máy móc,… Đối với loại bài toán này cần phải tìm ra một phương án xếp lịch thỏa mãn tất cả các ràng buộc cũng như khai thác hiệu quả các nguồn tài nguyên hiện có, giảm thời gian và chi phí thực hiện Bài toán xếp thời khóa biểu trong các trường học là một trong những bài toán như vậy Có rất nhiều các ràng buộc được đặt ra trong bài toán này như ràng buộc về đối tượng tham gia (giảng viên, lớp học, sinh viên), ràng buộc về tài nguyên phục vụ giảng dạy (phòng học lý thuyết, phòng thực hành,…), ràng buộc về thời gian (số tiết học, số lần học, số tiết mỗi lần học,…), ràng buộc về chuyên môn và rất nhiều các ràng buộc khác tùy thuộc vào từng trường Vấn đề đặt ra là cần xây dựng một thời khóa biểu thỏa mãn tất cả các ràng buộc trên đồng thời khai thác hiệu quả các nguồn tài nguyên phục vụ giảng dạy Thời khóa biểu của trường học là kế hoạch giảng dạy của giáo viên và học tập của học sinh - sinh viên Một bảng thời khóa biểu hợp lý giúp giáo viên thuận tiện khi lên lớp và người học thoải mái khi đăng ký môn học học tập Bài toán xếp thời khóa biểu là một bài toán không mới và đã có nhiều giải thuật được đưa ra để giải quyết như giải thuật nhánh cận, giải thuật leo đồi, giải thuật luyện thép, giải thuật tô màu đồ thị, giải thuật xấp xỉ,… Tuy nhiên các giải thuật này thường không có tính tổng quát và chỉ áp dụng hiệu quả đối với các trường học có quy mô nhỏ, ít ràng buộc về mặt dữ liệu Vì vậy, việc đòi hỏi có một giải thuật chất lượng cao và sử dụng kỹ thuật trí tuệ nhân tạo đặc biệt rất cần thiết khi giải quyết các bài toán có không gian tìm kiếm lớn Ở Việt Nam hiện nay, các trường đại học đang dần chuyển sang hình thức đào tạo tín chỉ Mặc dầu hình thức đào tạo này có nhiều ưu điểm hơn so với đào tạo niên chế tuy nhiên việc xếp thời khóa biểu vẫn là một gánh nặng thực sự cho các trường, đặc biệt là các trường có quy mô đào tạo lớn Vả lại trên thị trường cũng chưa có sản phẩm phần mềm nào giải quyết hiệu quả bài toán trên Trong những năm gần đây, phương pháp tiếp cận di truyền đã thu hút rất nhiều sự chú ý trong các lĩnh vực nghiên cứu khác nhau trong đó có khoa học máy tính Phương pháp này có nhiều đặc điểm nổi trội như không đòi hỏi tri thức, tránh tối ưu cục bộ, thực hiện tốt với các bài toán có không gian lời giải lớn và có thể áp dụng cho [Document title] GVHD: Th S Huỳnh Tấn Khải 2 nhiều loại bài toán tối ưu khác nhau Trên thế giới, giải thuật di truyền kết hợp với tin học được ứng dụng để giải quyết những bài toán tối ưu một cách rất hiệu quả Vì vậy, việc nghiên cứu và ứng dụng giải thuật di truyền (Genetic Algorithm - GA) để giải quyết hiệu quả bài toán xếp thời khóa biểu nói trên là việc làm hết sức cần thiết Xuất phát từ những thực tế trên đây, tôi đã chọn đề tài “ Bài toán t ố i ư u đ a m ụ c tiêu và ứ ng d ụ ng xây d ự ng ch ươ ng trình l ậ p th ờ i khóa bi ể u ” cho bài khóa luận tốt nghiệp của mình; với mong muốn giúp mọi người có một cái nhìn toàn diện hơn về giải thuật GA cũng như những ứng dụng đa dạng của nó, đồng thời giúp người dùng có thêm một lựa chọn nữa trong việc tìm kiếm phần mềm hỗ trợ xây dựng lịch học, thời khóa biểu 1 2 Mục tiêu của đề tài Đề tài tập trung nghiên cứu và ứng dụng giải thuật di truyền vào bài toán xếp thời khóa biểu nhằm đưa ra phương án xếp thời khóa biểu thỏa mãn tất cả các ràng buộc đặt ra, đồng thời khai thác hiệu quả các nguồn lực đào tạo của nhà trường với thời gian ngắn nhất có thể 1 3 Đối tượng và phạm vi nghiên cứu - Đối tượng nghiên cứu: Nghiên cứu các đặc điểm, đặc trưng của giải thuật di truyền, các thành phần cơ bản của giải thuật di truyền như khởi tạo quần thể ban đầu, đánh giá độ thích nghi của cá thể, các toán tử di truyền (chọn lọc, lai ghép, đột biến), điều kiện dừng - Phạm vi nghiên cứu: Ứng dụng giải thuật di truyền vào bài toán xếp thời khóa biểu cho trường học các cấp với các ràng buộc và những yêu cầu cơ bản đặt trước 1 4 Phương pháp nghiên cứu  Phương pháp nghiên cứu lý thuyết: - Nghiên cứu tài liệu, ngôn ngữ và công nghệ liên quan - Tổng hợp các tài liệu lý thuyết về giải thuật di truyền - Thu thập thông tin, nghiên cứu thực trạng - Tham khảo sách, báo và các nguồn tài liệu từ Internet - Tham khảo ý kiến từ giảng viên hướng dẫn đề tài  Phương pháp nghiên cứu thực nghiệm: - Phân tích và thiết kế hệ thống xếp thời khóa biểu theo quy trình xây dựng ứng dụng phần mềm - Xây dựng hệ thống xếp thời khóa biểu sử dụng giải thuật di truyền - Thử nghiệm hệ thống và đánh giá kết quả đạt được dựa trên bộ dữ liệu thử nghiệm ở một trường học 1 5 Đóng góp của đề tài [Document title] GVHD: Th S Huỳnh Tấn Khải 3 - Cung cấp một nền tảng ứng dụng bài toán tối ưu hóa đa mục tiêu Có thể nói đây là một ứng dụng thiết thực và có tính ứng dụng cao Ứng dụng của nó sẽ làm phong phú thêm cho kho ứng dụng lập thời khóa biểu, giúp người dùng có thêm nhiều lựa chọn và những trải nghiệm tốt nhất - Phần mềm này sẽ giúp cho người dùng lập thời khóa biểu một cách nhanh chóng và hiệu quả - Với đề tài này tôi mong muốn cung cấp một tài liệu tham khảo cho các bạn sinh viên trong khoa cũng như ngoài khoa khi tiếp cận và tìm hiểu về lĩnh vực nghiên cứu ứng dụng của bài toán tối ưu hóa đa mục tiêu và nhất là lĩnh vực mà tôi đang nghiên cứu 1 6 Cấu trúc của đề tài Cấu trúc của bài luận văn này bao gồm các phần: Lời cảm ơn, Mục lục, Phần mở đầu, Phần nội dung nghiên cứu, Phần kết luận và Phần tái liệu tham khảo Trong đó phần Nội dung nghiên cứu sẽ gồm các nội dung chính như sau: Chương 1: Cơ sở lý thuyết Chương này sẽ nghiên cứu trình bày các nội dung về cơ sở lý thuyết làm nền tảng cho các phần nghiên cứu tiếp theo của đề tài Chương 2: Ứng dụng của giải thuật di truyền vào bài toán lập thời khóa biểu Trong chương này chủ yếu tìm hiểu sâu sắc hơn về lý thuyết và thuật toán của giải thuật di truyền, sau đó phân tích ứng dụng của giải thuật đi truyền vào bài toán lập thời khóa biểu Chương 3: Xây dựng chương trình lập thời khóa biểu Chương cuối cùng trong phần Nội dung nghiên cứu này sẽ đi phân tích và xây dựng chức năng của hệ thống lập thời khóa biểu đồng thời giới thiệu một số giao diện chính của chương trình [Document title] GVHD: Th S Huỳnh Tấn Khải 4 Phần 2 NỘI DUNG NGHIÊN CỨU Chương 1 CƠ SỞ LÝ THUYẾT 1 1 Giới thiệu bài toán tối ưu tổng quát và phân loại 1 1 1 Giới thiệu bài toán tối ưu tổng quát a) Giới thiệu Lý thuyết tối ưu là một trong những lĩnh vực kinh điển của toán học có ảnh hưởng nhiều đến lĩnh vực kinh tế xã hội và khoa học công nghệ Phương án tối ưu là phương án khả thi và tốt nhất, tức là phương án làm cho hàm mục tiêu đạt kết quả nhỏ nhất ( min ) hoặc lớn nhất ( max ) và phải thỏa mãn các điều kiện, yêu cầu của bài toán (gọi là thỏa mãn các điều kiện ràng buộc) Trong mô hình toán học, mục tiêu của bài toán được biểu diễn bởi hàm: f ( x ) → min (hoặc f ( x ) → max) (1 1) với x là một biến số rời rạc hoặc một biến kiểu vector x = ( x 1 , x 2 ,…, x n ) Xét một cách tổng quát, chúng ta xem biến x là một biến vector, trường hợp x là biến số rời rạc tương ứng với vector chỉ có một thành phần Biến x tổng quát có dạng x = ( x 1 , x 2 ,…, x n ) thường có yêu cầu phải thỏa mãn một số điều kiện nào đó Tập hợp các điều kiện của các biến thì được gọi là điều kiện ràng buộc và được biểu diễn bởi miền D (miền ràng buộc): x ∈ D (1 2) Yêu cầu tổng quát của bài toán tối ưu là tìm bộ giá trị của x để thỏa mãn điều kiện ràng buộc (1 2) và làm cực tiểu/ cực đại hàm mục tiêu (1 1) x * (một bộ các giá trị cụ thể của ( x 1 , x 2 , … , x n )) thỏa mãn điều kiện (1 1) và (1 2) gọi là phương án tối ưu Nếu x chỉ thỏa mãn điều kiện (1 2) thì ta gọi x là phương án chấp nhận được hay là phương án b) Các ví dụ minh họa Ví dụ 1 1: Tìm x sao cho: f ( x ) = x 3 – 3 x +1 → max (1 3) với: x ∈ D = [-2,2; 1,8] (1 4) Bài gi ả i: ∈ ݔ∀ [-2,2; 1,8] là một phương án chấp nhận được ⟺ -2,2 ≤ x ≤ 1,8 Bài toán trên tương đương với bài toán tìm giá trị lớn nhất (GTLN) của hàm f ( x ) khi -2,2 ≤ x ≤ 1,8 Phương pháp tìm GTLN (đã học trong Giải tích 1) thực hiện như sau: [Document title] GVHD: Th S Huỳnh Tấn Khải 5  Tìm các cực trị của hàm f ( x ), tính các giá trị cực trị, tính các giá trị tại các đầu mút của miền D , sau đó so sánh để tìm ra giá trị lớn nhất (hay nhỏ nhất) Để tìm các điểm cực trị, ta tìm các giá trị của hàm f ( x ) ứng với các giá trị của x sao cho đạo hàm f ''''( x ) = 0 Tính f ( x ) tại các điểm dừng Tìm f (-2,2); f (1,8) Vậy f ''''( x ) = 3 x 2 - 3 = 0 ⟺ x = ± 1 f (1) = -1 f (-1) = 3 f (-2,2) = -3,048 f (1,8) = 1,432 Do đó: f max = 3 khi x * = -1 Ví dụ 1 2: Tìm phương án tối ưu của bài toán: Z = ܽඥ ଶ ݔ െ ଶ ݕ െ ଶ → max (1 5) Điều kiện ràng buộc được xác định từ điều kiện xác định (tập xác định) của hàm Z, tức là a 2 – x 2 – y 2 ≥ 0, hay miền ràng buộc của bài toán là: x 2 + y 2 ≤ a 2 (1 6) Tìm phương án tối ưu cho công thức (1 5) là bài toán tìm cực trị của hàm hai biến Ph ươ ng pháp gi ả i: Dùng phương pháp tìm cực trị hàm hai biến Tìm điểm dừng: ൜ ݔZ ൌ 0 ൌ൐ ݔൌ 0 ݕZ ൌ 0 ൌ൐ ݕൌ 0 → Có 1 điểm dừng M (0,0) Ta có: ܽඥ ଶ ݔ െ ଶ ݕ െ ଶ đạt giá trị lớn nhất khi ( ܽ ଶ ݔ െ ଶ ݕ െ ଶ ሻ đạt giá trị lớn nhất Ta lại có: ܽ ଶ ݔ െ ଶ ݕ െ ଶ = ܽ ଶ ݔሺ െ ଶ ݕ ൅ ଶ ) => Z đạt giá trị lớn nhất khi ݔ ଶ ݕ ൅ ଶ đạt giá trị nhỏ nhất và ݔ ଶ ݕ ൅ ଶ đạt giá trị nhỏ nhất khi x = y =0 Như vậy hàm Z đạt cực đại tại điểm M (0,0) => Phương án tối ưu ( x *, y *) = (0,0) và Z max = Z (0,0) = a (Bài toán t ố i ư u có th ể không có đ i ề u ki ệ n ràng bu ộ c, b ấ t k ỳ giá tr ị nào c ủ a x ho ặ c vector x c ũ ng là m ộ t ph ươ ng án ch ấ p nh ậ n đượ c V ậ y ch ỉ c ầ n tìm x b ấ t k ỳ sao cho f(x) → min (ho ặ c f(x) → max) là có th ể đ áp ứ ng đượ c yêu c ầ u c ủ a bài toán Có th ể đ i ề u ki ệ n ràng bu ộ c đượ c xác đị nh trong hàm m ụ c tiêu là mi ề n xác đị nh c ủ a hàm m ụ c tiêu) 1 1 2 Phân loại các bài toán tối ưu [Document title] GVHD: Th S Huỳnh Tấn Khải 6 Một trong những phương pháp thông dụng nhất để giải bài toán tối ưu đó là: Tính giá trị hàm mục tiêu f ( x ) trên tất cả các phương án, sau đó so sánh các giá trị tính được để tìm ra giá trị tối ưu và phương án tối ưu cho bài toán Thực hiện theo phương pháp trên gặp rất nhiều khó khăn ngay cả khi kích thước của bài toán (số biến n và số ràng buộc m ) là không lớn, bởi vì tập D thông thường gồm một số rất lớn các phần tử, trong nhiều trường hợp còn là không đếm được Vì vậy, người ta đã nghiên cứu về mặt lý thuyết để có thể tách ra từ bài toán tổng quát thành các lớp bài toán đơn giản hơn, dễ thực hiện hơn Các nghiên cứu lý thuyết đó thường là: - Nghiên cứu tính chất của các thành phần bài toán (hàm mục tiêu, các hàm ràng buộc, các biến số, các hệ số, …) - Các điều kiện tồn tại lời giải chấp nhận được - Các điều kiện cần và đủ của cực trị - Tính chất của các đối tượng nghiên cứu Bài toán tối ưu hay còn gọi là bài toán quy ho ạ ch Dựa vào tính chất của các thành phần bài toán và đối tượng nghiên cứu người ta phân loại các lớp bài toán tối ưu như sau:  Bài toán tối ưu tuyến tính: Là bài toán mà hàm mục tiêu và tất cả các ràng buộc đều có dạng tuyến tính Một cách khái quát: Hàm mục tiêu: f ( x ) → min (hoặc f ( x ) → max ) là một hàm tuyến tính Và tất cả các ràng buộc: g i ( x ), với i = ݉,1 cũng là một hàm tuyến tính  Bài toán tối ưu phi tuyến: Bài toán mà trong đó hàm mục tiêu hoặc ít nhất một điều kiện ràng buộc là phi tuyến (có chứa ít nhất một yếu tố phi tuyến – bậc 2, logic, mũ, …)  Bài toán tối ưu rời rạc: Khi biến hoặc giá trị hàm mục tiêu là rời rạc Chúng ta có thể chia bài toán tối ưu rời rạc thành hai dạng như sau:  Tối ưu nguyên (quy hoạch nguyên): Các biến hoặc các hàm mục tiêu nhận các giá trị nguyên  Tối ưu đồ thị: Là một dạng đặc biệt của bài toán tối ưu rời rạc, có các đỉnh là các điểm rời rạc Trong đồ thị, chúng ta kí hiệu tập đỉnh là: X = {A, B, C, D}, tập cạnh là E = { e 1 , e 2 , …, e 8 } hoặc biểu diễn tập cạnh thông qua tập đỉnh: E = {(A, D); (A, B); … } Bài toán tối ưu đồ thị trở thành bài toán tìm đường đi ngắn nhất của đồ thị thỏa mãn điều kiện nào đó [Document title] GVHD: Th S Huỳnh Tấn Khải 7  Bài toán quy hoạch động: Dạng bài toán này thường thì những kết quả của bước sau phụ thuộc vào kết quả của bước trước  Bài toán tối ưu đa mục tiêu: Bài toán mà trong đó có nhiều hàm mục tiêu cần phải tối ưu trên cùng một miền ràng buộc f i ( x ) → min (hoặc f i ( x ) → ( max )) với i = 1, 2, …, n ; x ∈ D Trong đó có nhiều hàm mục tiêu có thể đối lập nhau Khi giải bài toán này, chúng ta phải kết hợp hài hòa các lợi ích (giá trị) đạt được của hàm mục tiêu 1 2 Ứng dụng của lý thuyết tối ưu 1 2 1 Phương pháp mô hình hóa Trên thực tế, nhiều vấn đề ở các lĩnh vực kinh tế, khoa học - công nghệ và xã hội đều có thể giải quyết bằng phương pháp tối ưu toán học Bởi lẻ người ta luôn mong muốn tìm ra các sản phẩm tốt nhất mà vẫn tiết kiệm được thời gian, công sức, chi phí, đường đi, Điều quan trọng là từ thực tế, ta phải xây dựng được một mô hình toán học thích hợp Từ đó, chúng ta sử dụng các phương pháp tối ưu cùng với các công cụ thích hợp để cho ra lời giải tối ưu nhất Để làm được những điều này, chúng ta cần lưu ý các bước sau đây khi áp dụng phương pháp mô hình hóa: Bước 1: Khảo sát vấn đề thực tế, phát hiện vấn đề cần giải quyết bằng phương pháp tối ưu Bước 2: Phát biếu các điều kiện ràng buộc và hàm mục tiêu dưới dạng định tính Bước 3: Lựa chọn các biến đại diện cho các tham số và sau đó định lượng hóa các điều kiện ràng buộc và hàm mục tiêu Từ đó xây dựng mô hình định lượng và mô hình toán học (mô hình tối ưu) Bước 4: Thu thập số liệu và lựa chọn phương pháp toán học thích hợp để giải mô hình Bước 5: Xây dựng thuật toán và quy trình giải: Lựa chọn công cụ (giấy bút, máy tính) có thể lập trình cho bài toán ấy Bước 6: Đánh giá kết quả thu được: Nếu phương pháp vừa xây dựng là phù hợp thực tế thì nó cho kết quả tối ưu và điều này cũng chứng tỏ mô hình mà chúng ta xây dựng là đúng và hợp lý Nếu nó không phù hợp thực tế thì phải xem xét và điều chỉnh mô hình 1 2 2 Một số ứng dụng của lý thuyết tối ưu Ứng dụng của lý thuyết tối ưu vô cùng phong phú và đa dạng Tuy nhiên, tùy vào mỗi trường hợp cụ thể và tùy vào cách thức vận dụng sao cho hợp lý, hiệu quả thì ứng [Document title] GVHD: Th S Huỳnh Tấn Khải 8 dụng của lý thuyết tối ưu mới mang lại kết quả như mong muốn Ở đây, ta sẽ chỉ tiến hành xét một số ví dụ điển hình dẫn đến mô hình tối ưu [Document title] GVHD: Th S Huỳnh Tấn Khải 9 Ví dụ 1 3: Bài toán phân phối điện năng Có ba hộ gia đình cần được cung cấp điện từ hai nguồn điện cách xa nhau Giá thành truyền tải một đơn vị điện năng (hao tổn + chi phí bảo dưỡng đường dây, trạm) từ nguồn thứ i ( i = 1, 2) đến hộ thứ j ( j = 1, 2, 3) là C ij Khả năng cung cấp của mỗi nguồn điện bị giới hạn bởi trữ lượng của chúng là A 1 , A 2 Nhu cầu của các hộ tiêu thụ cần phải đáp ứng đủ là B 1 , B 2 , B 3 Hãy lập kế hoạch phân phối điện năng khả thi sao cho tổng chi phí truyền tải là nhỏ nhất L ờ i gi ả i: Mô hình toán học được lập như sau: Giả thiết: Điều kiện cân bằng thu-phát: ݑ݄ݐ ∑ = ݐá݄݌ ∑ Tức là: ∑ ܣ ௜ ଶ ௜ୀଵ = ∑ ܤ ௝ ଷ ௝ୀଵ Đặt biến x là lượng điện chuyển từ trạm cung cấp thứ i đến hộ tiêu thụ thứ j Ta có: x ≥ 0; i = 1, 2; j = 1, 2, 3 (điều kiện các biến không âm) Từ đó suy ra, tổng chi phí truyền tải: ∑ ∑ ܥ ௜௝ ݔ ௜௝ ଷ ௝ୀଵ ଶ ௜ୀଵ Vậy hàm mục tiêu sẽ là: f ( x ) = ∑ ∑ ܥ ௜௝ ݔ ௜௝ ଷ ௝ୀଵ ଶ ௜ୀଵ → min (1 7) Điều kiện ràng buộc: ە ۖ ۖ ۔ ۖ ۖ ۓ Tổng lượng điện từ trạm 1: 11ݔ൅ 12ݔ൅ 13ݔ൑ 1ܣ Tổng lượng điện từ trạm 2: 21ݔ൅ 22ݔ൅ 23ݔ 2ܣ ൑ Tổng lượng điện của hộ 1: 11ݔ൅ 21ݔൌ 1ܤ Tổng lượng điện của hộ 2: 12ݔ൅ 22ݔൌ 2ܤ Tổng lượng điện của hộ 3: 13ݔ൅ 23ݔൌ 3ܤ Điều kiện không âm của biến 23ݔ , , 12ݔ ,11ݔ :ݔ൒ 0 (1 8) Bài toán tối ưu tuyến tính chính là bài toán tìm các giá trị (1 7) để thỏa mãn các điều kiện (1 8) Ví dụ 1 4: Bài toán xây dựng hệ thống truyền tải điện Một huyện ( X 0 ) có 5 xã X 1 , X 2 , X 3 , X 4 , X 5 Huyện này cần xây dựng hệ thống truyền tải điện từ trung tâm huyện đến tất cả các xã Giữa hai địa điểm có thể thay đổi được đường dây với chi phí được cho trong Hình 1 1 Hãy lập các phương án xây dựng hệ thống điện có thể nối liền các xã vào huyện với tổng chi phí là nhỏ nhất [Document title] GVHD: Th S Huỳnh Tấn Khải 10 Hình 1 1 - Các gi ả thi ế t c ủ a bài toán Đây là một bài toán tối ưu trên đồ thị được giải bằng thuật toán PRIM, KRUSKAL Hình 1 2 - K ế t qu ả (gi ả i b ằ ng thu ậ t toán PRIM) Ta có : Sơ đồ đường dây cần xây dựng tối ưu như Hình 1 2, tổng chi phí đầu tư nhỏ nhất : f min = 15 1 3 Các phương pháp giải bài toán tối ưu đa mục tiêu 1 3 1 Phương pháp ràng buộc (Constraint method) a) Mô tả bài toán Cho bài toán đa mục tiêu với p mục tiêu, như sau: min { f 1 ( x ), f 2 ( x ),…, f p ( x )} (1 11) Sao cho: x ∈ R n Trong đó: x = ( x 1 , x 2 ,…, x n ) ∈ R n là không gian quyết định Ta chuyển bài toán trên thành nhiều bài toán ràng buộc đơn mục tiêu như sau: [Document title] GVHD: Th S Huỳnh Tấn Khải 11 f k ( x 1 , x 2 , x 3 ,…, x n ) ≥ L k ( k = 1, …, p ) (1 12) Công thức này là bài toán đơn mục tiêu Do đó có thể giải được bằng các phương pháp giải bài toán đơn mục tiêu Sau khi có các tối ưu cho từng hàm f k , chúng ta có thể tìm giá trị tối ưu nhất từ tập các giá trị tối ưu của các f k b) Thuật toán Bước 1: Xây dựng bảng thỏa hiệp - Giải lần lượt p bài toán đơn mục tiêu và các ràng buộc tương ứng Gọi nghiệm ứng với mục tiêu thứ k là: x k = ( ݔ ଵ ௞ , ݔ ଶ ௞ , …, ݔ ௡ ௞ ) với k = 1,…, p Sau đó tính giá trị của p hàm mục tiêu này đạt được tại các x k tương ứng, ta gọi là: f 1 ( ݔ ଵ ௞ ), f 2 ( ݔ ଶ ௞ ), …, f p ( ݔ ௣ ௞ ) - Sắp xếp p giá trị ứng với p mục tiêu vừa tính được ở trên vào bảng Ở đây, hàng ứng với các x 1 ,…, x k và cột là nhãn của mục tiêu B ả ng 1 1 Bảng thoả hiệp cho một bài toán với p hàm mục tiêu f 1 ( x k ) f 2 ( x k ) … f p ( x k ) x 1 f 1 ( x 1 ) f 2 ( x 1 ) … f p ( x 1 ) x 2 f 1 ( x 2 ) f 2 ( x 2 ) … f p ( x 2 ) … … … … … x k f 1 ( x k ) f 2 ( x k ) … f p ( x k ) - Tìm số lớn nhất và nhỏ nhất trong cột thứ k , lần lượt kí hiệu là M k , m k với k = 1, …, p Bước 2: Quy ước một bài toán quy hoạch đa mục tiêu được cho ở (1 11) tương ứng với bài toán ràng buộc của nó như ở (1 12) Bước 3: Chọn giá trị của L k trong đoạn [m k , M k ] bằng cách chia [m k ,M k ] ra r phần bằng nhau L k có thể nhận một trong r giá trị sau: L k = m k + ௧ ௥ିଵ (M k - m k ) , với: t = 0,1,… , r – 1 Bước 4: Ứng với mỗi giá trị của L k ta giải bài toán (1 12) và mỗi bài toán cho một nghiệm chấp nhận được Trong những nghiệm này ta chọn nghiệm tốt nhất 1 3 2 Phương pháp tổng trọng số a) Các khái niệm tối ưu Tối ưu Pareto : Một điểm x * ∈ X được gọi là một nghiệm tối ưu Pareto nếu không tồn tại một nghiệm x ≠ x * ∈ X mà x trội hơn x * Nghĩa là: f ( x ) < f ( x * ) Từ định nghĩa trên suy ra các tính chất sau: i) Nếu x * là nghiệm tối ưu Pareto thì ƒ( x ∗ ) gọi là điểm hữu hiệu [Document title] GVHD: Th S Huỳnh Tấn Khải 12 ii) Nếu x 1 , x 2 ∈ X và ƒ( x 1 ) ≤ ƒ( x 2 ) thì ta gọi x 1 trội hơn x 2 và ƒ( x 1 ) trội hơn ƒ ( x 2 ) iii) Tập tất cả các nghiệm tối ưu Pareto x * ∈ X và tập các điểm hữu hiệu y = ƒ( x * ) ∈ Y lần lượt ký hiệu là: X par và Y eff Nghiệm tối ưu Pareto chặt và yếu: Nghiệm x * ∈ X được gọi là một nghi ệ m t ố i ư u y ế u Pareto nếu không tồn tại một nghiệm x ∈ X sao cho: ƒ( x ) ≪ ƒ( x * ) Khi đó: Điểm y = ƒ( x * ) ∈ Y gọi là đ i ể m h ữ u hi ệ u y ế u Tập nghiệm tối ưu Pareto yếu và tập các điểm hữu hiệu yếu lần lượt ký hiệu là: ܺ ୵ି୮ୟ୰ và ܻ ୵ିୣ୤୤ Nghiệm x * ∈ X được gọi là một nghi ệ m t ố i ư u ch ặ t Pareto nếu không tồn tại một nghiệm x ∈ X và x ≠ x * sao cho: ƒ( x ) ≤ ƒ( x * ) Khi đó, tập nghiệm tối ưu Pareto chặt ký hiệu là: X s–par b) Mô tả bài toán Bài toán tối ưu nhiều mục tiêu dạng tổng quát được phát biểu như sau: min { f 1 ( x ), f 2 (x),…, f p ( x )} Sao cho: x ∈ R n Trong đó: x = ( x 1 , x 2, …, x n ) ∈ R n : là không gian nghiệm Ta chuyển bài toán trên thành bài toán tổng như sau: min f = w 1 f 1 ( x ) + w 2 f 2 ( x ) + ⋯ + w p f p ( x ) Sao cho: x ∈ R n Trong đó: w i ≥ 0, với: i = 1, 2,…, n và: ∑ iݓ ൌ 1 ௣ ௜ୀଵ Ứng với mỗi bộ trọng số w i ta sẽ tìm được một nghiệm tối ưu Pareto c) Ví dụ minh họa Ví dụ 1 5: Giải bài toán tối ưu hai hàm mục tiêu sau: ି݊݅݉ ସ ஸ ௫ଵ,௫ଶ ஸ ସ ݂ሼሼ ଵ ݔሺ ଵ ݔ , ଶ ݂,ሻ ଶ ݔሺ ଵ ݔ , ଶ ሻሽሽ với: ݂ ଵ ݔሺ ଵ ݔ , ଶ ሻ = 3 ݔ ଵ ଶ − 2x 1 x 2 + 4x 2 + ݔ ଶ ଶ ݂ ଶ ݔሺ ଵ ݔ , ଶ ሻ = ݔ ଵ ଶ − x 1 − x 1 x 2 + 0 5 ݔ ଶ ଶ Sau khi thực hiện các bước tính toán ta xác định được giá trị của mỗi hàm mục tiêu như sau: [Document title] GVHD: Th S Huỳnh Tấn Khải 13 B ả ng 1 2 Bảng các hàm mục tiêu w = ( w 1 , w 2 ) (0,1) (0 2, 0 8) (0 4, 0 6) (0 6, 0 4) (0 8, 0 2) (1,0 ݂ ଵ ݔሺ ଵ ݔ , ଶ ሻ ൎ 6 -2 2 -4 45 2 53 -0 76 -6 ݂ ଶ ݔሺ ଵ ݔ , ଶ ሻ ൎ - 0,5 0 11 0 3 1 97 -0 88 3 5 1 3 3 Phương pháp sử dụng giải thuật di truyền (Genetic Alogrithm – GA) a) Giới thiệu giải thuật Giải thuật di truyền (Genetic Algorithm - GA) được đề xuất bởi ý tưởng của John Holland vào những năm 1970 Lấy cảm hứng từ quá trình chọn lọc một cách ngẫu nhiên các cá thể thông qua sự tác động của môi trường tự nhiên Nếu cá thể nào có mức độ thích nghi cao với sự tác động này thì chúng sẽ tiếp tục sống sót, ngược lại chúng sẽ bị loại bỏ Ý tưởng này đã được áp dụng để giải quyết các bài toán tối ưu một mục tiêu bằng cách làm xấp xỉ các nghiệm thành biên Pareto từ một số nghiệm khởi tạo ban đầu Tuy nhiên từ thực tế số lượng hàm mục tiêu cần tối ưu tăng lên rất nhiều - ít nhất là hai mục tiêu và thường thì các mục tiêu này xung đột nhau như: Bài toán lựa chọn danh mục đầu tư tối ưu nhiều mục tiêu người ta cố gắng làm cực đại lợi nhuận thu được trong khi giảm thiểu rủi ro đến mức thấp nhất có thể hay bài toán trong sản xuất ta cố gắng làm cực tiểu số lượng nhân công nhưng giá trị sản lượng vẫn đạt cực đại Như vậy, việc tìm một phương án hay nghiệm thỏa mãn tất cả các mục tiêu đặt ra như trên xem ra rất lý tưởng, nhưng trên thực tế có rất ít bài toán tồn tại phương án lý tưởng này Do đó, ta chuyển sang tìm một phương án khả thi khác mà ta gọi là phương án thỏa hiệp Phương án thỏa hiệp sẽ thỏa mãn các mục tiêu đặt ra ở một mức độ có thể chấp nhận được Trên cơ sở này người ta cố gắng áp dụng thuật toán di truyền để giải quyết các loại bài toán này và thuật toán di truyền đa mục tiêu cũng xuất hiện trên cơ sở này Cho đến nay có rất nhiều thuật toán di truyền để giải bài toán tối ưu đa mục tiêu dựa trên cơ sở thuật toán di truyền đã ra đời, chẳng hạn như thuật toán MOGA, thuật toán NSGA, thuật toán NSGA II, Thông qua các thuật toán này ta có thể làm xấp xỉ được biên Pareto tốt nhất từ các nghiệm khởi tạo ban đầu 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 [Document title] GVHD: Th S Huỳnh Tấn Khải 14 Giải thuật di truyền là một giải thuật mô phỏng theo quá trình chọn lọc tự nhiên, là kỹ thuật chung giúp giải quyết các vấn đề bài toán bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện qui định sẵn của môi trường Lấy ý tưởng từ quá trình tiến hoá tự nhiên, xuất phát từ một lớp các lời giải tiềm năng ban đầu, GA tiến hành tìm kiếm trên không gian lời giải bằng cách xây dựng lớp lời giải mới tốt hơn (tối ưu hơn) lời giải cũ Quá trình xây dựng lớp lời giải mới được tiến hành dựa trên 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 quá trình tiến hoá: Ở 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 “xấu” thì chết đi 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 trên nhiều điểm (multipoints) Trong GA, một tập các biến của bài toán đưa ra được mã hóa sang một chuỗi (hay một cấu trúc mã hóa khác) tương tự như một nhiễm sắc thể trong tự nhiên Mỗi chuỗi bao gồm một giải pháp có thể của bài toán Giải thuật di truyền sử dụng các toán tử được sinh ra bởi sự chọc lọc tự nhiên một quần thể các chuỗi nhị phân (hoặc các cấu trúc khác), mã hóa khoảng tham số trên mỗi thế hệ, khảo sát các phạm vi khác nhau của không gian tham số và định hướng tìm kiếm đối với khoảng mà khoảng đó xác suất cao để tìm kiếm sự thực hiện tốt hơn b) Thuật toán di truyền Các bước trong thuật toán di truyền được trình bày cụ thể như sau: Bước 1:  Đặt t = 0  Tạo ngẫu nhiên N p > 1 cá thể để hình thành quần thể thứ nhất gọi là P t  Đánh giá độ thích nghi của nghiệm trong quần thể P t Bước 2: Chéo hóa – Dùng toán tử Chéo hóa để tạo quần thể con Q t như sau:  Chọn 2 nghiệm x và y trong quần thể P t dựa trên độ thích nghi  Sử dụng toán tử chéo hóa tạo nghiệm con và bổ sung nghiệm con này vào tập Q t Bước 3: Đột biến – Dùng toán tử đột biến để tạo sự biến đổi ở mỗi nghiệm x ∈ Q t với mức biến đổi cho trước Bước 4: Gán độ thích nghi cho mỗi cá thể trong quần thể x ∈ Q t dựa trên giá trị hàm mục tiêu và khả năng không chấp nhận được của nghiệm này [Document title] GVHD: Th S Huỳnh Tấn Khải 15 Bước 5: Lựa chọn N p cá thể từ Q t dựa trên độ thích nghi của chúng và đưa tất cả các nghiệm này vào tập P t+1 [Document title] GVHD: Th S Huỳnh Tấn Khải 16 Bước 6:  Dừng nếu điều kiện dừng thỏa mãn (ví dụ như: số lượng cá thể trong quần thể, số lượng thế hệ,…) và đưa ra quần thể hiện tại  Ngược lại: t = t + 1 và quay lại thực hiện bước 2 Sơ đồ khối của giải thuật di truyền được trình bày ở Hình 1 3 c) Chi tiết các bước trong giải thuật di truyền Quá trình l ự a ch ọ n Sự lựa chọn là một toán tử lựa chọn hai cá thể cha (được mã hóa bằng hai chuỗi nhị phân) nhằm mục đích tạo một cá thể mới mà ta gọi là cá thể con Trong toán tử lựa chọn, cá thể nào có độ thích nghi càng cao thì càng có nhiều cơ hội được chọn lựa với tư cách là cá thể cha Có hai cách thức để lựa chọn được cá thể cha: Một là lựa chọn ngẫu nhiên (hay còn được gọi là vòng quay roulette ), hai là lựa chọn dựa trên thứ hạn của mỗi cá thể  Lựa chọn ngẫu nhiên bằng cách sử dụng toán tử lựa chọn: Cho N p là số lượng cá thể trong quần thể P (hay còn gọi là kích thước quần thể) Mỗi nghiệm/ cá thể x i , i = {1, …, N p } được lựa chọn làm cá thể cha với khả năng là P s ( x i ) và được tính theo công thức sau: ܲ ௦ ( x i ) = ௙ሺೣ ೔ ሻ ∑ ௙ሺೣ ೔ ሻొ ೛ ౠసభ , với i = 1, 2,…, N p Trong đó, f ( x ) là độ thích nghi của nghiệm x  Lựa chọn dựa trên cơ sở thứ hạng của mỗi cá thể: Theo cách này thì các cá thể x i , với i = {1, …, N p } trong quần thể được sắp xếp theo thứ tự giảm dần dựa trên độ thích nghi của chúng Các cá thể sẽ được lựa chọn dựa trên thứ hạng của chúng [Document title] GVHD: Th S Huỳnh Tấn Khải 17 Hình 1 3 - S ơ đồ kh ố i c ủ a gi ả i thu ậ t di truy ề n Ví dụ 1 6: Bảng sau đây minh họa số lượng cá thể được chọn làm cá thể cha dựa trên phần trăm số lượng cá thể trong quần thể: B ả ng 1 3 Bảng lựa chọn cá thể cha dựa trên phần trăm số lượng cá thể trong quần thể Thứ hạng 1 2 … N p – 1 N p % của N p 20% 10% … 0 1% 0% Quá trình chéo hóa Toán tử chéo hóa dùng để tạo cá thể mới từ các cá thể cha đã được chọn Toán tử chéo hóa thường áp dụng trên cá thể cha – được mã hóa bằng các chuỗi nhị phân và chuỗi hoán vị Ta xét một vài toán tử chéo hóa sau: [Document title] GVHD: Th S Huỳnh Tấn Khải 18  Chéo hóa t ạ i m ộ t đ i ể m Chéo hóa tại một điểm là toán tử thường dùng nhất cho chuỗi nhị phân Toán tử này áp dụng trên các chuỗi cá thể cha đã được chọn lựa như sau: Điểm chéo hóa được lựa chọn ngẫu nhiên giữa hai chuỗi nằm trong hai cá thể cha nhằm tạo ra hai cá thể con mới bằng cách hoán đổi phần đầu tính từ điểm chéo hóa của mỗi chuỗi Hình 1 4 - Toán t ử Chéo hóa áp d ụ ng cho chu ỗ i s ố nguyên hoán v ị Hình 1 5 - Toán t ử chéo hóa áp d ụ ng cho chu ỗ i nh ị phân  Chéo hóa th ứ t ự t ạ i m ộ t đ i ể m Chọn một điểm chéo hóa tại một vị trí bất kỳ trong cá thể cha thứ I Sau đó thay các gen tính từ điểm bắt đầu chéo hóa bằng các gen của cá thể cha thứ II Từ đây ta được một cá thể con Hình 1 6 - Toán t ử Chéo hóa áp d ụ ng cho chu ỗ i hoán v ị [Document title] GVHD: Th S Huỳnh Tấn Khải 19  Chéo hóa th ứ t ự t ạ i hai đ i ể m Cá thể con được tạo thành như sau: Chọn hai điểm chéo hóa bất kỳ trong cá thể cha thứ I Sau đó thay thế các gen nằm giữa hai điểm chéo hóa này bằng các gen tương ứng của của cá thể cha thứ II Hình 1 7 - Toán t ử chéo hóa áp d ụ ng cho chu ỗ i hoán v ị  Chéo hóa b ằ ng cách c ố đị nh v ị trí c ủ a các gen Chọn và cố định vị trí một vài gen của cá thể cha thứ I Sau đó thay thế các gen còn lại trong cá thể cha thứ I này bởi các gen tương ứng của cá thể cha thứ II Hình 1 8 - Toán t ử chéo hóa áp d ụ ng cho chu ỗ i hoán v ị [Document title] GVHD: Th S Huỳnh Tấn Khải 20 Quá trình t ạ o độ t bi ế n Toán tử đột biến nhằm tạo sự biến đổi ở mỗi cá thể mà sau khi áp dụng toán tử Chéo hóa trên cá thể cha để tạo cá thể mới này Ta xét một số toán tử đột biến sau:  T ạ o độ t bi ế n hai gen g ầ n nhau Hai cá thể gần nhau thì được hoán vị cho nhau để tạo sự biến đổi hay đột biến Hình 1 9 - Độ t bi ế n 2 gen g ầ n nhau  T ạ o độ t bi ế n hai gen cách xa nhau Hai cá thể cách xa nhau thì được hoán vị cho nhau để tạo sự biến đổi Hình 1 10 - Độ t bi ế n 2 gen cách xa nhau  T ạ o độ t bi ế n ba gen cách xa nhau Ba cá thể cách xa nhau sẽ hoán vị cho nhau để tạo nên sự biến đổi Trong cách đột biến này có nhiều cá thể mới tạo thành một cách ngẫu nhiên Hình 1 11 - Độ t bi ế n 3 gen cách xa nhau  T ạ o độ t bi ế n b ằ ng cách đả o ng ượ c chu ỗ i con Chọn ngẫu nhiên một dãy con gồm các gen của một cá thể cha thông qua việc chọn hai gen tùy ý cách xa nhau Sau đó đảo ngược dãy gồm các gen này để tạo sự đột biến [Document title] GVHD: Th S Huỳnh Tấn Khải 21 Hình 1 12 - Độ t bi ế n đả o ng ượ c chu ỗ i con  T ạ o độ t bi ế n b ằ ng cách d ị ch chuy ể n Chọn ngẫu nhiên hai nhiễm sắc thể của một cá thể cha, sau đó chèn 1 gen vào vị trí của gen còn lại để tạo sự biến đổi Hình 1 13 - Độ t bi ế n b ằ ng cách d ị ch chuy ể n d) Công thức tính của giải thuật di truyền Độ thích nghi eval ( v i ) của mỗi nhiễm sắc thể v i ( i = 1, … kích thước quần thể) được tính bằng công thức sau: eval ( v i ) = ௙ ሺೡ ೔ ሻ ∑ ௙ ሺೡ ೔ ሻ ೖ೔೎೓೟೓ೠ೚೎೜ೠೌ೙೟೓೐ ೔సభ với ݂ ሺ௩ ೔ ሻ là hàm mục tiêu Công thức tìm tổng giá trị thích nghi của quần thể: F = ݁∑ ݈ܽݒ ሺ௩ ೔ ሻ ௞௜௖௛௧௛௨௢௖௤௨௔௡௧௛௘ ௜ୀଵ Tính xác xuất chọn P i cho mỗi nhiễm sắc thể v i : P i = ௘௩௔௟ ሺೡ ೔ ሻ ∑ ௘௩௔௟ ሺೡ ೔ ሻ ೖ೔೎೓೟೓ೠ೚೎೜ೠೌ೙೟೓೐ ೔సభ Tính xác suất tích luỹ p i cho mỗi nhiễm sắc thể P i : q i = ∑ ݌ ௜ ௜ ௝ୀଵ Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe rulet kích thước quần thể lần Mỗi lần chọn ra một nhiễm sắc thể từ quần thể hiện hành vào quần thể mới theo cách sau: Phát sinh một số ngẫu nhiên r trong khoảng [0, 1] Nếu r < q 1 thì chọn nhiễm sắc thể v 1 , ngược lại chọn nhiễm sắc thể v i (2 ≤ i ≤ kích thước quần thể) sao cho q i-1 < r ≤ q i e) Nhận xét về giải thuật di truyền [Document title] GVHD: Th S Huỳnh Tấn Khải 22 Việc sử dụng hai toán tử Chéo hóa và Đột biến trong thuật toán di truyền có thể sẽ giúp cho thuật toán di truyền trở nên hiệu quả hơn trong quá trình tính toán kết quả và thời gian thực thi Nhưng vấn đề cần quan tâm đó là việc áp dụng toán tử nào trong các toán tử chéo hóa và đột biến sẽ ảnh hưởng đến tính hiệu quả về mặt toán học của thuật toán di truyền Trên đây là toàn bộ những nghiên cứu về giải thuật di truyền và ứng dụng của nó cũng như từng bước trong quá trình thực hiện thuật toán Xét một cách tổng quát thì giải thuật này có những nguyên tắc cơ bản sau đây mà khi thực hiện giải thuật cần lưu ý, đó là: Bước 1: Khởi tạo và mã hóa một quần thể ngẫu nhiên của nhiễm sắc thể (NST) Đó gọi là “quần thể hiện tại” Bước 2: Đánh giá độ thích nghi của mỗi NST trong quần thể hiện tại Bước 3: Tạo ra thế hệ trung gian, thông qua chọn lựa suy diễn các NST trong quần thể hiện tại tuỳ theo độ thích nghi Đó sẽ là cá thể cha - mẹ của những thế hệ tiếp theo Bước 4: Áp dụng toán tử lai ghép và nghịch đảo đối với những cặp hoặc NST đơn trong thế hệ trung gian, qua đó sẽ sản sinh ra một thế hệ NST mới Đó là quần thể hiện tại Lặp lại các bước từ bước 2 đến bước 4 cho đến khi một giải pháp phù hợp được tìm thấy 1 4 Kết chương Qua việc tìm hiểu tổng quan các phương pháp giải bài toán tối ưu đa mục tiêu ở trên cũng như các kết quả ứng dụng từ thực nghiệm cho thấy phương pháp di truyền tỏ ra hiệu quả, đơn giản, dễ cài đặt và dễ thực hiện hơn so với các phương pháp khác Thuật toán di truyền cũng đã được phát triển và sử dụng rộng rãi, do đó chúng ta có thể dễ dàng thừa kế và sử dụng lại cho nhiều mục đích khác nhau Vì vậy, trong đề tài này, tôi đã tìm hiểu sâu hơn về giải thuật di truyền cũng như lựa chọn giải thuật này để giải quyết bài toán ràng buộc đa mục tiêu mà cụ thể đó là bài toán lập thời khóa biểu [Document title] GVHD: Th S Huỳnh Tấn Khải 23 Chương 2 ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN LẬP THỜI KHÓA BIỂU 2 1 Tìm hiểu chung về bài toán lập thời khóa biểu 2 1 1 Mô tả bài toán lập thời khóa biểu Một đơn vị trường học (tiểu học, trung học, trung học phổ thông, trung cấp, cao đẳng, đại học) muốn xây dựng một phần mềm sắp xếp thời khóa biểu cho các lớp học Mỗi trường có một số lớp, mỗi lớp có thể có số lượng học sinh - sinh viên khác nhau Các môn học được tuân theo một chương trình đào tạo được cấp trên phê duyệt (Bộ Giáo dục & Đào tạo đối với các trường phổ thông, Trưởng khoa đối với các trường đại học) về nội dung chuyên môn và số tiết cần thiết Bên cạnh đó, mỗi trường bao gồm số phòng học, sức chứa, chức năng và vị trí của từng phòng học khác nhau Việc xếp lịch học cho các lớp phải phù hợp với sức chứa của mỗi phòng học cũng như chức năng của phòng đó Đầu năm học, hội đồng nhà trường hay phòng đào tạo sẽ lập một bảng phân công giảng dạy gồm thầy/ cô nào, dạy lớp nào, môn nào Còn giáo vụ phải xếp lịch học và phòng học Dĩ nhiên một thầy/ cô có thể dạy nhiều môn và nhiều lớp khác nhau nhưng không ở cùng một thời điểm Do thời gian của giáo viên phụ thuộc rất nhiều vào thời gian công tác của họ tại trường, nên thời khóa biểu có thể lập và điều chỉnh theo từng tuần Giáo viên phải đề đạt yêu cầu của họ vào thứ năm hàng tuần để kịp làm lịch học cho tuần sau hoặc giáo viên có thể cung cấp các ràng buộc về lịch dạy hay thời gian rảnh của mình ngay từ đầu học kỳ Ngược lại, nếu số lượng giáo viên dạy các lớp không có gì thay đổi theo sự phân công ban đầu thì thời khóa biểu đó sẽ sử dụng xuyên suốt cả một học kỳ Trong thời khóa biểu sẽ chỉ ra thứ mấy, từ tiết nào đến tiết nào, ai dạy lớp nào, môn nào, ở phòng học nào Cuối mỗi tuần, giáo vụ sẽ căn cứ vào danh sách thống kê số giờ dạy của mỗi giáo viên để xác định số giờ đã dạy của mỗi môn Nếu môn nào của lớp nào dạy chưa đủ thời gian thì lập kế hoạch dạy bù Cũng căn cứ vào đó, hằng tháng nhà trường sẽ làm bảng thanh toán cho giáo viên trên cơ sở số giờ thực dạy Đôi khi cũng phải lập bảng thanh toán theo yêu cầu của giáo viên hay hiệu trưởng trong những trường hợp đặc biệt, ví dụ như giáo viên chấm dứt hợp đồng giảng dạy giữa tháng Ngoài việc quản lý và thanh toán giảng dạy, hệ thống phần mềm này còn phải đáp ứng được các thông tin về giáo viên, học sinh, môn học, các phòng học cơ hữu và các phòng học thuê mướn của trường [Document title] GVHD: Th S Huỳnh Tấn Khải 24 2 1 2 Các đối tượng của thời khóa biểu Bất kỳ một lịch học nào cũng có những đối tượng nhất định Trong thời khóa biểu này sẽ có các đối tượng sau: chương trình đào tạo, giáo viên – giảng viên, học sinh - sinh viên, phòng học, lớp học, khóa học, tiết học và giờ học Các đối tượng này sẽ được cụ thể hóa như sau: Chương trình đào tạo là cấp độ quản lý cao nhất trong chương trình, đó là phổ thông trung học và đại học Ví dụ về chương trình đào tạo như DH-CNTT-K13-1314- 01 (Chương trình đào tạo cho sinh viên đại học ngành công nghệ thông tin, khóa K13, năm học 2013-2014 của học kỳ 1), THCS-10A1-1415-02 (Chương trình đào tạo cho học sinh trung học cơ sở, lớp 10A1, năm học 2014-2015 của học kỳ 2), … Lớp học là t ậ p con của chương trình đào tạo, ví dụ như CNTT-K13 có 2 lớp là lớp CNTT-K13-01 và lớp CNTT-K13-02, … Giáo viên – giảng viên là những người trực tiếp giảng dạy tại các lớp và ta sẽ lưu thông tin về họ tên của giáo viên – giảng viên đó Học sinh – sinh viên là nhóm đối tượng theo học tại mỗi lớp, một lớp sẽ có số lượng học sinh – sinh viên giống hoặc khác nhau Phòng học cho biết sức chứa của mỗi phòng cũng như số lượng máy tính (nếu có) trong phòng đó Tiết học là thời gian bắt đầu và kết thúc của một môn học Ví dụ, từ 8:00 đến 8:45 học môn Toán, từ 8:45 đến 8:30 học môn Pháp luật, … Giờ học là khoảng thời gian mà tiết học diễn ra Ví dụ tiết thứ nhất bắt đầu từ 7:00 đến 7:45, tiết thứ hai bắt đầu từ 7:50 đến 8:35, … Khóa học thường được dùng ở các tường đại học và trong chương trình này, nó được sử dụng tương đương với Môn học Các ví dụ về khóa học như Toán, Chính trị, Văn học, … Khi định nghĩa một khóa học, ta phải cung cấp luôn các thông tin như số tiết học mỗi tuần của khóa học đó, số lượng sinh viên tham gia Nếu một khóa học được phụ trách bởi hai hoặc nhiều giáo viên thì ta phải tạo thành hai hoặc nhiều khóa học tương ứng Ví dụ môn Tin học căn bản cho chương trình đào tạo K09-CNTT- 0910-1 do hai giáo viên là A và B phụ trách, thì ta phải tạo thành hai khóa học (môn học) là THCB-A và THCB-B Việc phân chia này để chúng ta dễ xác định giờ dạy nào của giáo viên nào khi nhìn vào Thời khóa biểu [Document title] GVHD: Th S Huỳnh Tấn Khải 25 HS-SV đăng ký học 2 1 3 Quy trình lập thời khóa biểu Hình 2 1 - Quy trình l ậ p th ờ i khóa bi ể u 2 2 Ứng dụng giải thuật di truyền vào bài toán lập thời khóa biểu Trong mục này vận dụng các kiến thức về giải thuật di truyền để áp dụng vào bài toán lập thời khóa biểu Các ràng buộc của bài toán như ràng buộc giáo viên, ràng buộc phòng học, ràng buộc môn học,… là các vấn đề khá phức tạp Vì thế, cách tốt nhất là sử dụng một cách hiệu quả phương pháp chia để tr ị để giải quyết vấn đề phức tạp này Ở đây cũng vậy, theo phân cấp các ràng buộc, ta chia bài toán lập thời khóa biểu thành 2 giai đoạn khác nhau để giải quyết bài toán Giai đoạn 1, giải quyết thành phần ràng buộc ở mức lớp học, với các vấn đề cơ bản, phức tạp của những đối tượng liên quan tới việc học của lớp Khi đã có được kết quả cuối cùng là lịch học cho từng lớp một cách hoàn chỉnh, chúng sẽ được dùng làm thông tin cho giai đoạn sau Ở giai đoạn 2, tổng hợp các ràng buộc còn lại (đã được đơn giản hóa trong giai đoạn trước) Kết quả của giai đoạn này chính là mục tiêu cuối cùng của bài toán và đó là lịch học của các lớp cho một đơn vị trường học Cả hai giai đoạn tuy có mục tiêu và dữ liệu khác nhau, nhưng về cách giải quyết có tính tương tự nhau nên không khác gì nhiều khi áp dụng vào mô hình giải thuật di truyền Dự kiến kế hoạch mở lớp Danh sách HS-SV các lớp-ngành Các ràng buộc xếp TKB Xếp TKB tự động (sd giải thuật) HOẶC Xếp TKB thủ công (con người làm) Danh sách giáo viên Danh sách phòng học Lịch bận/rỗi Lớp học/ lớp học phần dự kiến [Document title] GVHD: Th S Huỳnh Tấn Khải 26 2 2 1 Giai đoạn 1: Xếp lịch học các lớp a) Chọn mô hình cá thể Lịch học của một lớp có hai thành phần chính, bao gồm: các môn học và các giờ học trong tuần Việc đặt ngẫu nhiên các môn học với các giờ học sẽ tạo thành một lịch học cho từng lớp Như vậy một lớp học tương ứng sẽ có nhiều lịch học khác nhau, do đó ta chọn mỗi lịch học làm cá thể trong giải thuật di truyền Trong hai thành phần đó thì các giờ học là thành phần ổn định hơn về số lượng cũng như về giá trị của chúng Thành phần môn học lại có tính không ổn định vì số lượng môn học phải phụ thuộc vào từng lớp học, cũng giống như số lượng nhiễm sắc thể trong cá thể, có chiều dài không nhất thiết phải cố định hay bằng nhau Do đó, chọn môn học làm đơn vị nhiễm sắc thể trong cá thể Ngoài ra, chưa kể đến tính phức tạp của môn học về số tiết phải học luôn bị thay đổi, trong khi giá trị các giờ học thì ngược lại, có thể xác định một cách rõ ràng và nhanh chóng Mô hình cá thể trong lịch của lớp học được cho như Hình 2 2 Trong đó, giá trị của phần tử môn học thứ i là chỉ số giờ (tiết học) thứ j Môn học 1 Môn học 2 ……… Môn học n Hình 2 2 - Mô hình cá th ể trong l ị ch l ớ p h ọ c Như đã trình bày ở trên, thay vì chọn ngẫu nhiên môn học vào các giờ học, ta sẽ làm ngược lại là chọn ngẫu nhiên giờ học theo môn, vì ta đã chọn môn học làm đơn vị nhiễm sắc thể trong cá thể (theo mô hình Hình 2 2) Điều này có nghĩa là, với một cá thể của mô hình xếp lịch lớp học, ở bất kỳ thời điểm nào, khi ta đặt nhiễm sắc thể đầu tiên là môn thứ nhất, nhiễm sắc thể kế tiếp sẽ là môn thứ hai và tiếp tục cho các nhiễm sắc thể còn lại Sau này, theo thứ tự đó sẽ lấy thông tin ra và không có gì thay đổi (ngoại trừ giá trị tiết học, nếu có xảy ra lai ghép hay đột biến) Trong trường hợp một môn được học nhiều lần trong tuần, do có nhiều tín chỉ/ học phần, nên sẽ gây khó khăn cho việc xếp chúng vào trong cá thể Cách giải quyết vấn đề này rất đơn giản, chỉ cần đưa chúng vào cá thể với nhiễm sắc thể tương ứng, chẳng khác gì một môn học bình thường khác Lúc đọc dữ liệu, chúng ta nên ghi nhận thêm thông tin về số tiết học của từng môn học Ví dụ 2 1: Giả sử ta có danh sách các môn học và số lần học trong một tuần như sau: - Môn học a có 1 lần học - Môn học b có 2 lần học [Document title] GVHD: Th S Huỳnh Tấn Khải 27 - Môn học c có 1 lần học [Document title] GVHD: Th S Huỳnh Tấn Khải 28 Chúng ta sẽ phân bổ các nhiễm sắc thể như sau: a b (lần 1) b (lần 2) c Hình 2 3 - Phân b ổ các nhi ễ m s ắ c th ể môn h ọ c Mỗi nhiễm sắc thể sẽ mang một giá trị số nguyên Đó chính là vị trí tiết học bắt đầu của môn học Phạm vi giá trị của nó từ 0 → 35 theo thứ tự các tiết học trong tuần, được đánh dấu theo vị trí liên tục của các ngày, tương tự cấu trúc mảng một chiều Các tiết học tiếp theo là giá trị liên tục kế tiếp nhau tùy theo số lượng tiết học của môn mà ta đang lưu trữ ( Xem Hình 2 4 bên d ướ i ) Như ta đã nói ở trên, tương ứng với mỗi cá thể là một lịch học thực của lớp Vì vậy, khi tạo cá thể, chúng ta vẫn phải đảm bảo sự đúng đắn về tính chất trong lịch học: Đủ số tiết học, số môn học, không có sự chồng chéo lên nhau tại cùng thời điểm trong các môn, … Để giải quyết việc này, chúng ta sử dụng một tham biến đánh dấu các tiết học đã lên lịch, để môn học sau sẽ không bị xếp trùng vào những vị trí này, mà môn học này sẽ được đưa vào vị trí khác Tất nhiên, với mỗi lịch học sẽ có sự sắp xếp khác nhau Ví dụ 2 2: Cách sắp xếp vị trí tiết học trong lịch học: - Môn học a tiết bắt đầu 0, số tiết cần học là 3 - Môn học b tiết bắt đầu 3, số tiết cần học là 2 - Môn học c tiết bắt đầu 12, số tiết cần học là 3 Phân bố các môn học trên lịch học như sau: [Document title] GVHD: Th S Huỳnh Tấn Khải 29 Thứ 2 Thứ 3 Thứ 4 …… Thứ 7 0 a(1) 6 12 c(1) 30 1 a(2) 7 13 c(2) 31 2 a(3) 8 14 c(3) 32 3 b(1) 9 15 33 4 b(2) 10 16 34 5 11 17 35 Hình 2 4 - B ả ng phân b ố các môn h ọ c trên l ị ch h ọ c b) Tạo quần thể ban đầu Quần thể là tập hợp tất cả các nhiễm sắc thể Ngoài việc lưu trữ danh sách các nhiễm sắc thể, quần thể còn chứa thêm các thông tin khác như kích thước quần thể, độ thích nghi của quần thể, … Quần thể ban đầu được khởi tạo trước khi thực hiện quá trình tiến hóa bằng cách gán cho các gen trong nhiễm sắc thể bởi các giá trị ngẫu nhiên Trong phần này, trước khi tạo quần thể ban đầu, chúng ta phải chuẩn bị sẵn về dữ liệu cho quá trình thực thi, từ lúc khởi tạo đến khi cho ra kết quả, bao gồm đầy đủ thông tin của một lớp đang được chọn, cụ th

NỘI DUNG NGHIÊN CỨU

1.1 Giới thiệu bài toán tối ưu tổng quát và phân loại

1.1.1 Giới thiệu bài toán tối ưu tổng quát a) Giới thiệu

Lý thuyết tối ưu là một trong những lĩnh vực kinh điển của toán học có ảnh hưởng nhiều đến lĩnh vực kinh tế xã hội và khoa học công nghệ Phương án tối ưu là phương án khả thi và tốt nhất, tức là phương án làm cho hàm mục tiêu đạt kết quả nhỏ nhất (min) hoặc lớn nhất (max) và phải thỏa mãn các điều kiện, yêu cầu của bài toán (gọi là thỏa mãn các điều kiện ràng buộc)

Trong mô hình toán học, mục tiêu của bài toán được biểu diễn bởi hàm: f(x) → min (hoặc f(x) → max) (1.1) với x là một biến số rời rạc hoặc một biến kiểu vector x = (x 1, x 2,…, x n) Xét một cách tổng quát, chúng ta xem biến x là một biến vector, trường hợp x là biến số rời rạc tương ứng với vector chỉ có một thành phần

Biến x tổng quát có dạng x = (x 1, x 2,…, x n) thường có yêu cầu phải thỏa mãn một số điều kiện nào đó Tập hợp các điều kiện của các biến thì được gọi là điều kiện ràng buộc và được biểu diễn bởi miền D (miền ràng buộc): x ∈ D (1.2)

Yêu cầu tổng quát của bài toán tối ưu là tìm bộ giá trị của x để thỏa mãn điều kiện ràng buộc (1.2) và làm cực tiểu/ cực đại hàm mục tiêu (1.1) x * (một bộ các giá trị cụ thể của (x 1, x 2,…, x n)) thỏa mãn điều kiện (1.1) và (1.2) gọi là phương án tối ưu Nếu x chỉ thỏa mãn điều kiện (1.2) thì ta gọi x là phương án chấp nhận được hay là phương án b) Các ví dụ minh họa

Ví dụ 1.1: Tìm x sao cho: f(x) = x 3 – 3x +1 → max (1.3) với: x ∈ D = [-2,2; 1,8] (1.4)

∀ ∈ [-2,2; 1,8] là một phương án chấp nhận được ⟺ -2,2 ≤ x ≤ 1,8

Bài toán trên tương đương với bài toán tìm giá trị lớn nhất (GTLN) của hàm f(x) khi -2,2 ≤ x ≤ 1,8

Phương pháp tìm GTLN (đã học trong Giải tích 1) thực hiện như sau:

CƠ SỞ LÝ THUYẾT

Giới thiệu bài toán tối ưu tổng quát và phân loại

1.1.1 Giới thiệu bài toán tối ưu tổng quát a) Giới thiệu

Lý thuyết tối ưu là một trong những lĩnh vực kinh điển của toán học có ảnh hưởng nhiều đến lĩnh vực kinh tế xã hội và khoa học công nghệ Phương án tối ưu là phương án khả thi và tốt nhất, tức là phương án làm cho hàm mục tiêu đạt kết quả nhỏ nhất (min) hoặc lớn nhất (max) và phải thỏa mãn các điều kiện, yêu cầu của bài toán (gọi là thỏa mãn các điều kiện ràng buộc)

Trong mô hình toán học, mục tiêu của bài toán được biểu diễn bởi hàm: f(x) → min (hoặc f(x) → max) (1.1) với x là một biến số rời rạc hoặc một biến kiểu vector x = (x 1, x 2,…, x n) Xét một cách tổng quát, chúng ta xem biến x là một biến vector, trường hợp x là biến số rời rạc tương ứng với vector chỉ có một thành phần

Biến x tổng quát có dạng x = (x 1, x 2,…, x n) thường có yêu cầu phải thỏa mãn một số điều kiện nào đó Tập hợp các điều kiện của các biến thì được gọi là điều kiện ràng buộc và được biểu diễn bởi miền D (miền ràng buộc): x ∈ D (1.2)

Yêu cầu tổng quát của bài toán tối ưu là tìm bộ giá trị của x để thỏa mãn điều kiện ràng buộc (1.2) và làm cực tiểu/ cực đại hàm mục tiêu (1.1) x * (một bộ các giá trị cụ thể của (x 1, x 2,…, x n)) thỏa mãn điều kiện (1.1) và (1.2) gọi là phương án tối ưu Nếu x chỉ thỏa mãn điều kiện (1.2) thì ta gọi x là phương án chấp nhận được hay là phương án b) Các ví dụ minh họa

Ví dụ 1.1: Tìm x sao cho: f(x) = x 3 – 3x +1 → max (1.3) với: x ∈ D = [-2,2; 1,8] (1.4)

∀ ∈ [-2,2; 1,8] là một phương án chấp nhận được ⟺ -2,2 ≤ x ≤ 1,8

Bài toán trên tương đương với bài toán tìm giá trị lớn nhất (GTLN) của hàm f(x) khi -2,2 ≤ x ≤ 1,8

Phương pháp tìm GTLN (đã học trong Giải tích 1) thực hiện như sau:

GVHD: Th.S Huỳnh Tấn Khải 5

 Tìm các cực trị của hàm f(x), tính các giá trị cực trị, tính các giá trị tại các đầu mút của miền D, sau đó so sánh để tìm ra giá trị lớn nhất (hay nhỏ nhất) Để tìm các điểm cực trị, ta tìm các giá trị của hàm f(x) ứng với các giá trị của x sao cho đạo hàm f '(x) = 0 Tính f(x) tại các điểm dừng

Tìm phương án tối ưu của bài toán: Z = → max (1.5) Điều kiện ràng buộc được xác định từ điều kiện xác định (tập xác định) của hàm

Z, tức là a 2 – x 2 – y 2 ≥ 0, hay miền ràng buộc của bài toán là: x 2 + y 2 ≤ a 2 (1.6) Tìm phương án tối ưu cho công thức (1.5) là bài toán tìm cực trị của hàm hai biến

Dùng phương pháp tìm cực trị hàm hai biến

Ta có: đạt giá trị lớn nhất khi ( đạt giá trị lớn nhất

=> Z đạt giá trị lớn nhất khi đạt giá trị nhỏ nhất và đạt giá trị nhỏ nhất khi x = y =0

Như vậy hàm Z đạt cực đại tại điểm M (0,0)

=> Phương án tối ưu (x*, y*) = (0,0) và Z max = Z (0,0) = a

(Bài toán tối ưu có thể không có điều kiện ràng buộc, bất kỳ giá trị nào của x hoặc vector x cũng là một phương án chấp nhận được Vậy chỉ cần tìm x bất kỳ sao cho f(x) → min (hoặc f(x) → max) là có thể đáp ứng được yêu cầu của bài toán Có thể điều kiện ràng buộc được xác định trong hàm mục tiêu là miền xác định của hàm mục tiêu)

1.1.2 Phân loại các bài toán tối ưu

GVHD: Th.S Huỳnh Tấn Khải 6

Một trong những phương pháp thông dụng nhất để giải bài toán tối ưu đó là: Tính giá trị hàm mục tiêu f(x) trên tất cả các phương án, sau đó so sánh các giá trị tính được để tìm ra giá trị tối ưu và phương án tối ưu cho bài toán

Thực hiện theo phương pháp trên gặp rất nhiều khó khăn ngay cả khi kích thước của bài toán (số biến n và số ràng buộc m) là không lớn, bởi vì tập D thông thường gồm một số rất lớn các phần tử, trong nhiều trường hợp còn là không đếm được

Vì vậy, người ta đã nghiên cứu về mặt lý thuyết để có thể tách ra từ bài toán tổng quát thành các lớp bài toán đơn giản hơn, dễ thực hiện hơn Các nghiên cứu lý thuyết đó thường là:

- Nghiên cứu tính chất của các thành phần bài toán (hàm mục tiêu, các hàm ràng buộc, các biến số, các hệ số, …)

- Các điều kiện tồn tại lời giải chấp nhận được

- Các điều kiện cần và đủ của cực trị

- Tính chất của các đối tượng nghiên cứu

Bài toán tối ưu hay còn gọi là bài toán quy hoạch Dựa vào tính chất của các thành phần bài toán và đối tượng nghiên cứu người ta phân loại các lớp bài toán tối ưu như sau:

 Bài toán tối ưu tuyến tính: Là bài toán mà hàm mục tiêu và tất cả các ràng buộc đều có dạng tuyến tính

Hàm mục tiêu: f(x) → min (hoặc f(x) → max) là một hàm tuyến tính

Và tất cả các ràng buộc: gi (x), với i = 1, cũng là một hàm tuyến tính

 Bài toán tối ưu phi tuyến: Bài toán mà trong đó hàm mục tiêu hoặc ít nhất một điều kiện ràng buộc là phi tuyến (có chứa ít nhất một yếu tố phi tuyến – bậc 2, logic, mũ, …)

 Bài toán tối ưu rời rạc: Khi biến hoặc giá trị hàm mục tiêu là rời rạc Chúng ta có thể chia bài toán tối ưu rời rạc thành hai dạng như sau:

 Tối ưu nguyên (quy hoạch nguyên): Các biến hoặc các hàm mục tiêu nhận các giá trị nguyên

 Tối ưu đồ thị: Là một dạng đặc biệt của bài toán tối ưu rời rạc, có các đỉnh là các điểm rời rạc Trong đồ thị, chúng ta kí hiệu tập đỉnh là: X = {A, B, C, D}, tập cạnh là E = {e 1, e 2, …, e 8} hoặc biểu diễn tập cạnh thông qua tập đỉnh: E = {(A, D); (A, B); … } Bài toán tối ưu đồ thị trở thành bài toán tìm đường đi ngắn nhất của đồ thị thỏa mãn điều kiện nào đó

GVHD: Th.S Huỳnh Tấn Khải 7

 Bài toán quy hoạch động: Dạng bài toán này thường thì những kết quả của bước sau phụ thuộc vào kết quả của bước trước

 Bài toán tối ưu đa mục tiêu: Bài toán mà trong đó có nhiều hàm mục tiêu cần phải tối ưu trên cùng một miền ràng buộc f i(x) → min (hoặc f i(x) → (max)) với i = 1, 2, …, n; x ∈ D

Trong đó có nhiều hàm mục tiêu có thể đối lập nhau Khi giải bài toán này, chúng ta phải kết hợp hài hòa các lợi ích (giá trị) đạt được của hàm mục tiêu.

Ứng dụng của lý thuyết tối ưu

1.2.1 Phương pháp mô hình hóa

Trên thực tế, nhiều vấn đề ở các lĩnh vực kinh tế, khoa học - công nghệ và xã hội đều có thể giải quyết bằng phương pháp tối ưu toán học Bởi lẻ người ta luôn mong muốn tìm ra các sản phẩm tốt nhất mà vẫn tiết kiệm được thời gian, công sức, chi phí, đường đi, Điều quan trọng là từ thực tế, ta phải xây dựng được một mô hình toán học thích hợp Từ đó, chúng ta sử dụng các phương pháp tối ưu cùng với các công cụ thích hợp để cho ra lời giải tối ưu nhất Để làm được những điều này, chúng ta cần lưu ý các bước sau đây khi áp dụng phương pháp mô hình hóa:

Bước 1: Khảo sát vấn đề thực tế, phát hiện vấn đề cần giải quyết bằng phương pháp tối ưu

Bước 2: Phát biếu các điều kiện ràng buộc và hàm mục tiêu dưới dạng định tính

Bước 3: Lựa chọn các biến đại diện cho các tham số và sau đó định lượng hóa các điều kiện ràng buộc và hàm mục tiêu Từ đó xây dựng mô hình định lượng và mô hình toán học (mô hình tối ưu)

Bước 4: Thu thập số liệu và lựa chọn phương pháp toán học thích hợp để giải mô hình

Bước 5: Xây dựng thuật toán và quy trình giải: Lựa chọn công cụ (giấy bút, máy tính) có thể lập trình cho bài toán ấy

Bước 6: Đánh giá kết quả thu được: Nếu phương pháp vừa xây dựng là phù hợp thực tế thì nó cho kết quả tối ưu và điều này cũng chứng tỏ mô hình mà chúng ta xây dựng là đúng và hợp lý Nếu nó không phù hợp thực tế thì phải xem xét và điều chỉnh mô hình

1.2.2 Một số ứng dụng của lý thuyết tối ưu Ứng dụng của lý thuyết tối ưu vô cùng phong phú và đa dạng Tuy nhiên, tùy vào mỗi trường hợp cụ thể và tùy vào cách thức vận dụng sao cho hợp lý, hiệu quả thì ứng

GVHD: Th.S Huỳnh Tấn Khải 8 dụng của lý thuyết tối ưu mới mang lại kết quả như mong muốn Ở đây, ta sẽ chỉ tiến hành xét một số ví dụ điển hình dẫn đến mô hình tối ưu

GVHD: Th.S Huỳnh Tấn Khải 9

Ví dụ 1.3: Bài toán phân phối điện năng

Có ba hộ gia đình cần được cung cấp điện từ hai nguồn điện cách xa nhau Giá thành truyền tải một đơn vị điện năng (hao tổn + chi phí bảo dưỡng đường dây, trạm) từ nguồn thứ i (i = 1, 2) đến hộ thứ j (j = 1, 2, 3) là C ij Khả năng cung cấp của mỗi nguồn điện bị giới hạn bởi trữ lượng của chúng là A 1, A 2 Nhu cầu của các hộ tiêu thụ cần phải đáp ứng đủ là B 1, B 2, B 3 Hãy lập kế hoạch phân phối điện năng khả thi sao cho tổng chi phí truyền tải là nhỏ nhất

Mô hình toán học được lập như sau:

Giả thiết: Điều kiện cân bằng thu-phát: ∑ = ∑ á

Tức là: ∑ = ∑ Đặt biến x là lượng điện chuyển từ trạm cung cấp thứ i đến hộ tiêu thụ thứ j

Ta có: x ≥ 0; i = 1, 2; j = 1, 2, 3 (điều kiện các biến không âm)

Từ đó suy ra, tổng chi phí truyền tải: ∑ ∑

Vậy hàm mục tiêu sẽ là: f(x) = ∑ ∑ → min (1.7) Điều kiện ràng buộc:

Tổng lượng điện từ trạm 1: 11 12 13 1 Tổng lượng điện từ trạm 2: 21 22 23 2 Tổng lượng điện của hộ 1: 11 21 1 Tổng lượng điện của hộ 2: 12 22 2 Tổng lượng điện của hộ 3: 13 23 3 Điều kiện không âm của biến : 11, 12 , , 23 0

Bài toán tối ưu tuyến tính chính là bài toán tìm các giá trị (1.7) để thỏa mãn các điều kiện (1.8)

Ví dụ 1.4: Bài toán xây dựng hệ thống truyền tải điện

Một huyện (X 0) có 5 xã X 1, X 2, X 3, X 4, X 5 Huyện này cần xây dựng hệ thống truyền tải điện từ trung tâm huyện đến tất cả các xã Giữa hai địa điểm có thể thay đổi được đường dây với chi phí được cho trong Hình 1.1 Hãy lập các phương án xây dựng hệ thống điện có thể nối liền các xã vào huyện với tổng chi phí là nhỏ nhất

GVHD: Th.S Huỳnh Tấn Khải 10

Hình 1.1 - Các giả thiết của bài toán Đây là một bài toán tối ưu trên đồ thị được giải bằng thuật toán PRIM, KRUSKAL

Hình 1.2 - Kết quả (giải bằng thuật toán PRIM)

Ta có : Sơ đồ đường dây cần xây dựng tối ưu như Hình 1.2, tổng chi phí đầu tư nhỏ nhất : f min = 15.

Các phương pháp giải bài toán tối ưu đa mục tiêu

1.3.1 Phương pháp ràng buộc (Constraint method) a) Mô tả bài toán

Cho bài toán đa mục tiêu với p mục tiêu, như sau: min {f 1(x), f 2(x),…, f p(x)} (1.11) Sao cho: x ∈ R n

Trong đó: x = (x 1, x 2,…, x n) ∈ R n là không gian quyết định

Ta chuyển bài toán trên thành nhiều bài toán ràng buộc đơn mục tiêu như sau:

GVHD: Th.S Huỳnh Tấn Khải 11 f k (x 1, x 2, x 3,…, x n) ≥ Lk (k = 1, …, p) (1.12)

Công thức này là bài toán đơn mục tiêu Do đó có thể giải được bằng các phương pháp giải bài toán đơn mục tiêu Sau khi có các tối ưu cho từng hàm f k , chúng ta có thể tìm giá trị tối ưu nhất từ tập các giá trị tối ưu của các f k b) Thuật toán

Bước 1: Xây dựng bảng thỏa hiệp

- Giải lần lượt p bài toán đơn mục tiêu và các ràng buộc tương ứng Gọi nghiệm ứng với mục tiêu thứ k là: x k = ( , , …, ) với k = 1,…, p Sau đó tính giá trị của p hàm mục tiêu này đạt được tại các x k tương ứng, ta gọi là: f 1( ), f 2( ), …, f p( )

- Sắp xếp p giá trị ứng với p mục tiêu vừa tính được ở trên vào bảng Ở đây, hàng ứng với các x 1 ,…, x k và cột là nhãn của mục tiêu

Bảng 1.1 Bảng thoả hiệp cho một bài toán với p hàm mục tiêu f 1 (x k ) f 2 (x k ) … f p (x k ) x 1 f 1 (x 1 ) f 2 (x 1 ) … f p (x 1 ) x 2 f 1 (x 2 ) f 2 (x 2 ) … f p (x 2 )

- Tìm số lớn nhất và nhỏ nhất trong cột thứ k, lần lượt kí hiệu là Mk,mk với k = 1,

Bước 2: Quy ước một bài toán quy hoạch đa mục tiêu được cho ở (1.11) tương ứng với bài toán ràng buộc của nó như ở (1.12)

Bước 3: Chọn giá trị của L k trong đoạn [mk, Mk] bằng cách chia [mk,Mk] ra r phần bằng nhau Lk có thể nhận một trong r giá trị sau:

Lk = mk + (Mk - mk) , với: t = 0,1,…., r – 1 Bước 4: Ứng với mỗi giá trị của Lk ta giải bài toán (1.12) và mỗi bài toán cho một nghiệm chấp nhận được Trong những nghiệm này ta chọn nghiệm tốt nhất

1.3.2 Phương pháp tổng trọng số a) Các khái niệm tối ưu

Một điểm x * ∈ X được gọi là một nghiệm tối ưu Pareto nếu không tồn tại một nghiệm x ≠ x * ∈ X mà x trội hơn x * Nghĩa là: f(x) < f(x * )

Từ định nghĩa trên suy ra các tính chất sau: i) Nếu x * là nghiệm tối ưu Pareto thì ƒ(x ∗ ) gọi là điểm hữu hiệu

GVHD: Th.S Huỳnh Tấn Khải 12 ii) Nếu x 1 , x 2 ∈ X và ƒ(x 1 ) ≤ ƒ(x 2 ) thì ta gọi x 1 trội hơn x 2 và ƒ(x 1 ) trội hơn ƒ(x 2 ) iii) Tập tất cả các nghiệm tối ưu Pareto x * ∈ X và tập các điểm hữu hiệu y ƒ(x * ) ∈ Y lần lượt ký hiệu là: X par và Y eff

Nghiệm tối ưu Pareto chặt và yếu:

Nghiệm x * ∈ X được gọi là một nghiệm tối ưu yếu Pareto nếu không tồn tại một nghiệm x ∈ X sao cho: ƒ(x) ≪ ƒ(x * ) Khi đó: Điểm y = ƒ(x * ) ∈ Y gọi là điểm hữu hiệu yếu

Tập nghiệm tối ưu Pareto yếu và tập các điểm hữu hiệu yếu lần lượt ký hiệu là: và Nghiệm x * ∈ X được gọi là một nghiệm tối ưu chặt Pareto nếu không tồn tại một nghiệm x ∈ X và x ≠ x * sao cho: ƒ(x) ≤ ƒ(x * )

Khi đó, tập nghiệm tối ưu Pareto chặt ký hiệu là:

X s–par b) Mô tả bài toán

Bài toán tối ưu nhiều mục tiêu dạng tổng quát được phát biểu như sau: min {f 1(x), f 2 (x),…, f p (x)}

Trong đó: x = (x 1, x 2, …, x n) ∈ R n : là không gian nghiệm

Ta chuyển bài toán trên thành bài toán tổng như sau: min f = w 1 f 1 (x) + w 2 f 2 (x) + ⋯ + w p f p (x)

Trong đó: w i ≥ 0, với: i = 1, 2,…, n và: ∑ i 1 Ứng với mỗi bộ trọng số w i ta sẽ tìm được một nghiệm tối ưu Pareto c) Ví dụ minh họa

Ví dụ 1.5: Giải bài toán tối ưu hai hàm mục tiêu sau:

, = − x1 − x1x 2 + 0.5 Sau khi thực hiện các bước tính toán ta xác định được giá trị của mỗi hàm mục tiêu như sau:

GVHD: Th.S Huỳnh Tấn Khải 13

Bảng 1.2 Bảng các hàm mục tiêu w = (w 1 , w 2 ) (0,1) (0.2, 0.8) (0.4, 0.6) (0.6, 0.4) (0.8, 0.2) (1,0

1.3.3 Phương pháp sử dụng giải thuật di truyền (Genetic Alogrithm – GA) a) Giới thiệu giải thuật

Giải thuật di truyền (Genetic Algorithm - GA) được đề xuất bởi ý tưởng của John Holland vào những năm 1970 Lấy cảm hứng từ quá trình chọn lọc một cách ngẫu nhiên các cá thể thông qua sự tác động của môi trường tự nhiên Nếu cá thể nào có mức độ thích nghi cao với sự tác động này thì chúng sẽ tiếp tục sống sót, ngược lại chúng sẽ bị loại bỏ Ý tưởng này đã được áp dụng để giải quyết các bài toán tối ưu một mục tiêu bằng cách làm xấp xỉ các nghiệm thành biên Pareto từ một số nghiệm khởi tạo ban đầu Tuy nhiên từ thực tế số lượng hàm mục tiêu cần tối ưu tăng lên rất nhiều - ít nhất là hai mục tiêu và thường thì các mục tiêu này xung đột nhau như: Bài toán lựa chọn danh mục đầu tư tối ưu nhiều mục tiêu người ta cố gắng làm cực đại lợi nhuận thu được trong khi giảm thiểu rủi ro đến mức thấp nhất có thể hay bài toán trong sản xuất ta cố gắng làm cực tiểu số lượng nhân công nhưng giá trị sản lượng vẫn đạt cực đại Như vậy, việc tìm một phương án hay nghiệm thỏa mãn tất cả các mục tiêu đặt ra như trên xem ra rất lý tưởng, nhưng trên thực tế có rất ít bài toán tồn tại phương án lý tưởng này Do đó, ta chuyển sang tìm một phương án khả thi khác mà ta gọi là phương án thỏa hiệp Phương án thỏa hiệp sẽ thỏa mãn các mục tiêu đặt ra ở một mức độ có thể chấp nhận được

Trên cơ sở này người ta cố gắng áp dụng thuật toán di truyền để giải quyết các loại bài toán này và thuật toán di truyền đa mục tiêu cũng xuất hiện trên cơ sở này Cho đến nay có rất nhiều thuật toán di truyền để giải bài toán tối ưu đa mục tiêu dựa trên cơ sở thuật toán di truyền đã ra đời, chẳng hạn như thuật toán MOGA, thuật toán NSGA, thuật toán NSGA II, Thông qua các thuật toán này ta có thể làm xấp xỉ được biên Pareto tốt nhất từ các nghiệm khởi tạo ban đầu

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

GVHD: Th.S Huỳnh Tấn Khải 14

Giải thuật di truyền là một giải thuật mô phỏng theo quá trình chọn lọc tự nhiên, là kỹ thuật chung giúp giải quyết các vấn đề bài toán bằng cách mô phỏng sự tiến hóa của con người hay của sinh vật nói chung (dựa trên thuyết tiến hóa muôn loài của Darwin) trong điều kiện qui định sẵn của môi trường Lấy ý tưởng từ quá trình tiến hoá tự nhiên, xuất phát từ một lớp các lời giải tiềm năng ban đầu, GA tiến hành tìm kiếm trên không gian lời giải bằng cách xây dựng lớp lời giải mới tốt hơn (tối ưu hơn) lời giải cũ Quá trình xây dựng lớp lời giải mới được tiến hành dựa trên 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 quá trình tiến hoá: Ở 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 “xấu” thì chết đi

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 trên nhiều điểm (multipoints)

Trong GA, một tập các biến của bài toán đưa ra được mã hóa sang một chuỗi (hay một cấu trúc mã hóa khác) tương tự như một nhiễm sắc thể trong tự nhiên Mỗi chuỗi bao gồm một giải pháp có thể của bài toán Giải thuật di truyền sử dụng các toán tử được sinh ra bởi sự chọc lọc tự nhiên một quần thể các chuỗi nhị phân (hoặc các cấu trúc khác), mã hóa khoảng tham số trên mỗi thế hệ, khảo sát các phạm vi khác nhau của không gian tham số và định hướng tìm kiếm đối với khoảng mà khoảng đó xác suất cao để tìm kiếm sự thực hiện tốt hơn b) Thuật toán di truyền

Các bước trong thuật toán di truyền được trình bày cụ thể như sau:

 Tạo ngẫu nhiên N p > 1 cá thể để hình thành quần thể thứ nhất gọi là P t

 Đánh giá độ thích nghi của nghiệm trong quần thể P t

Bước 2: Chéo hóa – Dùng toán tử Chéo hóa để tạo quần thể con Q t như sau:

 Chọn 2 nghiệm x và y trong quần thể P t dựa trên độ thích nghi

 Sử dụng toán tử chéo hóa tạo nghiệm con và bổ sung nghiệm con này vào tập Q t

Bước 3: Đột biến – Dùng toán tử đột biến để tạo sự biến đổi ở mỗi nghiệm x ∈

Q t với mức biến đổi cho trước

Bước 4: Gán độ thích nghi cho mỗi cá thể trong quần thể x ∈ Q t dựa trên giá trị hàm mục tiêu và khả năng không chấp nhận được của nghiệm này

GVHD: Th.S Huỳnh Tấn Khải 15

Bước 5: Lựa chọn N p cá thể từ Q t dựa trên độ thích nghi của chúng và đưa tất cả các nghiệm này vào tập P t+1

GVHD: Th.S Huỳnh Tấn Khải 16

 Dừng nếu điều kiện dừng thỏa mãn (ví dụ như: số lượng cá thể trong quần thể, số lượng thế hệ,…) và đưa ra quần thể hiện tại

 Ngược lại: t = t + 1 và quay lại thực hiện bước 2

Sơ đồ khối của giải thuật di truyền được trình bày ở Hình 1.3 c) Chi tiết các bước trong giải thuật di truyền

Sự lựa chọn là một toán tử lựa chọn hai cá thể cha (được mã hóa bằng hai chuỗi nhị phân) nhằm mục đích tạo một cá thể mới mà ta gọi là cá thể con Trong toán tử lựa chọn, cá thể nào có độ thích nghi càng cao thì càng có nhiều cơ hội được chọn lựa với tư cách là cá thể cha Có hai cách thức để lựa chọn được cá thể cha: Một là lựa chọn ngẫu nhiên (hay còn được gọi là vòng quay roulette), hai là lựa chọn dựa trên thứ hạn của mỗi cá thể

 Lựa chọn ngẫu nhiên bằng cách sử dụng toán tử lựa chọn: Cho N p là số lượng cá thể trong quần thể P (hay còn gọi là kích thước quần thể) Mỗi nghiệm/ cá thể x i, i = {1, …, N p} được lựa chọn làm cá thể cha với khả năng là P s(x i) và được tính theo công thức sau:

Trong đó, f(x) là độ thích nghi của nghiệm x

 Lựa chọn dựa trên cơ sở thứ hạng của mỗi cá thể: Theo cách này thì các cá thể x i, với i = {1, …, N p} trong quần thể được sắp xếp theo thứ tự giảm dần dựa trên độ thích nghi của chúng Các cá thể sẽ được lựa chọn dựa trên thứ hạng của chúng

GVHD: Th.S Huỳnh Tấn Khải 17

Hình 1.3 - Sơ đồ khối của giải thuật di truyền

Ví dụ 1.6: Bảng sau đây minh họa số lượng cá thể được chọn làm cá thể cha dựa trên phần trăm số lượng cá thể trong quần thể:

Bảng 1.3 Bảng lựa chọn cá thể cha dựa trên phần trăm số lượng cá thể trong quần thể

Toán tử chéo hóa dùng để tạo cá thể mới từ các cá thể cha đã được chọn Toán tử chéo hóa thường áp dụng trên cá thể cha – được mã hóa bằng các chuỗi nhị phân và chuỗi hoán vị Ta xét một vài toán tử chéo hóa sau:

GVHD: Th.S Huỳnh Tấn Khải 18

 Chéo hóa tại một điểm

Kết chương

Qua việc tìm hiểu tổng quan các phương pháp giải bài toán tối ưu đa mục tiêu ở trên cũng như các kết quả ứng dụng từ thực nghiệm cho thấy phương pháp di truyền tỏ ra hiệu quả, đơn giản, dễ cài đặt và dễ thực hiện hơn so với các phương pháp khác Thuật toán di truyền cũng đã được phát triển và sử dụng rộng rãi, do đó chúng ta có thể dễ dàng thừa kế và sử dụng lại cho nhiều mục đích khác nhau

Vì vậy, trong đề tài này, tôi đã tìm hiểu sâu hơn về giải thuật di truyền cũng như lựa chọn giải thuật này để giải quyết bài toán ràng buộc đa mục tiêu mà cụ thể đó là bài toán lập thời khóa biểu

GVHD: Th.S Huỳnh Tấn Khải 23

ỨNG DỤNG GIẢI THUẬT DI TRUYỀN

Tìm hiểu chung về bài toán lập thời khóa biểu

2.1.1 Mô tả bài toán lập thời khóa biểu

Một đơn vị trường học (tiểu học, trung học, trung học phổ thông, trung cấp, cao đẳng, đại học) muốn xây dựng một phần mềm sắp xếp thời khóa biểu cho các lớp học Mỗi trường có một số lớp, mỗi lớp có thể có số lượng học sinh - sinh viên khác nhau Các môn học được tuân theo một chương trình đào tạo được cấp trên phê duyệt (Bộ Giáo dục & Đào tạo đối với các trường phổ thông, Trưởng khoa đối với các trường đại học) về nội dung chuyên môn và số tiết cần thiết Bên cạnh đó, mỗi trường bao gồm số phòng học, sức chứa, chức năng và vị trí của từng phòng học khác nhau Việc xếp lịch học cho các lớp phải phù hợp với sức chứa của mỗi phòng học cũng như chức năng của phòng đó Đầu năm học, hội đồng nhà trường hay phòng đào tạo sẽ lập một bảng phân công giảng dạy gồm thầy/ cô nào, dạy lớp nào, môn nào Còn giáo vụ phải xếp lịch học và phòng học Dĩ nhiên một thầy/ cô có thể dạy nhiều môn và nhiều lớp khác nhau nhưng không ở cùng một thời điểm Do thời gian của giáo viên phụ thuộc rất nhiều vào thời gian công tác của họ tại trường, nên thời khóa biểu có thể lập và điều chỉnh theo từng tuần Giáo viên phải đề đạt yêu cầu của họ vào thứ năm hàng tuần để kịp làm lịch học cho tuần sau hoặc giáo viên có thể cung cấp các ràng buộc về lịch dạy hay thời gian rảnh của mình ngay từ đầu học kỳ Ngược lại, nếu số lượng giáo viên dạy các lớp không có gì thay đổi theo sự phân công ban đầu thì thời khóa biểu đó sẽ sử dụng xuyên suốt cả một học kỳ Trong thời khóa biểu sẽ chỉ ra thứ mấy, từ tiết nào đến tiết nào, ai dạy lớp nào, môn nào, ở phòng học nào

Cuối mỗi tuần, giáo vụ sẽ căn cứ vào danh sách thống kê số giờ dạy của mỗi giáo viên để xác định số giờ đã dạy của mỗi môn Nếu môn nào của lớp nào dạy chưa đủ thời gian thì lập kế hoạch dạy bù Cũng căn cứ vào đó, hằng tháng nhà trường sẽ làm bảng thanh toán cho giáo viên trên cơ sở số giờ thực dạy Đôi khi cũng phải lập bảng thanh toán theo yêu cầu của giáo viên hay hiệu trưởng trong những trường hợp đặc biệt, ví dụ như giáo viên chấm dứt hợp đồng giảng dạy giữa tháng

Ngoài việc quản lý và thanh toán giảng dạy, hệ thống phần mềm này còn phải đáp ứng được các thông tin về giáo viên, học sinh, môn học, các phòng học cơ hữu và các phòng học thuê mướn của trường

GVHD: Th.S Huỳnh Tấn Khải 24

2.1.2 Các đối tượng của thời khóa biểu

Bất kỳ một lịch học nào cũng có những đối tượng nhất định Trong thời khóa biểu này sẽ có các đối tượng sau: chương trình đào tạo, giáo viên – giảng viên, học sinh - sinh viên, phòng học, lớp học, khóa học, tiết học và giờ học Các đối tượng này sẽ được cụ thể hóa như sau:

Chương trình đào tạo là cấp độ quản lý cao nhất trong chương trình, đó là phổ thông trung học và đại học Ví dụ về chương trình đào tạo như DH-CNTT-K13-1314-

01 (Chương trình đào tạo cho sinh viên đại học ngành công nghệ thông tin, khóa K13, năm học 2013-2014 của học kỳ 1), THCS-10A1-1415-02 (Chương trình đào tạo cho học sinh trung học cơ sở, lớp 10A1, năm học 2014-2015 của học kỳ 2), …

Lớp học là tập con của chương trình đào tạo, ví dụ như CNTT-K13 có 2 lớp là lớp CNTT-K13-01 và lớp CNTT-K13-02, …

Giáo viên – giảng viên là những người trực tiếp giảng dạy tại các lớp và ta sẽ lưu thông tin về họ tên của giáo viên – giảng viên đó

Học sinh – sinh viên là nhóm đối tượng theo học tại mỗi lớp, một lớp sẽ có số lượng học sinh – sinh viên giống hoặc khác nhau

Phòng học cho biết sức chứa của mỗi phòng cũng như số lượng máy tính (nếu có) trong phòng đó

Tiết học là thời gian bắt đầu và kết thúc của một môn học Ví dụ, từ 8:00 đến 8:45 học môn Toán, từ 8:45 đến 8:30 học môn Pháp luật, …

Giờ học là khoảng thời gian mà tiết học diễn ra Ví dụ tiết thứ nhất bắt đầu từ 7:00 đến 7:45, tiết thứ hai bắt đầu từ 7:50 đến 8:35, …

Khóa học thường được dùng ở các tường đại học và trong chương trình này, nó được sử dụng tương đương với Môn học Các ví dụ về khóa học như Toán, Chính trị, Văn học, … Khi định nghĩa một khóa học, ta phải cung cấp luôn các thông tin như số tiết học mỗi tuần của khóa học đó, số lượng sinh viên tham gia Nếu một khóa học được phụ trách bởi hai hoặc nhiều giáo viên thì ta phải tạo thành hai hoặc nhiều khóa học tương ứng Ví dụ môn Tin học căn bản cho chương trình đào tạo K09-CNTT-0910-1 do hai giáo viên là A và B phụ trách, thì ta phải tạo thành hai khóa học (môn học) là THCB-A và THCB-B Việc phân chia này để chúng ta dễ xác định giờ dạy nào của giáo viên nào khi nhìn vào Thời khóa biểu

GVHD: Th.S Huỳnh Tấn Khải 25

HS-SV đăng ký học

2.1.3 Quy trình lập thời khóa biểu

Hình 2.1 - Quy trình lập thời khóa biểu

Ứng dụng giải thuật di truyền vào bài toán lập thời khóa biểu

Trong mục này vận dụng các kiến thức về giải thuật di truyền để áp dụng vào bài toán lập thời khóa biểu Các ràng buộc của bài toán như ràng buộc giáo viên, ràng buộc phòng học, ràng buộc môn học,… là các vấn đề khá phức tạp Vì thế, cách tốt nhất là sử dụng một cách hiệu quả phương pháp chia để trị để giải quyết vấn đề phức tạp này Ở đây cũng vậy, theo phân cấp các ràng buộc, ta chia bài toán lập thời khóa biểu thành 2 giai đoạn khác nhau để giải quyết bài toán

Giai đoạn 1, giải quyết thành phần ràng buộc ở mức lớp học, với các vấn đề cơ bản, phức tạp của những đối tượng liên quan tới việc học của lớp Khi đã có được kết quả cuối cùng là lịch học cho từng lớp một cách hoàn chỉnh, chúng sẽ được dùng làm thông tin cho giai đoạn sau Ở giai đoạn 2, tổng hợp các ràng buộc còn lại (đã được đơn giản hóa trong giai đoạn trước) Kết quả của giai đoạn này chính là mục tiêu cuối cùng của bài toán và đó là lịch học của các lớp cho một đơn vị trường học

Cả hai giai đoạn tuy có mục tiêu và dữ liệu khác nhau, nhưng về cách giải quyết có tính tương tự nhau nên không khác gì nhiều khi áp dụng vào mô hình giải thuật di truyền

Dự kiến kế hoạch mở lớp

HS-SV các lớp-ngành

Các ràng buộc xếp TKB

Xếp TKB tự động (sd giải thuật) HOẶC

Xếp TKB thủ công (con người làm)

Lớp học/ lớp học phần dự kiến

GVHD: Th.S Huỳnh Tấn Khải 26

2.2.1 Giai đoạn 1: Xếp lịch học các lớp a) Chọn mô hình cá thể

Lịch học của một lớp có hai thành phần chính, bao gồm: các môn học và các giờ học trong tuần Việc đặt ngẫu nhiên các môn học với các giờ học sẽ tạo thành một lịch học cho từng lớp Như vậy một lớp học tương ứng sẽ có nhiều lịch học khác nhau, do đó ta chọn mỗi lịch học làm cá thể trong giải thuật di truyền

Trong hai thành phần đó thì các giờ học là thành phần ổn định hơn về số lượng cũng như về giá trị của chúng Thành phần môn học lại có tính không ổn định vì số lượng môn học phải phụ thuộc vào từng lớp học, cũng giống như số lượng nhiễm sắc thể trong cá thể, có chiều dài không nhất thiết phải cố định hay bằng nhau Do đó, chọn môn học làm đơn vị nhiễm sắc thể trong cá thể Ngoài ra, chưa kể đến tính phức tạp của môn học về số tiết phải học luôn bị thay đổi, trong khi giá trị các giờ học thì ngược lại, có thể xác định một cách rõ ràng và nhanh chóng

Mô hình cá thể trong lịch của lớp học được cho như Hình 2.2 Trong đó, giá trị của phần tử môn học thứ i là chỉ số giờ (tiết học) thứ j

Môn học 1 Môn học 2 ……… Môn học n

Hình 2.2 - Mô hình cá thể trong lịch lớp học

Như đã trình bày ở trên, thay vì chọn ngẫu nhiên môn học vào các giờ học, ta sẽ làm ngược lại là chọn ngẫu nhiên giờ học theo môn, vì ta đã chọn môn học làm đơn vị nhiễm sắc thể trong cá thể (theo mô hình Hình 2.2) Điều này có nghĩa là, với một cá thể của mô hình xếp lịch lớp học, ở bất kỳ thời điểm nào, khi ta đặt nhiễm sắc thể đầu tiên là môn thứ nhất, nhiễm sắc thể kế tiếp sẽ là môn thứ hai và tiếp tục cho các nhiễm sắc thể còn lại Sau này, theo thứ tự đó sẽ lấy thông tin ra và không có gì thay đổi (ngoại trừ giá trị tiết học, nếu có xảy ra lai ghép hay đột biến) Trong trường hợp một môn được học nhiều lần trong tuần, do có nhiều tín chỉ/ học phần, nên sẽ gây khó khăn cho việc xếp chúng vào trong cá thể Cách giải quyết vấn đề này rất đơn giản, chỉ cần đưa chúng vào cá thể với nhiễm sắc thể tương ứng, chẳng khác gì một môn học bình thường khác Lúc đọc dữ liệu, chúng ta nên ghi nhận thêm thông tin về số tiết học của từng môn học

Ví dụ 2.1: Giả sử ta có danh sách các môn học và số lần học trong một tuần như sau:

- Môn học a có 1 lần học

- Môn học b có 2 lần học

GVHD: Th.S Huỳnh Tấn Khải 27

- Môn học c có 1 lần học

GVHD: Th.S Huỳnh Tấn Khải 28

Chúng ta sẽ phân bổ các nhiễm sắc thể như sau: a b

Hình 2.3 - Phân bổ các nhiễm sắc thể môn học

Mỗi nhiễm sắc thể sẽ mang một giá trị số nguyên Đó chính là vị trí tiết học bắt đầu của môn học Phạm vi giá trị của nó từ 0 → 35 theo thứ tự các tiết học trong tuần, được đánh dấu theo vị trí liên tục của các ngày, tương tự cấu trúc mảng một chiều Các tiết học tiếp theo là giá trị liên tục kế tiếp nhau tùy theo số lượng tiết học của môn mà ta đang lưu trữ (Xem Hình 2.4 bên dưới)

Như ta đã nói ở trên, tương ứng với mỗi cá thể là một lịch học thực của lớp Vì vậy, khi tạo cá thể, chúng ta vẫn phải đảm bảo sự đúng đắn về tính chất trong lịch học: Đủ số tiết học, số môn học, không có sự chồng chéo lên nhau tại cùng thời điểm trong các môn, … Để giải quyết việc này, chúng ta sử dụng một tham biến đánh dấu các tiết học đã lên lịch, để môn học sau sẽ không bị xếp trùng vào những vị trí này, mà môn học này sẽ được đưa vào vị trí khác Tất nhiên, với mỗi lịch học sẽ có sự sắp xếp khác nhau

Ví dụ 2.2: Cách sắp xếp vị trí tiết học trong lịch học:

- Môn học a tiết bắt đầu 0, số tiết cần học là 3

- Môn học b tiết bắt đầu 3, số tiết cần học là 2

- Môn học c tiết bắt đầu 12, số tiết cần học là 3

Phân bố các môn học trên lịch học như sau:

GVHD: Th.S Huỳnh Tấn Khải 29

Hình 2.4 - Bảng phân bố các môn học trên lịch học b) Tạo quần thể ban đầu

Quần thể là tập hợp tất cả các nhiễm sắc thể Ngoài việc lưu trữ danh sách các nhiễm sắc thể, quần thể còn chứa thêm các thông tin khác như kích thước quần thể, độ thích nghi của quần thể, … Quần thể ban đầu được khởi tạo trước khi thực hiện quá trình tiến hóa bằng cách gán cho các gen trong nhiễm sắc thể bởi các giá trị ngẫu nhiên

Trong phần này, trước khi tạo quần thể ban đầu, chúng ta phải chuẩn bị sẵn về dữ liệu cho quá trình thực thi, từ lúc khởi tạo đến khi cho ra kết quả, bao gồm đầy đủ thông tin của một lớp đang được chọn, cụ thể như sau :

- Ràng buộc lớp, giáo viên được phân công dạy:

+ Lớp chỉ có thể diễn ra trong phòng học

+ Không có giảng viên, học sinh hay một nhóm sinh viên nào có thể ở nhiều lớp học cùng một lúc

+ Lớp học phải đủ chỗ cho tất cả học sinh

+ Để lớp học diễn ra trong phòng học, lớp học phải có các thiết bị nếu cần thiết

- Ràng buộc môn học và số chứng chỉ từng môn

GVHD: Th.S Huỳnh Tấn Khải 30

- Tính toán số tiết học tương ứng với các môn

- Chọn lọc các qui định đọc và ghi nhận nhiễm sắc thể

Giống như cá thể được mô tả trong mục a) ở trên, hàng loạt các cá thể được tạo ra và được xem như quần thể ban đầu trong mô hình giải thuật di truyền của phần xếp lịch lớp học Sau khi quần thể có đủ số lượng, bước tiếp theo là đánh giá quần thể, kiểm tra xem độ thích nghi tốt nhất hiện đang tồn tại của quần thể c) Tính độ thích nghi của cá thể Đây là phần giải quyết các yêu cầu đưa ra cho bài toán, chủ yếu vẫn xem xét trên các thành phần ràng buộc Tương ứng với mỗi loại ràng buộc, chúng ta sẽ gán cho chúng một giá trị thích nghi nào đó, mà một khi cá thể đi qua, các ràng buộc được lắp đặt vào và sẽ cho ra giá trị thích nghi cụ thể cho cá thể đó, cuối cùng kết thúc công việc tính độ thích nghi Nghe rất đơn giản nhưng thực chất đây là vấn đề khó nhất, quan trọng nhất của bài toán Chi tiết cụ thể như sau:

Trước hết ta nói về giáo viên Khi chọn phân công giảng dạy, chúng ta phải biết chắc rằng giáo viên đó sẽ trống vào giờ đó, môn đó, buổi đó của lớp học Hay nói cách khác, chúng ta cần kiểm tra ràng buộc tiết học, mà đã tương ứng với mỗi môn trong lịch học, xem xét lại các môn có thể học giờ đó hay không Kế tiếp là xét giờ học của lớp Do một qui định nào đó mà lớp có thể học giờ này hay giờ kia, chẳng hạn như không học ba tiết đầu trong ngày thứ hai,

Cuối cùng kiểm tra lại sự chồng chéo giờ lẫn nhau của các môn học Việc kiểm tra này nhất thiết phải làm, vì trong lúc lai ghép, đột biến có thể gây ra sai lệch Cho nên tốt nhất ta phải kiểm tra chúng Giống như lúc khởi động, ta dùng một biến chứa tất cả giờ học ở các môn để giúp cho việc đánh giá Tương tự các ràng buộc giáo viên và lớp, mỗi vấn đề sẽ có một biến lưu trữ giờ làm việc, để tránh các tiết học theo qui định mà ta đã ghi nhận cho một giáo viên hay lớp học tương ứng

Việc đánh giá độ thích nghi của cá thể được căn cứ vào số lần vi phạm các ràng buộc Có nhiều cách để chọn một cá thể tốt, trong đó có cách chọn tính theo độ thích nghi cao nhất hoặc thấp nhất Thông thường, người ta chọn cách tính theo độ thích nghi tốt nhất Để thực hiện điều đó, đầu tiên ta tính độ thích nghi của cá thể dựa trên từng ràng buộc, sau đó cộng tất cả độ thích nghi dựa trên từng ràng buộc đó lại ta sẽ thu được độ thích nghi của cá thể Để tăng tính hiệu quả của giải thuật, tùy thuộc vào từng loại ràng buộc mà ta nhân số lần vi phạm với một trọng số thích hợp Ở đây, chúng ta cũng chọn cách tính tốt nhất tức là sắp xếp giảm dần các giá trị vi phạm độ thích nghi d) Lai ghép và đột biến

GVHD: Th.S Huỳnh Tấn Khải 31

Kết chương

Qua việc nghiên cứu và tìm hiểu ứng dụng của giải thuật di truyền vào bài toán lập thời khóa biểu trên đây, ta thấy rằng giải thuật di truyền - GA là hệ thống giải thuật đầu tiên dựa trên mô phỏng sự sống Thông qua chọn lọc, lai ghép, đột biến, GA sẽ hội tụ qua nhiều thế hệ theo hướng tối ưu toàn cục GA hi vọng hướng tới một giải pháp tối ưu hơn bằng cách kết hợp thông tin tốt ẩn trong tập hợp các giải pháp, để tạo ra giải pháp mới với những thông tin tốt thừa hưởng từ cá thể cha lẫn cá thể mẹ

Trong khuôn khổ luận văn này, mục tiêu chính của đề tài là phân tích và vận dụng giải thuật di truyền vào xây dựng một chương trình lập thời khóa biểu Đây vừa là một bài toán lập nhiều lịch học có liên quan đến nhau, vừa là bài toán cấp phát tài nguyên Để giải quyết vấn đề này, tôi đã mô hình hóa toán học của bài toán đồng thời vận dụng các bước thực hiện trong giải thuật di truyền, từ đó biểu diễn nhiễm sắc thể số nguyên để xây dựng được phần mềm

GVHD: Th.S Huỳnh Tấn Khải 37

XÂY DỰNG CHƯƠNG TRÌNH LẬP THỜI KHÓA BIỂU

Phân tích chức năng của hệ thống

3.1.1 Biểu đồ phân cấp chức năng (FDD)

QUẢN LÝ THỜI KHÓA BIỂU

QL tài liệu QL hệ thống QL CTĐT QL lớp học QL khóa học QL giáo viên QL phòng học QL công cụ QL trợ giúp

QL mở TL đã lưu

QL in TKB cho PH

QL in TKB cho LH

QL xóa tất cả GV

QL in giờ dạy GV

QL xóa tất cả PH

QL thêm tiết dạy QLTL các RB

QLTH không được xếp TKB

QL in TKB cho tất cả LH

QL in TKB cho LH QLTL các RB QLTL RB LH

QL xóa KH QLTL các RB QLTL RB KH

QL tiết dạy QLTD được dạy

QL in TKB GV QLTL các RB QLTL RB GV

QL tiết dạy QLTD được dạy

QL in lịch SD PH

QL xếp TKB tự động

Hình 3.1 - Biểu đồ phân cấp chức năng hệ thống lập thời khóa biểu

3.1.2 Mô tả chi tiết chức năng

Trong hai chương đầu tiên của đề tài, chúng ta đã nghiên cứu lý thuyết về giải thuật di truyền và ứng dụng của nó vào bài toán xếp thời khóa biểu đồng thời xây dựng một ví dụ minh họa cho việc ứng dụng đó Và phần này, chúng ta sẽ thực tế hóa những gì đã nghiên cứu trước đó bằng việc xây dựng một hệ thống chương trình Lập thời khóa biểu Qua tìm hiểu và phân tích hệ thống chương trình Lập thời khóa biểu sẽ được xây dựng bao gồm các chức năng chính, như sau: Quản lý tài liệu, Quản lý hệ thống, Quản lý chương trình đào tạo, Quản lý lớp học, Quản lý phòng học, Quản lý khóa học, Quản lý giáo viên, Quản lý công cụ và Quản lý trợ giúp Trong mỗi chức năng lớn này sẽ có các chức năng con, chi tiết các chức năng con này được trình bày cụ thể trong nội dung dưới đây

GVHD: Th.S Huỳnh Tấn Khải 38

Chức năng Quản lý tài liệu là chức năng quản lý các tài liệu của chương trình, gồm: Quản lý tài liệu mới được khởi tạo, quản lý việc mở tài liệu đã có sẵn từ trước, quản lý lưu tài liệu trong quá trình thao tác trên hệ thống hay quản lý lưu tài liệu với một bản lưu khác với hiện tại Bên cạnh đó, hệ thống còn cung cấp việc in thời khóa biểu cho từng giáo viên, từng phòng học hay từng lớp học Nếu bạn muốn in một thời khóa biểu tổng hợp thì hệ thống cũng làm được việc này Và, một tiện ích nhằm tiết kiệm thời gian, thao tác trên hệ thống đó là việc quản lý năm hồ sơ tài liệu thời khóa biểu mà người dùng đã thao tác trong thời gian gần nhất

Chức năng Quản lý hệ thống sẽ quản lý việc thêm mới chương trình đào tạo, thêm ngày và tiết dạy, thêm mới giáo viên hay thêm mới phòng học nào đó Chức năng này cũng hỗ trợ người dùng trong việc in ấn như: in thời khóa biểu cho giáo viên, in danh sách giáo viên giảng dạy tại trường, in giờ dạy của giáo viên, in thời khóa biểu cho phòng học nào đó và in danh sách phòng học Bắt đầu từ chức năng này trở đi, hệ thống sẽ quản lý thiết lập các ràng buộc, bao gồm các ràng buộc về lớp học, khóa học và giáo viên Ngoài ra, trong chức năng này còn có quản lý tìm kiếm những thông tin theo yêu cầu của người dùng đó là tìm kiếm theo giáo viên, tìm kiếm theo phòng học và tìm kiếm theo chương trình đào tạo

Chức năng Quản lý chương trình đào tạo quản lý thông tin về chương trình đào tạo (tên chương trình đào tạo và mã đào tạo), quản lý thêm lớp học vào chương trình đào tạo, quản lý tiết dạy được phép hay không được phép xếp thời khóa biểu, quản lý xóa một chương trình dào tạo khi người dùng không lưu hay thao tác với nó nữa Chức năng này cũng hỗ trợ người dùng trong việc in thời khóa biểu cho tất cả lớp học mà họ muốn theo dõi

Chức năng Quản lý lớp học sẽ quản lý thông tin về lớp học đó (Mã lớp học, Tên lớp học, Học kỳ và Mã quản lý), quản lý xóa thời khóa biểu khi cần, quản lý xóa các tài nguyên liên quan đến khóa học, quản lý xóa lớp học khi không muốn lưu trữ hay thao tác nữa Ở chức năng này người dùng có thể in thời khóa biểu theo lớp học Và như đã nói trước đó, chức năng quản lý thiết lập các ràng buộc sẽ quản lý ràng buộc về lớp học như số tiết dạy tối đa mỗi ngày, số tiết dạy liên tục tối đa, số ngày dạy mỗi tuần tối đa

Chức năng quản lý Khóa học sẽ quản lý tất cả thông tin liên quan đến khóa học như Tên khóa học, Tên viết tắt, Số tiết mỗi tuần, Số lượng học viên tham gia,… Chức năng này còn quản lý giới hạn phòng học, tức là quản lý số phòng học giới hạn chỉ dành cho khóa học này Ngoài ra, nó sẽ quản lý thiết lập các ràng buộc về khóa học xóa khóa học khi không còn thao tác nữa

GVHD: Th.S Huỳnh Tấn Khải 39

Chức năng quản lý Giáo viên quản lý thông tin về họ tên của các giáo viên giảng dạy tại trường, quản lý các tiết dạy của giáo viên được phép hay không được phép xếp thời khóa biểu cho họ, quản lý giới hạn phòng học để biết phòng nào có thể dành cho giáo viên nào giảng dạy Bên cạnh đó, chức năng này cũng cung cấp cho người dùng thao tác in thời khóa biểu cho giáo viên, xóa giáo viên và quản lý thiết lập các ràng buộc liên quan đến giáo viên

Chức năng quản lý Phòng học nhằm quản lý những thông tin về phòng học như tên phòng và sức chứa của phòng, đồng thời quản lý các tiết dạy được phép hay không được phép xếp thời khóa biểu cho phòng đó Phần này sẽ có chức năng in lịch sử dụng các phòng học và xóa phòng học nào đó khi nó không tồn tại hoặc không muốn xếp thời khóa biểu vào phòng đó

Chức năng quản lý Công cụ quản lý việc sắp xếp thời khóa biểu tự động Trong phần này khi người dùng chọn chức năng T ự độ ng x ế p TKB cửa sổ mới hiện ra, người dùng bấm nút B ắ t đầ u để thực hiện việc sắp xếp Sau khi sắp xếp xong, chương trình sẽ báo là có bao nhiêu phương án để sắp xếp thời khóa biểu này và phương án nào là tối ưu nhất kèm theo trọng số của nó Sau đó kích nút Ch ấ p nh ậ n giải pháp tối ưu nhất để thu được bảng sắp xếp thời khóa biểu (TKB) tối ưu nhất và đóng cửa sổ này lại Một lưu ý trong phần này, nếu chương trình chạy lâu với quá nhiều phương án thì bạn có thể nhấn nút D ừ ng để dừng việc sắp xếp, việc dừng này không ảnh hưởng đến việc tìm ra phương án tối ưu vì phương án tối ưu có trọng số lớn và được tìm ra tương đối sớm Một chú ý khác là Chương trình này cho phép chúng ta xếp TKB từ một TKB đã được xếp dỡ dang (trước đó xếp bằng tay) với tùy chọn B ắ t đầ u x ế p t ừ Th ờ i khóa bi ể u hi ệ n hành hoặc bắt đầu xếp TKB từ đầu cho dù TKB trước đó đã được xếp hay chưa với tùy chọn B ắ t đầ u x ế p t ừ Th ờ i khóa bi ể u r ỗ ng Một chức năng không kém phần quan trọng đó là Thi ế t l ậ p thông tin cung cấp rất nhiều các thông tin giúp người dùng cấu hình để chương trình làm việc hiệu quả hơn Trong đó, một số thông tin quan trọng như: Đường dẫn đến thư mục cài đặt chương trình Acrobat - PDF Reader: Dùng để đọc và in các báo cáo, chỉnh kích thước và định dạng trang giấy in, định dạng tên giáo viên và tên khóa học được in trong thời khóa biểu, chỉnh phông chữ cho các báo cáo/ trang in về thời khóa biểu, chỉnh các hệ số ràng buộc khi sắp xếp thời khóa biểu (nên để các hệ số hiện tại vì chúng đã được chọn lựa tối ưu)

Cuối cùng là chức năng quản lý Trợ giúp sẽ quản lý việc giới thiệu về phiên bản của chương trình xếp thời khóa biểu, người thực hiện và thông tin lên hệ với tác giả

3.1.3 Danh sách các tác nhân

Tác nhân (Actor) là một bộ phận bên ngoài hệ thống (một người hoặc một vật nào đó) tương tác với hệ thống, sử dụng hệ thống Khái niệm tương tác với hệ thống ở

GVHD: Th.S Huỳnh Tấn Khải 40 đây muốn nói rằng tác nhân sẽ thao tác trên hệ thống hoặc là nhận biết thông điệp xuất phát từ hệ thống, hoặc là thay đổi các thông tin cùng với hệ thống Nói một cách ngắn gọn, tác nhân là đối tượng mà hệ thống phục vụ hoặc càn có để cung cấp dữ liệu Do đó, nhiệm vụ đầu tiên khi phân tích hệ thống là xác định các tác nhân Một trong các kỹ thuật hỗ trợ để xác định các tác nhân là dựa trên các câu trả lời cho những câu hỏi sau:

- Ai sẽ sử dụng những chức năng chính của hệ thống (tác nhân chính)?

- Ai sẽ cần sự hỗ trợ của hệ thống để thực hiện những tác vụ hàng ngày của họ?

- Ai sẽ cần bảo trì, quản trị và đảm bảo cho hệ thống hoạt động thường xuyên (tác nhân phụ)?

- Hệ thống sẽ phải xử lý và làm việc với những trang thiết bị nào?

- Hệ thống cần phải tương tác với những bộ phận, hệ thống nào khác?

- Ai hay cái gì quan tâm đến kết quả xử lý của hệ thống?

Trong hệ thống chương trình Lập thời khóa biểu này, tác nhân chính của hệ thống là người trực tiếp sử dụng chương trình để thực hiện thao tác phân chia, sắp xếp thời khóa biểu cho đơn vị trường học của mình, đó là Hiệu phó chuyên môn - đối với các trường phổ thông và Giáo vụ các khoa - đối với các trường đại học, cao đẳng, trung cấp Và ta sẽ gọi chung tác nhân chính này bằng một từ quen thuộc đó là Người dùng

Ngoài tác nhân trực tiếp trên đây, hệ thống còn có các tán nhân gián tiếp như: Giáo viên yêu cầu in thời khóa biểu cá nhân hoặc yêu cầu sửa thông tin cá nhân, Nhân viên phòng học yêu cầu in lịch sử dụng của phòng học, học sinh các lớp yêu cầu in thời khóa biểu cho lớp,… Các tác nhân này không trực tiếp thao tác trên hệ thống mà họ sẽ trình yêu cầu lên cho Người dùng (tác nhân trực tiếp) và Người dùng sẽ thao tác trên hệ thống và phản hồi kết quả yêu cầu lại cho họ

3.1.4 Biểu đồ ca sử dụng (USECASE - UC) a) Tìm hiểu chung

Khái niệm ca sử dụng (Use Case) được Ivan Jacobson đề xuất từ năm 1994 nhằm mô tả các dịch vụ của hệ thống cho khách hàng và xác định mối quan hệ tương tác giữa hệ thống phần mềm với người sử dụng trong nghiệp vụ Một cách hình thức hơn, ca sử dụng mô tả tập các hoạt động của hệ thống theo quan điểm của các tác nhân (Actor) Nó mô tả các yêu cầu của hệ thống và trả lời cho câu hỏi: Hệ thống phải làm cái gì (What)?

Xây dựng chức năng của hệ thống

3.2.1 Thu thập thông tin tài nguyên

GVHD: Th.S Huỳnh Tấn Khải 42

Bất kỳ một chương trình nào cũng cần có dữ liệu để thực thi Bởi vì, nếu một chương trình với một giao diện bắt mắt và những chức năng hoàn hảo nhưng không có dữ liệu thì chương trình không thể thực thi được Hệ thống Lập thời khóa biểu này cũng vậy, trước hết ta cần thu thập thông tin cần thiết cho việc tạo ra một thời khóa biểu Các thông tin này bao gồm: Danh sách Phòng học, danh sách Giáo viên, danh sách Khóa học (Môn học), cụ thể như sau:

Thông tin về Giáo viên: Họ & tên lót; Tên

Thông tin về Phòng học:

 Tên/ Số phòng: Ví dụ: B002,… Tên phòng nên ngắn gọn để tiện trong việc in TKB

 Sức chứa: Số lượng học sinh/ sinh viên tối đa mà phòng học có thể chứa

 Mã quản lý (nếu có): để liên kết quản lý với các module khác như Quản lý CSHT,…

Thông tin về Khóa học: Chương trình này sử dụng ba mức để quản lý Khóa học, gồm: Chương trình đào tạo → Lớp học → Khóa học (có thể hiểu như là Môn học) Thông tin về Chương trình đào tạo:

 Tên Chương trình đào tạo (bắt buộc) Ví dụ: K13-CNTT-1317-2

 Mã quản lý (tùy chọn)

Thông tin về Lớp học gồm:

 Mã quản lý: Dùng để liên kết với các module khác như Quản lý SV, Qlý điểm,…

Thông tin về Khóa học gồm:

 Tên viết gọn (short name): dùng để in TKB

 Loại khóa học: Lý thuyết hay Thực hành (Tùy chọn - có thể bỏ qua)

 Số tiết mỗi tuần: Số tiết học mà môn học này được học mỗi tuần (cho 1 lớp)

 Số lượng Học viên tham gia: Dùng để ràng buộc Khóa học này với Phòng học

 Giáo viên phụ trách: Chọn từ danh sách Giáo viên đã nhập

 Nhóm và tên Nhóm: Dùng để nhóm các môn học (Tùy chọn - có thể bỏ qua)

 Mã quản lý: để liên kết với các module khác (Tùy chọn - có thể bỏ qua)

Sau khi thu thập được những thông tin cần thiết cho việc lập thời khóa biểu như trên đây, chúng ta tiến hành nhập các thông tin liên quan đến thời khóa biểu:

GVHD: Th.S Huỳnh Tấn Khải 43

Nhập ngày và tiết học: Chọn các ngày mà lớp học sẽ học (thông thường với các lớp học chính quy toàn thời gian (fulltime), bạn chọn cả tuần: Từ thứ 2 đến thứ 6 hoặc thứ 7; hoặc bạn chọn các ngày cụ thể như 2-4-6/ 3-5-7 đối với các khóa ngắn hạn) Nhập thông tin Giáo viên: Nhập vào các thông tin của Giáo viên (giới thiệu ở phần 3.2.1) bao gồm các ràng buộc liên quan

Nhập phòng học: Chọn Thêm phòng học, sau đó nhập các thông tin liên quan đến Phòng học Phòng học cũng có chức năng Định nghĩa các tiết được/ không được phép để giới hạn những tiết học nào được sử dụng phòng học và những tiết nào không được sử dụng phòng học

Nhập Chương trình đào tạo, Lớp học, Khóa học: Chúng ta bắt đầu với việc nhập Chương trình đào tạo, sau đó nhập các Lớp học và cuối cùng đến các Khóa học (Môn học)

Nhập các giới hạn về Phòng học: Nếu một số Khóa học cần phải giới hạn việc tổ chức trong một số Phòng học nhất định, bạn cần phải thiết lập các ràng buộc này trước khi thực hiện sắp xếp Thời khóa biểu

3.2.2 Xây dựng chức năng a) Giới thiệu về XML

Dữ liệu của chương trình Lập thời khóa biểu được xây dựng bằng ngôn ngữ XML XML là tên viết tắt của từ Tiếng anh eXtensible Markup Language (ngôn ngữ đánh dấu mở rộng), có khả năng mô tả nhiều loại dữ liệu khác nhau Mục đích chính của XML là đơn giản hóa việc chia sẻ dữ liệu giữa các hệ thống khác nhau XML cung cấp một phương tiện cho việc dùng văn bản (text) để mô tả thông tin và áp dụng một cấu trúc kiểu cây cho thông tin đó Tại mức căn bản, mọi thông tin đều thể hiện dưới dạng text, chen giữa là các thẻ đánh dấu (markup) với nhiệm vụ ký hiệu sự phân chia thông tin thành một cấu trúc có thứ bậc của các dữ liệu ký tự, các phần tử dùng để chứa dữ liệu và các thuộc tính của các phần tử đó Đơn vị cơ sở của XML là các ký tự theo định nghĩa của Universal Character Set (bộ ký tự toàn cầu) Các ký tự được kết hợp theo các tổ hợp chuỗi hợp lệ để tạo thành một tài liệu XML Tài liệu này gồm một hoặc nhiều thực thể, mỗi thực thể thường là một phần nào đó của các ký tự thuộc tài liệu, được mã hóa dưới dạng một chuỗi các bit và lưu trữ trong một tệp văn bản (text file) b) Cấu trúc file XML trong chương trình

Khi người dùng nhập thông tin vào hệ thống, chương trình sẽ lưu trữ dữ liệu đó dưới dạng text file với đuôi tkb Thực chất file này có cấu trúc của một file XML Sau đây, chúng ta sẽ tìm hiểu cụ thể cấu trúc từng file và nội dung file lưu trữ Tài liệu

GVHD: Th.S Huỳnh Tấn Khải 44

XML thường bắt đầu với XML declaration ở dòng đầu tiên Cú pháp khai báo , cho biết:

 Thuộc tính version trong cú pháp trên thể hiện thành phần XML được viết phải tuân theo quy định trong version Thuộc tính này bắt buộc phải sử dụng khi có khai báo XML ở trên

 Thuộc tính encoding thể hiện nội dung chuyển đổi ký tự trong tài liệu XML để thành phần chuyển đổi chyển đổi nội dung văn bản đúng định dạng chữ để chuyển đến client Thuộc tính này có hay không có cũng được Khi không có mặc định là UTF-8

Tên trường học

Năm học

Thứ 2

Hồ Quốc Văn

4 1

GVHD: Th.S Huỳnh Tấn Khải 45

Phòng 1.1.A1

50

4 2

Khóa Làm vườn

Lớp A

1

TH

2

60

TKB>

Phòng 1.1

1

GVHD: Th.S Huỳnh Tấn Khải 46

2

3

2

1

1

2

3

3

Đoạn mã 1: Cấu trúc tập tin XML của Thời khóa biểu

Một số giao diện hệ thống

3.3.1 Giao diện chính của hệ thống

GVHD: Th.S Huỳnh Tấn Khải 47

Giao diện chính của hệ thống khi vừa chạy chương trình gồm một hình nền và các chức năng của hệ thống như: Tài liệu, Hệ thống, Chương trình đào tạo, Lớp học, Khóa học, Giáo viên, Phòng học, Công cụ và Trợ giúp Trong đó, các chức năng Hệ thống, Chương trình đào tạo, Lớp học, Khóa học, Giáo viên và Phòng học bị ẩn do chưa có hồ sơ tài liệu nào được chọn để làm việc Ngoài ra, ngay bên dưới các menu chức năng là các nút thao tác nhanh trong khi làm việc như nút Lưu, Tìm kiếm,…

Hình 3.4 - Giao diện chính của hệ thống

3.3.2 Giao diện giới thiệu hệ thống

Giao diện này chứa thông tin về phiên bản của chương trình, thời gian và người thực hiện cùng thông tin liên hệ với tác giả

GVHD: Th.S Huỳnh Tấn Khải 48

Hình 3.5 - Giao diện giới thiệu hệ thống

3.3.3 Giao diện các ràng buộc Giáo viên

Giao diện này chứa các thông tin về các ràng buộc chung cho giáo viên: Số tiết dạy liên tục tối đa, số tiết dạy mỗi ngày liên tục tối đa, số ngày dạy mỗi tuần tối đa và hai tùy chọn OK hay Cancel

Hình 3.6 - Giao diện ràng buộc chung cho Giáo viên

3.3.4 Giao diện các ràng buộc Lớp học

GVHD: Th.S Huỳnh Tấn Khải 49

Hình 3.7 - Giao diện các ràng buộc chung cho Lớp học

Giao diện trên gồm các thông tin về các ràng buộc chung cho Lớp học: Số tiết học liên tục tối đa, số tiết học mỗi ngày liên tục tối đa, số ngày học mỗi tuần tối đa và hai tùy chọn OK, Cancel

3.3.5 Giao diện các ràng buộc chung về Khóa học

Trong giao diện này chứa các thông tin ràng buộc chung về Khóa học: 2 tiết mỗi tuần, 3 tiết mỗi tuần, 4 tiết mỗi tuần, 5 tiết mỗi tuần, 6 tiết mỗi tuần, 7 tiết mỗi tuần, 8 tiết mỗi tuần, 9 tiết mỗi tuần; cụ thể trong từng ràng buộc con này sẽ chứa thông tin về: Số tiết dạy ít nhất mỗi buổi học, số buổi học ít nhất mỗi tuần và số buổi học nhiều nhất mỗi tuần

GVHD: Th.S Huỳnh Tấn Khải 50

Hình 3.8 - Giao diện các ràng buộc chung về Khóa học

3.3.6 Giao diện in danh sách giáo viên

Giao diện này chứa thông tin về Họ & tên lót, Tên, Giới tính, Cấp bậc giáo dục và Mã quản lý của các giáo viên

Hình 3.9 - Giao diện in danh sách giáo viên

3.3.7 Giao diện trang in thời khóa biểu cho giáo viên

GVHD: Th.S Huỳnh Tấn Khải 51

Giao diện này chứa thông tin về thời khóa biểu của giáo viên gồm: Thứ dạy, môn dạy, phòng dạy và giờ dạy Nếu muốn in thời khóa biểu này có thể chọn nút Print trên thanh công cụ và in

Hình 3.10 - Giao diện trang in thời khóa biểu cho giáo viên

GVHD: Th.S Huỳnh Tấn Khải 52

3.3.8 Giao diện thiết lập các ràng buộc cho Giáo viên

Giao diện thiết lập các ràng buộc cho Giáo viên gồm các thông tin ràng buộc như trong thiết lập các ràng buộc chung cho Giáo viên Tuy nhiên, trong thiết lập các ràng buộc này cho phép ghi đè lên các thông đã thiết lập chung trước đó

Hình 3.11 - Giao diện thiết lập các ràng buộc cho Giáo viên

3.3.9 Giao diện thiết lập thông tin

Giao diện này chứa các thông tin thiết lập Trong đó, một số thông tin quan trọng như:

 Đường dẫn đến thư mục cài đặt chương trình Acrobat-PDF Reader: Dùng để đọc và in các báo cáo

 Chỉnh kích thước và định dạng trang giấy in, định dạng tên Giáo viên và tên Khóa học được in trong Thời khóa biểu

 Chỉnh phông chữ cho các báo cáo/ trang in về Thời khóa biểu

 Chỉnh các hệ số ràng buộc khi sắp xếp Thời khóa biểu (bạn nên để các hệ số hiện tại vì chúng đã được chọn lựa tối ưu) (…)

GVHD: Th.S Huỳnh Tấn Khải 53

Hình 3.12 - Giao diện thiết lập thông tin

3.3.10 Giao diện thiết lập tiết dạy được/ không được phép xếp thời khóa biểu

Trong giao diện này chứa thông tin thiết lập về các tiết được/ không được phép chia thời khóa biểu Màu đỏ gạch tượng trung cho tiết không được phép chia thời khóa biểu còn màu xanh tượng trưng cho các tiết được phép chia thời khóa biểu

Hình 3.13 - Giao diện thiết lập tiết dạy được/ không được phép xếp thời khóa biểu

GVHD: Th.S Huỳnh Tấn Khải 54

3.3.11 Giao diện xếp thời khóa biểu tự động

Giao diện xếp thời khóa biểu được sinh ra khi người dùng vào menu Công c ụ , chọn chức năng T ự độ ng s ắ p x ế p TKB Trong cửa sổ mới hiện ra, bấm nút Bắt đầu để thực hiện việc sắp xếp Sau khi sắp xếp xong, chương trình sẽ báo là có bao nhiêu phương án để sắp xếp thời khóa biểu này và phương án nào là tối ưu nhất kèm theo trọng số của nó Sau đó, kích nút Ch ấ p nh ậ n gi ả i pháp t ố i ư u nh ấ t để thu được bảng sắp xếp TKB tối ưu nhất và đóng của sổ này lại

Chú ý: Nếu chương trình chạy lâu với quá nhiều phương án thì người dùng có thể nhấn nút D ừ ng để dừng việc sắp xếp, việc dừng này không ảnh hưởng việc tìm ra phương án tối ưu vì phương án tối ưu có trọng số lớn và được tìm ra tương đối sớm

Một chú ý khác là chương trình này cho phép xếp thời khóa biểu từ một thời khóa biểu đã được xếp dỡ dang (trước đó xếp bằng tay) với tùy chọn B ắ t đầ u x ế p t ừ

Th ờ i khóa bi ể u hi ệ n hành hoặc bắt đầu xếp thời khóa biểu từ đầu cho dù thời khóa biểu trước đó đã được xếp hay chưa với tùy chọn B ắ t đầ u x ế p t ừ Th ờ i khóa bi ể u r ỗ ng

Hình 3.14 - Giao diện xếp TKB tự động

3.3.12 Giao diện trang in thời khóa biểu chính

Giao diện này thể hiện các thông tin của một thời khóa biểu chính tại một trường học, gồm: Thứ, tiết học, môn học, giáo viên giảng dạy, phòng học và lớp học Trên trang này cho phép người dùng in thời khóa biểu đó ra giấy

GVHD: Th.S Huỳnh Tấn Khải 55

Hình 3.15 - Giao diện trang in thời khóa biểu chính

GVHD: Th.S Huỳnh Tấn Khải 56

Ngày đăng: 27/02/2024, 13:33

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN