Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 84 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
84
Dung lượng
3 MB
Nội dung
LỜI NÓI ĐẦU Bài toán thời khoá biểu từ lâu trở thành toán tiếng thu hút nhiều quan tâm nhà nghiên cứu, nhiều chuyên gia lĩnh vực liên quan Sự tiếng toán không đo độ phức tạp vấn đề, mà tính thực tiễn, khả ứng dụng cao thực tế Bất nhà trường nào, thời khoá biểu học tập học sinh giảng dạy giáo viên xương sống kết nối toàn hoạt động nhà trường Chính lẽ toán xếp Thời khoá biểu trở thành vấn đề quan trọng bậc nhà trường Nhận thức điều đó, khoảng thời gian ngắn em nghiên cứu triển khai thực số vấn đề nhỏ toán lớn Bài toán đặt với liệu thực tế trường Phổ thông trung học Cụ thể trường Trung học phổ thông Khoái Châu- Tỉnh Hưng Yên Trong trình xây dựng sở lý thuyết chương trình, em thực nghiên cứu số vấn đề lý thuyết “Thuật giải di truyền”, ứng dụng trực tiếp vào liệu cụ thể sở thực tế Việc hoàn thành cách đầy đủ xác thuật giải cài đặt thực khó khăn, giới hạn thời gian không cho phép em tập trung vào vấn đề khai thác sở lý thuyết ứng dụng bước nhỏ thuật toán Việc xếp thời khoá biểu cho liệu thực tế áp dụng số phép toán thuật giải di truyền, có phép lai, tái sinh, đột biến Điều đảm bảo phần cho Thời khóa biểu giáo viên khối không bị chồng chéo, nhiên tính thực tế việc xếp thời khoá biểu cho giáo viên phải thực tay Với liệu giáo viên tính toán từ trước yêu cầu thực tế nhà trường em cố gắng xếp, bố trí môn học tương đối hợp lý -1- Những mà em thực toán vô nhỏ bé, qua em mong muốn ủng hộ, phối hợp cộng tác thầy cô bạn để chương trình hoàn thiện ứng dụng thực tế với liệu nhiều trường PTTH Em xin chân thành cảm ơn ! Thái Nguyên,ngày…tháng…năm 2007 Sinh viên thực Nguyễn Đức Hải -2- MỤC LỤC LỜI NÓI ĐẦU - LỜI CẢM ƠN .Error! Bookmark not defined MỤC LỤC - 1 Chương trình tiến hoá - Thuật giải di truyền- Các khái niệm - Thuật giải di truyền- Cơ chế hoạt động - 11 Thuật giải di truyền- Nguyên lý hoạt động - 24 CHƯƠNG II- KHẢO SÁT THỰC TẾ MÔ HÌNH THỜI KHOÁ BIỂU TRONG TRƯỜNG PTTH KHOÁI CHÂU- TỪNG BƯỚC ÁP DỤNG THUẬT GIẢI DI TRUYỀN GIẢI QUYẾT BÀI TOÁN - 34 Phát biểu toán - 34 2 Phân tích liệu thực tế - 35 Các thông tin liên quan đến module Thời khoá biểu - 38 Thuật giải di truyền với toán lập thời khoá biểu cho trường học - 40 Các ràng buộc - 41 a Ràng buộc liệu nhập vào - 41 b Ràng buộc nghiệp vụ - thời gian - 42 Ứng dụng thuật giải di truyền vào việc xếp thời khóa biểu với liệu demo - 42 Chọn điểm dừng thuật toán - 50 Phân tích thiết kế hệ thống - 51 Sơ đồ phân cấp chức - 51 Sơ đồ luồng liệu mức khung cảnh - 51 Thiết kế sở liệu - 51 Thiết kế sở liệu - 52 CHƯƠNG III- MỘT SỐ FORM TRONG CHƯƠNG TRÌNH - 58 PHỤ LỤC - 65 KẾT LUẬN - 82 TÀI LIỆU THAM KHẢO - 83 - -3- CHƯƠNG I - THUẬT GIẢI DI TRUYỀN 1 Chương trình tiến hoá * Định nghĩa Thuật ngữ chương trình tiến hoá dùng để chương trình máy tính có sử dụng thuật toán tìm kiếm tối ưu hoá dựa nguyên lý tiến hoá tự nhiên Ta gọi chung thuật toán thuật toán tiến hoá Một số thuật toán tiến hoá công bố: - Qui hoạch tiến hoá – EP, Do D B Pogel đề xuất Có thể diễn tả EP đơn giản sau: Cho lớp phương pháp giải số phần vấn đề Dựa vào qui luật tiến hoá, tìm phương pháp liên hợp đủ khả giải trọn vẹn vấn đề - Chiến lược tiến hoá, T Baeck, F H Hofmeister H P Schewefel đề xuất Thuật toán dựa số chiến lược ban đầu, tiến hoá để tạo chiến lược phù hợp với môi trường thực tế cách tốt - Thuật giải di truyền D E Goldberg đề xuất, L Davis Z Michalevicz phát triển Đây thuật toán ứng dụng vào số toán lập lịch tiêu biểu Trong thú vị nhiều tranh cãi toán xếp thời khoá biểu Thuật giải di truyền, thuật toán tiến hoá khác hình thành dựa quan điểm cho rằng, trình tiến hoá tự nhiên trình hoàn hảo nhất, hợp lý nhất, tự mang lại tính tối ưu Quan điểm xem tiên đề đúng, không chứng minh được, phù hợp với thực tế khách quan Quá trình tiến hoá thể tính tối ưu chỗ, hệ sau tốt hệ trước( phát triển hơn, hoàn hảo hơn) Tiến hoá tự nhiên trì nhờ trình : Sinh sản chọn lọc tự nhiên Xuyên suốt trình tiến hoá tự nhiên, hệ sinh để bổ sung thay thế hệ cũ Cá thể phát triển hơn, thích ứng với môi trường tồn Cá thể không thích ứng bị đào thải Sự thay đổi môi trường động lực thúc đẩy trình tiến hoá Ngược lại tiến hoá tác động trở lại làm thay đổi môi trường -4- Các cá thể sinh trình tiến hoá nhờ lai ghép hệ cha mẹ Một cá thể mang tính trạng cha mẹ( di truyền),cũng mang tính trạng hoàn toàn mới( đột biến) Di truyền đột biến hai chế có vai trò quan trọng trình tiến hoá, đột biến xảy với xác suất nhỏ nhiều so với tượng di truyền Các thuật toán tiến hoá, có điểm khác biệt mô bốn trình bản: Lai ghép, đột biến, sinh sản chọn lọc tự nhiên Quá trình lai ghép ( phép lai) Phép lai trình hình thành nhiễm sắc thể sở nhiễm sắc thể cha mẹ cách ghép hay nhiều đoạn gen hai hay nhiều nhiễm sắc thể cha mẹ với Phép lai xảy với xác suất pc mô sau : Chọn ngẫu nhiên hai ( hay nhiều) cá thể quần thể Giả sử nhiễm sắc thể cha mẹ có m gen Tạo số ngẫu nhiên khoảng từ đến m- ( ta gọi điểm lai) Điểm lai chia chuỗi cha mẹ dài m thành hai nhóm chuỗi dài m1 m2 Hai chuỗi nhiễm sắc thể m11+m22 m21 +m12 Đưa hai cá thể vào quần thể để tham gia trình tiến hoá Quá trình đột biến ( Phép đột biến) Đột biến tượng cá thể mang số tính trạng mã di truyền bố mẹ Phép đột biến xảy với xác suất pm nhỏ nhiều so với xác suất lai pc Phép đột biến mô sau: Chọn ngẫu nhiên cá thể cha mẹ quần thể Tạo số ngẫu nhiên k khoảng từ đến m Thay đổi gen thứ k trả cá thể quần thể để tham gia vào trình tiến hoá Quá trình sinh sản chọn lọc tự nhiên( Phép tái sinh phép chọn) Phép tái sinh trình cá thể chép sở độ thích nghi Độ thích nghi hàm gán giá trị thực cho cá thể quần thể Quá trình mô sau: -5- Tính độ thích nghi cá thể quần thể hành, lập bảng cộng dồn giá trị thích nghi ( theo số thứ tự gán cho cá thể) Giả sử quần thể có n cá thể Gọi độ thích nghi cá thể thứ i Fi, tổng dồn thứ i Fti, tổng độ thích nghi quần thể Fm Tạo số ngẫu nhiên F đoạn từ đến Fm Chọn cá thể thứ k thoả mãn F≥Ftk đưa vào quần thể hệ Phép chọn trình loại bỏ tất cá thể xấu quần thể để giữ lại quần thể cá thể tốt Phép chọn mô sau: Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần Loại bỏ cá thể cuối dãy giữ lại n cá thể tốt Ở ta giả sử quần thể có kích thước cố định n Một thuật giải di truyền, giải toán phải có thành phần sau : Một cấu trúc liệu I biểu diễn không gian lời giải toán Phương pháp khởi tạo quần thể ban đầu P( 0) Hàm định nghĩa độ thích nghi Eval( ) đóng vai trò môi trường Các phép toán di truyền mô Các tham số thuật giải di truyền sử dụng ( kích thước quần thể, xác suất lai, đột biến) -6- Cấu trúc thuật giải di truyền tổng quát Bắt đầu t= 0; Khởi tạo P( t) ; Tính độ thích nghi cho cá thể thuộc P( t); Khi ( Điều kiện dừng chưa thoả) lặp t= t+1; Tái sinh P’(t) từ P(t); Lai Q(t) từ P(t- 1); Đột biến R( t) từ P( t- 1); Chọn lọc P(t) từ P(t- 1),Q(t),R(t),P(t); Hết lặp Kết thúc Thuật giải di truyền- Các khái niệm Với khả nay, máy tính giúp giải nhiều toán khó mà trước thường bó tay Mặc dù vậy, số lớn toán thú vị chưa có lời giải hợp lý để giải chúng Trong số toán tối ưu thường xuyên gặp phải ứng dụng thực tiễn Trong thực tiễn có nhiều toán tối ưu quan trọng đòi hỏi thuật giải có chất lượng cao Ví dụ, ta áp dụng phương pháp mô luyện thép để giải toán tìm đường ngắn cho xe cứu hoả hay toán người du lịch, hay áp dụng thuật giải di truyền vào toán xếp lịch, toán xếp thời khoá biểu Nói chung, toán tối ưu xem toán tìm kiếm giải pháp tốt không gian vô lớn giải pháp Khi không gian tìm kiếm nhỏ, phương pháp cổ điển đủ thích hợp, không gian tìm kiếm lớn cần phải dùng đến kỹ thuật Trí Tuệ Nhân Tạo đặc biệt Thuật giải di truyền ( GA) kỹ thuật GA thuật giải mô tượng tự nhiên: Kế thừa đấu tranh sinh tồn để cải tiến lời giải khảo sát không gian lời giải Khái niệm kế thừa đấu tranh -7- sinh tồn giải thích qua thí dụ tiến hoá quần thể thỏ sau: Có quần thể thỏ Trong số có số nhanh nhẹn thông minh khác Những thỏ nhanh nhẹn thông minh có xác suất bị chồn cáo ăn thịt nhỏ hơn, chúng tồn để làm tốt có thể: Tạo thêm nhiều thỏ tốt Dĩ nhiên có đần độn chậm chạp sống may mắn Quần thể thỏ sống sót bắt đầu sinh sản Việc sinh sản tạo hỗn hợp tốt nguyên liệu di truyền thỏ Một số thỏ chậm chạp sinh với thỏ nhanh nhẹn, số thỏ thông minh có với thỏ đần độn,vv… Và tất cả, thiên nhiên lại ném vào thỏ hoang dã cách làm đột biến nguyên liệu di truyền thỏ Những thỏ con, kết này, nhanh thông minh thỏ quần thể gốc có bố mẹ nhanh nhẹn thông minh thoát chết khỏi chồn cáo Khi tìm kiếm lời giải tối ưu, thuật giải di truyền thực bước tương ứng với câu chuyện đấu tranh sinh tồn loài thỏ Thuật giải di truyền sử dụng thuật ngữ vay mượn di truyền học Ta nói cá thể ( hay kiểu gen, cấu trúc), quần thể cá thể gọi chuỗi hay nhiễm sắc thể Điều gây chút lẫn lộn: Mỗi tế bào thể chủng loại đó( Thí dụ người có 46 NST) thuật giải di truyền, ta nói cá thể có nhiễm sắc thể Các nhiễm sắc thể tạo thành từ đơn vị- gen- biểu diễn chuỗi tuyến tính; gen kiểm soát số đặc trưng Gen với đặc trưng định có vị trí định nhiễm sắc thể Bất đặc trưng cá thể tự biểu cách phân biệt; gen nhận số giá trị khác nhau( giá trị tính năng) Mỗi kiểu ( nhóm) gen ( ta gọi nhiễm sắc thể) biểu diễn lời giải toán giải ( ý nghĩa nhiễm sắc thể cụ thể người sử dụng xác định trước); tiến trình tiến hoá thực quần thể nhiễm sắc thể tương ứng với trình tìm kiếm lời giải không gian lời giải Tìm kiếm cần cân đối mục tiêu: Khai thác lời -8- giải tốt khảo sát không gian tìm kiếm Leo đồi thí dụ cho phép khai thác cải thiện lời giải tốt hành; leo đồi lại bỏ qua việc khảo sát không gian tìm kiếm hành Ngược lại, tìm kiếm ngẫu nhiên thí dụ điển hình chiến lược khảo sát không gian tìm kiếm mà không ý đến việc khai thác vùng đầy hứa hẹn không gian Thuật giải di truyền ( GA) phương pháp tìm kiếm độc lập miền tạo cân đối đáng kể việc khai thác khảo sát không gian tìm kiếm Thực ra, GA thuộc lớp thuật giải xác suất, lại khác thuật giải ngẫu nhiên chúng kết hợp phần tử tìm kiếm trực tiếp ngẫu nhiên Khác biệt quan trọng ớn GA phương pháp tìm kiếm khác GA trì xử lý tập lời giải - tất phương pháp khác xử lý điểm không gian tìm kiếm Chính thế, GA mạnh phương pháp tìm kiếm có nhiều Đơn cử, ta so sánh GA với hai phương pháp tìm kiếm sử dụng rộng rãi: Leo đồi mô luyện thép Phương pháp leo đồi dùng kỹ thuật lặp áp dụng cho điểm ( điểm hành không gian tìm kiếm) Trong bước lặp, điểm chọn từ lân cận điểm thời( phương pháp leo đồi gọi tìm kiếm lân cận hay cục bộ) Nếu điểm cho giá trị tốt hơn, điểm trở thành điểm hành Nếu không, lân cận khác chọn thử Quá trình dừng không cải thiện thêm lời giải hành Rõ ràng phương pháp leo đồi cung cấp giá trị tối ưu cục giá trị phụ thuộc nhiều vào thời điểm khởi đầu Hơn nữa, thông tin sẵn sai số tương đối ( thoả tối ưu toàn cục) lời giải tìm Để tăng hội thành công, phương pháp leo đồi thường thực nhiều lần; lần với điểm khởi đầu khác nhau( điểm không cần chọn ngẫu nhiên- tập điểm khởi đầu lần thực thi phụ thuộc vào kết lần chạy trước đó) -9- Kỹ thuật mô luyện thép kỹ thuật khắc phục bất lợi phương pháp leo đồi Lời giải không tuỳ thuộc vào điểm khởi đầu thường gắn với điểm tối ưu Đạt điều nhờ đưa vào xác suất nhận p Xác suất nhận p hàm theo giá trị hàm mục tiêu điểm hành điểm mới, tham số điều khiển bổ sung, tham số “nhiệt độ” T Nói chung, nhiệt độ T thấp hội nhận điểm nhỏ Khi thực thuật giải, nhiệt độ T hệ thống hạ thấp dần theo bước Thuật giải dừng T nhỏ ngưỡng cho trước; với ngưỡng gần không thay đổi chấp nhận Như đề cập , GA thực tìm kiếm lời giải tối ưu theo nhiều hướng, cách trì quần thể lời giải, thúc đẩy hình thành trao đổi thông tin hướng Quần thể trải qua tiến trình tiến hoá: Ở hệ lại tái sinh lời giải tương đối “tốt”, lời giải tương đối xấu chết Để phân biệt lời giải khác nhau, hàm mục tiêu dùng để đóng vai trò môi trường Cấu trúc thuật giải di truyền đơn giản tương tự với cấu trúc chương trình tiến hoá bất ký Ở bước lặp t, thuật giải di truyền trì quần thể lời giải ( nhiễm sắc thể, vectơ), P( t)= {x’1… x’n } Mỗi lời giải x’I lượng giá để biết độ thích nghi Một số cá thể quần thể trải qua biến đổi nhờ phép lai tạo đột biến hình thành nên lời giải Phép lai kết hợp với tinh chất hai nhiễm sắc thể cha mẹ để tạo nhiễm sắc thể cách hoán vị vị trí gen tương ứng cha mẹ Thí dụ, cha mẹ biểu diễn vectơ chiều ( a1,b1,c1,d1,e1) ( a 2,b2,c2,d2,e2) lai tạo hoán vị vị trí thứ sinh nhiễm sắc thể ( a1,b1,c2,d2,e2) ( a2,b2,c1,d 1,e1) Phép lai cho phép trao đổi thông tin lời giải Khác với phép lai, phép đột biến thay đổi cách ngẫu nhiên hay nhiều gen nhiễm sắc thể chọn, thay đổi thực với xác suất thể tốc độ đột biến Phép đột biến cho phép đưa thêm thông tin vào quần thể làm cho chất lỉệu di truyền phong phú thêm - 10 - executeSql(STRUpdate) tt = tt + End If If demchuoi = Then Dim STRUpdate As String = "UPDATE TBL_TKB SET THU_7='" & strChuoiMoi & "' WHERE TT='" & tt & "'" executeSql(STRUpdate) tt = tt + End If If demchuoi = Then Dim STRUpdate As String = "UPDATE TBL_TKB SET THU_7='" & strChuoiMoi & "' WHERE TT='" & tt & "'" executeSql(STRUpdate) tt = tt + End If If demchuoi = Then Dim STRUpdate As String = "UPDATE TBL_TKB SET THU_7='" & strChuoiMoi & "' WHERE TT='" & tt & "'" executeSql(STRUpdate) End If End If 'MessageBox.Show(strChuoiMoi) ' Dim thu As String = "INSERT INTO TBL_TKB(THU_2) VALUES ('" & strChuoiMoi & "')" ' executeSql(thu) Next End Sub ' Ý NGHIA CÁC BI?N C?C B? ' ChuoiTiet : Chu?i ban d?u dùng d? c?t ' k: S? môn c?n l?y ' tt: V? trí Update vào co s? d? li?u ' z: Bu?c nh?y Sub CatTiet(ByVal ChuoiTiet As String, ByVal k As Integer, ByVal z As Integer, ByVal tt As Integer) Dim Thu, ChuoiTietMoi As String Dim i, j, xy, Dem1, dem2 As Integer Dim MyPos As Integer For i = To Len(ChuoiTiet) MyPos = InStr(1, ChuoiTiet, ",", 1) Dem1 = Dem1 + Thu = Mid(ChuoiTiet, 1, MyPos) ChuoiTietMoi = Mid(ChuoiTiet, MyPos + 1, Len(ChuoiTiet)) ChuoiTiet = ChuoiTietMoi If MyPos = Then Exit For End If For j = To k Thu = Thu + Mid(ChuoiTiet, 1, MyPos) dem2 = dem2 + ChuoiTietMoi = Mid(ChuoiTiet, MyPos + 1, Len(ChuoiTiet)) ChuoiTiet = ChuoiTietMoi xy = k If dem2 = xy Then Dim strUpDateTKB As String = "UPDATE TBL_TKB SET THU_2=('" & Thu & "') WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If xy = xy + z - 70 - THU_3=('" & THU_4=('" & THU_5=('" & THU_6=('" & THU_7=('" & If dem2 = xy Then Dim strUpDateTKB As String = Thu & "')WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If xy = xy + z If dem2 = xy Then Dim strUpDateTKB As String = Thu & "')WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If xy = xy + z If dem2 = xy Then Dim strUpDateTKB As String = Thu & "')WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If xy = xy + z If dem2 = xy Then Dim strUpDateTKB As String = Thu & "')WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If xy = xy + z If dem2 = xy Then Dim strUpDateTKB As String = Thu & "')WHERE TT='" & tt & "' " Me.executeSql(strUpDateTKB) End If Next 'MessageBox.Show(Thu) "UPDATE TBL_TKB SET "UPDATE TBL_TKB SET "UPDATE TBL_TKB SET "UPDATE TBL_TKB SET "UPDATE TBL_TKB SET Next End Sub ' Ý NGHIA ' ' ' CÁC THAM S? K: VI TRÍ HOÁN V? Ð?U TIÊN I: V? TRÍ L?Y CHU?I BAN Ð?U Ð? HOÁN V? J: SO LAN HOAN VI Sub SAP4LOPDAU(ByVal k As Integer, ByVal i As Integer, ByVal j As Integer) Dim sqlConnCatChuoi1 As SqlConnection = New SqlConnection(strconn) Dim chuoiCat1, ChuoiThu2, ChuoiThu3, ChuoiThu4, ChuoiThu5, ChuoiThu6, ChuoiThu7 As String Dim strCatChuoi1 As String = "SELECT THU_2,THU_3,THU_4,THU_5,THU_6,THU_7 FROM TBL_TKB WHERE TT='" & i & "'" Dim sqlcomDocChuoi1 As SqlCommand = New SqlCommand(strCatChuoi1, sqlConnCatChuoi1) sqlConnCatChuoi1.Open() Dim drCatChuoi1 As SqlDataReader = sqlcomDocChuoi1.ExecuteReader Do While drCatChuoi1.Read() ChuoiThu2 = drCatChuoi1.GetString(0) ChuoiThu3 = drCatChuoi1.GetString(1) ChuoiThu4 = drCatChuoi1.GetString(2) ChuoiThu5 = drCatChuoi1.GetString(3) ChuoiThu6 = drCatChuoi1.GetString(4) ChuoiThu7 = drCatChuoi1.GetString(5) - 71 - Loop SapXepTiet(ChuoiThu2, "2", j, k) SapXepTiet(ChuoiThu3, "3", j, k) SapXepTiet(ChuoiThu4, "4", j, k) SapXepTiet(ChuoiThu5, "5", j, k) SapXepTiet(ChuoiThu6, "6", j, k) SapXepTiet(ChuoiThu7, "7", j, k) 'MessageBox.Show(ChuoiBanDau1) drCatChuoi1.Close() sqlConnCatChuoi1.Close() End Sub ' ' Ý NGHIA C?A CÁC BI?N C?C B? ' m: V? trí Update Ban d?u ' n: V? Trí Update Cu?i ' p: V? trí b?t d?u d?c b?ng DataReader ' q: V? trí k?t th?c d?c b?ng DataReader Sub ChuyenKhoiThu2_4LopDau(ByVal m As Integer, ByVal n As Integer, ByVal p As Integer, ByVal q As Integer) Dim sqlConnCatChuoi1 As SqlConnection = New SqlConnection(strconn) Dim chuoiCat1, ChuoiThu2, ChuoiThu3, ChuoiThu4, ChuoiThu5, ChuoiThu6, ChuoiThu7 As String Dim strCatChuoi1 As String = "SELECT THU_2 FROM TBL_TKB WHERE TT >='" & p & "' AND TT='" & p & "' AND TT='" & p & "' AND TT='" & p & "' AND TT='" & p & "' AND TT='" & p & "' AND TT