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

Đồ án: Tìm hiểu giải thuật di truyền ứng dụng giải bài toán lập lịch

41 2 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 đề Đồ án: Tìm hiểu giải thuật di truyền ứng dụng giải bài toán lập lịch
Tác giả Hoàng Chính Nghĩa
Người hướng dẫn Th.S Đỗ Văn Chiểu
Trường học Trường Đại học Dân lập Hải Phòng
Chuyên ngành Công nghệ Thông tin
Thể loại Đồ án tốt nghiệp
Năm xuất bản 2009
Thành phố Hải Phòng
Định dạng
Số trang 41
Dung lượng 780,36 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG I- TÌM HIỂU VỀ BÀI TOÁN LẬP LỊCH (5)
    • 1.1 Tìm hiểu chung (5)
    • 1.2 Các đặc tính của bài toán lập lịch (6)
    • 1.3 Bài Toán Lập Lịch Thời Khoá Biểu (6)
      • 1.3.1 Giới thiệu bài toán (6)
      • 1.3.2 Dữ liệu bài toán (6)
    • 1.4 Một số bước cơ bản để giải quyết bài toán lập lịch thời khoá biếu (7)
  • CHƯƠNG II-GIẢI THUẬT DI TRUYỀN (GAs) (8)
    • 2.1 Tìm hiểu chung về Gas (8)
    • 2.2. Các toán tử của giải thuật di truyền (12)
    • 2.3 Các tham số của giải thuật di truyền (13)
    • 2.4. Công thức của Giải thuật Di Truyền (14)
    • 2.5. Các thành phần của thuật giải di truyền (15)
      • 2.5.1 Khởi động quần thể ban đầu (15)
      • 2.5.2 Đánh giá cá thể (15)
      • 2.5.3 Toán tử lai ghép (16)
      • 2.5.4 Toán tử đột biến (16)
      • 2.5.5 Điều kiện kết thúc (17)
  • CHƯƠNG III- ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN XẾP LỊCH THỜI KHOÁ BIỂU (17)
    • 3.1 Giai đoạn 1 - xếp lịch học các lớp (18)
      • 3.1.1 Chọn mô hình cá thể (18)
      • 3.1.2 Tạo quần thể ban đầu (21)
      • 3.1.3 Độ thích nghi - chọn cá thể (22)
      • 3.1.4 Thuật toán lai ghép và đột biến (23)
    • 3.2 Giai đoạn 2 - xếp lịch học cho toàn bộ cơ sở (23)
      • 3.2.1 Chọn mô hình cá thể (23)
      • 3.2.2 Tạo quần thể ban đầu (25)
      • 3.2.3 Độ thích nghi - chọn cá thể (25)
      • 3.2.4 Thuật toán lai ghép và đột biến (26)
      • 3.2.5 Chọn điểm dừng thuật toán (26)
    • CHƯƠNG 4- THIẾT KẾ HỆ THỐNG LẬP LỊCH THỜI KHÓA BIỂU (0)
      • 4.1 Thiết kế cơ sở dữ liệu bài toán (27)
      • 4.2 Các đối tƣợng của lịch học (28)
      • 4.3 Biểu diễn nhiễm sắc thể (28)
      • 4.4 Các tham số của giải thuật di truyền (30)
        • 4.4.1 Phép lai ghép (30)
        • 4.4.2 Phép đột biến (33)
      • 4.6 Độ thích nghi (34)
      • 4.7 Chương trình thực nghiệm (37)

Nội dung

TÌM HIỂU VỀ BÀI TOÁN LẬP LỊCH

Tìm hiểu chung

Lập lịch là bài toán tìm kiếm chuỗi tối ưu để thực hiện các hoạt động dưới ràng buộc cần thỏa mãn Mục tiêu của người lập lịch là tối đa hóa việc sử dụng tài nguyên và tối thiểu hóa thời gian hoàn thành Tuy nhiên, bài toán này rất khó giải quyết Hiện nay, có nhiều kỹ thuật phát triển để giải quyết vấn đề lập lịch, bao gồm các phương pháp trí tuệ nhân tạo như hệ thống tri thức cơ sở, bài toán thỏa mãn ràng buộc, hệ chuyên gia, mạng nơron, cùng với các phương pháp nghiên cứu hoạt động như 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.

Các đặc tính của bài toán lập lịch

Tà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ất

Mụ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ãn

Bài Toán Lập Lịch Thời Khoá Biểu

Bài toán sắp xếp thời khoá biểu cho một trường đại học với nhiều cơ sở khác nhau yêu cầu tổ chức lịch học cho các lớp tại các phòng ở mỗi địa điểm Mục tiêu là tạo ra một lịch học vừa phù hợp vừa tiện dụng nhất cho sinh viên và giảng viên.

 Danh sách học phần học và các lớp trong học kỳ

 Danh sách môn học và số tiết

 Bảng phân công giáo viên giảng 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ọc

 Bảng yêu cầu ràng buộc của phòng với lịch sử dụng phòng đó

Một số bước cơ bản để giải quyết bài toán lập lịch thời khoá biếu

Bước đầu tiên là khởi tạo dữ liệu cho thời khóa biểu mới Tiếp theo, bạn cần nhập và điều chỉnh dữ liệu gốc của thời khóa biểu Cuối cùng, hãy nhập, sửa và điều chỉnh các ràng buộc chính của thời khóa biểu để đảm bảo tính chính xác và hiệu quả.

Các ràng buộc chính của thời khóa biểu là tập hợp dữ liệu quan trọng, có vai trò định hình và cấu trúc thời khóa biểu Đây là những lệnh thiết yếu trong bài toán và phần mềm quản lý 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à dữ liệu quan trọng và phức tạp nhất trong mọi thời khóa biểu, xác định rõ giáo viên dạy lớp nào, môn học nào và số tiết dạy trong tuần Để xây dựng thời khóa biểu, cần thực hiện các bước chuẩn bị và xếp tự động thời khóa biểu.

Bước 8 Hoàn thiện thời khóa biểu (sử dụng RAD) Bước 9 In ấn TKB

Bước 10 Tổng hợp, thống kê và truy vấn thông tin thời khóa biểu

THUẬT DI TRUYỀN (GAs)

Tìm hiểu chung về Gas

Thuật toán di truyền (genetic algorithms) là một phương pháp mô phỏng quá trình chọn lọc tự nhiên, giúp giải quyết các bài toán bằng cách tái tạo sự tiến hóa của sinh vật dựa trên thuyết tiến hóa của Darwin Bắt đầu từ một tập hợp các giải pháp tiềm năng, GA tìm kiếm trong không gian giải pháp bằng cách tạo ra các giải pháp mới tốt hơn thông qua các quá trình chọn lọc, lai ghép và đột biến Quá trình này diễn ra qua nhiều thế hệ, trong đó các giải pháp tốt được duy trì và phát triển, trong khi các giải pháp kém hơn sẽ bị loại bỏ.

Trong thuật toán di truyền (GA), các biến của bài toán được mã hóa thành chuỗi tương tự như nhiễm sắc thể tự nhiên, với mỗi chuỗi đại diện cho một giải pháp khả thi GA áp dụng các toán tử được sinh ra từ quá trình chọn lọc tự nhiên trên một quần thể chuỗi nhị phân, nhằm khám phá các khoảng tham số khác nhau qua các thế hệ Thuật toán này định hướng tìm kiếm vào những khu vực có khả năng cao để cải thiện hiệu suất Bốn quy luật cơ bản của thuật toán di truyền bao gồm lai ghép, đột biến, sinh sản và chọn lọc tự nhiên.

Quá trình lai ghép, hay còn gọi là phép lai, là quá trình kết hợp một hoặc nhiều đoạn gen từ hai nhiễm sắc thể cha và mẹ để tạo ra nhiễm sắc thể mới, mang đặc tính của cả hai bên.

Phép lai này có thể mô tả nhƣ sau:

Chọn ngẫu nhiên hai hoặc nhiều cá thể trong quần thể với chuỗi nhiễm sắc thể của cha và mẹ có chiều dài m Tạo ngẫu nhiên một con số từ 1 đến m-1 để xác định điểm lai, chia hai chuỗi nhiễm sắc thể thành hai nhóm con m1 và m2 Hai chuỗi nhiễm sắc thể con sẽ là m11+m22 và m21+m12, sau đó được đưa vào quần thể để tiếp tục quá trình tiến hóa.

Quá trình đột biến là một phần quan trọng trong tiến hóa, xảy ra khi một hoặc nhiều tính trạng không được thừa hưởng từ hai chuỗi nhiễm sắc thể của cha mẹ Xác suất xảy ra phép đột biến thấp hơn nhiều so với xác suất của phép lai Đột biến có thể được mô tả bằng cách chọn ngẫu nhiên một số k từ khoảng 1 ≥ k ≥ m.

-Thay đổi giá trị của gen thứ k -Đƣa nhiễm sắc thể con vào quần thể để tham gia quá trình tiến hóa tiếp theo

Phép tái sinh là quá trình sao chép các cá thể dựa trên độ thích nghi của chúng Độ thích nghi được định nghĩa là hàm gán giá trị thực cho từng cá thể trong quần thể Quá trình này có thể được mô phỏng một cách cụ thể.

Để tính độ thích nghi của từng cá thể trong quần thể, ta lập bảng cộng dồn các giá trị thích nghi theo thứ tự gán cho từng cá thể, từ đó xác định tổng độ thích nghi Giả sử quần thể có n cá thể, độ thích nghi của cá thể thứ i được ký hiệu là Fi, và tổng dồn thứ i là Ft Tổng độ thích nghi toàn bộ quần thể được ký hiệu là Fm Cuối cùng, tạo một số ngẫu nhiên F có giá trị trong khoảng từ 0 đến Fm.

-Chọn cá thể k đầu tiên thỏa mãn F ≥ Ft đƣa vào quần thể của thế hệ mới

Phép chọn: là quá trình loại bỏ các cá thể xấu và để lại những cá thể tốt

Phép chọn đƣợc mô tả nhƣ sau:

- Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần

- Loại bỏ các cá thể cuối dãy, chỉ để lại n cá thể tốt nhất

Cấu trúc thuật giải di truyền tổng quát

Khởi tạo P(t) Tính độ thích nghi cho các cá thể thuộc P(t);

Khi (điều kiện dừng chƣa thỏa) lặp t = t + 1;

Lai P(t) Đột biến P(t) Hết lặp

Thoả điều kiện dừng Đột biến Lai ghép Chọn lọc Đánh giá độ thích nghi

Sau đây là những nguyên tắc cơ bản thực hiện giải thuật di truyền GAs:

B1: Khởi tạo và mã hóa một quần thể ngẫu nhiên của NST Đó gọi là “quần thể hiện tại”

B2: Đánh giá độ thích nghi của mỗi NST trong quần thể hiện tại

B3: Tạo ra thế hệ trung gian bằng cách chọn lọc các nhiễm sắc thể trong quần thể hiện tại dựa trên độ thích nghi, từ đó hình thành cha mẹ cho các thế hệ tiếp theo.

B4: Sử dụng toán tử lai ghép và nghịch đảo cho các cặp hoặc NST đơn trong thế hệ trung gian sẽ tạo ra một thế hệ NST mới, hình thành quần thể hiện tại.

Lặp lại các bước 2-4 cho đến khi một giải pháp phù hợp được tìm thấy.

Các toán tử của giải thuật di truyền

Toán tử chọn lọc trong thuật toán di truyền bao gồm nhiều phương pháp như chọn lọc dựa trên độ thích nghi, sự xếp hạng, sự cạnh tranh và chọn lọc hướng không gian Bên cạnh đó, toán tử di cư cũng đóng vai trò quan trọng trong quá trình tối ưu hóa.

Mutation operators and crossover operators are essential components in genetic algorithms Crossover can be categorized into several types: one-point crossover, which involves exchanging genetic material at a single point; two-point crossover, where two points are selected for the exchange; N-point crossover, which generalizes this concept to multiple points; and uniform crossover, where genes are exchanged based on a fixed probability.

Các tham số của giải thuật di truyền

Xác suất lai ghép là chỉ số thể hiện tần suất thực hiện quá trình lai ghép Nếu không có lai ghép, cá thể con sẽ hoàn toàn giống với cá thể "cha mẹ" Ngược lại, khi xác suất lai ghép đạt 100%, tất cả cá thể con sẽ được hình thành thông qua quá trình lai ghép.

Xác suất đột biến là tham số quan trọng cho biết tần suất xảy ra đột biến trong nhiễm sắc thể Nếu không có đột biến, thế hệ con được tạo ra sau giai đoạn lai ghép sẽ giữ nguyên cấu trúc Ngược lại, một hoặc nhiều phần của nhiễm sắc thể có thể bị thay đổi Khi xác suất đột biến đạt 100%, toàn bộ nhiễm sắc thể sẽ bị biến đổi, trong khi nếu tham số này là 0%, sẽ không có sự thay đổi nào xảy ra.

Kích thước quần thể: là tham số cho biết có bao nhiêu cá thể (NST) trong

Kích thước quần thể có ảnh hưởng lớn đến khả năng lai ghép Nếu quần thể quá nhỏ, khả năng thực hiện lai ghép sẽ giảm, dẫn đến việc chỉ có một vùng tìm kiếm hạn chế được khảo sát Ngược lại, quần thể quá lớn cũng không hiệu quả, vì nó có thể làm chậm quá trình giải quyết vấn đề.

Công thức của Giải thuật Di Truyền

Tính độ thích nghi eval(vi) của mỗI nhiễm sắc thể vi(i=1… kích thước quần thể) với f(vi) là hàm mục tiêu

Tìm tổng giá trị thích nghi của quần thể

Tính xác xuất chọn Pi cho mỗI nhiễm sắc thể vi

Tính xác suất tích luỹ pi cho mỗi nhiễm sắc thể Pi

Tiến trình chọn lọc diễn ra thông qua việc quay bánh xe rulet kích thước quần thể Mỗi lần, một nhiễm sắc thể được chọn từ quần thể hiện tại và đưa vào quần thể mới.

Phát sinh một số ngẫu nhiên r trong khoảng [0, 1]

Nếu r < q1thì chọn nhiễm sắc thể v1, ngƣợc lại chọn nhiễm sắc thể vi (2

≤ i ≤ kích thước quần thể) sao cho qi-1 < r ≤ qi

Các thành phần của thuật giải di truyền

Quần thể đầu tiên trong thuật giải di truyền là điểm khởi đầu cho quá trình tiến hóa, bao gồm tất cả các giá trị thô ban đầu Tùy thuộc vào từng bài toán, cách khởi động sẽ khác nhau Trước khi áp dụng thuật giải di truyền, cần xác định rõ nhiễm sắc thể và cá thể, vì đây thường là kết quả cuối cùng Phân tích sẽ dựa trên kết quả này, điều này là cơ bản nhất.

Việc lựa chọn cá thể phụ thuộc vào kết quả và mục đích của vấn đề, dựa trên mức độ thích nghi của cá thể và những khó khăn mà chúng gặp phải Mỗi vấn đề nhỏ sẽ được gán một giá trị điểm thích nghi, và kết quả đánh giá sẽ là tổng các điểm này Cá thể tốt nhất sẽ có số điểm thấp nhất hoặc lớn nhất.

Theo thuyết tiến hóa của Darwin, những nhiễm sắc thể ưu việt sẽ sống sót và sinh ra thế hệ con cái mới Có nhiều phương pháp để lựa chọn những nhiễm sắc thể tốt nhất.

1) Chọn lọc Roulette (Roulette Wheel Selection)

2) Chọn lọc xếp hạng (Rank Selection)

3) Chọn lọc cạnh tranh (Tournament Selection)

Lai ghép là phương pháp quan trọng nhằm nâng cao kết quả cá thể, ảnh hưởng đến tốc độ hội tụ của quá trình Tốc độ này phụ thuộc vào cách tổ chức và phân bố các nhiễm sắc thể, từ đó xác định xác suất lai ghép Dưới đây là một số phương pháp lai ghép phổ biến trong kỹ thuật di truyền.

1) Lai ghép ánh xạ từng phần (PMX Partial Mapped Crossover)

2) Lai ghép có trật tự (OX Order Crossover)

3) Lai ghép dựa trên vị trí (Position Based Crossover)

4) Lai ghép dựa trên thứ tự (Order Base Crossover)

5) Lai ghép có chu trình (CX Cycle Crossover)

6) Lai ghép thứ tự tuyến tính (LOX Linear Order Crossover)

Toán tử đột biến, tương tự như lai ghép, có khả năng tăng nhanh quá trình hội tụ nhưng cũng có thể gây ra sự thay đổi đột ngột và không hiệu quả nếu không thành công Việc đánh giá phương pháp đột biến nào là tốt nhất là điều khó khăn, vì có nhiều phương pháp từ đơn giản đến phức tạp Do đó, người ta thường lựa chọn một trong những phương pháp phổ biến sau đây.

1) Đột biến đảo ngƣợc (Inversion Mutation)

2) Đột biến chèn (Insertion Mutation)

3) Đột biến thay thế (Displacement Mutation)

4) Đột biến tương hỗ (Reciprocal Exchange Mutation)

5) Đột biến chuyển dịch (Shift Mutation)

Quá trình tiến hóa quần thể có thể dẫn đến nhiều kết quả khác nhau, tùy thuộc vào cách giải quyết vấn đề khi đạt đến yêu cầu nhất định Một số trường hợp phổ biến bao gồm:

-Kết thúc theo kết quả: một khi đạt đến mức giá trị yêu cầu thì chấm dứt ngay quá trình thực hiện

Kết thúc dựa vào số thế hệ là phương pháp chọn số thế hệ cụ thể, trong đó quá trình sẽ dừng lại ngay khi đạt đến số thế hệ đã được quy định trước, bất kể kết quả ra sao.

-Tính theo thời gian: không cần biết đã bao nhiêu thế hệ hay kết quả nào, chỉ dựa vào số giờ qui định mà kết thúc

Tổ hợp là việc áp dụng nhiều phương án khác nhau để giải quyết vấn đề, ví dụ như chạy theo số thế hệ và sau đó đánh giá dựa trên kết quả, hoặc thực hiện theo cách ngược lại.

ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN XẾP LỊCH THỜI KHOÁ BIỂU

Giai đoạn 1 - xếp lịch học các lớp

Lịch học của một lớp bao gồm hai thành phần chính: các môn học và giờ học trong tuần Việc kết hợp ngẫu nhiên các môn học với giờ học tạo ra nhiều lịch học khác nhau cho mỗi lớp Do đó, mỗi lịch học được xem như một cá thể trong thuật toán di truyền.

Trong hai thành phần, giờ học là yếu tố ổn định hơn về số lượng và giá trị, do đó, môn học được chọn làm đơn vị nhiễm sắc thể trong cá thể Sự biến đổi của số lượng môn học theo từng lớp học tương tự như số lượng nhiễm sắc thể, không nhất thiết phải cố định hay bằng nhau Hơn nữa, số tiết học có thể thay đổi, trong khi giá trị của các giờ học lại có thể xác định rõ ràng và nhanh chóng.

Mô hình cá thể trong lịch lớp

Thay vì chọn ngẫu nhiên môn học, chúng ta sẽ chọn ngẫu nhiên tiết học theo môn, với môn học là đơn vị trong cá thể Điều này có nghĩa là, khi thiết lập nhiễm sắc thể cho một cá thể trong mô hình xếp lịch lớp, thứ tự các môn học sẽ được giữ nguyên, chỉ thay đổi giá trị tiết học nếu có lai ghép hay đột biến Đối với những môn học có nhiều chứng chỉ/học phần trong tuần, chúng ta sẽ đưa chúng vào cá thể với nhiễm sắc thể tương ứng như các môn học bình thường khác Khi đọc thông tin, chỉ cần chú ý một chút để đảm bảo tính chính xác.

Ví dụ: Giả sử có danh sách 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

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

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 D

Mỗi nhiễm sắc thể đại diện cho một giá trị số nguyên, tương ứng với vị trí tiết học bắt đầu của môn học Giá trị này nằm trong khoảng từ 0 đến 35, phản ánh thứ tự các tiết học trong tuần, được sắp xếp theo vị trí liên tục của các ngày, giống như cấu trúc mảng một chiều Các tiết học tiếp theo sẽ có giá trị liên tục, tùy thuộc vào số lượng tiết học của môn học mà chúng ta đang lưu trữ.

Giá trị các tiết học

Thứ hai Thứ ba Thứ bảy

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

Môn học a bắt đầu từ tiết 0 với 3 tiết cần học, môn học b bắt đầu từ tiết 3 với 2 tiết cần học, môn học c bắt đầu từ tiết 8 với 4 tiết cần học, và môn học d bắt đầu từ tiết 12 với 3 tiết cần học Phân bố các môn học trên lịch học được sắp xếp như trên.

Mỗi cá thể trong hệ thống tương ứng với một lịch học thực tế của lớp, do đó cần đảm bảo tính chính xác về số tiết học, số môn học và tránh sự chồng chéo thời gian giữa các môn Để giải quyết vấn đề này, chúng ta sử dụng một tham biến để đánh dấu các tiết học đã được lên lịch, giúp các môn học sau không bị sắp xếp trùng vào những vị trí này và được đưa vào các vị trí khác Mỗi lịch học sẽ có sự sắp xếp riêng biệt.

3.1.2 Tạo quần thể ban đầu

Trước khi bắt đầu tạo quần thể ban đầu, cần chuẩn bị dữ liệu đầy đủ cho quá trình thực thi, từ khởi tạo đến khi có kết quả, bao gồm tất cả thông tin cần thiết của lớp được chọn.

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 và số chứng chỉ từng môn

Giống như các cá thể đã được mô tả, một loạt các cá thể được tạo ra và xem như quần thể ban đầu trong mô hình thuật giải di truyền cho việc xếp lịch lớp Sau khi quần thể đạt đủ số lượng, bước tiếp theo là đánh giá quần thể để kiểm tra độ thích nghi tốt nhất hiện có.

3.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:

Khi phân công giảng dạy, cần đảm bảo rằng giáo viên có thời gian trống cho môn học và buổi học cụ thể Điều này đòi hỏi phải kiểm tra các ràng buộc về tiết học tương ứng với từng môn trong lịch học Ngoài ra, cũng cần xem xét giờ học của lớp, vì có thể có quy định về thời gian học, chẳng hạn như không học ba tiết đầu vào thứ Hai.

Cuối cùng, cần kiểm tra sự chồng chéo giờ học của các môn học để tránh sai lệch trong quá trình lai ghép và đột biến Việc này rất quan trọng, vì nó giúp đảm bảo tính chính xác trong lịch học Chúng ta nên sử dụng một biến để lưu trữ tất cả giờ học của các môn, tương tự như cách quản lý ràng buộc giáo viên và lớp học Mỗi vấn đề sẽ có một biến riêng để lưu trữ giờ làm việc, nhằm tránh xung đột với các tiết học đã được ghi nhận cho giáo viên hoặc lớp học tương ứng.

Có nhiều phương pháp để lựa chọn một cá thể tốt, trong đó có thể tính theo độ thích nghi cao nhất hoặc thấp nhất Thông thường, phương pháp được ưa chuộng là chọn cách tính tốt nhất Trong bài viết này, chúng ta cũng sẽ áp dụng cách tính tốt nhất, tức là sắp xếp theo giá trị giảm dần của mức phạt dựa trên độ thích nghi.

3.1.4 Thuật toán lai ghép và đột biến

Thuật toán lai ghép sử dụng phương pháp lai ghép đoạn, trong đó một đoạn ngẫu nhiên từ nhiễm sắc thể cha được kết hợp với phần còn lại từ nhiễm sắc thể mẹ.

Thuật toán đột biến thực hiện việc hoán vị ngẫu nhiên hai nhiễm sắc thể trong cá thể Người dùng có thể điều chỉnh các thông số xác suất liên quan đến đột biến và lai ghép trong quá trình thực thi chương trình.

Phần này thực hiện cho tất cả các lớp trong cơ sở, với mỗi lớp có một file lưu trữ lịch lớp dưới dạng các nhiễm sắc thể trong quần thể Ngoài việc kiểm tra, các file này còn cung cấp thông tin để chạy lịch cơ sở trong tương lai.

Giai đoạn 2 - xếp lịch học cho toàn bộ cơ sở

Lịch học tại cơ sở bao gồm tất cả các lịch học của các lớp hiện có Mỗi lớp có một lịch học rõ ràng, tạo thành lịch cơ sở Dựa vào giai đoạn đầu, mỗi lớp đã tạo ra nhiều lịch học, và lớp học được chọn làm đơn vị của nhiễm sắc thể trong mô hình thuật toán di truyền cho việc xếp lịch Lịch cơ sở được xem như cá thể, với mỗi nhiễm sắc thể đại diện cho một chỉ số trong file lưu trữ thông tin của lịch lớp Phạm vi giá trị các nhiễm sắc thể có thể khác nhau, nhưng luôn được xác định rõ ràng thông qua kích thước file tương ứng của lớp.

Mô hình cá thể trong lịch cơ sở

Cá thể lịch cơ sở cần trải qua giai đoạn kiểm tra ban đầu để đạt được dạng đúng Việc này bao gồm việc kiểm tra sự phù hợp giữa các lớp học và phòng trong cơ sở, không chỉ đơn thuần là chọn phòng cho lớp Cần xem xét kích thước hiện có của phòng để đảm bảo tính khả thi Nếu không thực hiện được kiểm tra này, quá trình sẽ dừng lại tại đây.

3.2.2 Tạo quần thể ban đầu

Quần thể khởi đầu bao gồm các cá thể được tạo ra theo mô hình đã nêu, với điều kiện thông tin các lớp học phải được chọn trong cùng một buổi học thuộc cơ sở và có file lịch lớp đầy đủ Kích thước của cá thể tương ứng với số lớp hiện có, do đó độ dài hay ngắn phụ thuộc vào cơ sở, tương tự như lịch lớp mà chiều dài được tính theo số môn học hiện có.

Công việc này sẽ tiêu tốn nhiều thời gian do cần đọc file để kiểm tra, nhưng quần thể sẽ mang lại kết quả chính xác nhất trong việc áp dụng bài toán vào thuật giải di truyền.

3.2.3 Độ thích nghi - chọn cá thể

Trong giai đoạn hội tụ cá thể trong quần thể, việc đánh giá cơ sở phụ thuộc vào số lớp, số giờ học và số phòng học Thay vì chọn phòng lớn nhất cho lớp lớn nhất, chúng ta áp dụng phương pháp xếp lớp và phòng theo thứ tự tăng dần Điều này giúp đảm bảo rằng lớp học sẽ được đặt ở một phòng phù hợp nhất với sức chứa hiện có, mặc dù có thể tốn thời gian hơn, nhưng thực tế lại hợp lý hơn.

Để giải quyết vấn đề trùng phòng học giữa các lớp, chúng ta sẽ áp dụng một tham biến để ghi nhận tất cả các giờ học của từng phòng khi có lớp vào học.

Đánh giá lại ràng buộc lịch giáo viên, lần này tập trung vào việc trùng giờ dạy ở các lớp cùng một thời điểm Chúng ta sẽ sử dụng một tham biến lịch dạy cho mỗi giáo viên để ghi nhận và ngăn chặn tình trạng trùng giờ.

Tổng các giá trị thích nghi của cá thể được xác định qua các lần kiểm tra tương ứng, phản ánh độ thích nghi của nó Tương tự như trong lịch lớp, cá thể được chọn là cá thể tốt nhất khi giá trị thích nghi đạt mức đỉnh là 0.

3.2.4 Thuật toán lai ghép và đột biến

Việc tái sử dụng phần xếp lịch lớp thông qua việc chọn cá thể dựa trên độ thích nghi, lai ghép ngẫu nhiên và đột biến hoán vị điểm không gây ảnh hưởng đến quá trình thực hiện xếp lịch cơ sở Do dữ liệu, yêu cầu và cấu trúc thuật toán tương đồng, việc này giúp tối ưu hóa hiệu suất mà vẫn đảm bảo tính chính xác trong xếp lịch.

Thời gian thực thi cho công việc xếp lịch lớp sẽ lâu hơn do số lượng và phạm vi ràng buộc lớn, cùng với việc cần đọc dữ liệu từ các file Tuy nhiên, về mặt hoạt động, hai công việc này không có sự khác biệt.

3.2.5 Chọn điểm dừng thuật toán Đã đƣợc nói ở trong từng giai đoạn của các phần áp dụng thuật giải di truyền vào bài toán, điểm dừng thuật toán dựa trên độ thích nghi của nó Một số bài toán chọn điểm dừng theo số thế hệ, hoặc dựa trên tính tương đối của kết quả, nhƣng với bài toán này cần có một kết thúc tuyệt đối tốt nhất, mặt dù số thế hệ vẫn phải được chọn trước ngay từ đầu Vì tính chất yêu cầu trong bài toán này là không bị sai lệch

Nếu trong quá trình thực thi qua các giai đoạn, chỉ cần một kết quả không đạt đến điểm dừng, xem nhƣ bài toán sẽ không có kết quả.

THIẾT KẾ HỆ THỐNG LẬP LỊCH THỜI KHÓA BIỂU

4.1 Thiết kế cơ sở dữ liệu bài toán

Khi lập lịch lớp học, cần xem xét nhiều yếu tố như số lượng giảng viên, học sinh, số lớp học, phòng học, kích cỡ và trang thiết bị trong lớp (máy tính, máy chiếu, v.v.) Những yêu cầu này có thể được phân loại theo mức độ quan trọng, trong đó có các yêu cầu bắt buộc; nếu vi phạm bất kỳ yêu cầu nào trong số này, lịch học sẽ trở nên vô hiệu và không khả thi.

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

- Không giảng viên 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

Một số yêu cầu không bắt buộc nếu vi phạm lịch học vẫn khả thi:

- Thời gian học của lớp đƣợc ƣu tiên cho giảng viên

- Phòng học có thể do giảng viên chọn

- Phân bổ (thời gian hoặc không gian) của các lớp học dành cho các nhóm sinh viên hoặc giảng viên.

Các yêu cầu của khóa học có thể là bắt buộc hoặc không bắt buộc, tùy thuộc vào hoàn cảnh cụ thể Hệ thống lập lịch thời khóa biểu này chỉ tập trung vào những yêu cầu bắt buộc.

4.2 Các đối tƣợng của lịch học

Phần giảng viên có ID( chỉ danh) và tên của giảng viên Nó cũng chứa danh sách các lớp mà giảng viên đó dạy

Phần nhóm sinh viên bao gồm danh tính và tên của nhóm, cùng với số lượng sinh viên trong nhóm Ngoài ra, nó còn liệt kê các lớp học mà nhóm tham gia.

Phần thông tin về phòng học bao gồm ID, tên phòng, số lượng chỗ ngồi và máy tính (nếu có) Mỗi chỗ ngồi trong phòng học có thể được trang bị một máy tính, nếu phòng có máy tính Các ID được tạo ra một cách tự động và nội bộ.

Phần khóa học có ID và tên khóa học

Phần giới thiệu lớp học nêu rõ thông tin về khóa học, giảng viên và danh sách sinh viên tham gia Nó cũng chỉ ra số lượng chỗ ngồi cần thiết cho nhóm sinh viên, số lượng máy tính trong lớp (nếu có) và thời gian diễn ra lớp học (tính bằng giờ).

4.3 Biểu diễn nhiễm sắc thể Để trình bày một nhiễm sắc thể ta cần một slot cho mỗt phòng học hàng ngày trong thời khóa biểu Ngoài ra, chúng ta khẳng định rằng không thể bắt đầu các lớp học trước 7 giờ sáng và nên kết thúc trước hoặc vào lúc 7 đêm (tổng là 12giờ) và ngày làm việc là từ thứ Hai đến thứ Sáu (tổng là 5 ngày).Vì vậy, chúng ta cần điều chỉnh số lớp học là (12*5*số của phòng học) Các slot sau đƣợc kế thừa từ các slot trước bởi vì trong quá trình thực hiện thuật toán chúng ta cho phép nhiều lớp học tại một thời điểm slot Ta dùng thêm một ánh xạ là một bảng băm để lấy slot tại thời điểm lớp học bắt đầu( vị trí của nó theo vectơ) từ địa chỉ đối tƣợng của lớp Mỗi giờ của một lớp học có mục nhập riêng biệt trong véc tơ, nhƣng chỉ có một mục nhập cho mỗi lớp học trong ánh xạ bảng băm

Nhiễm sắc thể với số lƣợng là 100 đƣợc biểu diễn bằng một lớp Schedule và nó được lưu trữ trong 2 thuộc tính

Các khe thời gian, mỗi khe sẽ biểu diễn một giờ trong một lớp học

Bảng lớp dành cho nhiễm sắc thể dược dùng để quyết định slot đầu tiên của lớp

Hash_map<CourseClass*, int> _classes; Đồng thời, nhiễm sắc thể lưu trữ các giá trị phù hợp và tham số thông qua các thao tác của thuật toán.

Những giá trị phù hợp được lưu trữ tại:

//Các cờ của sự thỏa các rang buộc lớp

4.4 Các tham số của giải thuật di truyền

Số điểm lai ghép của các bảng lớp cha mẹ int_numberOfCrossoverPoints= 2 ;

Số lượng những lớp mà được di chuyển ngẫu nhiên bởi thao tác đột biến đơn giản int_mutationSize= 2 ;

Xác suất lai ghép sẽ xảy ra int_crossoverProbability= 80% ;

Xác suất đột biến sẽ xảy ra int_mutationProbability= 3% ; 4.4.1 Phép lai ghép

Phép lai ghép là quá trình kết hợp một hoặc nhiều đoạn gen từ hai nhiễm sắc thể cha và mẹ, tạo ra nhiễm sắc thể mới mang đặc tính của cả hai nguồn gen.

Trong hệ thống này, thao tác lai ghép ban đầu kiểm tra một số ngẫu nhiên với xác suất lai ghép; nếu số này lớn hơn xác suất, quá trình lai ghép sẽ được thực hiện, tạo ra một nhiễm sắc thể đầu tiên Việc lựa chọn các điểm lai ghép diễn ra ngẫu nhiên, với điều kiện if( rand() % 100 > _crossoverProbability ) dẫn đến việc trả về một lịch trình mới.

Schedule* n = new Schedule( *this, true ); int size = (int)_classes.size(); vector cp( size ); for( int i = _numberOfCrossoverPoints; i > 0; i ) { while( 1 ) { int p = rand() % size; if( !cp[ p ] ) { cp[ p ] = true; break;

The crossover process combines data from the hash tables of two parent chromosomes, generating a vector of slots based on the new hash table's content The 'Split' crossover divides both parent chromosomes' hash tables into randomly sized segments, with the number of segments determined by the number of crossover points (plus one) according to the chromosome parameters Subsequently, it alternately copies segments from the parent chromosomes into new structures, utilizing iterators to traverse the hash maps.

// Chèn lớp từ nst cha me đầu tiên đến bảng nst mới n->_classes.insert( pair( ( *it1 ).first, ( *it1 ).second ) );

All slots of the class are duplicated using a loop that iterates from the duration of the class down to zero, pushing the class into the corresponding slots Additionally, the class from the second-generation parent is inserted into the new table of classes.

// Tất cả các slot của lớp được sao chép for( int i = ( *it2 ).first->GetDuration() - 1; i >= 0; i ) n->_slots[ ( *it2 ).second + i ].push_back( ( *it2 ).first ); }

// Số điểm lai ghép if( cp[ i ] ) first = !first; it1++; it2++;

Phép đột biến xảy ra khi một hoặc nhiều tình trạng của con không được thừa hưởng từ hai chuỗi nhiễm sắc thể của cha mẹ Xác suất xảy ra phép đột biến thấp hơn nhiều so với xác suất xảy ra phép lai ghép.

Trong hệ thống này thao tác đột biến ban đầu kiểm tra xác suất đột biến với một số bất kì

Sau khi thực hiện thao tác đột biến, một lớp ngẫu nhiên được tạo ra và nhiễm sắc thể sẽ được di chuyển đến một slot ngẫu nhiên khác Số lớp học đó sẽ được chuyển vào một thao tác đơn lẻ, được xác định bởi kích thước đột biến trong các tham số của nhiễm sắc thể.

The code snippet demonstrates a method for randomly selecting a class schedule by determining the number of available rooms and the duration of the class It generates a random day, room, and time slot within the constraints of the total number of days and hours in a day The final position for the class is calculated using these random values, ensuring a unique schedule for each class.

// Di chuyển slot for( int i = dur - 1; i >= 0; i ) {

// Lo ại b ỏ giờ các lớp từ slot thời gian hiện thời list& cl = _slots[ pos1 + i ]; for( list::iterator it = cl.begin(); it

{ if( *it == cc1 ) { cl.erase( it ); break;

// Di chuyển giờ lớp tới các slot thời gian mới

_slots.at( pos2 + i ).push_back( cc1 );

// Thay đổi đầu vào của bảng lớp để chỉ tới các slot (khe) thời gian mới

4.6 Độ thích nghi Đâ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

Ngày đăng: 04/07/2023, 10:31

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm