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

Lap thoi khoa bieu bang giai thuat di truyen GA(full code+bao cao)

51 86 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

Tìm hiểu chungLập lịch có thể được định nghĩa là một bài toán tìm kiếm chuỗi tối ưu để thực hiện một tập các hoạt động chịu tác động của một tập các ràng buộc cần phải được thỏa mãn. Người lập lịch thường cố gắng thử đến mức tối đa sự sử dụng các cá thể, máy móc và tối thiểu thời gian đòi hỏi để hoàn thành toàn bộ quá trình nhằm sắp xếp lịch.Vì thế bài toán lập lịch là một vấn đề rất khó để giải quyết . Hiện nay có nhiều khả năng để phát triển các kỹ thuật hiện tại để giải quyết bài toán này. Những kỹ thuật đó bao gồm: các tiếp cận Trí tuệ nhân tạo như hệ thống tri thức cơ sở (knowledgebased systems), bài toán thoả mãn ràng buộc, hệ chuyên gia, mạng Nơron và các tiếp cận của các Nghiên cứu hoạt động: lập trình tính toán, lập trình động, tìm kiếm nhánh và đường biên, kỹ thuật mô phỏng, tìm kiếm Tabu và phương pháp nút cổ chai 2.1.1. Các đặc tính của bài toán lập lịchTài nguyên: đó là các nguồn dữ liệu đầu vào của bài toán. Các tài nguyên này có thể phục hồi hoặc không. Tác vụ: được đánh giá qua các tiêu chuẩn thực hiện như thời gian thực hiện, chi phí, mức tiêu thụ nguồn tài nguyên.Ràng buộc: đây là những điều kiện cần thỏa mãn để bài toán có thể đưa ra lời giải tốt nhấtMục tiêu: đánh giá độ tối ưu của lịch trình lời giải của bài toán. Khi các mục tiêu được thỏa mãn thì các ràng buộc cũng phải được thỏa mãn2.1.2. Bài Toán sắp xếp Thời Khoá Biểu ở trường Trung học cơ sở2.1.2.1. Giới thiệu bài toánBài toán sắp xếp thời khóa biểu ở trường học nói chung và sắp xếp thời khóa biểu ở trường trung học cơ sở nói riêng là một bài toán khó, sự phức tạp của bài toán không chỉ ở vấn đề tìm ra môt thời khóa biểu cho học sinh thỏa mãm các ràng buộc về thời gian, ràng buộc chuyên môn, quy định của bộ giáo dục và nhà trường mà còn một vấn đề khó khăn hơn là ta phải tìm được một thời khóa biểu tốt thích hợp cho tất cả các giáo viên, phải thỏa mãn các điều kiện, yêu cầu về thời gian, hạn chế số tiết trống trong một ngày và số ngày lên lớp của giáo viên trong thời khóa biểu.Việc sắp xếp thời khóa biểu của các trường trung học luôn luôn phải thực hiên trước khi học kỳ mới bắt đầu. Trước khi học kỳ mới bắt đầu, nội dung các môn học và giáo viên phụ trách môn học của từng lớp phải được xác định thông qua cuộc họp chuyên môn, kết quả của cuộc họp này được gửi cho ban giám hiệu nhà trường và việc lên lịch cho toàn bộ trường do hai phó hiệu trường đảm nhiệm. Hiện nay, việc sắp lịch này ở hầu hết các trường trung học đều được thực hiện một cách thủ công, và hầu như phải dựa vào kinh nghiệm thực tế mới có thể làm được. Thông thường việc sắp xếp thời khóa biểu này phải mất trung bình một tuần.Vậy bài toán đặt ra vấn đề cần sắp xếp thời khoá biếu cho một trường THCS. Cần có sự sắp xếp lịch học cho các lớp sao cho vừa phù hợp lại vừa tiện dụng nhất.2.1.2.2. Dữ liệu bài toánDanh sách khoá họcDanh sách môn học và lớp học trong học kỳDanh sách lớp họcDanh sách giáo viênDanh sách môn học và số tiếtBảng phân công giáo viên giáo dạy tại các lớpBảng yêu cầu ràng buộc của giáo viên với lịch dạyBảng yêu cầu ràng buộc của lớp với lịch học2.1.2.3.Các ràng buộc của bài toánRàng buộc cứng: Một giáo viên chỉ dạy được một lớp trong cùng một tiếtCác lớp chỉ có một môn học trong cùng một tiếtMột giáo viên không thể dạy quá 20 giờ mỗi tuần.Ràng buộc mềm:Một giáo viên không dạy quá 5 tiếtngàyTất cả các bài học của một môn nào đó dạy tại một lớp phải được dạy bởi cùng một giáo viên.Mỗi lớp chỉ học 1 môn tại 1 thời điểmMột lớp có thể có các giờ trốngMột lớp có thể có cùng một môn nhiều lần trong một ngàyTất cả các giáo viên có cùng số lượng giờ dạy như nhau.2.1.3.Một số bước cơ bản để giải quyết bài toán lập lịch thời khoá biếuBước 1. Khởi tạo dữ liệu thời khóa biểu mớiBước 2. Nhập, điều chỉnh dữ liệu gốc thời khóa biểuBước 3. Nhập, sửa, điều chỉnh các ràng buộc chính của thời khóa biểuCác ràng buộc chính của thời khóa biểu là nhóm các dữ liệu có nhiệm vụ định hình và khuôn dạng của thời khóa biểu. Đây là nhóm các lệnh rất quan trọng của bài toán và phần mềm thời khóa biểu. Bước 4. Nhập bảng Phân công giảng dạy (PCGD) Bảng phân công giảng dạy (hay còn gọi là Phân công chuyên môn) là phần dữ liệu quan trọng nhất và phức tạp nhất của mọi thời khóa biểu. Bảng này chỉ ra các phân công cụ thể của thời khóa biểu: giáo viên nào dạy lớp nào, môn học nào và một tuần dạy bao nhiêu tiếtBước 5. Chuẩn bị xếp thời khóa biểuBước 6. Xếp tự động TKBBước 7. Điều chỉnh, tinh chỉnh dữ liệu thời khóa biểuBước 8. Hoàn thiện thời khóa biểu Bước 9. In ấn TKBBước 10. Tổng hợp, thống kê và truy vấn thông tin thời khóa biểu2.2. Áp dụng giải thuật di truyền vào bài toán sắp xếp thời khóa biểuVấn đề của bài toán khá phức tạp về mặt ràng buộc, nhưng phương pháp chia để trị vẫn là biện pháp hữu hiệu trong mọi vấn đề phức tạp. Ở đây cũng vậy, theo phân cấp các ràng buộc mà ta giải quyết bài toán xếp thời khóa biểu này thành hai giai đoạn khác nhau:Giai đoạn 1: nhằm 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 lại các ràng buộc còn lại và đã đượ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. Đó là lịch học của các lớp trong một cơ sở.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 thuật giải di truyền.2.2.1.Giai đoạn 1: Xếp lịch học các lớp2.2.1.1.Chọn mô hình cá thể.Lịch học của một lớp gồm 3 thành phần chính, bao gồm: giáo viên, môn học, tiết học trong tuần. Việc đặt ngẫu nhiên các môn học, giáo viên giảng dạy vào các tiết họcsẽ tạo thành thời khóa biểu của 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 thuật giải di truyền.Và trong ba thành phần đó, các tiết 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, cho nên ta chọn giáo viên, môn học làm đơn vị nhiễm sắc thể trong cá thể. Vì đối với môn học việc làm nhiễm sắc thể là phù hợp với tính không ổn định của nó : với số lượng các môn phụ thuộc 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. 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. Tương ứng mỗi cá thể là một lịch học thực thụ 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 : phải đủ 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ị sắ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.2.2.1.2.Tạo quần thể ban đầuTrước khi tạo quần thể ban đầu trong phần này, 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. Tất cả như sau : •Các ràng buộc lớp, giáo viên được phân công dạy.•Các môn học•Tính toán số tiết học tương ứng các môn.•Chọn qui định đọc và ghi nhận nhiễm sắc thể.•…Giống như cá thể được mô tả ở 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 thuật giải di truyền của phần xếp lịch lớp. 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ể.2.2.1.3.Độ thích nghi chọn 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ể đó, 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.Có nhiều cách để chọn một cá thể tốt. Chọn cách 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 tốt nhất. ở đây, chúng ta cũng chọn cách tính tốt nhất tức là xếp theo giá trị giảm dần của giá trị bị phạt theo độ thích nghi.2.2.1.4.Lai ghép và đột biếnVề thuật toán lai ghép, ta dùng lai ghép tại 1 điểm: lấy ngẫu nhiên một đoạn nhiễm sắc thể bên nhiễm sắc thể cha, số còn lại sẽ lấy ở bên nhiễm sắc thể mẹ. Còn thuật toán đột biến : chỉ việc hoán vị hai nhiễm sắc thể một cách ngẫu nhiên trong cá thể. Ta có thể sửa thông số xác xuất về đột biến, lai ghép của chương trình trong lúc chạy thực thi.Phần này áp dụng thực thi cho tất cả các lớp, tương ứng với mỗi lớp sẽ có một file lưu trữ tất cả các lịch lớp mà có thể sử dụng, dưới hình thức các nhiễm sắc thể trong quẩn thể. Ngoài mục đích xem xét kiểm tra, chúng còn được dùng làm thông tin để chạy lịch sau này2.2.1.5. Chọn lọcTrong bài toán này ta dùng phương pháp chọn lọc tự nhiên dựa vào độ thích nghi và vòng quay bánh xe RouletteThuật giải chọn lọc roulette(Davis, 1991,8) như sau:Tính tổng giá trị thích nghi của tất cả thành viên quần thể và gọi nó là tổng thích nghi (total fitness).Phát sinh một số n là số ngẫu nhiên trong khoảng từ 0 đến tổng thích nghi.Trả lại thành viên quần thể đầu tiên mà độ thích nghi của nó cộng với độ thích nghi của các thành viên quần thể trước đó lớn hơn hay bằng n…Ví dụ:oVới pop_size = 3oFit0 = 0,0032oFit1 = 0,0576oFit2 = 0,0264Sum = 0,0872Giả sử: random01() = 0,5rand = 0,5 0,0872 = 0,0436j = 0; partsum = fit0 = 0,0032j = 1; partsum = 0,0032 + fit1 = 0,0608partsum > rand  i = j = 1; select() = 1;2.2.2. Giai đoạn 2: Xếp lịch học cho toàn trường THCS.2.2.2.1.Chọn mô hình cá thểLịch học toàn trường bao gồm tất cả các lịch học của các lớp hiện có trong cơ sở, nếu mỗi lớp đều có một lịch học rõ ràng thì đó có nghĩa là có lịch toàn trường. Dựa vào giai đoạn đầu, trên mỗi lớp đã cho ra hàng loạt các lịch học, việc chọn ngẫu nhiên lịch học của một lớp thì không có gì khó khăn. Nhìn mô hình cá thể trong lịch lớp ta thấy lớp học trong cơ sở có tính chất như môn học trong lớp, cho nên ta chọn lịch lớp học làm đơn vị của nhiễm sắc thể trong mô hình thuật toán di truyền trong xếp lịch toàn trường. Và tương tự, ta chọn 1 thời khóa biểu toàn trường làm cá thể.Ở mỗi nhiễm sắc thể là một con số mang tính chất như một trong những chỉ số trong file lưu trữ thông tin cá thể của lịch lớp ( chỉ số một lịch học của lớp ). Như vậy phạm vi giá trị các nhiễm sắc thể sẽ khác nhau, nhưng ta luôn xác định được phạm vi đó một cách rõ ràng, chỉ cần đọc giá trị kích thước của file tương ứng của lớp mà thôi.Giống như trong lịch lớp, cá thể lịch toàn trường cũng phải qua một giai đoạn kiểm tra ban đầu, để có thể ở mức đạt được dạng đúng của một thời khóa biểu.2.2.2.2.Tạo quần thể ban đầuQuần thể khởi đầu gồm những cá thể được tạo ra như mô hình trên, nhưng thông tin các lớp học phải được chọn cùng trong một buổi học thuộc cơ sở, và có file lịch lớp đầy đủ. Ở đây kích thước cá thể là số lớp hiện có, cho nên dài hay ngắn tùy theo cơ sở, cũng giống như lịch lớp chiều dài được tính theo số môn hiện có của lớp.Công việc này sẽ tốn rất nhiều thời gian, vì công việc đọc file để kiểm tra, nhưng quần thể sẽ cho ra kết quả đúng nhất về mặt áp ...

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN BÀI TẬP LỚN MÔN MỘT SỐ PHƯƠNG PHÁP TÍNH TỐN MỀM ĐỀ TÀI: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TỐN LẬP THỜI KHĨA BIỂU CHO TRƯỜNG THCS Gv hướng dẫn: TS Vũ Việt Thắng Nhóm: 11 Họ tên Vũ Trường Giang Phan Đức Hải Nguyễn Văn Đức Mã sinh viên 2017601213 2017601618 2017601101 Hà Nội, năm 2020 MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG I LÝ THUYẾT VỀ GIẢI THUẬT DI TRUYỀN (GENETIC ALGORITHM - GA) .2 1.1 Lịch sử giải thuật di truyền 1.2 Tóm tắt giải thuật di truyền 1.3 Cách biểu diễn toán giải thuật di truyền (hay chọn cách biểu diễn cấu trúc liệu cho toán) .7 1.4 Nguyên lý xác định tính thích nghi 11 1.5 Mã hóa(encoding) .15 1.6 Các phương pháp chọn(Selection) 18 1.7 Các phương pháp lai tạo(crossover) đột biến(mutation) 19 1.8 Các toán tử giải thuật di truyền .23 1.9 Các tham số cần sử dụng giải thuật di truyền 25 1.10 Điều kiện kết thúc thuật giải di truyền 25 1.11 Nguyên lý hoạt động giải thuật di truyền 26 1.12 Ứng dụng thuật giải di truyền 26 CHƯƠNG II BÀI TỐN SẮP XẾP THỜI KHĨA BIỂU .27 2.1 Tìm hiểu chung 27 2.2 Áp dụng giải thuật di truyền vào tốn xếp thời khóa biểu 30 2.3 Kết 35 CHƯƠNG III PHÂN TÍCH THIẾT KẾ BÀI TOÁN 39 3.1 Phân tích thiết kế với UML 39 3.2.Thiết kế sở liệu toán .43 CHƯƠNG IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 47 4.1 Kết đạt 47 4.2 Hạn chế, hướng phát triển 47 TÀI LIỆU THAM KHẢO 48 LỜI NÓI ĐẦU Với khả nay, máy tính giúp người giải nhiều tốn khó mà trước thường bó tay Mặc dù số lớn tốn thú vị chưa có thuật giải hợp lý để giải chúng Trong số tốn tối ưu thường gặp thực tiễn Trước để giải toàn tối ưu người ta thường dùng phương pháp cổ điển như: leo đồi, mô luyện thép… Với tốn có khơng gian tìm kiếm nhỏ Thì phương pháp giải tốt Nhưng với khơng gian tìm kiếm lớn, phương pháp khơng hiệu Vì vậy, điều kiện địi hỏi phải có phương pháp để giải tốt tốn dạng Ngày để giải toán tối ưu, dùng ”giải thuật di truyền” “Giải thuật di truyền” phát triển dựa mơ q trình tiến hóa sinh học Được bắt đầu Nils Aall Baricelli mơ q trình tiến hóa trị chơi năm 1954 Sau đến Alex Fraser xuất sách Artificial Selection (chọn lọc nhân tạo) Nhưng John Holland người thực đặt tên cho giải thuật “giải thuật di truyền” việc xuất sách năm 1975 Từ giải thuật có tên “giải thuật di truyền” Và với phát triển mạnh mẽ hoàn thiện lý thuyết” giải thuật di truyền” Và ứng dụng giải thuật toán thực tế Qua trình tìm hiểu, em thấy ứng dụng “giải thuật di truyền” hay Nên sau thầy Vũ Việt Thắng giao số đề tài gợi ý chúng em định chọn “giải thuật di truyền” làm đề tài CHƯƠNG I LÝ THUYẾT VỀ GIẢI THUẬT DI TRUYỀN (GENETIC ALGORITHM - GA) Lịch sử giải thuật di truyền Trước tiên ý niệm thuật giải di truyền số nhà sinh vật học đưa từ năm 50-60, kỷ XX Alex Fraser người tiên phong nêu lên tương đồng tiến hóa sinh vật chương trình tin học giả tưởng genetic algorithm Tuy nhiên, John Henry Holland người triển khai ý tưởng phương thức giải vấn đề dựa theo tiến hóa người Từ giảng, báo mình, ơng đúc kết ý tưởng vào sách đầu tay Adaptation in Natural and Artifical systems (mô theo tự nhiên hệ thống nhân tạo ), xuất năm 1975 Dựa lý thuyết GA Holland, Keneth De Jong triển khai, chứng minh thành ông thực góp phần quan trọng việc tạo tảng toán học cho lý thuyết thuật giải di truyền Và sau John koza tiếp nối, phát triển giải thuật di truyền Lần Holland nghiên cứu thuật giải này, chúng hồn tồn khơng có tên Do nguồn gốc phương pháp từ gen di truyền, Holland đặt tên cho “thuật giải di truyền“ Tóm tắt giải thuật di truyền Thuật giải di truyền (GA) kỹ thuật chung giúp giải vấn đề tốn cách mơ tiến hóa người hay sinh vật nói chung (dựa thuyết tiến hóa mn lồi Darwin) điều kiện qui định sẵn môi trường GA thuật giải, nghĩa mục tiêu GA khơng nhằm đưa lời giải xác tối ưu mà đưa lời giải tương đối tối ưu Theo đề xuất ban đầu giáo sư John Holland, vấn đề-bài toán đặt mã hóa thành chuỗi bit với chiều dài cố định Nói cách xác thơng số toán chuyển đổi biểu diễn lại dạng chuỗi nhị phân Các thông số biến hàm hệ số biểu thức toán học Người ta gọi chuỗi bit mã genome ứng với cá thể, genome có chiều dài Nói ngắn gọn, lời giải biểu diễn chuỗi bit, giống cá thể quy định gen cá thể Như vậy, thuật giải di truyền, cá thể có gen gen phục vụ cho cá thể Ban đầu, ta phát sinh số lượng lớn, giới hạn cá thể có gen ngẫu nhiên Nghĩa phát sinh tập hợp chuỗi bit ngẫu nhiên Tập cá thể gọi quần thể ban đầu (initial population) Sau đó, dựa hàm đó, ta xác định giá trị gọi độ thích nghi - Fitness Giá trị này, hiểu độ "tốt" lời giải Vì phát sinh ngẫu nhiên nên độ "tốt" lời giải hay tính thích nghi cá thể quần thể ban đầu không xác định Để cải thiện tính thích nghi quần thể, người ta tìm cách tạo quần thể Có hai thao tác thực hệ để tạo hệ khác với độ thích nghi tốt Thao tác chép nguyên mẫu nhóm cá thể tốt từ hệ trước đưa sang hệ sau (selection) Thao tác đảm bảo độ thích nghi hệ sau giữ mức độ hợp lý Các cá thể chọn thông thường cá thể có độ thích nghi cao Thao tác thứ hai tạo cá thể cách thực thao tác sinh sản số cá thể chọn từ hệ trước – thông thường cá thể có độ thích nghi cao Có hai loại thao tác sinh sản : lai tạo (crossover), hai đột biến (mutation) Trong thao tác lai tạo, từ gen hai cá thể chọn hệ trước phối hợp với (theo số quy tắc đó) để tạo thành hai gen Thao tác chọn lọc lai tạo giúp tạo hệ sau Tuy nhiên, nhiều hệ khởi tạo ban đầu có đặc tính chưa phong phú chưa phù hợp nên cá thể không rải hết không gian tốn Từ đó, khó tìm lời giải tối ưu cho toán Thao tác đột biến giúp giải vấn đề Đó biến đổi ngẫu nhiên nhiều thành phần gen cá thể hệ trước tạo cá thể hoàn toàn thệ sau Nhưng thao tác phép xảy với tần suất thấp (thường 0.01), thao tác gây xáo trộn làm cá thể chọn lọc lai tạo có tính thích nghi cao, dẫn đến thuật tốn khơng cịn hiệu Thế hệ tạo lại xử lý hệ trước (xác định độ thích nghi tạo hệ mới) có cá thể đạt giải pháp mong muốn đạt đến thời gian giới hạn Tóm lại: Một thuật giải di truyền (hay chương trình tiến hóa bất kỳ) giải tốn cụ thể phải gồm năm thành phần sau đây: - Cách biểu diễn nhiễm sắc thể cho lời giải toán - Cách khởi tạo quần thể ban đầu - Hàm lượng giá đóng vai trị mơi trường, đánh giá lời giải theo mức độ thích nghi chúng - Các phép tốn di truyền - Các tham số khác(kích thước quần thể,Pc , Pm …) Lược đồ GA: Input: tốn tối ưu max f(x) khơng gian x € X Output: nghiệm tốt f, x0 € X f(x0) đạt lân cận max Method Khởi tạo quần thể ban đầu với n cá thể Lặp m buớc, bước phát sinh quần thể theo quy trình sau 2.1 Lai ghép: - Chọn ngẫu nhiên cặp hai cá thể cha mẹ B M theo xác xuất Pl - Sinh hai cá thể C1 C2 từ B M - Thay C1 C2 cho B M 2.2 Đột biến: - Chọn ngẫu nhiên cá thể X theo xác xuất Pd - Đột biến cá thể X 2.3 Lặp nhận: - Tính lại độ thích nghi cá thể - Chọn cá thể có độ thích nghi tốt đưa vào q trình Lấy nghiệm End Hình 1:Sơ đồ tổng quát giải thuật di truyền Cách biểu diễn toán giải thuật di truyền (hay chọn cách biểu diễn cấu trúc liệu cho toán) Để áp dụng giải toán giải thuật di truyền, thao tác quan trọng – phải biết chọn cấu trúc liệu phù hợp Để giải toán giải thuật di truyền, ta thường chọn sử dụng loại cấu trúc liệu sau: Chuỗi nhị phân, chuỗi số thực cấu trúc Trong chuỗi nhị phân chuỗi số thực thường sủ dụng nhiều 3.1.1 Biểu diễn Gen chuỗi nhị phân Quy tắc biểu diễn gen qua chuỗi nhị phân : Chọn chuỗi nhị phân ngắn đủ thể tất kiểu gen.Để biểu diễn chuỗi nhị phân, ta thường dùng cách sau : Mảng byte, mảng bit biểu diễn mảng byte, mảng bit biểu diễn mảng INTEGER.Mảng byte mảng bit sử dụng Đối với máy tính ngày nay, người ta thường dùng mảng integer để tối ưu truy xuất Vì em giới thiệu mảng integer VD: Nhiễm sắc thể x ta biểu diễn chuỗi 15 bit X=(010100110010101)2 3.1.1.1 Mảng integer nén để tối ưu truy xuất Trong máy tính ngày nay, thơng thường đơn vị truy xuất hiệu khơng cịn byte mà bội số byte Đơn vị truy xuất hiệu gọi độ dài từ (word length) Hiện nay, máy Pentium có độ dài từ byte Do đó, ta tổ chức chuỗi nhị phân dạng byte làm chậm phần tốc độ truy xuất Để hiệu nữa, ta sử dụng mảng kiểu INTEGER Lưu ý kiểu INTEGER có độ dài phụ thuộc vào độ dài từ máy tính mà trình biên dịch nhận biết Chẳng hạn với version PASCAL,C hệ điều hành DOS, kích thước kiểu INTEGER byte Trong đó, với version PASCAL, C Windows 9x Delphi, Visual C++ độ dài kiểu INTEGER byte Do đó, để chương trình chạy tốt nhiều máy tính khác nhau, ta dùng hàm sizeof() Hàm trả độ dài kiểu liệu ta đưa vào 3.1.1.2 Biểu diễn số thực chuỗi nhị phân Tuy có nhiều chọn lựa thông thường, để biểu diễn số thực x, người ta dùng công thức đơn giản, tổng quát sau : Giả sử ta muốn biểu diễn số thực x nằm khoảng [min, max] chuỗi nhị phân A dài L bit Lúc đó, ta chia miền [min, max] (lượng hóa) thành L-1 vùng Trong đó, kích thước vùng : Người ta gọi g độ xác số thực biểu diễn cách (vì g quy định giá trị thập phân nhỏ số thực mà chuỗi nhị phân dài L bit biểu diễn được) Giá trị số thực x biểu diễn qua chuỗi nhị phân tính sau: x = + Decimal()*g Decimal() hàm để tính giá trị thập phân nguyên dương chuỗi nhị phân A theo quy tắc đếm Hàm tính theo công thức sau: Decimal() = aL-1.2L-1 + … + a2 22 + a1.21 + a0.20 Với bit thứ i chuỗi nhị phân tính từ phải sang trái (bit phải bit 0) VD: Bài toán tối ưu số Tìm giá trị lớn hàm f(x) = x*sin(10*pi*x) + với x € [-1,2] Sử dụng vectơ bit làm nhiễm sắc thể để biểu diễn giá trị thực biến x Chiều dài vectơ phụ thuộc vào độ xác cần có, thí dụ này, ta tính xác đến số lẻ Miền giá trị x có chiều dài - (-1) = 3; với yêu cầu độ xác số lẻ phải chia khoảng [-1, 2] thành 3*106 khoảng có kích thước Điều có nghĩa cần có 22 bit cho vevtơ nhị phân (nhiễm sắc thể): 2.2.2.3.Độ thích nghi - chọn cá thể Giai đoạn hội tụ cá thể quần thể, việc đánh giá sở tùy theo số lớp, số học số phòng học Phịng học phải hợp lý sức chứa lớp học, thơng thường người ta chọn phịng lớn cho lớp tương ứng lớn Nhưng ta chọn phương pháp khác, lớp phòng xếp theo thứ tự lớn dần Cho nên xếp lịch, lớp đặt phòng vừa mà sở có Điều thời gian thực tế hợp lý Cũng đánh giá lại ràng buộc lịch giáo viên, lần xét mặt trùng dạy lớp thời điểm Tương tự, ta sử dụng tham biến lịch dạy cho giáo viên, để ghi nhận tránh trường hợp trùng Với lần kiểm tra tương ứng với giá trị thích nghi, cuối tổng giá trị độ thích nghi cá thể Cơng việc khơng khác lịch lớp, cá thể chọn cá thể tốt nhất, giá trị thích nghi đạt mức đỉnh 2.2.2.4.Thuật tốn chọn lọc, lai ghép đột biến Sử dụng lại phần xếp lịch lớp, chọn cá thể theo độ thích nghi, lai ghép ngẫu nhiên đoạn đột biến hoán vị điểm Do giống mặt liệu, yêu cầu cấu trúc thuật toán không khác nhiều, việc dùng lại này, không gây ảnh hưởng trình thực xếp lịch Một lần nói thời gian thực thi, nhiều thời gian công việc xếp lịch lớp, số lượng phạm vi ràng buộc lớn phải đọc liệu file Nhưng mặt hoạt động không khác 2.2.2.5.Chọn điểm dừng thuật tốn Đã nói giai đoạn phần áp dụng thuật giải di truyền vào tốn, điểm dừng thuật tốn dựa độ thích nghi Một số tốn chọn điểm dừng theo số hệ, dựa tính tương đối kết quả, với tốn cần có kết thúc tuyệt đối tốt nhất, mặt dù số hệ phải chọn trước từ đầu Vì tính chất u cầu tốn khơng bị sai lệch 35 Nếu q trình thực thi qua giai đoạn, cần kết khơng đạt đến điểm dừng, xem tốn khơng có kết 2.3 Kết 2.3.1 Danh sách giáo viên 2.3.2 Danh sách lớp học 36 2.3.3 Danh sách mơn học 37 2.3.4 Danh sách phịng học 2.3.5 Phân lịch 38 Ở có chức tiến hóa, tiến hóa 100 hệ tiến hóa hồn tồn Tiến hóa hồn tồn đưa cho kết gần hồn chỉnh, cụ thể, khơng vi phạm vào ràng buộc 2.3.6 Thời khóa biểu lớp Ví dụ thời khóa biểu lớp 6A 2.3.7 Lịch dạy giáo viên Lịch dạy giáo viên tuần 39 40 CHƯƠNG III PHÂN TÍCH THIẾT KẾ BÀI TỐN 3.1 Phân tích thiết kế với UML 3.1.1.Biểu đồ Use Case Hình Biểu đồ Use Case mức tổng quát 41 3.1.2.Biểu đồ Tuần tự 3.1.2.1.Biểu đồ Tuần tự chức Đăng nhập Hình 3: Biểu đồ chức “Đăng nhập” 3.1.2.2.Biểu đồ chức “sắp xếp TKB” Hình 4:Biểu đồ chức “sắp xếp TKB” 42 3.1.2.3.Biểu đồ chức “cập nhật thơng tin TKB” bao gồm Nhập, Sửa, Xóa Hình 5: Biểu đồ chức “cập nhật thông tin TKB” 3.1.2.4.Biểu đồ chức “xem thời khóa biểu theo giáo viên” Hình 6: Biểu đồ chức “xem thời khóa biểu theo giáo viên” 43 3.1.2.5.Biểu đồ chức “xem thời khóa biểu theo lớp” Hình 7: Biểu đồ chức “xem thời khóa biểu theo lớp” 3.1.3.Biểu đồ Lớp Hình 8: Biểu đồ lớp mức Tổng quát 3.2.Thiết kế sở liệu toán 3.2.1.Cơ sở liệu 44 Hình 9: Cơ sở liệu 3.2.2.Mơ tả bảng Cơ sở liệu 3.2.2.1.Bảng tblToMon Bảng liệu chứa thông tin tổ môn trường Mỗi tổ mơn có mã tên riêng Bảng thuộc tính: STT Tên thuộc tính MaToMon TenToMon Kiểu liệu Nvarchar(50) Nvarchar(50) Ràng buộc Primary key Mô tả Mã để phân biệt Not null tổ môn Tên tổ môn 3.2.2.2.Bảng tblGiaoVien Bảng liệu chứa thơng tin giáo viên, giáo viên có mã riêng thông tin cá nhân giáo viên Bảng thuộc tính: STT Tên Thuộc tính Kiểu liệu MaGV Nvarchar(50) Ràng buộc Primary key Mô tả Mã giáo viên để phân biệt giáo viên TenGV DiaChi Nvarchar(50) Nvarchar(100) Not null 45 với GV khác Tên giáo viên Địa liên lạc giáo SDT Email MaToMon Int viên Số điện thoại liên lạc Nvarchar(50) giáo viên Địa email liên lạc Nvarchar(50) giáo viên Khóa ngoại liên kết foreign key bảng tblGiaovien tblToMon 3.2.2.3.Bảng tblMonhoc Bảng liệu chứa thông tin môn học, thông tin bao gồm: STT Tên thuộc tính MaMonHoc Kiểu liệu Nvarchar(50) Ràng buộc Primary key Mô tả Mã môn học, để phân biệt môn học TenMonHoc SoTiet MaToMon Nvarchar(50) Int Nvarchar(50) foreign key với môn học khác Tên môn học Số tiết học mơn Khóa ngoại liên kết bảng tblMonHoc tblToMon 3.2.2.4.Bảng tblHocKy Bảng liệu bao gồm thông tin sau: STT Tên thuộc tính MaHocKy NamHoc Kiễu liệu Nvarchar(50) Nvarchar(50) Ràng buộc Primary key Mô tả Mã học kỳ Năm học 3.2.2.5.Bảng tblLop Bảng chứa thông tin tất lớp Bao gồm thông tin sau: STT Tên thuộc tính MaLop TenLop Siso MaHocKy Kiểu liệu Nvarchar(50) Nvarchar(50) Int Nvarchar(50) Ràng buộc Primary key foreign key 46 Mô tả Mã lớp Tên lớp Sĩ số lớp Khóa ngoại liên kết bảng tblLop bảng tblHocKy 3.2.2.6 Bảng tblGiangDay Bảng chứa thông tin chung bảng, liên kết bảng lại thành cấu trúc chặt chẽ Bảng bao gồm thông tin sau: STT Tên thuộc tính MaGiangDay MaLop MaMon MaGV Length batDauGD ketthucGD Kiểu liệu Nvarchar(50) Nvarchar(50) Nvarchar(50) Nvarchar(50) Ràng buộc Primary key foreign key Mô tả Mã thông tin giảng dạy Khóa ngoại liên kết tới foreign key bảng tblLop Khóa ngoại liên kết tới foreign key bảng tblMaMon Khóa ngoại liên kết tới Nvarchar(50) Nvarchar(50) bảng tblGiaoVien Tổng thời gian Thời gian bắt đầu giảng Nvarchar(50) dạy Thời gian kết thúc giảng dạy 47 CHƯƠNG IV KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Kết đạt - Nghiên cứu giải thuật di truyền áp dụng phân tích tốn xếp thời khóa biểu - Xây dựng demo mô giải thuật di truyền ngôn ngữ lập trình C# 4.2 Hạn chế, hướng phát triển 4.2.1.Hạn chế - Chưa xây dựng thành cơng chương trình xếp thời khóa biểu 4.2.2.Hướng phát triển - Tiếp tục xây dựng chương trình xếp thời khóa biểu cho trường trung học sở cách hoàn chỉnh xác 48 TÀI LIỆU THAM KHẢO [1] Nguyễn Đình Thúc, Lập trình tiến hóa, Nhà xuất Giáo dục (http://www.box.net/public/pbuo21pcrp) [2] Nguyễn Đình Thái, Trí tuệ nhân tạo - Lập trình tiến hóa (http://ngocchistar.gocom.vn/ebook/Tin-Hoc-Lap-Trinh-p34704c54641/tri-tue-nhantaolap-trinh-tien-hoa-i37988) [3] Hồn Kiếm, Lê Hoàng Thái, Giải thuật di truyền, cách giải tự nhiên tốn máy tính, NXB Giáo dục, 2000 [4] PTS Nguyễn Thanh Thủy , Trí tuệ nhân tạo – Các phương pháp giải vấn đề kỹ thuật xử lý tri thức, NXBGiáo dục, 1995 [5] Nguyễn Quang Hoan, Nhập môn TTNT, Tài liệu nội [6] Stuart J Russell and Peter Norvig, Artifical Intelligence: A Modern Approach, Prentice Hall Second edition, 2002 49 ... VỀ GIẢI THUẬT DI TRUYỀN (GENETIC ALGORITHM - GA) .2 1.1 Lịch sử giải thuật di truyền 1.2 Tóm tắt giải thuật di truyền 1.3 Cách biểu di? ??n toán giải thuật di truyền (hay... 1:Sơ đồ tổng quát giải thuật di truyền Cách biểu di? ??n toán giải thuật di truyền (hay chọn cách biểu di? ??n cấu trúc liệu cho toán) Để áp dụng giải toán giải thuật di truyền, thao tác quan trọng... hoạt động giải thuật di truyền Thuật gải di truyền dựa tảng lý thuyết biểu di? ??n chuỗi nhị phân lý thuyết sơ đồ 12 Ứng dụng thuật giải di truyền Trên thực tế, giải thuật di truyền ứng dụng thành

Ngày đăng: 31/12/2020, 11:45

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    3.1.1.2. Biểu diễn số thực bằng chuỗi nhị phân

    5.1.2. Mã hóa bằng số nhị phân (Binary Encoding)

    5.1.3. Mã hóa vị trí (Permutation Encoding)

    5.1.4. Mã hóa theo giá trị (Value Encoding)

    5.1.5. Cây mã hóa (Tree Encoding)

    7.1.1. Binary Encoding(mã hóa nhị phân)

    7.1.2. Permutation Encoding(Mã hóa vị trí)

    7.1.3. Value Encoding(mã hóa theo giá trị)

    7.1.4. Tree Encoding(Cây mã hóa)

    8.1.1. Toán tử Chọn lọc

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

TÀI LIỆU LIÊN QUAN

w