Tải bản đầy đủ (.docx) (30 trang)

Tiểu luận môn Thuật Toán và Phương Pháp Giải Quyết Vấn Đề THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ

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 (630.49 KB, 30 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÀI THU HOẠCH MÔN HỌC
THUẬT TOÁN VÀ PHƯƠNG PHÁP GIẢI
QUYẾT VẤN ĐỀ
Đề tài: Tìm hiểu về giải thuật di truyền và áp dụng vào bài toán sắp xếp thời khóa biểu trong
trường đại học
Giảng viên hướng dẫn: PGS.TS. Đỗ Văn Nhơn
Học viên thực hiện: Lê Bảo Trung
MSHV: CH1301112
TP Hồ Chí Minh, tháng 10 năm 2014
MỤC LỤC
Page | 2
Chương 1: GIỚI THIỆU
Trong cuộc sống ta thường gặp các bài toán liên quan đến xếp lịch như xếp lịch
vận hành máy móc, xếp lịch biểu cho việc thực hiện một dự án, xếp lịch làm việc, xếp
lịch thi đấu thể thao,… Đối với loại bài toán này cần phải tìm ra một phương án xếp lịch
thỏa mãn tất cả các ràng buộc cũng như khai thác hiệu quả các nguồn tài nguyên hiện có,
giảm thời gian và chi phí thực hiện.
Bài toán xếp thời khóa biểu trong trường học là một trong những bài toán như vậy.
Có rất nhiều các ràng buộc được đặt ra trong bài toán này như ràng buộc về đối tượng
tham gia (giảng viên, lớp học, sinh viên), ràng buộc về tài nguyên phục vụ giảng dạy
(phòng học lý thuyết, phòng thực hành,…), ràng buộc về thời gian (số tiết học, số lần
học, số tiết mỗi lần), ràng buộc về chuyên môn và rất nhiều các ràng buộc khác tùy thuộc
vào từng trường. Vấn đề đặt ra là cần xây dựng một thời khóa biểu thỏa mãn tất cả các
ràng buộc trên đồng thời khai thác hiệu quả các nguồn tài nguyên phục vụ giảng dạy.
Bài toán xếp thời khóa biểu thuộc lớp các bài toán NP-đầy đủ vì vậy có thể không
tìm ra được lời giải tối ưu. Đây là một bài toán không mới và đã có nhiều giải thuật được
đưa ra để giải quyết như giải thuật nhánh cận, giải thuật leo đồi, giải thuật luyện thép, giải
thuật tô màu đồ thị, giải thuật xấp xỉ,… Tuy nhiên các giải thuật này thường không có


tính tổng quát và chỉ áp dụng hiệu quả đối với các trường học có quy mô nhỏ, ít ràng
buộc về mặt dữ liệu.
Hiện nay, phương pháp tiếp cận di truyền đã thu hút rất nhiều sự chú ý trong các
lĩnh vực nghiên cứu khác nhau trong đó có khoa học máy tính. Phương pháp này có nhiều
đặc điểm nổi trội như không đòi hỏi tri thức, tránh tối ưu cục bộ, thực hiện tốt với các bài
toán có không gian lời giải lớn và có thể áp dụng cho nhiều loại bài toán tối ưu khác
nhau. Vì vậy, giải thuật di truyền được kết hợp với tin học nhằm giải quyết những bài
toán tối ưu một cách rất hiệu quả.
Page | 3
Nội dung bài thu hoạch sau sẽ trình bày việc nghiên cứu lý thuyết về thuật giải di
truyền (Genetic Algorithm - GA), cách thức xây dựng một thuật giải di truyền, từ đó
phân tích được ưu nhược điểm và đồng thời áp dụng giải thuật di truyền vào bài toán xếp
thời khóa biểu cho trường học nói chung với một số rành buộc phức tạp bám sát thực tế.
Chương 2: CƠ SỞ LÝ THUYẾT
1. Giải thuật di truyền
1.1 Khái niệm
Giải thuật di truyền là một kỹ thuật của khoa học máy tính nhằm tìm kiếm giải
pháp thích hợp cho các bài toán tối ưu tổ hợp (combinatorial optimization). Giải thuật di
truyền là một phân ngành của giải thuật tiến hóa vận dụng các nguyên lý của tiến hóa như
di truyền, đột biến, chọn lọc tự nhiên, và trao đổi chéo.
Giải thuật di truyền dựa trên cơ chế của chọn lọc tiến hoá trong tự nhiên: “Trong
mọi thế hệ, một tập mới các sinh vật được tạo ra bằng cách lai ghép những nhân tố thích
nghi nhất với môi trường của những sinh vật trong thế hệ cũ cùng với sự xuất hiện đột
biến ngẫu nhiên của các cá thể trong thế hệ mới”. Vận dụng cơ chế đó, giải thuật di
truyền được bắt đầu với một quần thể ngẫu nhiên có n chuỗi , rồi sao chép các chuỗi theo
khuynh hướng đến cái tốt, ghép cặp và đổi các chuỗi con thành phần, thỉnh thoảng làm
đột biến giá trị bit để có số đo tốt.
Mục tiêu của giải thuật di truyền không nhằm đưa ra lời giải chính xác tối lưu mà
là đưa ra lời giải tương đối tối ưu.
1.2 Đặc điểm của giải thuật di truyền

Ý tưởng của giải thuật di truyền là mô phỏng theo cơ chế của quá trình chọn lọc và
di truyền tự nhiên. Từ tập các lời giải có thể có ban đầu, thông qua nhiều bước tiến hóa
Page | 4
để hình thành các tập lời giải mới với những lời giải tốt hơn, cuối cùng sẽ tìm được lời
giải gần tối ưu nhất.
Một số thuật ngữ thuật giải di truyền được lấy từ di truyền học:
- Một tập hợp các lời giải được gọi là một Lớp hay Quần thể (population).
- Mỗi lời giải được biểu diễn bởi một Nhiễm sắc thể hay Cá thể
(chormosome).
- Nhiễm sắc thể được tạo thành từ các gien.
Một quá trình tiến hóa được thực hiện trên một quần thể tương đương với sự tìm
kiếm trên không gian các lời giải có thể của bài toán. Quá trình tìm kiếm này luôn đòi hỏi
sự cân bằng giữa hai mục tiêu:
- Khai thác lời giải tốt nhất
- Xem xét toàn bộ không gian tìm kiếm
Giải thuật di truyền thực hiện tìm kiếm lời giải theo nhiều hướng bằng cách duy trì
tập hợp các lời giải có thể và khuyến khích hình thành và trao đổi thông tin giữa các
hướng.
Tập lời giải phải trải qua nhiều bước tiến hóa, tại mỗi thế hệ, một tập mới các cá
thể được tạo ra có chứa các phần của những cá thể thích nghi nhất trong thế hệ cũ, đồng
thời khai thác một các hiện quả để tìm kiếm mới với mục đích tìm kiếm những cá thể mới
nhằm cải thiện lời giải qua từng thế hệ. Như vậy, các đặc trưng được đánh giá tốt sẽ có cơ
hội phát triển và các tính chất xấu sẽ được loại bỏ.
1.3 Quá trình thực hiện giải thuật di truyền
Giải thuật di truyền được trình bày một các tổng quát như sau:
PROCEDURE GeneticAlgorithm;
Page | 5
BEGIN
T:=0;
Khởi tạo lớp P(t);

Đánh giá lớp P(t);
While not (Điều_kiện_kết_thúc) do
Begin
t:=t+1;
Chọn lọc P(t) từ P(t-1);
Kết hợp các cá thể của P(t);
Đánh giá lớp P(t);
end;
END;
Trong đó:
- Tập hợp các lời giải ban đầu được khởi tạo ngẫu nhiên.
- Quá trình tiến hóa diễn ra trong vòng lặp while, trong vòng lặp thứ t, giải thuật di
truyền xác định tập các nhiễm sắc thể (các lời giải) P(t) = { x1t,x2t,…,xnt} bằng các
chọn lựa các nhiễm sắc thể thích nghi hơn từ P(t-1). Mỗi nhiễm sắc thể xit được đánh
giá để xác định độ thích nghi của nó và một số thành viên của P(t) lại được tái sản
xuất nhờ các toán tử lai ghép và đột biến.
Sơ đồ sau minh họa hoạt động của giải thuật di truyền:
Page | 6
Sơ đồ hoạt động của thuật giải di truyền
Khi áp dụng giải thuật di truyền để giải quyết một bài toán cụ thể, cần làm rõ các
vấn đề sau:
1) Chọn cách biểu diễn di truyền nào đối với những lời giải có thể của bài toán?
2) Tạo tập lời giải ban đầu như thế nào?
3) Xác định hàm đánh giá để đánh giá mức độ thích nghi của các cá thể
4) Xác định toán tử di truyền để sản sinh con cháu
5) Xác định giá trị các tham số mà giải thuật di truyền sử dụng như kích thước tập lời
giải, xác suất áp dụng các toán tử di truyền,…
Để giải quyết vấn đề bài toán bằng giải thuật di truyền, chúng ta cần thực hiện 7 bước
quan trọng sau:
Page | 7

Bước 1: Chọn mô hình cho giải pháp của vấn đề, chọn một số đặc trưng cho toàn bộ
các giải pháp (quần thể) có thể có cho vấn đề.
Bước 2: Chỉ định cho mỗi giải pháp (cá thể) một ký hiệu. Ký hiệu có thể là một dãy
các số 0, 1 thuộc hệ nhị phân, hay dãy các số thập phân, dãy các chữ hay hỗn hợp của
số và chữ. Ký hiệu đơn giản nhất và thường dùng nhất là số nhị phân.
Bước 3: Tìm hàm số thích nghi cho vấn đề và tính hệ số thích nghi cho từng giải
pháp (lời giải).
Bước 4: Dựa trên hệ số thích nghi của các giải pháp để thực hiện sự tạo sinh
(reproduction) và biến hóa các giải pháp. Các phương thức biến hóa bao gồm: lai
ghép (crossover), đột biến (mutation).
Bước 5: Tính các hệ số thích nghi cho các giải pháp mới và loại bỏ những giải pháp
kém nhất để chỉ còn giữ lại một số nhất định của giải pháp.
Bước 6: Nếu chưa tìm được giải pháp tối ưu hay tương đối khá nhất hay chưa hết kỳ
hạn ấn định, trở lại bước 4 để tìm giải pháp mới.
Bước 7: Tìm được giải pháp tối ưu hoặc nếu thời gian cho phép đã chấm dứt thì kết
thúc giải thuật và báo cáo kết quả tìm được.
1.4 Biểu diễn lời giải của giải thuật di truyền
Biểu diễn lời giải là vấn đề đầu tiên được quan tâm tới khi bắt tay vào giải quyết
một bài toán bằng giải thuật di truyền. Việc lựa chọn các biểu diễn lời giải như thế nào
phụ thuộc vào từng lớp bài toán thậm chí vào từng bài toán cụ thể. Người ta có những
cách biểu diễn lời giải của giải thuật di truyền phổ biến như sau:
1) Biểu diễn nhị phân:
Trong biểu diễn nhị phân, mỗi nhiễm sắc thể (lời giải) là một chuỗi các bit 0 hoặc
1:
Chẳng hạn:
Page | 8
NST A: 101100101100101011100101
NST B: 111111100000110000011111
Ví dụ:
Bài toán “Xếp ba lô” được phát biểu :” cho một tập các đồ vật, mỗi đồ vật

có giá trị và kích thước xác định, cho biết sức chứa của balo. Hãy chọn cách xếp
các đồ vật vào balo sao cho tổng giá trị của các đồ vật là cao nhất”.
Biểu diễn mỗi lời giải của bài toán trên bằng một chuỗi nhị phân, ở đó mỗi
bit 0 hoạc 1 ứng với một đồ vật không được chọn hoặc được chọn.
Như vậy, bài toán được phát biểu lại như sau: “ cho một tập các khối lượng
W[i], tập các giá trị P[i] và sức chứa C. Tìm một vector nhị phân x=< x1,x2,…,xn
> thỏa mãn:
2) Biểu diễn hoán vị (Permutation encoding)
Biểu diễn lời giải theo phương pháp hoán vị được sử dụng trong bài toán
mà thứ tự các thành phần của lời giải quyết định mức độ phù hợp của lời giải, điển
hình như bài toán “người du lịch”.
Với cách biểu diễn thứ tự, cách sắp xếp của các gian khác nhau cho ta các
nhiễm sắc thể khác nhau, mỗi nhiễm sắc thể là một chuỗi số nguyên diễn tả quan
hệ tiếp nối. Lời giải được biểu diễn bằng một vecto số nguyên v=(i1,i2,…,in), với
mỗi v là một hoán vị của tập thứ tự.
Vd:
NST A: ( 1 5 3 2 6 4 7 9 8 )
NST B: ( 8 5 6 7 2 3 1 4 9 )
3) Biểu diễn giá trị (Value Encoding)
Thường dùng trong các bài toán mà cách biểu diễn chuỗi nhị phân là khó
thực hiện như miền xác định của các thành phần lời giải khá lớn với độ chính xác
yêu cầu cao, miền xắc định không rõ ràng, hay các bài toán mà việc biểu diễn nhị
phân là “không tự nhiên”.
Page | 9
Trong biểu diễn giá trị, mỗi cá thể là một chuỗi các giá trị liên quan đến bài
toán, các giá trị có thể là số thực, số nguyên, ký tự hay đối tượng phức tạp khác.
Vd:
NST A: (0.1229 2.92343.0012, 0.3567, 4.3828)
NST B (AJUHNEOLDOGSGLLIKUFSEJHJH)
4) Biểu diễn dạng cây (tree encoding)

Các biểu diễn lời giải dùng cấu trúc cây được dùng chủ yếu trong các
chương trình tiến hóa, trong biểu diễn biểu thức, hay lập các chương trình di
truyền học. Với cách biểu diễn này, mỗi cá thể là một cây các đối tượng.
1.5 Định nghĩa các toán tử di truyền
Trong thuật giải di truyền, các cá thể mới liên tục được sinh ra trong quá trình tiến
hoá nhờ sự lai ghép ở thế hệ cha -mẹ. Một cá thể mới có thể mang những tính trạng của
cha-mẹ (di truyền), cũng có thể mang những tính trạng hoàn toàn mới (đột biến). Di
truyền và đột biến là hai cơ chế có vai trò quan trọng như nhau trong tiến trình tiến hoá,
dù rằng đột biến xảy ra với xác xuất nhỏ hơn rất nhiều so với hiện tượng di truyền. Các
thuật toán tiến hoá, tuy có những điểm khác biệt, nhưng đều mô phỏng ba toán tử cơ bản:
Chọn lọc, lai ghép, đột biến.
1) Toán tử chọn lọc:
• Toán tử chọn lọc tỷ lệ : Được sử dụng thường xuyên nhất trong giải thuật di truyền
Xác suất lựa chọn của mỗi cá thể tỷ lệ thuận với giá trị độ thích hợp của
nó, được tính theo công thức:
Pi = f (vi) /F (i = 1 pop-size – kích cỡ của quần thể) gọi là xác suất
chọn cho mỗi nhiễm sắc thể vi.
Trong đó:
- f (vi) là hàm thích nghi của mỗi cá thể vi.
- F là tổng của các giá trị thích nghi của quần thể.
Việc chọn lọc cá thể nào phụ thuộc vào vị trí xác suất qi của mỗi
nhiễm sắc thể vi được tính như sau:
Page | 10
Tiến trình chọn lọc được thực hiện bằng cách quay bánh xe ru lét
pop-size lần; mỗi lần chọn một nhiễm sắc thể từ quần thể hiện hành vào
quần thểmới theo cách sau:
- Phát sinh ngẫu nhiên một số r trong khoảng [0 1]
- Nếu r < qi thì chọn nhiễm sắc thể đầu tiên (v1); ngược lại thì chọn
nhiễm sắc thể thứ i, vi( 2<= I <= pop-size) sao cho qi-1 <= r <= q.
• Toán tử chọn lọc cạnh tranh:

Mỗi lần chọn lọc ta tiến hành chọn ngẫu nhiên t cá thể từ quần thể hiện tại.
Bản sao của cá thể tốt nhất trong t cá thể kể trên được sao chép vào quần thể bố
mẹ.Tiến hành N lần chọn như vậy ta thu được quần thể bố mẹ. Giá trị t được gọi là
kích cỡ cạnh tranh.
• Toán tử chọn lọc xếp hạng:
Các cá thể của quần thể hiện tại được sắp xếp theo thứ tự giảm dần của giá
trị độ thích nghi. Cá thể tốt nhất được xếp thứ nhất và cá thể tồi nhất xếp cuối
cùng.
2) Toán tử lai ghép:
Toán tử lai ghép là quá trình tạo NST mới trên cơ sở các NST cha - mẹ bằng cách
ghép một đoạn trên NST cha mẹ với nhau. Toán tử lai ghép được gán với một xác
suất pc. Quá trình được mô tả như sau:
- Chọn ngẫu nhiên một cặp NST (để làm cha mẹ) trong quần thể. Giả sử,
NST cha mẹ có cùng độ dài m.
- Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (gọi là điểm lai
ghép). Điểm lai ghép chia NST cha mẹ thành hai chuỗi con có độ dài
m1, m2.
Ví dụ:
Cha: 101101100
Mẹ: 000011100
Thì việc trao đổi chéo các NST sau gen thứ 5 sẽ tạo ra hai con:
Con 1: 101111100
Page | 11
Con 2: 000001100
3) Toán tử đột biến:
Đột biến là hiện tượng NST con mang một số đặc tính không có trong mã di
truyền của cha- mẹ. Toán tử đột biến được gán xác suất pm (nhỏ hơn nhiều so
với xuất suất lai ghép pc). Điều này được suy diễn bởi trong tự nhiên, đột biến gen
thường rất ít xảy ra. Phép đột biến được mô tả như sau:
- Chọn ngẫu nhiên một NST trong quần thể.

- Tạo một số ngẫu nhiên k trong khoảng từ 1 tới m, 1 ≤ k ≤ m.
- Thay đổi bít thứ k. Đưa nhiễm sắc thể này vào quần thể để tham gia quá
trình tiến hóa ở thế hệ tiếp theo.
Ví dụ:
v1: 101101010
v2: 101111010
NST V1 được chọn để đột biến tại vị trí gen thứ năm, gen này hiện tại là 0, sau khi
đột biến sẽ trở thành 1. Khi đó NST v1 trở thành v2.
1.6 Đánh giá độ thích nghi của các thể và phép tái tạo
Mỗi bài toán trong thực tế có các điều kiện ràng buộc khác nhau đối với lời giải.
Quá trình tìm kiếm lời giải chính là quá trình tiến hóa mà ở mỗi bước, cần phải lựa chọn
các cá thể thích nghi hơn để tái sản xuất ở thế hệ sau bằng phép tái tạo.
Để đánh giá các lời giải, người ta xây dựng hàm thích nghi Fitness(). Tái tạo lại
quá trình sao chép các chuỗi (các cá thể) từ tế hệ trước sang thế hệ sau theo giá trị hàm
thích nghi.
Coi giá trị của hàm là số đo độ phù hợp, giải thuật di truyền sử dụng giá trị hàm
thích nghi để quyết định số con của một chuỗi: Những chuỗi với giá trị hàm thích nghi
lớn sẽ có xác suất lớn trong việc đóng góp một hay nhiều con cháu trong thế hệ tiếp theo.
Page | 12
Toán tử này mô phỏng theo học thuyết Darwin, chỉ có các cá thể khỏe mới có cơ
hội sống sót và đóng góp con cháu vào các thế hệ sau.
1.7 Các quá trình cơ bản của một giải thuật di truyền
Các giải thuật di truyền, tuy có những điểm khác biệt, nhưng đều mô phỏng bốn quá
trình cơ bản:
1) Quá trình lai ghép
Phép lai là quá trình hình thành NST mới trên cơ sở các NST cha–mẹ, bằng cách
ghép một hay nhiều đoạn gen của hai (hay nhiều) NST cha –mẹ với nhau. Phép lai
xảy ra với xác suất pc,có thể mô phỏng như sau:
- Chọn ngẫu nhiên hai hay nhiều cá thể bất kỳ trong quần thể. Giả sử các
NST của cha –mẹ có m gen.

- Tạo một số ngẫu nhiên trong khoảng từ 1 đến m –1 (gọi là điểm lai).
Điểm lai chia các chuỗi cha –mẹ dài m thành hai nhóm chuỗi con dài
m1 và m2. Hai chuỗi NST con mới sẽ là m11+ m22 và m21+ m12.
- Đưa hai cá thể mới này vào quần thể để tham gia các quá trình tiến hóa
tiếp theo.
2) Quá trình đột biến
Đột biến là hiện tượng cá thể con mang một (số) tính trạng không có trong mã di
truyền của cha – mẹ. Phép đột biến xảy ra với xác suất pm nhỏ hơn rất nhiều so với
xác suất lai pc. Phép đột biến có thể được mô phỏng như sau:
- Chọn ngẫu nhiên một cá thể bất kỳ cha –mẹ trong quần thể.
- Tạo mộtsố ngẫu nhiên ktrong kho ảng từ 1đến m: 1 ≤ k ≤ m.
- Thay đổi gen thứ kvà trả cá thể này về quần thể để tham gia quá trình
tiến hóa tiếp theo.
3) Quá trình sinh sản
Page | 13
Phép tái sinh là quá trình trong đó các cá thể được sao chép trên cơ sở độ thích
nghi của nó. Độ thích nghi là một hàm gán một giá trị thực cho các cá thể trong quần
thể. Quá trình này có thể được mô phỏng như sau:
- Tính độ thích nghi của từng cá thể trong quần thể hiện hành, lập bảng
cộng dồn các giá trị thích nghi (theo số thứ tự gán cho từng cá thể). Giả
sử quần thể có n cá thể. Gọi độ thích nghi của cá thể thứ ilà Fi, tổng dồn
thứ I là Fti, tổng độ thích nghi của toàn cá thể là Fm.
- Tạo một số ngẫu nhiên F trong đoạn từ 0 đến Fm.
- Chọn cá thể thứ k đầu tiên thỏa F ≥ Ftk, đưa vào quần thể của thế hệ
mới.
4) Quá trình chọn lọc tự nhiên
Phép chọn là quá trình loại bỏ các cá thể xấu trong quần thể để chỉ giữ lại
trong quần thể các cá thể tốt nhất. Phép chọn được mô phỏng 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ỉ giữ lại n cá thể tốt nhất. Ở đây ta giả

sử quần thể có kích thước cố định là n.
1.8 Đánh giá giải thuật di truyền
Ưu điểm
Ưu điểm của giải thuật di truyền là ở tính song song của nó, giải thuật di truyền
trong không giai tìm kiếm với nhiều cá thể hơn ( với với kiểu di truyền hơn là kiểu hình),
vì vậy thuật toán này ít bị rơi vào các lời giải tối ưu cực bộ như những phương pháp khác.
Thuật toán di truyền cũng dễ thực hiện, chúng ta chỉ phải biểu diễn NST mới để giải
quyết các bài toán khác nhau và nếu bài toán nào đó có phương pháp mã hóa NST thì ta
chỉ cần viết lài hàm số tính độ thích nghi cho bài toán đó mà thôi.
Nhược điểm
Khuyết điểm của thuật giải du truyền là ở thời gian tính toán của nó, có thể là
chậm hơn so với các phương pháp khác, nhưng với tốc độ của các máy vi tính hiện nay
thì đó cũng không phải là một vấn đề nghiêm trọng.
Page | 14
Sự khác biệt của giải thuật di truyền so với các giải thuật khác:
Giải thuật di truyền khác với những sự tối ưu hóa thông thường và những giải thuật
tìm kiếm khác bởi 4 điểm sau:
1) Giải thuật di truyền tìm kiếm từ một số điểm quần thể, chứ không phải từ một
điểm.
2) Giải thuật di truyền sử dụng các thông tin về hàm mục tiêu chứ không phải đạo
hàm (derivatives) hay những tri thức phụ khác.
3) Giải thuật di truyền sử dụng các luật chuyển đổi theo xác suất, chứ không phải các
luật chuyển đổi tiền định.
4) Giải thuật di truyền đòi hỏi một tập hợp các thông số tự nhiên của bài toán tối ưu
để mã hóa thành các chuỗi có chiều dài hữu hạn, dựa trên một số hữu hạn các ký
tự.
Ứng dụng của giải thuật di truyền
Thuật giải di truyền được ứng dụng cho rất nhiều lĩnh vực khác nhau:
• Trong lĩnh vực thiết kế: Tối ưu hóa việc thiết kế các bộ phận cho máy bay, tuabin
nhà máy nhiệt điện

• Trong tin học:
o Tìm điều kiện tối ưu cho việc thiết kế mạng noron nhân tạo.
o Thực hiện các chương trình Agent thông minh giúp hướng dẫn, cố vấn
người sử dụng trong các lĩnh vực giáo dục, quản trị, truyền thông.
• Trong hóa học:
o Mô phỏng quá trình chiết dung môi
o Tìm điều kiện cân bằng tối ưu cho hóa chất
• Trong giao thông vận tải
o Hoạch định lộ trình xe chở hàng từ các kho đến các công trường sao cho
nhanh và ngắn nhất
o Hoạch định chương trình bảo trì các xa lộ
o Điều hành mạng lưới đèn báo hiệu tại các trục giao thông.
• Trong khai thác hầm mỏ, dầu khí
o Vận hành dầu khí
o Tìm địa điển để khoan dầu tại đại dương
o Thiết kế máy biến thế cho các nhà máy điện
Page | 15
• Trong xây dựng
o Quản lý các chương trình xây dựng
• Một số ứng dụng khác
o Sáng tác âm nhạc
o Sắp xếp thời khóa biểu
2. BÀI TOÁN XẾP THỜI KHÓA BIỂU VÀ CÁC PHƯƠNG PHÁP GIẢI
QUYẾT
Bài toán xếp thời khóa biểu 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 thời khóa biểu 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 thời khóa biểu hợp lý.Vì thế bài toán xếp thời khóa biểu 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ở (knowledge-based 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, một số phương pháp giải quyết bài toán xếp thời khóa biểu gồm các
hướng tiếp cận truyền thống và hiện nay như:
- Giải thuật vét cạn
- Giải thuật tô màu đồ thị
- Giải thuật leo đồi
- Phương pháp luyện kim
- Giải thuật tối ưu đàn kiến
- Giải thuật di truyền.
Trong chương tiếp theo, bài thu hoạch sẽ trình bày một cách cụ thể quá trình và cách thức
xây dựng giải thuật di truyền nhằm giải quyết bài toán xắp thời khóa biểu.
Page | 16
Chương 3: ỨNG DỤNG GIẢI THUẬT DI TRUYỀN VÀO BÀI TOÁN XẾP
THỜI KHÓA BIỂU
1 Phát biểu bài toán
1.1 Khảo sát tìm hiểu vấn đề
Bài toán đặt ra vấn đề cầ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. Cần có sự sắp xếp lịch học cho các lớp tại các phòng ở mỗi địa
điểm, sao cho vừa phù hợp lại vừa tiện dụng nhất dựa trên những yếu tố và điều kiện thực
tế sau:
1. Thông tin về giáo viên: tên, chuyên môn,…
2. Thông tin về môn học và thuộc tính môn học
3. Thông tin về lớp học và thuộc tính của lớp
4. Buổi học, phòng học, cơ sở vật chất/ trang thiết bị, …
5. Thời khóa biểu theo tuần/ học kỳ? Học theo tiết/ ca/ buổi?
6. Giáo viên dạy có kiêm nhiệm hay không? Dạy một hay nhiều môn học?
1.2 Xác định phạm vi giới hạn bài toán

Mục đích của bài thu hoạch chỉ mang tính chất tìm hiểu và áp dụng thuật giải di
truyền vào bài toán xắp thời khóa biểu nên cần đơn giản hóa một số chi tiết, thành phần
và điều kiện thực tế để thuận tiện cho việc thực hiện, xây dựng và kiểm thử kết quả. Do
đó, bài toán lập lịch được giới hạn với các thành phần dữ liệu và các ràng buộc như sau:
Dữ liệu bài toán:
 Danh sách cơ sở
 Danh sách khoa
 Danh sách khoá học
Page | 17
 Danh sách học phần học và các lớp trong học kỳ
 Danh sách lớp học
 Danh sách giáo viên
 Danh sách phòng học
 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 đó
Các ràng buộc
1. Các yêu cầu đặc biệt của từng môn học: Chỉ học 1 tiết/ 1 ngày; phải có tiết
đôi (2 tiết liên tục), học cách ngày, không học tiết 1 hoặc không học tiết 5, …
2. Các yêu cầu của giáo viên: Không nghỉ cách tiết (không có tiết trống), chỉ
dạy những ngày cố định, các hạn chế: họp, bận, …; Không dạy tiết đầu/ cuối
trong buổi, …
3. Tại 1 thời điểm 1 GV không thể dạy 2 lớp.
4. Tại 1 thời điểm 1 lớp không thể học 2 môn học.
5. Bảo đảm các quy định về thời gian (Số tiết học/ ngày, số giờ mỗi môn, số
môn/ buổi,…)
6. Bảo đảm đúng theo các bảng quan hệ (GV-lớp, GV-môn): Bảng phân công
giảng dạy;

Page | 18
1.3 Các bước cơ bản để giải quyết bài toán lập lịch thời khoá biếu
Bước 1. Khởi tạo dữ liệu thời khóa biểu mới
Bước 2. Nhập, điều chỉnh dữ liệu gốc thời khóa biểu
Bướ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ểu
Cá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ết
Bước 5. Chuẩn bị xếp thời khóa biểu
Bước 6. Xếp tự động TKB
Bước 7. Điều chỉnh, tinh chỉnh dữ liệu 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
3. Xây dựng thuật giải di truyền cho bài toán
2.1 Biểu diễn mô hình cá thể và quần thể
Page | 19
Lịch học của một lớp có hai thành phần chính, bao gồm: các môn học và các giờ
học trong tuần. Việc đặt ngẫu nhiên các môn học với các giờ học sẽ tạo thành một lịch
học cho 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 hai thành phần đó, thì các giờ 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 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.
Thay vì chọn ngẫu nhiên môn học vào các tiết học như đã trình bày, chúng ta sẽ
làm ngược lại: chọn ngẫu nhiên tiết học theo môn, vì chúng ta đã chọn môn học làm đơn
vị trong cá thể ( theo mô hình trên ). Có nghĩa là, với một cá thể của mô hình xếp lịch
lớp, ở bất kỳ thời điểm nào, khi ta đặt nhiễm sắc thể đầu tiên như là môn thứ nhất, nhiễm
sắc thể kế tiếp sẽ là môn thứ hai, và tiếp tục cho các nhiễm sắc thể còn lại thì sau này,
lúc nào cũng theo thứ tự ấy mà lấy thông tin ra, sẽ không có gì thay đổi ( ngoại trừ giá trị
tiết học, nếu như sau này có xảy ra lai ghép hay đột biến ). Trong trường hợp một môn
được học nhiều lần trong tuần, do có nhiều chứng chỉ / học phần, nên sẽ gây khó khăn
cho việc xếp chúng vào trong cá thể. Cách giải quyết vấn đề này rất đơn giản, chỉ cần
đưa chúng vào cá thể với nhiễm sắc thể tương ứng, như một môn học bình thường khác.
Như vậy, với mỗi phương án sắp xếp thời khóa biểu được mô hình hóa như là 1 NST
trong giải thuật di truyền, với mỗi NST có thể xem là một mảng 3 chiều: Chiều thứ nhất
biểu diễn các tiết học trong ngày, chiều thứ hai biểu diễn các ngày trong tuần, chiều thứ
ba biểu diễn các phòng học.
Page | 20
Quần thể là tập hợp các nhiễm sắc thể. Ngoài việc lưu trữ danh sách các NST, quần thể
còn chứa các thông tin khác như kích thước của quần thể, độ thích nghi của quần thể đó
so với môi trường (điều kiện ràng buộc), …
2.2 Khởi tạo quần thể ban đầu
Trướ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 và số chứng chỉ từng môn.
• 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ả như 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
Page | 21
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.3 Độ thích nghi, chọn lọc cá thể
Giai đoạn hội tụ cá thể trong quần thể, trên cơ bản việc đánh giá cơ sở tùy theo số
lớp, số giờ học và số phòng học. Phòng học phải hợp lý về sức chứa của nó đối với lớp
học, thông thường người ta chọn phòng lớn nhất cho lớp tương ứng lớn nhất. Nhưng ở
đây ta chọn phương pháp khác, lớp và phòng sẽ được xếp theo thứ tự lớn dần. Cho nên
khi xếp lịch, lớp sẽ được đặt ở một phòng vừa nhất mà cơ sở đang có. Điều này tuy mất
thời gian hơn nhưng thực tế thì nó sẽ hợp lý hơn.
Về vấn đề trùng phòng học giữa các lớp, chúng ta sẽ sử dụng một tham biến ghi
nhận tất cả các giờ học của từng phòng một khi có lớp nào vào học, đồng thời sau này đó
cũng chính là lịch sử dụng các phòng.
Cũng đánh giá lại ràng buộc lịch giáo viên, nhưng lần này chỉ xét về mặt trùng giờ
dạy ở các lớp cùng một thời điểm. Tương tự, 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à tránh trường hợp trùng giờ này.
Với các lần kiểm tra tương ứng với một giá trị thích nghi, cuối cùng tổng các giá
trị này chính là độ thích nghi của cá thể. Công việc không khác gì trong lịch lớp, cá thể
được chọn là cá thể tốt nhất, giá trị thích nghi đạt ở mức đỉnh là 0.
4. Xây dựng các thuật toán di truyền
3.1. Toán tử lai ghép
Do bài toán có cấu trúc NST khá phức tạp, vì vậy ta chọn toán tử lai ghép đa điểm
để áp dụng với các điểm được tạo ngẫu nhiên.
Page | 22
Chọn hai NST ngẫu nhiên cần lai ghép: N1(cha), N2(mẹ). Gọi 2 NST mới được sinh ra là
C1, C2
Tạo phép lai ghép (mảng 1 chiều) với các điểm lai ghép ngẫu nhiên
For each gen in NST: Begin

If (M[i] = 1) Then
C1 nhận gen từ NST cha N1
C2 nhận gen từ NST mẹ N2
If (M[i] = 0) Then
C1 nhận gen từ NST mẹ N2
C2 nhận gen từ NST cha N1
End
3.2. Toán tử đột biến
Toán tử đột biến được thực hiện đối với các NST con sinh ra bởi toán tử lai ghép, ta
áp dụng toán tử đột biến thay thế.
Page | 23
Gọi pm là xác suất đột biến
For each gen in NST: Begin
x = Số nguyên ngẫu nhiên trong khoảng từ 1 đến 1000
If (x < pm*1000) Then
rangen = Là một gen ngẫu nhiên trong NST
gen = rangen
End
3.3. Tính độ thích nghi của cá thể
Việc đánh giá độ thích nghi của cá thể được căn cứ vào số lần vi phạm các ràng
buộc. Để thực hiện, đầu tiên ta tính độ thích nghi của cá thể dựa trên từng ràng buộc, sau
đó cộng tất cả độ thích nghi dựa trên từng ràng buộc đó lại ta sẽ thu được độ thích nghi
của cá thể.
Để tăng tính hiệu quả của giải thuật, tùy thuộc vào từng loại ràng buộc mà ta
nhân số lần vi phạm với một trọng số thích hợp.
Page | 24
Function Độ_thích_nghi_RB (Cathe) Begin
Count = 0 {Biến đếm số lần vi phạm}
For each gen in Cathe
Begin

If (gen vi phạm ràng buộc RB) Then
Count = Count + 1
End
Return 1/(Count * Trọng số)
End
3.4. Tham số của giải thuật di truyền
Trong quá trình thử nghiệm thuật toán, các tham số của giải thuật di truyền được
sử dụng trong bài thu hoạch như sau: p
c
= 0.5, p
m
= 0.015, popsize = số lượng lớp 10.
Sau mỗi thế hệ popsize tăng lên khoảng 0.02%.
Chương 4: CÀI ĐẶT THỬ NGHIỆM
Chương trình được cài đặt dựa trên những công nghệ mới để đảm bảo hệ thống
được thực thi ổn định nhất và dễ dàng nâng cấp, phát triển và hỗ trợ về sau. Với công cụ
lập trình VISUAL STUDIO 2012, ngôn ngữ lập trình C# .NET, thư viện quản lý thông
tin cơ sở dữ liệu Entity Framework. Việc tổ chức lưu trữ dữ liệu sử dụng SQL dựa trên
Microsoft SQL Server cho phép ta có thể tăng tính uyển chuyển của mô hình, cho phép
mô hình có thể được áp dụng rộng rãi trên nhiều nền tảng phần cứng và công nghệ khác
nhau.
Page | 25

×