Tải bản đầy đủ (.pdf) (10 trang)

Đề xuất giải thuật di truyền giải bài toán xếp thời khóa biểu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (464.33 KB, 10 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>ĐẠI HỌC SÀI GÒN </b> <b>OF SAIGON UNIVERSITY </b>


Số 71 (05/2020) No. 71 (05/2020)


<i>Email: ; Website: />


<b>ĐỀ XUẤT GIẢI THUẬT DI TRUYỀN GIẢI BÀI TỐN </b>


<b>XẾP THỜI KHĨA BIỂU </b>



<i><b>Proposing a genetic algorithm to solve timetabling problem </b></i>



Nguyễn Hồ Thiên Đăng

(1)

<sub>, Nguyễn Thị Hồng Bích</sub>

(2)

<sub>, </sub>



Thái Minh Tân

(3)

, TS. Phan Tấn Quốc

(4)



(1)<sub>Học viên cao học Trường Đại học Sài Gịn</sub>
(2)<sub>Trường THPT Ngơ Quyền, Q.7, TP.HCM</sub>
(3)<sub>Cơng ty TMA Solutions, TP.HCM</sub>
(4) <sub>Trường Đại học Sài Gịn</sub>


<b>TĨM TẮT </b>


Việc xếp thời khóa biểu hợp lý là bài tốn tối ưu có nhiều ứng dụng trong thực tế. Được phân loại thuộc
lớp NP-complete và đã được nghiên cứu rộng rãi trong hàng chục năm qua với các hướng tiếp cận như
quy hoạch toán học, tối ưu dựa trên ràng buộc, tối ưu đa mục tiêu, giải thuật tham lam, giải thuật
metaheuristic.v.v. Nghiên cứu này đề xuất sử dụng giải thuật di truyền để giải bài tốn xếp thời khóa
biểu trường phổ thơng, một loại bài tốn xếp thời khóa biểu phổ biến. Nghiên cứu đã cài đặt và thí
nghiệm giải thuật đề xuất trên một số bộ dữ liệu thực tế. Kết quả thực nghiệm cho thấy giải thuật đề
xuất cho kết quả tốt hơn một số phần mềm hỗ trợ xếp thời khóa biểu cho các trường phổ thơng hiện nay
trên dựa trên trọng số một số ràng buộc của bài tốn.


<i><b>Từ khóa: thời khóa biểu, thời khóa biểu trường phổ thơng, giải thuật di truyền </b></i>


<b>ABSTRACT </b>


Timetabling problem is optimization problems that have many practical applications; this is the problem
of class NP-complete. Timetabling problem has been widely studied over the past decades with
approaches such as mathematical programming, constraint-based approaches, multiobjective
optimization, greedy algorithms, metaheuristic algorithms, etc. In this study, we propose a genetic
algorithm to solve a form of Timetabling problem that is the School Timetabling problem. The proposed
algorithm was conducted on some real data sets. Experimental results claim that our algorithm results in
better results than some of the current school Timetabling software based on some constraints of the
problem.


<i><b>Keywords: genetic algorithm, timetabling problem, school timetabling </b></i>


<b>1. Giới thiệu </b>



Bài toán xếp thời khóa biểu trường học


(timetabling problem) là tạo ra một lịch


phân công giảng dạy giữa người dạy và


người học trong một chu kỳ thời gian cố



định (thường là theo tuần) sao cho thỏa


mãn được nhiều ràng buộc nhất có thể của


bài tốn. Bài tốn xếp thời khóa biểu thuộc


lớp bài tốn tối ưu NP-complete [1].



Bài tốn xếp thời khóa biểu được biết



</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

đến rộng rãi với 3 dạng sau: bài tốn xếp


thời khóa biểu trường phổ thông (school


timetabling-STTP); bài tốn xếp thời khóa



biểu trường đại học (course


timetabling-CTTP); bài toán xếp lịch thi (examination


timetabling-ETTP) [1].



Đã có nhiều cơng trình nghiên cứu về


bài tốn xếp thời khóa biểu dựa trên các


hướng tiếp cận như giải thuật tô màu đồ thị,


tiếp cận dựa trên ràng buộc, quy hoạch toán


học, tối ưu đa mục tiêu, giải thuật tham lam


[2], giải thuật metaheuristic [3], [4], [5],


[6], [7].



Trong nghiên cứu này, chúng tôi đề


xuất một giải thuật metaheuristic dạng


quần thể là giải thuật di truyền để giải bài


tốn xếp thời khóa biểu trường phổ thơng


với hy vọng có thể khắc phục được bẩy tối


ưu cục bộ so với các metaheuristic dạng cá


thể khác.



<b>2. Bài tốn xếp thời khóa biểu phổ </b>


<b>thông </b>



<i><b>2.1. Một số khái niệm </b></i>



<i><b>Chu kỳ thời khóa biểu: </b></i>

chu kỳ thời



khóa biểu là số ngày mà thời khóa biểu cần


xếp lịch, tính từ thứ Hai đến thứ Bảy.




<i><b>Nhóm thời gian: </b></i>

nhóm thời gian là



tập hợp nhóm các tiết trong một chu kỳ


thời khóa biểu; buổi sáng từ tiết 1 đến tiết


5, buổi chiều từ tiết 6 đến tiết 8, sau 2 tiết


đầu của mỗi buổi học sẽ có giờ giải lao

<i>. </i>



Định dạng khuôn mẫu các buổi học thông


thường ở trường phổ thông hiện như sau:


từ thứ Hai đến thứ Sáu, mỗi buổi các lớp


học đủ 5 tiết; riêng thứ Bảy có thể học ít


hơn tuỳ theo tổng số tiết các môn cả tuần,


tổng số tiết này thay đổi tuỳ học kỳ và tuỳ


khối lớp.



<b>Giáo viên</b>

: các giáo viên có thể được



phân cơng làm công tác chủ nhiệm lớp,


giáo viên chủ nhiệm lớp nào thì phải được


phân cơng giảng dạy ít nhất một môn học



của lớp đó; các giáo viên có thể dạy mơn


học ngồi chun mơn chính, gọi là cơng


tác kiêm nhiệm.



<i><b>Lớp học: </b></i>

lớp học gồm tập các học



sinh học chung với nhau ở tất cả các môn


học.




Phạm vi bài tốn xếp thời khóa biểu đề


cập trong nghiên cứu này là các khối lớp


10, 11 và 12.



<b>Phòng học:</b>

với bài tốn xếp thời khóa



biểu ở trường phổ thơng, mỗi lớp được cấp


cố định một phịng học lý thuyết trong suốt


năm học; mỗi phịng học có thêm thơng tin


là phịng học lý thuyết hay phòng thực


hành, thực nghiệm.



<i><b>Mơn học: </b></i>

có thể gọi là mơn, mỗi khối



lớp trong một học kỳ có từ 13 đến 17 môn;


Môn ngữ văn, thể dục, quốc phòng phải


xếp tiết cặp và không xếp tiết 2-3 vì sau


tiết 2 là giờ giải lao; Mơn tốn, tiếng Anh,


Tin học cũng khuyến khích xếp tiết cặp.


Các môn đã xếp tiết cặp thì một buổi


khơng xếp q một cặp.



<i><b>Bảng phân công: </b></i>

bảng phân công



giảng dạy gồm một tập các phân công; mỗi


phân công bao gồm các thông tin về giáo


viên, lớp học, môn học, tổng số tiết môn


học trong tuần.



<i><b>2.2. Ràng buộc của bài tốn xếp thời </b></i>



<i><b>khóa biểu </b></i>



Ràng buộc của bài tốn xếp thời khóa


biểu được phân làm hai loại: ràng buộc


cứng (hard constraints) và ràng buộc mềm


(soft constraints).



<i>Ràng buộc cứng</i>

là các ràng buộc đã



được quy định trong các văn bản của ngành.


Ví dụ mơn học cần xếp có tiếp cặp, buổi


học của các lớp khơng có tiết lủng.v.v. Ràng


buộc cứng là loại ràng buộc, không thể vi


phạm, trừ trường hợp bất khả kháng.



<i>Ràng buộc mềm</i>

là các ràng buộc



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

để làm tăng chất lượng thời khóa biểu. Các


ràng buộc mềm cần được xếp thỏa mãn


càng nhiều càng tốt. Khi có nhiều ràng


buộc mềm thì độ ưu tiên giữa chúng cũng


là yếu tố cần xem xét.



<b>Ràng buộc cứng của bài tốn xếp </b>


<b>thời khóa biểu phổ thơng </b>



<i>Ràng buộc đụng độ giáo viên (1): </i>

các



phân cơng đối với cùng giáo viên thì khơng


xếp vào cùng vị trí tiết học.




<i>Ràng buộc đụng độ lớp học (2)</i>

: các



phân công đối với cùng lớp học thì khơng


xếp vào cùng vị trí tiết học.



<i>Ràng buộc đụng độ phòng học (3): </i>



mỗi phòng học chỉ được xếp vào nhiều


nhất một phân công tại một vị trí tiết học.


Việc đụng độ phịng học chỉ có thể xảy ra ở


các phịng thí nghiệm, thực hành, sân tập


thể dục.



<i>Ràng buộc về số tiết học liên tiếp tối </i>


<i>thiểu và số tiết học liên tiếp tối đa (4)</i>

:


thông số này là (1,2) đối với bài toán STTP


và đây cũng là điểm khác biệt so với bài


toán CTTP. Ở bài toán CTTP, số tiết học


liên tiếp tối thiểu, tối đa có thể là (2,k) với


2 ≤ k ≤ 6.



<i>Ràng buộc thời gian rảnh của giáo </i>



<i>viên, lớp học, phòng học (5): </i>

các phân



công không được vi phạm thời gian rảnh


của giáo viên, của lớp học, của phòng học.



<i>Ràng buộc về tính đầy đủ của phân </i>




<i>công (6): </i>

tất cả các phân công đều phải



được xếp thời khóa biểu. Nếu giải thuật


không xếp được tất cả phân công thì cần gỡ


dần các ràng buộc mềm và tiến hành lại việc


xếp thời khóa biểu. Một giải thuật xếp được


tất cả các phân công không đồng nghĩa giải


thuật đó sẽ tạo ra thời khóa biểu tốt.



<i>Ràng buộc về phân công xếp sẵn (7): </i>



tiết xếp sẵn là tiết được ưu tiên xếp trước


và mọi tiết khác xếp sau sẽ tránh các tiết


xếp sẵn này.



<i>Ràng buộc về các mơn học có tiết cặp </i>



<i>(8): </i>

một số môn học theo quy định bắt



buộc phải có ít nhất một tiết cặp để đáp


ứng yêu cầu về chuyên môn.



<i>Ràng buộc về mỗi môn học chỉ học </i>


<i>một lần trong một buổi tại mỗi lớp (9): </i>



trong một buổi học, một môn học chỉ có


thể xuất hiện nhiều nhất một lần (một tiết


lẻ hoặc tiết cặp).




<i>Ràng buộc tiết trống của lớp theo buổi </i>



<i>(10): </i>

tiết trống là tiết không bố trí dạy học



xen giữa các tiết học khác; thực tế thì thời


khóa biểu các lớp ở trường phổ thông cần


được xếp sao cho không có hiện tượng


trống tiết.



<i>Ràng buộc về tiết không xếp của giáo </i>



<i>viên (11): </i>

tiết không xếp là tiết theo quy



định của ngành, của cơ sở giáo dục; thời


khóa biểu của giáo viên cần xếp tránh các


tiết không xếp này, ví dụ ngày sinh hoạt


chuyên môn của giáo viên được xem là các


tiết không xếp.



<b>Ràng buộc mềm của bài tốn xếp </b>


<b>thời khóa biểu phổ thơng </b>



<i>Ràng buộc về lịch bận của giáo viên </i>



<i>(1): </i>

mỗi giáo viên có lịch bận riêng.



<i>Ràng buộc về học cách ngày (2): </i>

nên



xếp các môn học học cách ngày trong tuần.




<i>Ràng buộc về độ nén lịch dạy của giáo </i>



<i>viên (3): </i>

nên xếp lịch dạy của giáo viên sao



cho số buổi mà giáo viên đi dạy là ít nhất


có thể; gọi

<i>n</i>

là số buổi dạy của giáo viên


thì:

<i>n</i>

≤ số tiết trong tuần của giáo viên/5


+1.



<i>Ràng buộc về tiết trống của giáo viên </i>


<i>(4): mỗi buổi giáo viên có thể trống tiết tối </i>


<i>đa 1 lần (trống 1 tiết hoặc 2 tiết liên tục); </i>



trong một tuần số tiết trống của mỗi giáo


viên không vượt quá 3.



<i>Ràng buộc về số tiết dạy tối thiểu </i>



<i>trong một buổi của giáo viên (5)</i>

: mỗi giáo



</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<i>Ràng buộc về số tiết học tối thiểu </i>



<i>trong một buổi học của một lớp (6): </i>

số tiết



tối thiểu trong mỗi buổi học của một lớp là


2 tiết.



<i>Ràng buộc về số môn học tối đa </i>



<i>trong mỗi buổi (7): </i>

số môn học tối đa




trong mỗi buổi là 4; trường hợp bất khả


kháng có 5 mơn trong một buổi học thì 5


mơn học đó khơng cùng thuộc nhóm mơn


học xã hội (Văn, Sử, Địa, Giáo dục công


dân, Tiếng Anh).



<i>Ràng buộc về số tiết tối đa của một </i>


<i>giáo viên trong một lớp trong mỗi buổi (8): </i>



tránh xếp một giáo viên dạy một lớp nhiều


hơn 2 tiết/buổi học (không tính tiết sinh


hoạt chủ nhiệm). Trường hợp này có thể


xảy ra đối với các mơn học có nhiều hơn 2


tiết hoặc các giáo viên dạy lớp đó 2 mơn


học.



<i><b>2.3. Mơ hình hóa bài tốn xếp thời </b></i>


<i><b>khóa biểu </b></i>



Bài tốn xếp thời khóa biểu gồm các


yếu tố sau:



Tập

<i>P</i>

={

<i>p1</i>

,

<i>p2</i>

,…,

<i>p</i>

<i>m</i>

} gồm

<i>m</i>

tiết học,



tập

<i>T</i>

={

<i>t1</i>

,

<i>t2</i>

,…,

<i>t</i>

<i>n</i>

} gồm

<i>n</i>

giáo viên, ma



trận

<i>PT</i>

cho biết tiết rảnh của mỗi giáo


viên, trong đó

<i>PTij</i>

=1 nếu giáo viên

<i>t</i>

<i>i</i>

rảnh




tiết

<i>p</i>

<i>j</i>

<i>PTij</i>

=0 nếu ngược lại.



Tập

<i>C</i>

={

<i>c1</i>

,

<i>c2</i>

,…,

<i>c</i>

<i>h</i>

} gồm

<i>h</i>

lớp học,



ma trận

<i>PC</i>

cho biết tiết rảnh của lớp học,


trong đó

<i>PCij</i>

=1 nếu lớp học

<i>c</i>

<i>i</i>

rảnh tiết

<i>p</i>

<i>j</i>


<i>PCij</i>

=0 nếu ngược lại.



Tập

<i>R</i>

={

<i>r1</i>

,

<i>r2</i>

,...,

<i>r</i>

<i>k</i>

} gồm

<i>k</i>

phòng học,



ma trận

<i>PR</i>

cho biết tiết rảnh của phịng


học, trong đó

<i>PRij</i>

=1 nếu phòng học

<i>r</i>

<i>i</i>

rảnh



tiết

<i>p</i>

<i>j</i>

<i>PRij</i>

=0 nếu ngược lại.



Tập

<i>M</i>

={

<i>m1</i>

,

<i>m2</i>

,…,

<i>m</i>

<i>y</i>

} gồm

<i>y</i>

môn



học, tập

<i>PM</i>

gồm

<i>y</i>

tổng số tiết học trong


tuần của các môn học tương ứng trong tập



<i>M</i>

tức

<i>PM</i>

={

<i>pm1</i>

,

<i>pm2</i>

,…,

<i>pmy</i>

}.



Tập

<i>MR</i>

gồm các môn học được phân


công vào các phòng học, trong đó

<i>MRij</i>

=1



nếu mơn học

<i>mi</i>

có thể xếp vào phòng

<i>rj</i>


ngược lại.



Tập

<i>A</i>

={

<i>A1</i>

,

<i>A2</i>

,...,

<i>A</i>

<i>q</i>

} gồm

<i>q</i>

phân




công, tập

<i>A</i>

<i>i</i>

cho biết chi tiết của phân công



giáo viên

<i>t</i>

<i>j</i>

giảng dạy môn m

f

cho lớp C

v

:


<i>A</i>

<i>i</i>

={

<i>tj</i>

,

<i>Cv</i>

,

<i>m</i>

<i>f</i>

}.



Tập lời giải

<i>S</i>

của bài tốn gồm

<i>x</i>

phân


cơng được gán tiết học và phịng học



<i>S</i>

={

<i>S1</i>

,

<i>S2</i>

,...,

<i>S</i>

<i>x</i>

}, trong đó tập

<i>S</i>

<i>i</i>

gồm phân



công

<i>A</i>

<i>i</i>

được xếp vào tiết học

<i>P</i>

<i>j</i>

với số tiết



liên tiếp là

<i>k</i>

<i>v</i>

(với

<i>k</i>

=1,2) và tại phòng học


<i>r</i>

<i>m</i>

:

<i>S</i>

<i>i</i>

={

<i>A</i>

<i>i</i>

,

<i>p</i>

<i>j</i>

,

<i>k</i>

<i>v</i>

,

<i>r</i>

<i>m</i>

}.



Để đánh giá được chất lượng của một


lời giải thì ta sử dụng một hàm mục tiêu


biểu diễn tổng trọng số các vi phạm của


các ràng buộc của bài tốn; trong đó các


ràng buộc cứng đã được chuyển thành các


ràng buộc mềm có trọng số cao.



Trong đó:

<i>S</i>

là lời giải - là thời khóa


biểu tồn trường,

<i>n là </i>

tổng số các ràng


buộc của bài toán,

<i>wi</i>

là trọng số vi phạm


của ràng buộc thứ

<i>i</i>

(w

i

≥ 0, với

<i>i</i>

=1..

<i>n</i>

),

<i>d</i>

<i>i</i>


là số lần vi phạm ràng buộc thứ

<i>i</i>

(

<i>d</i>

<i>i</i>

≥ 0,




với

<i>i</i>

=1..

<i>n</i>

) [4].



Ký hiệu

<i>f</i>

(

<i>S</i>

) là giá trị hàm mục tiêu của


lời giải

<i>S</i>

, giá trị hàm mục tiêu càng cao thì


độ thích nghi càng thấp và ngược lại.



<i><b>2.4. Tiêu chí đánh giá chất lượng thời </b></i>


<i><b>khóa biểu </b></i>



Chất lượng của một thời khóa biểu thể


hiện qua thời khóa biểu của các lớp học và


thời khóa biểu của mỗi giáo viên. Việc đánh


giá chất lượng một thời khóa biểu là cơng


việc khó khăn và thơng thường giáo viên sẽ


đánh giá dựa vào thơng tin thời khóa biểu có


vi phạm các ràng buộc của bài toán.



<b>3. Giải thuật di truyền giải bài tốn </b>


<b>xếp thời khóa biểu </b>



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

một giải thuật metaheuristic, cụ thể là giải


thuật di truyền [5], [7], [8] để giải bài tốn


xếp thời khóa biểu ở trường phổ thông.



<i><b>3.1. Tạo quần thể ban đầu </b></i>



Quần thể ban đầu được tạo gồm

<i>N</i>


thể

<i>T1</i>

,

<i>T2</i>

,...,

<i>T</i>

<i>N</i>

, trong đó mỗi cá thể là một



lời giải của bài toán, tức là một thời khóa



biểu tồn trường. Mỗi cá thể gồm nhiều


gen, mỗi gen được khởi tạo ngẫu nhiên từ


tập các phân công đã cho sao cho trước hết


phải thỏa mãn được các ràng buộc cứng


của bài toán.



Chất lượng các cá thể của quần thể ban


đầu được khởi tạo ngẫu nhiên thường có


chất lượng kém hơn so với chất lượng của


các cá thể được khởi tạo bằng các heuristic


của bài toán. Tuy nhiên do sự đa dạng của


các cá thể khi khởi tạo ngẫu nhiên, nên lúc


kết thúc q trình tiến hóa, giải thuật di


truyền ứng với quần thể ban đầu (được


khởi tạo ngẫu nhiên) thường cho chất


lượng lời giải tốt hơn.



<i><b>3.2. Độ thích nghi của cá thể </b></i>



Độ thích nghi của mỗi cá thể thời khóa


biểu được xác định là giá trị của hàm mục


tiêu. Giá trị hàm mục tiêu càng nhỏ thì cá


thể thời khóa biểu có chất lượng càng cao.



<i><b>3.3. Phép lai </b></i>



Mục này trình bày cách chọn các cá


thể và cách thực hiện phép lai, cách xử lý


các cá thể con sinh ra từ phép lai.




<i>Chọn các cá thể thời khóa biểu tham </i>


<i>gia phép lai </i>



Cho xác xuất lai là

<i>p</i>

<i>c</i>

, đối với mỗi cá



thể trong quần thể

<i>P</i>

, ta phát sinh ngẫu


nhiên một số thực

<i>r</i>

[0..1]. Nếu

<i>r</i>

<i>p</i>

<i>c</i>

, thì



chọn cá thể đó để tham gia phép lai. Ta sẽ


tiến hành thực hiện phép lai từng cặp các


cá thể thời khóa biểu theo thứ tự mà chúng


được chọn.



Phép lai hai cá thể thời khóa biểu

<i></i>


<i>cha-mẹ</i>

<i>T1</i>

,

<i>T2</i>

để sinh ra hai cá thể thời khóa



biểu

<i>T1’</i>

<i>T2’</i>

.

<i>T1’</i>

và và

<i>T2’</i>

ban đầu được


gán bằng

<i>T1</i>

<i>T2</i>

.



Lấy ngẫu nhiên một đoạn các gen


trong mỗi cặp cá thể

<i>cha</i>

-

<i>mẹ </i>

thỏa mãn ràng


buộc về tính chất gen của bài tốn – ở đây


là cùng một lớp nào đó, giả sử đó là đoạn


(

<i>p1</i>

,

<i>p2</i>

). Duyệt các đoạn gen từ (

<i>p1</i>

,

<i>p2</i>

) trong


cá thể

<i>cha</i>

-

<i>mẹ T1, </i>

nếu có gen nào làm cho


cá thể

<i>T2’</i>

tốt hơn thì cập nhật

<i>T2’</i>

. Cơng


đoạn này kết thúc ta được cá thể con

<i>T2’</i>

.



Tương tự, duyệt các đoạn gen từ


(

<i>p1</i>

,

<i>p2</i>

) trong cá thể

<i>cha</i>

-

<i>mẹ T2, </i>

nếu có gen



nào làm cho cá thể

<i>T1’</i>

tốt hơn thì cập nhật



<i>T1’</i>

. Cơng đoạn này kết thúc ta được cá thể



con

<i>T1’</i>

.



Các cá thể

gốc

<i>T1</i>

<i>T2</i>

không thay đổi


trong quá trình này; các cá thể

<i>T1’</i>

<i>T2’</i>



sinh ra từ phép lai phải thỏa mãn các ràng


buộc của bài toán.



Phép lai hai cá thể

<i>T1</i>

<i>T2</i>

để được hai


cá thể con

<i>T1’</i>

<i>T2’</i>

. Ta đưa 2 cá thể con



này vào quần thể mới - nghĩa là sau khi


thực hiện phép lai, số cá thể của quần thể sẽ


lớn hơn

<i>N</i>

, giả sử đó là

<i>N</i>

’. Phép chọn ở



cuối mỗi thế hệ có nhiệm vụ loại bớt một số


cá thể có độ thích nghi kém hơn để đảm


bảo kích thước quần thể khơng đổi trong


mỗi lần bắt đầu thế hệ tiến hóa tiếp theo.



<i><b>3.4. Phép đột biến </b></i>



Mục này trình bày cách chọn các phân


cơng trong các cá thể để thực hiện phép đột


biến, cách thực hiện phép đột biến và cách


xử lý các cá thể con sinh ra từ phép đột



biến.



Phép đột biến được tiến hành sau khi


thực hiện phép lai (trước khi thực hiện


phép chọn). Kích thước của quần thể lúc


thực hiện phép đột biến là

<i>N</i>

’.



</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

Thực hiện di chuyển cụm tiết đó từ vị trí

<i>u</i>



đến vị trí

<i>v</i>

trong cùng lớp hoặc qua một


lớp khác mà vẫn đảm bảo lớp khác ở đây


cũng có giáo viên, mơn học phù hợp với


phân công X. Nếu khơng tìm được vị trí

<i>v</i>



phù hợp thì phép đột biến đó không được


thực hiện.



Theo nguyên tắc đột biến, cá thể sau


đột biến không nhất thiết phải tốt hơn trước


đột biến. Vì xét về cả q trình tiến hóa,


một cá thể chưa tốt ở thế hệ này vẫn sẽ có


khả năng giúp q trình tiến hóa sinh ra các


cá thể tốt ở những thế hệ tiếp theo.



<i>Xử lý các cá thể con sinh ra </i>



Giả sử cá thể

<i>T</i>

sau đột biến sinh ra cá


thể

<i>T</i>

’, khi đó ta có hai cách xử lý sau đây:



<i>Cách thứ nhất</i>

là nếu

<i>T</i>

’ tốt hơn

<i>T</i>

thì



thay

<i>T</i>

bằng

<i>T</i>

’, nếu

<i>T</i>

’ kém hơn

<i>T</i>

thì xem


như phép đột biến khơng thực hiện gì cả.



<i>Cách thứ hai</i>

là thay

<i>T</i>

bằng

<i>T</i>

’ mà



không quan tâm đến chất lượng lời giải của



<i>T</i>

’. Trong bài báo này, chúng tôi chọn thực



hiện phép đột biến thứ hai.


<i><b>3.5. Phép chọn lọc </b></i>



Chúng tôi sử dụng phép chọn lọc các


cá thể dựa trên độ thích nghi xếp hạng


bằng cách bố trí chung theo độ thích nghi


giảm dần (tức theo chiều tăng dần của giá


trị hàm mục tiêu), sau đó chọn

<i>N</i>

cá thể có


độ thích nghi cao nhất.



Để khơng làm mất đi cá thể tốt nhất


được khai phá trong suốt q trình tiến


hóa, giải thuật của chúng tôi

luôn cập nhật


cá thể tốt nhất cho đến thời điểm hiện tại


(cá thể ưu tú).



<i><b>3.6. Điều kiện dừng </b></i>



Thường các giải thuật di truyền chọn


các điều kiện dừng sau đây:

<i>thứ nhất là</i>

lời


giải tốt nhất tìm được của bài tốn không



được cải thiện sau một số lần lặp định


trước ;

<i>thứ hai là</i>

số lần lặp của giải thuật


đạt đến một giá trị định trước ;

<i>thứ ba là</i>



giải thuật chạy hết một lượng thời gian


định trước. Trong bài toán xếp thời khóa


biểu trường phổ thơng đang xét, chúng tôi


chọn điều kiện dừng đầu tiên.



<i><b>3.7. Giải thuật di truyền giải bài toán </b></i>


<i><b>xếp thời khóa biểu </b></i>



Chúng tơi gọi giải thuật này là STTGA


(School Timetabling Problem Genetic


algorithm).



<b>Dữ liệu đầu vào: </b>

danh sách các phân



công, danh sách các ràng buộc, bộ trọng số


vi phạm ứng với mỗi ràng buộc



<b>Dữ liệu đầu ra: </b>

thời khóa biểu của



mỗi lớp, thời khóa biểu của mỗi giáo viên



<b>Giải thuật di truyền giải bài tốn xếp </b>


<b>thời khóa biểu - STTGA </b>



1:

Khởi tạo quần thể ban đầu với

<i>N</i>

cá thể


ngẫu nhiên, trong đó mỗi lời giải là một



thời khóa biểu tồn trường, mỗi gen của


cá thể ứng với một phân công;



2:

Xác suất lai là

<i>pc</i>

, xác suất đột biến là

<i>pm</i>

;


3:

Đánh giá độ thích nghi mỗi cá thể trong



quần thể, cá thể

<i>T</i>

có giá trị hàm mục là



<i>C</i>

(

<i>T</i>

), cá thể

<i>T</i>

càng tốt nếu

<i>C</i>

(

<i>T</i>

) có giá


trị càng bé và ngược lại;



4:

<b>while</b>

(

<i>điều kiện dừng chưa thỏa</i>

)



{



a)

Chọn ngẫu nhiên một cặp cá thể



<i>cha-mẹ</i>

từ quần thể;



b)

Phép lai (crossover): nếu xảy ra xác


suất lai ghép

<i>pc</i>

thì lai ghép hai cá


thể

<i>cha-mẹ</i>

để tạo thành các cá thể


con, ngược lại, các cá thể con giống


cá thể cha-mẹ;



c)

Đột biến (Mutation): nếu xảy ra xác


suất đột biến

<i>pm</i>

thì đột biến bằng


cách cho thay đổi nhỏ trong cá thể;


d)

Đánh giá lại độ thích nghi của các




cá thể, tức tính lại giá trị của hàm


mục tiêu;



</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

cá thể có độ thích nghi ít hơn;


}



5:

Cá thể tốt nhất của thế hệ sau cùng là


lời giải của bài toán.



<b>4. Thực nghiệm và đánh giá </b>



<i><b>4.1. Dữ liệu thực nghiệm </b></i>



Chúng tôi thực nghiệm giải thuật di


truyền

<b>STTGA</b>

trên 2 bộ dữ liệu thực tế tại


Trường Trung học phổ thơng Giồng Ơng


Tố, Quận 2, Thành phố Hồ Chí Minh. Bộ


thứ nhất có tên gọi là HK11920, bộ thứ hai


có tên gọi là HK21920.



<b>Bảng 1. </b>

Thông số các bộ dữ liệu thực nghiệm



<b>STT </b>

<b>Loại dữ liệu </b>

<b>HK11920 </b>



<b>(Số lượng) </b>



<b>HK21920 </b>


<b>(Số lượng) </b>



1

Số giáo viên có phân cơng

76

73




2

Số phòng học

36

36



3

Số môn học

45

44



4

Số phân công

485

475



5

Số ràng buộc cứng

11

11



6

Số ràng buộc mềm

8

8



7

Số buổi học trong tuần

6

6



8

Số tiết tối đa trên mỗi buổi học

5

5



Các ràng buộc cứng 1, 2, 3, 9, 10, 11 ở


trên được mềm hóa với trọng số cao (các


giá trị này được đề xuất qua quá trình thực


nghiệm thực tế), các ràng buộc cứng 4, 5,



6, 7, 8 cịn lại ln được thỏa mãn khi cài


đặt. Do đó, bài tốn có 6 ràng buộc cứng và


8 ràng buộc mềm cần được xử lý theo liệt


kê ở Bảng 2 và Bảng 3.



<b>Bảng 2.</b>

Trọng số vi phạm của ràng buộc cứng



<b>Ràng </b>



<b>buộc </b>

<b>Tên ràng buộc </b>

<b>Trọng số </b>




<b>Đối tượng </b>


<b>ràng buộc </b>



H1

Ràng buộc đụng độ giáo viên

999

Giáo viên



H2

Ràng buộc đụng độ lớp học

999

Lớp



H3

Ràng buộc đụng độ phòng học

999

Phòng học



H4

Ràng buộc về mỗi môn học chỉ học một lần trong



một buổi tại mỗi lớp

600

Lớp



</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<b>Bảng 3.</b>

Trọng số vi phạm của ràng buộc mềm



<b>Ràng </b>



<b>buộc </b>

<b>Tên ràng buộc </b>

<b>Trọng số </b>



<b>Đối tượng </b>


<b>ràng buộc </b>



S1

Ràng buộc về lịch bận của giáo viên

15

Giáo viên



S2

Ràng buộc về học cách ngày môn học

10

Lớp



S3

Ràng buộc về độ nén lịch dạy của giáo viên

20

Giáo viên


S4

Ràng buộc về tiết lủng của giáo viên

25

Giáo viên


S5

Ràng buộc về số tiết dạy tối thiểu trong một buổi của




giáo viên

10

Giáo viên



S6

Ràng buộc về số tiết học tối thiểu trong một buổi học



của một lớp

20

Lớp



S7

Ràng buộc về số môn học tối đa trong mỗi buổi

15

Lớp


S8

Ràng buộc về số tiết tối đa của một giáo viên trong



một lớp trong mỗi buổi

20

Lớp



<i><b>4.2. Môi trường thực nghiệm </b></i>



Giải thuật STTGA được chúng tôi cài


đặt bằng ngôn ngữ C

++

<sub> sử dụng môi trường </sub>



CodeBlocks 17.12, và thực nghiệm trên


máy tính hệ điều hành Windows 10 64bit,


Processor Intel(R) Core (TM) i3-814U


CPU @ 2.10GHz 2.30GHz, RAM 4GB.



<i><b>4.3. Tham số thực nghiệm </b></i>



Trong quá trình thực nghiệm, chúng


tôi đề xuất xác suất lai ghép

<i>p</i>

<i>c</i>

= 0.85 và



xác suất phép đột biến

<i>p</i>

<i>m</i>

= 0.05, với số



lượng cá thể trong quần thể là 75.



<i><b>4.4. Kết quả thực nghiệm </b></i>



Kết quả thực nghiệm của giải thuật di


truyền STTGA bao gồm thời khóa hiểu của


mỗi lớp học và lịch dạy của mỗi giáo viên.


Từ đó, chúng tơi ghi nhận tình trạng vi phạm



các ràng buộc thời khóa biểu các lớp và thời


khóa biểu các giáo viên để làm cơ sở so sánh


chất lượng lời giải giữa các giải thuật.



<i><b>4.5. Đánh giá về chất lượng của giải </b></i>


<i><b>thuật đề xuất </b></i>



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b>Bảng 4.</b>

Thống kê số lần vi phạm các ràng buộc của các lớp theo giải thuật GOT và giải


thuật di truyền STTGA trên các bộ dữ liệu HK11920 và HK21920



<b>Bộ dữ </b>



<b>liệu </b>

<b>Lớp </b>

<b>H1 H2 H3 H4 H5 H6 S1 S2 S3 S4 S5 S6 S7 S8 </b>



HK11920

STTGA

0

0

0

0

0

0

0

0

0

0

0

0

28

0


GOT

0

0

0

15

0

0

0

54

0

0

0

0

26

0


HK21920

STTGA

0

0

0

0

0

0

0

9

0

0

0

0

28

0


GOT

0

0

0

4

0

0

0

36

0

0

0

0

20

0


Xét bộ dữ liệu HK11920, giải thuật



STTGA và giải thuật GOT cho tổng số lần


vi phạm trên các ràng buộc H4, S2, S7 lần


lượt là (0, 15), (0, 54), (28, 26). Xét bộ dữ




liệu HK21920, giải thuật STTGA và giải


thuật GOT cho tổng số lần vi phạm trên


các ràng buộc H4, S2, S7 lần lượt là (0, 4),


(9, 36), (28, 20).



<b>Bảng 5.</b>

Thống kê số lần vi phạm ràng buộc của các giáo viên theo toán thuật GOT và giải



thuật di truyền STTGA trên các bộ dữ liệu HK11920 và HK21920



<b>Bộ dữ </b>



<b>liệu </b>

<b>Giáo viên H1 H2 H3 H4 H5 H6 S1 S2 S3 S4 S5 S6 S7 S8 </b>



HK11920

STTGA

0

0

0

0

0

0

0

0 53 7 19 0

0

0


GOT

0

0

0

0

0

0

6

0 12 93 1

0

0

0


HK21920

STTGA

0

0

0

0

0

0

0

0 47 3 16 0

0

0


GOT

0

0

0

0

0

0

27 0 12 91 0

0

0

0


Xét bộ dữ liệu HK11920, giải thuật



STTGA và giải thuật GOT cho tổng số lần


vi phạm trên các ràng buộc S1, S3, S4, S5


lần lượt là (0, 6), (53, 12), (7, 93), (19, 1).


Xét bộ dữ liệu HK21920, giải thuật


STTGA và giải thuật GOT cho tổng số lần


vi phạm trên các ràng buộc S1, S3, S4, S5


lần lượt là (0, 27), (47, 12), (3, 91), (16, 0).



Thời gian chạy thực nghiệm giải thuật


STTGA trên 2 bộ dữ liệu trên là hơn 202



giờ và chúng tôi ghi nhận kết quả tốt nhất


làm kết quả của giải thuật.



<b>5. Kết luận </b>



Nghiên cứu đã chỉ ra được một số đặc


trưng của bài tốn xếp thời khóa biểu



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

GOT lần lượt là (0, 145), (0, 242). Nghiên


cứu này có thể cho phép phát triển các


chiến lược đột biến, lai ghép và kết hợp



với các chiến lược tìm kiếm lân cận để


nâng cao hơn nữa chất lượng lời giải của


bài toán.



<i><b>Lời cảm ơn </b></i>



<i><b>Nhóm tác giả trân trọng cảm ơn lãnh đạo Trường THPT Giồng Ông Tố đã cho phép sử dụng </b></i>
<i><b>thời khóa biểu của trường làm dữ liệu thực nghiệm; cảm ơn các Thầy, Cô Khoa Công nghệ </b></i>
<i><b>Thông tin Trường Đại học Sài Gịn đã có những ý kiến đóng góp cho luận văn thạc sỹ “Đề xuất </b></i>
<i><b>giải thuật di truyền giải bài tốn xếp thời khóa biểu”; cảm ơn các nhà khoa học đã phản biện và </b></i>
<i><b>cho những ý kiến đóng góp q báu giúp nhóm tác giả hồn chỉnh bài báo. </b></i>


<b>TÀI LIỆU THAM KHẢO </b>



[1]

Dominique de Werra, “An Introduction to Timetabling”,

<i>European Journal of </i>



<i>Operational Research</i>

, 19(2), 151-162, 1985.




[2]

Trương Quốc Định và Nguyễn Thanh Hải, “Giải thuật xếp thời khóa biểu ứng dụng


vào bài toán quản lý xếp lịch thi kết thúc các lớp học phần tại trường Đại học Cần


Thơ”,

<i>Tạp chí khoa học trường Đại học Cần Thơ</i>

, 43(a), 116-125, 2016.



[3]

Nguyễn Bá Phúc, “Thuật giải bees cho bài toán xếp thời khoá biểu”, thạc sĩ khoa học,


chuyên ngành Khoa học máy tính, Trường ĐH Khoa học tự nhiên, ĐH Quốc gia TP


Hồ Chí Minh, 2011.



[4]

Nguyễn Tấn Trần Minh Khang, “Nghiên cứu ứng dụng các giải thuật Metaheuristic


cho bài toán xếp thời khóa biểu mơn học trường đại học”, tiến sĩ Khoa học, chuyên


ngành Khoa học máy tính, Trường ĐH Khoa học Tự nhiên, ĐH Quốc gia TP Hồ Chí


Minh, 2014.



[5]

Nguyễn Đình Thúc,

<i>Trí tuệ nhân tạo - Lập trình tiến hóa</i>

, Nhà xuất bản Giáo dục, 2008.


[6]

Nguyen Khang, Nguyen Dang, Trieu Khon, Tran Nuong, “Automating a Real-World


University Timetabling Problem with Tabu Search Algorithm”,

<i>IEEE RIVF </i>


<i>International Conference on Computing & Communication Technologies, Research, </i>



<i>Innovation, and Vision for the Future, </i>

1-6, 2010.



[7]

Nguyen Quoc Viet Hung, Ta Quang Binh, Duong Tuan Anh, “A Memetic Algorithm for


Timetabling”,

<i>RIVF’05 Research Informatics Vietnam-Francophony</i>

, Can Tho, 2005.


[8]

Xin She Yang,

<i>Engineering optimization: an introduction with metaheuristic </i>



<i>applications</i>

, John Wiley & Sons, 2010.



[9]

Carlos Lara, Juan José Flores, Félix Calderón, “Solving a School Timetabling Problem


Using a Bee Algorithm”,

<i>Proceedings of the 7th Mexican International Conference on </i>



<i>Artificial Intelligence: Advances in Artificial Intelligence</i>

, 664 – 674, 2008.




</div>

<!--links-->

×