Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 66 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
66
Dung lượng
1,34 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI - - NGUYỄN TRỌNG HƢNG GIẢI BÀI TOÁN XẾP LỊCH BẢO VỆ THẠC SỸ BẰNG CÁC KỸ THUẬT TỐI ƢU DỰA TRÊN RÀNG BUỘC LUẬN VĂN THẠC SỸ KỸ THUẬT CHUYÊN NGÀNH: KỸ THUẬT MÁY TÍNH VÀ TRUYỀN THÔNG NGƢỜI HƢỚNG DẪN KHOA HỌC: TS PHẠM QUANG DŨNG HÀ NỘI - 2015 BẢN XÁC NHẬN CHỈNH SỬA LUẬN VĂN THẠC SĨ Họ tên tác giả luận văn: Nguyễn Trọng Hưng Đề tài luận văn: Giải toán xếp lịch bảo vệ cao học kỹ thuật tối ưu dựa ràng buộc Chuyên ngành: Kỹ thuật máy tính truyền thông Mã số SV: 2012B0141 Tác giả, Người hướng dẫn khoa học Hội đồng chấm luận văn xác nhận tác giả sửa chữa, bổ sung luận văn theo biên họp Hội đồng ngày 01/11/2015 với nội dung sau: Sửa tên đề tài: “Giải toán xếp lịch bảo vệ cao học kỹ thuật tối ưu dựa ràng buộc” thành “Giải toán bảo vệ thạc sĩ kỹ thuật tối ưu dựa ràng buộc” Sửa danh mục tài liệu tham khảo theo quy tắc trang 54-55 Mô tả rõ kỹ thuật tìm kiếm Tabu chương 4.1.3 trang 33 Chạy lại liệu thử nghiệm bổ sung kết chương 5.5.2 trang 51, 52 Ngày 23 tháng 11 năm 2015 Giáo viên hƣớng dẫn Tác giả luận văn TS Phạm Quang Dũng Nguyễn Trọng Hƣng CHỦ TỊCH HỘI ĐỒNG TS Phạm Đăng Hải LỜI CẢM ƠN Để có ngày hoàn thành luận văn tốt nghiệp này, lời cho xin chân thành cảm ơn thầy, cô cán giảng dạy trường Đại Học Bách Khoa Hà nôi, thầy cô viện Công nghệ thông tin truyền thông thầy, cô viện Sau đại học tận tâm giảng dạy bảo suốt năm vừa qua Tôi xin dành cảm ơn kính trọng đặc biệt tới TS Phạm Quang Dũng giúp đỡ tận tình lời khuyên quý báu suốt trình làm luận văn Chính thầy tin tưởng tạo điều kiện tốt cho hoàn thành luận văn tốt nghiệp Tôi xin cảm ơn bạn nhóm nghiên cứu thầy Phạm Quang Dũng, người sẵn sang giúp đỡ chia sẻ khó khăn gặp phải trình làm luận văn Hà nội, ngày 23 tháng 11 năm 2015 Học viên Nguyễn Trọng Hưng LỜI CAM ĐOAN Tác giả xin cam đoan luận văn thạc sĩ thân tác giả Các kết luận văn trung thực, không chép từ nguồn hình thức Việc tham khảo nguồn tài liệu có trích dẫn ghi lại nguồn tài liệu tham khảo theo quy định Tác giả luận văn Nguyễn Trọng Hưng CÁC THUẬT NGỮ VIẾT TẮT Chữ viết tắt CP NP CBLS CSP Choco JOpenCBLS AC3 BT Tên đầy đủ Ý nghĩa Constraint Programming Lập trình ràng buộc, quy hoạch ràng buộc Non-determistic Lớp toán định chưa có polynomial thuật toán độ phức tạp đa thức để giải Constraint based local Tìm kiếm cục dựa ràng buộc search Constraint-satisfied Bài toán thỏa mãn ràng buộc problem Thư viện Choco Thư viện hỗ trợ giải tóan CSP dựa quy hoạch ràng buộc Thư viện Java Open Thư viện hỗ trợ giải toán tối Constraint based local ưu tổ hợp dựa phương pháp tối search ưu cục bộE Arc Consistency Thuật toán AC thứ sử dụng Algorithm #3 để giải toán CSP Back tracking Thuật toán quay lui: thuật toán tìm kiếm có khả quay lại giá trị xét để rẽ sang hướng không gian tìm kiếm DANH MỤC BẢNG BIỂU Table 1: Các phương thức khai báo biến IntegerVariable Choco 25 Table 2: Phương thức khai báo biến tập hợp Choco 25 Table 3: Danh sách ràng buộc thường dùng Choco 31 Table 4: Kết thử nghiệm với mô hình sử dụng thư viện Choco 51 Table 5: Kết thử nghiệm với mô hình JOpenCBLS 52 DANH MỤC HÌNH ẢNH Figure 1: Ví dụ toán thỏa mãn ràng buộc 10 Figure 2: Không gian tìm kiếm toán CSP(X,D,C) biến thứ tự {x,y,z} 11 Figure 3: Không gian tìm kiếm toán CSP(X,D,C) biến gán giá trị {z,y,x} 11 Figure 4: Phân nhánh theo biến 18 Figure 5: Phân nhánh theo miền giá trị 18 Figure 6: N-queen bước 35 Figure 7: N-queen bước 35 Figure 8: N-queen bước 35 Figure 9: N-queen bước 36 Figure 10: N-queen bước 36 Figure 11: N-queen bước 36 Figure 12: N-queen bước 37 TÓM TẮT NỘI DUNG CỦA LUẬN VĂN Bài toán tối ưu tổ hợp xuất nhiều lĩnh vực đời sống xã hội đặc biệt hoạt động quản lý, lập kế hoạch, điều hành tổ chức, doanh nghiệp Với toán như: Bài toán điều vận xe (vehicle rounting) Bài toán đóng gói hàng hóa (2D Bin packing) Bài toán xếp hàng dây truyền sản xuất (Job Shop Scheduling) Bài toán xếp thời khóa biểu quản lý đào tạo (Time Table) Mục tiêu toán cần tìm lời giải thỏa mãn tập ràng buộc đặt ra, đồng thời tối ưu nhiều hàm mục tiêu Hầu hết toán thuộc lớp NP-khó Bài toán xếp thời khóa biểu nói chung cụ thể toán xếp lịch bảo vệ cao học coi bái toán tối ưu tổ hợp thuộc lớp NPKhó Trong toán này, cần xếp lịch bảo vệ hội đồng bảo vệ học viên thỏa mãn số ràng buộc tối ưu theo số tiêu chí Có nhiều hướng tiếp cận với toán chia thành hai loại: hướng tiếp cận cho lời giải ví dụ phương pháp quy hoạch dựa ràng buộc hướng tiếp cận thứ cho lời giải gần phương pháp tìm kiếm cục dựa ràng buộc Trong luận văn này, thiết kế mô hình hóa toán “sắp xếp lịch bảo vệ cao học” xây dựng thuật toán tìm kiếm với phương pháp quy hoạch ràng buộc tìm kiếm cục dựa ràng buộc Tiến hành thử nghiệm tập liệu đầu vào khác Kết cho thấy với liệu đầu vào nhỏ, phương pháp quy hoạch ràng buộc cho kết xác với tốc độ cho phép Nhưng lượng liệu đầu vào lớn, phương pháp quy hoạch dựa ràng buộc cần nhiều thời gian Trong phương pháp tìm kiếm cục dựa ràng buộc cho kết thỏa mãn ràng buộc quan trọng đồng thời có kết chấp nhận thời gian cho phép MỤC LỤC Chương GIỚI THIỆU CHUNG Chương BÀI TOÁN TỐI ƯU TỔ HỢP 2.1 Bài toán thỏa mãn ràng buộc 2.1.1 2.1.1.1 Định nghĩa miền nhãn 2.1.1.2 Định nghĩa ràng buộc 2.1.1.3 Định nghĩa toán thỏa mãn ràng buộc (CSP) 2.1.2 2.2 Một số khái niệm toán thỏa mãn ràng buộc Ví dụ toán thỏa mãn ràng buộc Bài toán tối ưu tổ hợp 2.2.1 Bài toán tối ưu tổ hợp 2.2.2 Một số ứng dụng thực tế 2.2.2.1 Bài toán người du lịch 2.2.2.2 Bài toán túi Chương 3.1 QUY HOẠCH RÀNG BUỘC Quy hoạch ràng buộc 3.1.1 Khái niệm tổng quan 3.1.2 Dùng ràng buộc để tỉa không gian tìm kiếm 10 3.1.2.1 Khái niệm không gian tìm kiếm 10 3.1.2.2 Các đặc điểm không gian tìm kiếm 11 3.1.2.3 Các kỹ thuật toàn vẹn (Consistency Techniques) 12 3.1.3 3.2 Thuật toán quay lui (back tracking) 15 3.1.3.1 Định nghĩa 15 3.1.3.2 Thuật toán quay lui đơn giản (Simple backtracking) 16 3.1.3.3 Ví dụ 17 3.1.3.4 Chiến lược tìm kiếm 18 Thư viện Choco 19 3.2.1 Giới thiệu Choco 19 3.2.2 Hoạt động Choco 20 3.2.2.1 Variable 20 3.2.2.2 Ràng buộc 21 3.2.2.3 Lời giải (Solver) 22 3.2.3 Các yếu tố Choco 24 3.2.3.1 Variables 24 3.2.3.2 Operators 26 3.2.3.3 Constraint 28 Chương 4.1 TÌM KIẾM CỤC BỘ DỰA TRÊN RÀNG BUỘC 32 Phương pháp tiếp cận dựa tìm kiếm cục 32 4.1.1 Khái niệm giải thuật tìm kiếm cục 32 4.1.2 Giải thuật tham lam (Greedy search algorithm) 32 4.1.3 Tìm kiếm Tabu (Tabu Search) 33 4.1.4 Ví dụ 33 4.2 Thư viện JOpenCBLS 37 4.2.1 Variables 37 4.2.1.1 4.2.2 Kiểu biến nguyên VarIntLS 37 Functions 37 4.2.2.1 IFunction 37 4.2.2.2 Một số function hay dùng 38 4.2.3 Constraint 40 4.2.3.1 IConstraint 40 4.2.3.2 Một số ràng buộc 40 4.2.4 Module tìm kiếm 40 Chương GIẢI BÀI TOÁN XẾP LỊCH BẢO VỆ CAO HỌC 42 5.1 Phát biểu toán 42 5.2 Mô hình toán học toán 43 5.2.1 Đầu vào toán 43 5.2.2 Tập biến 43 5.2.3 Miền xác định biến 43 5.2.4 Tập hợp ràng buộc 43 5.2.5 Hàm mục tiêu 44 Chương 4: Tìm kiếm cục dựa ràng buộc o selectMostViolatedVariable(): Trả biến vi phạm nhiều ràng buộc o selelectMostPromissingValue(VarIntLS x) trả giá trị tiềm cảu biến x MultiStageGreedySearch(Iconstraint S, int maxTime, int maxStep, Boolean verbose): Tìm kiếm tham lam, thực lạp lại công việc lựa chọn biến vi phạm nhiều selectMostViolatedVariable() gán giá trị tiềm cho biến selelectMostPromissingValue() Trong đó: o S: Hệ thống ràng buộc o maxTime, maxStep: Thời gian số bước tối đa trình tìm kiếm o verbose: Tham số in hệ thống TabuSearch(): Khởi tạo đối tượng tìm kiếm có sử dụng mảng Tabu để cấm bước di chuyển lặp lại liên tục: o Search(IConstraint S, tabulen, maxTime, maxStep, maxStable): Tìm lời giải với phạm vi nhỏ Trong đó: Tabulen: độ dài lượt cấm mảng tabu maxStep, maxTime: thời gian số bước tối đa trình tìm kiếm maxStable: số bước tìm kiếm đối đa không cải thiện lời giải trước reset o SearchMaintainConstraint(IFunction f, IConstraint S, int tabulen, int maxTime, int maxStep, int maxStable): Tìm lời giải cho hàm mục tiêu f nhỏ phạm vi ràng buộc S 41 Chương 5: Giải toán xếp lịch bảo vệ cao học Chƣơng GIẢI BÀI TOÁN XẾP LỊCH BẢO VỆ CAO HỌC Chương luận văn giới thiệu toán xếp lịch bảo vệ cao học Trong chương giải toán phương pháp: quy hoạch ràng buộc với thư viện Choco tìm kiếm cục dựa ràng buộc với thư viện JOpenCBLS 5.1 Phát biểu toán Bài toán xếp lịch bảo vệ cao học có mục tiêu quản lý thông tin đào tạo hỗ trợ việc xếp lịch bảo vệ cao học Thông thường, học viên cao học đến kỳ bảo vệ thành lập hội đồng bao gồm thành viên: Phản biện 1: giảng viên trường Phản biện 2: giảng viên trường Chủ tịch: giảng viên trường Thư ký: giảng viên trường Ủy viên: giảng viên trường Việc xếp lịch bảo vệ cao học bao gồm việc gán cho học viên: thành viên hội đồng Kíp thời gian diễn buổi bảo vệ Phòng nơi diễn buổi bảo vệ Thỏa mãn ràng buộc sau đây: hội đồng có chung giảng viên phải xếp kíp bảo vệ khác hội đồng xếp vào kíp phải xếp vào phòng khác hội đồng xếp vào phòng phải xếp vào kíp bảo vệ khác tiêu chí tối ưu: Phản biện phản biện phải phù hợp với hướng đề tài luận văn học viên hội đồng mà họ tham gia vào Ngoài có tiêu chí khác : Sự di chuyển phòng giảng viên tối thiểu Sự liên tục kíp hội đồng mà giảng viên tham gia vào phải đảm bảo Mức độ cân số hội đồng mà giảng viên tham gia vào tối đa thành viên hội đồng không trùng với giảng viên hướng dẫn Tổng quát, toán xếp lịch bảo vệ cao học đặt sau: Cho nStudent học viên cần bảo vệ tốt nghiệp nProfessor giảng viên tham gia hội đồng Sắp xếp lịch bảo vệ 42 Chương 5: Giải toán xếp lịch bảo vệ cao học cho nStudent học viên bảo vệ cho: Số hội đồng bảo vệ: nSlot Số phòng bảo vệ: nRoom Mỗi hội đồng có nProfessorPerStudent giảng viên hội đồng có chung giảng viên phải xếp kíp bảo vệ khác hội đồng xếp vào kíp phải xếp vào phòng khác hội đồng xếp vào phòng phải xếp vào kíp bảo vệ khác Phản biện phản biện phải phù hợp với hướng đề tài luận văn học viên hội đồng mà họ tham gia vào Một kết toán cách xếp học viên vào hội đồng bảo vệ với giảng viên, số phòng, số kíp cho thỏa mãn ràng buộc 5.2 Mô hình toán học toán Bài toán xếp lịch bảo vệ trình bày mô hình toán học: 5.2.1 Đầu vào toán Danh sách giảng viên: Từ đến nProfessor -1 Danh sách học viên: Từ đến nStudent – Danh sách room: từ đến nRoom -1 Danh sách kíp: từ đến nSlot – Mức độ phù hợp Mi,j: thể mức độ phù hợp chuyên môn giảng viên j với đề tài học viên i 5.2.2 Tập biến XPi,j: biểu diễn giảng viên thứ j hội đồng học viên i o ≤ i < nStudent o ≤ j < nProfessorPerStudent o XPi,1: giảng viên phản biện hội đồng học viên i o XPi,2: giảng viên phản biện hội đồng học viên i XRi: biểu diễn phòng học viên i XSi: biểu diễn kíp học viên i 5.2.3 Miền xác định biến ≤ XPi,j < nProfessor ≤ XRi < nRoom ≤ XSi < nSlot 5.2.4 Tập hợp ràng buộc Các giảng viên hội đồng học viên khác nhau: XPi,j ≠ XPi,k với j ≠ k Hai hội đồng chung giảng viên kíp khác 43 Chương 5: Giải toán xếp lịch bảo vệ cao học XPi,j = XPk,l XSi ≠ XSk Hai hội đồng phòng kíp khác XRi = XRj XSi ≠ XSj Hai hội đồng kíp khác phòng XSi = XSj XRi ≠ XRj 5.2.5 Hàm mục tiêu Trong luận văn này, xét hàm mục tiêu mức độ phù hợp chuyên môn phản biện phản biện hướng nghiên cứu học viên tốt ∑ 5.3 Cài đặt giải thuật tìm kiếm với thƣ viện Choco Giải thuật tìm kiếm dựa quy hoạch ràng buộc cài đặt class Schedule 5.3.1 Đọc liệu đầu vào Hàm khởi tạo: public Schedule(int n, int s, int r, int p) { numStudent = n; numSlot = s; numRoom = r; numProfessor = p; } Đọc mức độ phù hợp học viên với giảng viên: Mức độ phù hợp học viên với giảng viên biểu diễn mảng chiều, đọc từ file costArr[i][j] thể mức độ phù hợp học viên I với giảng viên j Hàm đọc mức độ phù hợp học viên với giảng viên đọc trước tiến hành xử lý Trong chương trình khởi tạo từ file cost.txt 5.3.2 Khai báo biến Danh sách giảng viên hội đồng học viên khai báo mảng x_p: IntegerVariable[][] x_p = new IntegerVariable[n][NUM_PRO_PER_STUDENT]; Trong đó: x_p[i][j] giảng viên thứ j hội đồng học viên i x_p[i][1]: phản biện học viên i x_p[i][2]: phản biện học viên i Danh sách kíp học viên khai báo mảng x_s IntegerVariable[] x_s = new IntegerVariable[n]; Trong đó: 44 Chương 5: Giải toán xếp lịch bảo vệ cao học x_s[i]: kíp học viên thứ i Danh sách phòng thí sinh khai báo bảng x_r IntegerVariable[] x_r = new IntegerVariable[n]; // Trong đó: x_r[i]: phòng học viên thứ i 5.3.3 Miền giá trị biến Miền giá trị x_p: Giả sử danh sách giảng viên từ đến p_1, ta có miền giá trị x_p: ≤ x_p[i][j] ≤ p – Miền giá trị x_s: giả sử danh sách kíp từ đến s-1, ta có miền giá trị x_s: ≤ x_s[i] ≤ s – Miền giá trị x_r: ≤ x_r[i] ≤ r – Trong Choco, khai báo miền giá trị biến thông qua phương thức makeIntVar: for(int i = 0; i < n; i++) { for (int j =0; j < NUM_PRO_PER_STUDENT; j++) x_p[i][j] = Choco.makeIntVar("x_p" + i } x_s[i] = Choco.makeIntVar("x_s" + i, x_r[i] = Choco.makeIntVar("x_s" + i, } { + "_" + j, , p - 1); , s-1); , r-1); 5.3.4 Khai báo ràng buộc 5.3.4.1 Các giảng viên hội đồng học viên khác x_p[i][j] ≠ x_p[i][k] với i, j, k j ≠ k Choco cung cấp ràng buộc neq để khai báo điều kiện khác nhau: for (int i = 0; i < n; i++) { for (int j = 0; j < NUM_PRO_PER_STUDENT; j++) { for (int k = j+1; k < NUM_PRO_PER_STUDENT; k++) { m.addConstraint(Choco.neq(x_p[i][j],x_p[i][k])); } } } 5.3.4.2 Nếu hai học viên có giảng viên hội đồng thi phải khác kíp Nếu x_p[i][j] = x_p[k][l] x_s[i] ≠ x_s[k] Sử dụng ràng buộc implies Choco để biểu diễn ràng buộc for(int i = 0; i < n-1; i++) { for(int j = i+1; j < n; j++){ for (int p1=0; p1