Thuật toán phỏng luyện kim với bài toán lập lịch thi đấu thể tha

61 224 0
Thuật toán phỏng luyện kim với bài toán lập lịch thi đấu thể tha

Đ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

1 MỤC LỤC PHẦN MỞ ĐẦU Lý chọn đề tài Mục đích nghiên cứu Nhiệm vụ nghiên cứu 4 Những đóng góp khóa luận 4.1 Ý nghĩa khoa học 4.2 Ý nghĩa thực tiễn 5 Cấu trúc khóa luận CHƯƠNG GIẢI THUẬT PHỎNG LUYỆN KIM 1.1 Bài toán NP-Khó 1.1.1 Bài toán NP-Khó 1.1.2 Bài toán lập lịch 1.2 Giải thuật luyện kim 1.2.1 Lịch sử vấn đề 1.2.2 Thuật toán 1.2.3 Biểu diến toán học thành phần giải thuật 11 1.2.4 Sơ đồ chung thuật toán luyện kim 15 1.2.5 Một số trường hợp giải thuật 18 1.2.6 Khung giải thuật luyện kim 21 CHƯƠNG GIẢI THUẬT PHỎNG LUYỆN KIM SONG SONG 26 2.1 Song song hóa giải thuật luyện kim 26 2.2 Di chuyển song song cho giải thuật luyện kim 28 2.2.1 Cơ di chuyển song song 28 2.2.2 Mô hình thực 29 2.3 Khung thuật toán luyện kim song song 34 CHƯƠNG THỬ NGHIỆM GIẢI BÀI TOÁN LẬP LỊCH THI ĐẤU BẰNG GIẢI THUẬT PHỎNG LUYỆN KIM 36 3.1 Bài toán lập lịch thi đấu 36 3.1.1 Vấn đề lập lịch thi đấu thể thao 36 3.1.2 Giới thiệu toán 37 3.2 Giải toán lập lịch thi đấu với giải thuật luyện kim 38 3.2.1 Định nghĩa toán 38 3.2.2 Thuật toán luyện kim cho toán lập lịch thi đấu 40 3.3 Cài đặt thuật toán 49 3.3.1 Hàm đọc vào liệu toán 49 3.3.2 Khởi tạo lời giải 50 3.3.3 Sinh lời giải láng giềng 52 3.3.4 Tính số ràng buộc 53 3.3.5 Hàm sức khỏe 55 3.4 Kết thực nghiệm 57 PHẦN KẾT LUẬN 59 TÀI LIỆU THAM KHẢO 60 DANH MỤC HÌNH VẼ Hình 1.1: Sơ đồ bước nhảy không gian lời giải 10 Hình 1.2: Sơ đồ thuật toán 11 Hình 1.3: Chu trình nhiệt độ T 13 Hình 1.4: Giá trị hàm sức khỏe tăng nhiệt độ giảm 13 Hình 2.1: Biểu đồ hoạt động mô hình đồng toàn cục 30 Hình 2.2: Biểu đồ thực cho mô hình không đồng toàn cục 31 Hình 2.3: Cấu trúc gói di chuyển lân cận 33 Hình 3.1: Giả mã thuật toán SA cho toán lập lịch thi đấu 42 Hình 3.2: Giả mã hàm khởi tạo lời giải 51 Hình 3.3: Bảng kết toán lập lịch thi đấu môi trường 58 PHẦN MỞ ĐẦU Lý chọn đề tài Trong thực tế, ta gặp toán giải thuật để giải có giải thuật để giải độ phức tạp tính toán lại lớn Khi người ta phải áp dụng phương pháp tính toán phi truyền thống Với giải thuật này, thường ta đạt nghiệm chấp nhận khả đạt nghiệm tối ưu Giải thuật luyện kim giải thuật Bài toán lập lịch thi đấu thể thao toán thuộc loại NP-Khó Với giải thuật thông thường có lời giải phạm vi thời gian thực tế cho phép Có thể có nhiều cách giải phi truyền thống để tìm lời giải chấp nhận cho toán Trong khuôn khổ luận văn thạc sỹ, chọn cách giải giải thuật luyện kim nhằm minh họa cho phần lý thuyết Tên đề tài luận văn: “Thuật toán luyện kim với toán lập lịch thi đấu thể thao” Mục đích nghiên cứu Mục đích nghiên cứu đề tài: tìm hiểu thuật toán luyện kim, cải tiến thuật toán thích hợp để giải toán lập lịch thi đấu nhằm tìm kết tốt cho toán Từ đó, đưa ứng dụng để giải toán lập lịch thi đấu thể thao Nhiệm vụ nghiên cứu Những nhiệm vụ việc nghiên cứu đề tài này: - Nghiên cứu tổng quan thuật toán mô luyện kim - Tìm hiểu khung thuật toán luyện kim - Trên sở khung thuật toán tìm hiểu, viết cải tiến hàm để sử dụng cho toán lập lịch thi đấu Tối ưu cách giải đề đưa lời giải tốt Những đóng góp khóa luận 4.1 Ý nghĩa khoa học - Tìm hiểu thuật toán meta – heuristic cụ thể thuật toán luyện kim để giải toán tối ưu khó - Giải toán ứng dụng thực tế toán lập lịch thi đấu 4.2 Ý nghĩa thực tiễn Áp dụng toán giải vào việc lập lịch thi đấu thực tế để đem lại hiệu doanh thu cho kinh tế Cấu trúc khóa luận Cấu trúc khóa luận bao gồm phần: Phần mở đầu: Giới thiệu lý chọn đề tài, cấu trúc đề tài, nhiệm vụ kết đề tài Phần nội dung: Trình bày nội dung cụ thể đề tài, bao gồm chương: CHƯƠNG Giải thuật luyện kim Giới thiệu tổng quan toán NP-Khó, thuật toán luyện kim CHƯƠNG Giải thuật luyện kim song song Tìm hiều giải thuật luyện kim song song: Song song hóa giải thuật luyện kim, Di chuyển song song cho giải thuật luyện kim, Khung thuật toán luyện kim song song CHƯƠNG Thử nghiệm giải toán lập lịch thi đấu giải thuật luyện kim Áp dụng khung thuật toán luyện kim chương để giải toán lập lịch thi đấu Phần kết luận: Đưa kết luận hướng phát triển cho luận văn CHƯƠNG GIẢI THUẬT PHỎNG LUYỆN KIM 1.1 Bài toán NP-Khó 1.1.1 Bài toán NP-Khó 1.1.1.1 Lớp toán P Định nghĩa Ta Chúng ta gọi P lớp toán giải thời gian đa thức, NP lớp toán định mà để xác định câu trả lời “yes” đưa chứng ngắn gọn dễ kiểm tra, co-NP lớp toán định mà để xác định câu trả lời “no” đưa chứng ngắn gọn dễ kiểm tra Ví dụ: Bài toán khung nhỏ giải nhờ thuật toán Prim với thời gian 0(n2) thuộc lớp toán P 1.1.1.2 Lớp toán NP Định nghĩa Ta gọi NP lớp toán định mà để xác nhận câu trả lời ‘yes’ ta đưa chứng ngắn gọn dễ kiểm tra Ví dụ: Bài toán kiểm tra tính hợp số: “Có phải n hợp số không?”, để xác nhận câu trả lời ‘yes’ cho đầu vào n ta đưa ước số b (1< b < n) n Để kiểm tra xem b có phải ước số n hay không ta thực phép chia n cho b sau thời gian đa thức Trong ví dụ dễ thấy b chứng ngắn gọn (b> (istream& is, Problem& pbm) { int l; is >> pbm._n; //đọc vào số đội toán //đọc vào ma trận đường pbm._k = pbm._n*(pbm._n*2-2); pbm._matrix = new int*[pbm._n]; for (int i = 0; i < pbm._n; i++) { pbm._matrix[i] = new int[pbm._n]; for (int j = 0; j < pbm._n; j++) { is >> l; pbm._matrix[i][j] = l; } } return is; } 3.3.2 Khởi tạo lời giải Khởi tạo lịch trình ngẫu nhiên S lời giải ban đầu, cho S lịch trình khả thi Lịch trình S bao gồm: n dòng n đội thi đấu 2*n-2 cột 2*n-2 vòng đấu 51 Dưới giả mã để khởi tạo lịch trình ban đầu RANDOMSCHEDULE() { Q  {(t, w) | t ϵ Teams&w ϵ Weeks}; GENERATESCHEDULE(Q, S); return S; } bool GENERATESCHEDULE(Q, S) { if Q =  then return true; end if select t, w ϵ Q such that  t ' , w' ϵ Q : t ' , w'  t, w ; Choise  {1, -1, …, t – 1, - (t - 1), t +1, - ( t+1),…, n, -n}; 10 forall o ϵ Choise inradom order 11 if o, w  Q then 12 S[t, w]  o; 13 if o > then S[o, w]  -t; 14 15 else S[-o, w]  t; 16 17 end if 18 if GENERATESCHEDULE(Q\{ t, w , | o |, w }, S) then 19 return true; 20 end if 21 end if 22 end forall 23 return false; 24 } Hình 3.2: Giả mã hàm khởi tạo lời giải 52 Sử dụng tập hợp Q bao gồm tất vị trí (Team, Week) để hoàn thành lịch trình Đầu tiên, khởi tạo tập hợp Q sau gợi đến thủ tục đệ quy GENERATESCHEDULE Trong thủ tục đệ quy GENERATESCHEDULE: lựa chọn vị trí , theo thứ tự từ điển thử tất trường hợp thực cách lựa chọn ngẫu nhiên với đội đá sân nhà sân khách Nếu đối thủ o không w lịch trình S cập nhật thuật toán gọi đệ quy với tập hợp Q mà bị xóa Quá trình gọi đệ quy kết thúc Q rỗng Khi đó, lịch trình S sinh 3.3.3 Sinh lời giải láng giềng Sử dụng phương pháp tìm kiếm lân cận SwapHomes(S, Ti, Tj) sinh lời giải láng giềng S’ cách đổi sân nhà thành sân khách (và ngược lại) đội i, j void DefaultMove::Apply (Solution& sol) coust { //Body of operator int n = sol.pbm().n(); int i, j; srand(time(NULL)); i = rand()%n; j = rand()%n; while(i==j) { j=rand()%n; } 53 sol.change(I,j); } Hàm Apply() sinh lời giải cách: chọn i, j ngẫu nhiên từ 1n, loại trường hợp i = j Sau gọi đến hàm đổi chỗ change() để thực việc đổi sân nhà sân khách đội i, j void Solution::change(const int i, const int j) { int n = _pbm.n(); int k = 2*n-2; int tg, tg1, tg2, so = 0; for (int t=0; t : lịch trình không khả thi - Nếu số ràng buộc = : lịch trình khả thi int Solution ::nbv()const { int i, j, n ; 54 n = _pbm.n() ; int dem = ; //đếm số ràng buộc lịch trình S // tính số ràng buộc H1 : đội chơi liên tiếp sân nhà sân //khách lần (k>3) tăng biến dem for (i=0 ;i3) dem++; else k=1; } } if(k>3) dem++; } //tính số ràng buộc H2: đội i chơi sân nhà vòng j chơi //trên sân khách vòng j+1 tăng biến dem for(i=0;i

Ngày đăng: 16/04/2017, 17:21

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

Tài liệu liên quan